diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-06-10 09:23:53 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-06-10 09:23:53 +0300 |
commit | c64e1110f66da7a5d7c8fb36a335d36b05770e82 (patch) | |
tree | 69fd8ba952fc90fa7d3a5418ac731f9c2c923ddd /app/src/main/java | |
parent | 3d0a1fdc12acc1377802a3be0ede1d9373a19c77 (diff) |
Experiment: Room
Diffstat (limited to 'app/src/main/java')
8 files changed, 201 insertions, 1 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index 3daf809a..da4bbb36 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -77,6 +77,9 @@ import it.niedermann.owncloud.notes.persistence.LoadNotesListTask.NotesLoadedLis import it.niedermann.owncloud.notes.persistence.NoteServerSyncHelper; import it.niedermann.owncloud.notes.persistence.NoteServerSyncHelper.ViewProvider; import it.niedermann.owncloud.notes.persistence.NotesDatabase; +import it.niedermann.owncloud.notes.persistence.NotesRoomDatabase; +import it.niedermann.owncloud.notes.persistence.dao.LocalAccountDao; +import it.niedermann.owncloud.notes.persistence.entity.LocalAccountEntity; import it.niedermann.owncloud.notes.util.NoteUtil; import static android.view.View.GONE; @@ -176,7 +179,12 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi } db = NotesDatabase.getInstance(this); - + NotesRoomDatabase db = NotesRoomDatabase.getInstance(this); + LocalAccountDao dao = db.getLocalAccountDao(); + new Thread(() -> { + List<LocalAccountEntity> localAccountEntities = dao.getAccounts(); + Log.v("TEST", localAccountEntities.size() + " acs"); + }).start(); setupToolbars(); setupNavigationList(categoryAdapterSelectedItem); setupNavigationMenu(); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRoomDatabase.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRoomDatabase.java new file mode 100644 index 00000000..dc945d2f --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRoomDatabase.java @@ -0,0 +1,72 @@ +package it.niedermann.owncloud.notes.persistence; + +import android.content.Context; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.room.Database; +import androidx.room.Room; +import androidx.room.RoomDatabase; +import androidx.room.migration.Migration; +import androidx.sqlite.db.SupportSQLiteDatabase; + +import it.niedermann.owncloud.notes.persistence.dao.LocalAccountDao; +import it.niedermann.owncloud.notes.persistence.dao.NoteDao; +import it.niedermann.owncloud.notes.persistence.entity.LocalAccountEntity; +import it.niedermann.owncloud.notes.persistence.entity.NoteEntity; + +@Database( + entities = { + LocalAccountEntity.class, + NoteEntity.class + }, version = 18 +) +public abstract class NotesRoomDatabase extends RoomDatabase { + + private static final String TAG = NotesRoomDatabase.class.getSimpleName(); + private static final String NOTES_DB_NAME = "OWNCLOUD_NOTES"; + // private final NoteServerSyncHelper serverSyncHelper; + private static NotesRoomDatabase instance; + +// private NotesRoomDatabase(Context context) { +//// serverSyncHelper = NoteServerSyncHelper.getInstance(this); +// } + + public static NotesRoomDatabase getInstance(Context context) { + if (instance == null) { + instance = create(context); + } + return instance; + } + + private static NotesRoomDatabase create(final Context context) { + return Room.databaseBuilder( + context, + NotesRoomDatabase.class, + NOTES_DB_NAME) + .addMigrations(OLD_STUFF) + .fallbackToDestructiveMigration() + .addCallback(new RoomDatabase.Callback() { + @Override + public void onCreate(@NonNull SupportSQLiteDatabase db) { + super.onCreate(db); + Log.v(TAG, NotesRoomDatabase.class.getSimpleName() + " created."); + } + }) + .build(); + } + + private static final Migration OLD_STUFF = new Migration(17, 18) { + @Override + public void migrate(SupportSQLiteDatabase database) { +// database.execSQL("ALTER TABLE `Account` ADD `color` TEXT NOT NULL DEFAULT '#0082c9'"); +// database.execSQL("ALTER TABLE `Account` ADD `textColor` TEXT NOT NULL DEFAULT '#ffffff'"); +// database.execSQL("ALTER TABLE `Account` ADD `serverDeckVersion` TEXT NOT NULL DEFAULT '0.6.4'"); +// database.execSQL("ALTER TABLE `Account` ADD `maintenanceEnabled` INTEGER NOT NULL DEFAULT 0"); + } + }; + + public abstract NoteDao getNoteDao(); + + public abstract LocalAccountDao getLocalAccountDao(); +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/CategoryDao.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/CategoryDao.java new file mode 100644 index 00000000..d628dff4 --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/CategoryDao.java @@ -0,0 +1,7 @@ +package it.niedermann.owncloud.notes.persistence.dao; + +import androidx.room.Dao; + +@Dao +public interface CategoryDao { +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/LocalAccountDao.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/LocalAccountDao.java new file mode 100644 index 00000000..cff471ff --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/LocalAccountDao.java @@ -0,0 +1,16 @@ +package it.niedermann.owncloud.notes.persistence.dao; + +import androidx.room.Dao; +import androidx.room.Query; + +import java.util.List; + +import it.niedermann.owncloud.notes.persistence.entity.LocalAccountEntity; + +@Dao +public interface LocalAccountDao { + + + @Query("SELECT * FROM localaccountentity") + List<LocalAccountEntity> getAccounts(); +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java new file mode 100644 index 00000000..22941fb3 --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java @@ -0,0 +1,7 @@ +package it.niedermann.owncloud.notes.persistence.dao; + +import androidx.room.Dao; + +@Dao +public interface NoteDao { +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/CategoryEntity.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/CategoryEntity.java new file mode 100644 index 00000000..823a23f5 --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/CategoryEntity.java @@ -0,0 +1,32 @@ +package it.niedermann.owncloud.notes.persistence.entity; + +import androidx.room.Entity; +import androidx.room.PrimaryKey; + +@Entity +public class CategoryEntity { + @PrimaryKey + public int id; + + public int remoteId; + + public int accountId; + + public String status; + + public String title; + + public int modified; + + public String content; + + public String eTag; + + public String excerpt; + + public int scrollY; + +} +// "FOREIGN KEY(" + key_category + ") REFERENCES " + table_category + "(" + key_category_id + "), " + +// "FOREIGN KEY(" + key_account_id + ") REFERENCES " + table_accounts + "(" + key_id + "))"); +// DatabaseIndexUtil.createIndex(db, table_notes, key_remote_id, key_account_id, key_status, key_favorite, key_category, key_modified);
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/LocalAccountEntity.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/LocalAccountEntity.java new file mode 100644 index 00000000..03b7e9e7 --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/LocalAccountEntity.java @@ -0,0 +1,24 @@ +package it.niedermann.owncloud.notes.persistence.entity; + +import androidx.room.Entity; +import androidx.room.PrimaryKey; + +import it.niedermann.owncloud.notes.util.DatabaseIndexUtil; + +@Entity() +public class LocalAccountEntity { + @PrimaryKey + public int id; + + public String url; + public String username; + public String accountName; + public String eTag; + public int modified; + public String apiVersion; + public String color; + public String textColor; + public String capabilitiesETag; +} + +// DatabaseIndexUtil.createIndex(db, table_accounts, key_url, key_username, key_account_name, key_etag, key_modified);
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/NoteEntity.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/NoteEntity.java new file mode 100644 index 00000000..44d04e25 --- /dev/null +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/NoteEntity.java @@ -0,0 +1,34 @@ +package it.niedermann.owncloud.notes.persistence.entity; + +import androidx.room.ColumnInfo; +import androidx.room.Entity; +import androidx.room.Index; +import androidx.room.PrimaryKey; + +@Entity +public class NoteEntity { + @PrimaryKey + public int id; + + public int remoteId; + + public int accountId; + + public String status; + + public String title; + + public int modified; + + public String content; + + public String eTag; + + public String excerpt; + + public int scrollY; + +} +// "FOREIGN KEY(" + key_category + ") REFERENCES " + table_category + "(" + key_category_id + "), " + +// "FOREIGN KEY(" + key_account_id + ") REFERENCES " + table_accounts + "(" + key_id + "))"); +// DatabaseIndexUtil.createIndex(db, table_notes, key_remote_id, key_account_id, key_status, key_favorite, key_category, key_modified);
\ No newline at end of file |