Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-06-10 09:23:53 +0300
committerStefan Niedermann <info@niedermann.it>2020-06-10 09:23:53 +0300
commitc64e1110f66da7a5d7c8fb36a335d36b05770e82 (patch)
tree69fd8ba952fc90fa7d3a5418ac731f9c2c923ddd /app
parent3d0a1fdc12acc1377802a3be0ede1d9373a19c77 (diff)
Experiment: Room
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesNotesRoomDatabaseTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java)2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java10
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRoomDatabase.java72
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/CategoryDao.java7
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/LocalAccountDao.java16
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/NoteDao.java7
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/CategoryEntity.java32
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/LocalAccountEntity.java24
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/entity/NoteEntity.java34
10 files changed, 206 insertions, 2 deletions
diff --git a/app/build.gradle b/app/build.gradle
index d7f25c94..b6e3f121 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -75,6 +75,10 @@ dependencies {
implementation 'androidx.work:work-runtime:2.3.4'
implementation "com.google.android.material:material:1.1.0"
+ // Database
+ implementation "androidx.room:room-runtime:2.2.5"
+ annotationProcessor "androidx.room:room-compiler:2.2.5"
+
// Testing
testImplementation 'junit:junit:4.13'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java b/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesNotesRoomDatabaseTest.java
index 9fe80283..437f58c9 100644
--- a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java
+++ b/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesNotesRoomDatabaseTest.java
@@ -46,7 +46,7 @@ import static org.junit.Assert.fail;
*/
@RunWith(AndroidJUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class NotesDatabaseTest {
+public class NotesNotesRoomDatabaseTest {
private NotesDatabase db = null;
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