JSON-based export/import of user data (markers, labels, reading plan progress, history, progress pins). Designed for backup/restore and migration between devices without cloud sync.
Alkitab/src/main/java/yuku/alkitab/datatransfer/process/ExportProcess.kt— Exports user data to JSONAlkitab/src/main/java/yuku/alkitab/datatransfer/process/ImportProcess.kt— Imports from JSON with dry-run supportAlkitab/src/main/java/yuku/alkitab/datatransfer/model/JsonFileStructure.kt— Kotlinx.Serializable data structuresAlkitab/src/main/java/yuku/alkitab/datatransfer/ui/DataTransferActivity.kt— UI for export/importAlkitab/src/main/java/yuku/alkitab/datatransfer/model/Gid.kt— GID handlingAlkitab/src/main/java/yuku/alkitab/datatransfer/model/Rpp.kt— Reading plan progress structures
{
"success": true,
"snapshots": {
"history": { "entities": [...] },
"mabel": {
"entities": {
"markers": [...],
"labels": [...],
"marker_labels": [...]
}
},
"pins": { "entities": [...] },
"rp": { "entities": [...] }
}
}Uses Kotlinx Serialization for JSON encoding/decoding.
- Simulation mode (dry run): Parses the file and reports what would change without modifying the database
- Actual import: Applies changes transactionally with rollback capability
- Per-entity
creator_idtracking for provenance
ReadonlyStorageInterface / ReadWriteStorageInterface abstract database access for testability. Implementations (ReadonlyStorageImpl, ReadWriteStorageImpl) wrap InternalDb operations.