mirror of
https://github.com/nextcloud/notes-android.git
synced 2024-10-24 05:35:56 +03:00
Experiment: Room
This commit is contained in:
parent
3d0a1fdc12
commit
c64e1110f6
10 changed files with 206 additions and 2 deletions
|
@ -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'
|
||||
|
|
|
@ -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;
|
||||
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package it.niedermann.owncloud.notes.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
|
||||
@Dao
|
||||
public interface CategoryDao {
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package it.niedermann.owncloud.notes.persistence.dao;
|
||||
|
||||
import androidx.room.Dao;
|
||||
|
||||
@Dao
|
||||
public interface NoteDao {
|
||||
}
|
|
@ -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);
|
|
@ -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);
|
|
@ -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);
|
Loading…
Reference in a new issue