requery: use our own data store class.

pull/96/head
Tom Hacohen 5 years ago
parent d8600f2f04
commit a74f188b3b

@ -152,6 +152,7 @@ dependencies {
implementation "io.requery:requery-android:$requeryVersion"
implementation "io.requery:requery-kotlin:$requeryVersion"
kapt "io.requery:requery-processor:$requeryVersion"
implementation 'com.google.code.findbugs:jsr305:3.0.2'
def spongyCastleVersion = "1.54.0.0"
implementation "com.madgag.spongycastle:core:$spongyCastleVersion"

@ -51,13 +51,13 @@ class App : Application() {
* `@Provides @Singleton`.
*/
// override onUpgrade to handle migrating to a new version
val data: EntityDataStore<Persistable>
val data: MyEntityDataStore
get() = initDataStore()
fun initDataStore(): EntityDataStore<Persistable> {
fun initDataStore(): MyEntityDataStore {
val source = MyDatabaseSource(this, Models.DEFAULT, 4)
val configuration = source.configuration
return EntityDataStore(configuration)
return MyEntityDataStore(configuration)
}
@SuppressLint("HardwareIds")

@ -65,7 +65,7 @@ class CollectionInfo : Serializable {
return service == type.toString()
}
fun getServiceEntity(data: EntityDataStore<Persistable>): ServiceEntity {
fun getServiceEntity(data: MyEntityDataStore): ServiceEntity {
return data.findByKey(ServiceEntity::class.java, serviceID)
}

@ -60,14 +60,14 @@ public class JournalModel {
this.deleted = false;
}
public Journal(EntityDataStore<Persistable> data, CollectionInfo info) {
public Journal(MyEntityDataStore data, CollectionInfo info) {
this();
this.info = info;
this.uid = info.getUid();
this.serviceModel = info.getServiceEntity(data);
}
public static List<JournalEntity> getJournals(EntityDataStore<Persistable> data, ServiceEntity serviceEntity) {
public static List<JournalEntity> getJournals(MyEntityDataStore data, ServiceEntity serviceEntity) {
List<JournalEntity> ret = data.select(JournalEntity.class).where(JournalEntity.SERVICE_MODEL.eq(serviceEntity).and(JournalEntity.DELETED.eq(false))).get().toList();
for (JournalEntity journal : ret) {
// FIXME: For some reason this isn't always being called, manually do it here.
@ -76,7 +76,7 @@ public class JournalModel {
return ret;
}
public static JournalEntity fetch(EntityDataStore<Persistable> data, ServiceEntity serviceEntity, String uid) {
public static JournalEntity fetch(MyEntityDataStore data, ServiceEntity serviceEntity, String uid) {
JournalEntity ret = data.select(JournalEntity.class).where(JournalEntity.SERVICE_MODEL.eq(serviceEntity).and(JournalEntity.UID.eq(uid))).limit(1).get().firstOrNull();
if (ret != null) {
// FIXME: For some reason this isn't always being called, manually do it here.
@ -85,7 +85,7 @@ public class JournalModel {
return ret;
}
public static JournalEntity fetchOrCreate(EntityDataStore<Persistable> data, CollectionInfo collection) {
public static JournalEntity fetchOrCreate(MyEntityDataStore data, CollectionInfo collection) {
JournalEntity journalEntity = fetch(data, collection.getServiceEntity(data), collection.getUid());
if (journalEntity == null) {
journalEntity = new JournalEntity(data, collection);
@ -95,7 +95,7 @@ public class JournalModel {
return journalEntity;
}
public String getLastUid(EntityDataStore<Persistable> data) {
public String getLastUid(MyEntityDataStore data) {
EntryEntity last = data.select(EntryEntity.class).where(EntryEntity.JOURNAL.eq(this)).orderBy(EntryEntity.ID.desc()).limit(1).get().firstOrNull();
if (last != null) {
return last.getUid();
@ -144,7 +144,7 @@ public class JournalModel {
@Index(value = "service_unique_together")
CollectionInfo.Type type;
public static ServiceEntity fetchOrCreate(EntityDataStore<Persistable> data, String account, CollectionInfo.Type type) {
public static ServiceEntity fetchOrCreate(MyEntityDataStore data, String account, CollectionInfo.Type type) {
ServiceEntity service = data.select(ServiceEntity.class).where(ServiceEntity.ACCOUNT.eq(account).and(ServiceEntity.TYPE.eq(type))).limit(1).get().firstOrNull();
if (service == null) {
// If our first time, create service and a journal

@ -0,0 +1,9 @@
package com.etesync.syncadapter.model
import io.requery.Persistable
import io.requery.sql.Configuration
import io.requery.sql.EntityDataStore
class MyEntityDataStore(configuration: Configuration): EntityDataStore<Persistable>(configuration) {
}

@ -28,8 +28,6 @@ import com.etesync.syncadapter.resource.*
import com.etesync.syncadapter.ui.AccountsActivity
import com.etesync.syncadapter.ui.DebugInfoActivity
import com.etesync.syncadapter.ui.ViewCollectionActivity
import io.requery.Persistable
import io.requery.sql.EntityDataStore
import org.jetbrains.anko.defaultSharedPreferences
import java.io.Closeable
import java.io.FileNotFoundException
@ -54,7 +52,7 @@ constructor(protected val context: Context, protected val account: Account, prot
private val crypto: Crypto.CryptoManager
private val data: EntityDataStore<Persistable>
private val data: MyEntityDataStore
/**
* remote CTag (uuid of the last entry on the server). We update it when we fetch/push and save when everything works.

@ -16,15 +16,14 @@ import com.etesync.syncadapter.journalmanager.JournalManager
import com.etesync.syncadapter.model.CollectionInfo
import com.etesync.syncadapter.model.JournalEntity
import com.etesync.syncadapter.model.JournalModel
import io.requery.Persistable
import io.requery.sql.EntityDataStore
import com.etesync.syncadapter.model.MyEntityDataStore
import okhttp3.HttpUrl
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread
import java.util.concurrent.Future
class CollectionMembersListFragment : ListFragment(), AdapterView.OnItemClickListener, Refreshable {
private lateinit var data: EntityDataStore<Persistable>
private lateinit var data: MyEntityDataStore
private lateinit var account: Account
private lateinit var info: CollectionInfo
private lateinit var journalEntity: JournalEntity

@ -24,15 +24,13 @@ import com.etesync.syncadapter.R
import com.etesync.syncadapter.model.*
import com.etesync.syncadapter.ui.JournalItemActivity
import com.etesync.syncadapter.ui.ViewCollectionActivity
import io.requery.Persistable
import io.requery.sql.EntityDataStore
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread
import java.util.concurrent.Future
class ListEntriesFragment : ListFragment(), AdapterView.OnItemClickListener {
private lateinit var data: EntityDataStore<Persistable>
private lateinit var data: MyEntityDataStore
private lateinit var account: Account
private lateinit var info: CollectionInfo
private var journalEntity: JournalEntity? = null

Loading…
Cancel
Save