diff --git a/.gitea/workflows/job.yaml b/.gitea/workflows/job.yaml
deleted file mode 100644
index 62cdd71..0000000
--- a/.gitea/workflows/job.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-+name: Build and Upload APK
-
-on:
- push:
- branches:
- - notevault-3 # Trigger für den Hauptbranch
- pull_request:
- branches:
- - notevault-3 # Trigger für Pull Requests in den Hauptbranch
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- # Schritt 1: Checkout des Repositories
- - name: Checkout repository
- uses: actions/checkout@v3
-
- # Schritt 2: Setup JDK
- - name: Set up JDK 11
- uses: actions/setup-java@v2
- with:
- java-version: '11'
-
- # Schritt 3: Installiere Gradle und Baue die APK
- - name: Build APK
- run: |
- sudo apt-get update
- sudo apt-get install -y wget unzip
- wget https://services.gradle.org/distributions/gradle-7.4-bin.zip
- unzip gradle-7.4-bin.zip
- export PATH=$PWD/gradle-7.4/bin:$PATH
- ./gradlew clean assembleRelease
-
- # Schritt 4: Upload der APK
- - name: Upload APK to Gitea Releases
- uses: pappasam/gitea-release-action@v1
- with:
- gitea_token: ${{ secrets.REGISTRY_PASSWORD }} # Dein Gitea API-Token
- gitea_url: 'https://git.fawkes100.de' # Deine Gitea-URL
- owner: ${{ secrets.REGISTRY_USER }} # Dein Gitea-Benutzername
- repo: 'NoteVault' # Dein Repository-Name
- tag_name: 'v${{ github.sha }}' # Der Tag für die Version
- file: 'app/build/outputs/apk/release/app-release.apk' # Pfad zur APK-Datei
-
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b8..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
deleted file mode 100644
index 3f3ac07..0000000
--- a/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-NoteVault
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index b86273d..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
deleted file mode 100644
index 5c70232..0000000
--- a/.idea/dataSources.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
- sqlite.xerial
- true
- org.sqlite.JDBC
- jdbc:sqlite:$PROJECT_DIR$/music_database
-
-
-
- $ProjectFileDir$
-
-
- file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.45.1/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar
-
-
- file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.45.1/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index 818c0d7..0000000
--- a/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index e76fb07..0000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 7c2d85a..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644
index 16660f1..0000000
--- a/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 12b800a..cea861b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,14 +1,16 @@
plugins {
alias(libs.plugins.android.application)
+ alias(libs.plugins.kotlin.android)
+ alias(libs.plugins.kotlin.compose)
}
android {
- namespace = "com.stormtales.notevault"
+ namespace = "come.stormborntales.notevault"
compileSdk = 34
defaultConfig {
- applicationId = "com.stormtales.notevault"
- minSdk = 29
+ applicationId = "come.stormborntales.notevault"
+ minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
@@ -26,28 +28,31 @@ android {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
+ kotlinOptions {
+ jvmTarget = "11"
+ }
buildFeatures {
- viewBinding = true
+ compose = true
}
}
dependencies {
- implementation(libs.appcompat)
- implementation(libs.material)
- implementation(libs.constraintlayout)
- implementation(libs.lifecycle.livedata.ktx)
- implementation(libs.lifecycle.viewmodel.ktx)
- implementation(libs.navigation.fragment)
- implementation(libs.navigation.ui)
- implementation(libs.room.runtime)
- implementation(libs.annotation)
+ implementation(libs.androidx.core.ktx)
+ implementation(libs.androidx.lifecycle.runtime.ktx)
+ implementation(libs.androidx.activity.compose)
+ implementation(platform(libs.androidx.compose.bom))
+ implementation(libs.androidx.ui)
+ implementation(libs.androidx.ui.graphics)
+ implementation(libs.androidx.ui.tooling.preview)
+ implementation(libs.androidx.material3)
+ implementation(libs.androidx.navigation.compose)
+ implementation(libs.androidx.lifecycle.viewmodel.compose)
testImplementation(libs.junit)
- androidTestImplementation(libs.ext.junit)
- androidTestImplementation(libs.espresso.core)
- annotationProcessor(libs.room.compiler)
- implementation("com.github.chrisbanes:PhotoView:2.3.0")
- implementation("com.squareup.retrofit2:retrofit:2.9.0")
- implementation("com.squareup.retrofit2:converter-gson:2.9.0")
- implementation("com.squareup.okhttp3:logging-interceptor:4.9.1")
+ androidTestImplementation(libs.androidx.junit)
+ androidTestImplementation(libs.androidx.espresso.core)
+ androidTestImplementation(platform(libs.androidx.compose.bom))
+ androidTestImplementation(libs.androidx.ui.test.junit4)
+ debugImplementation(libs.androidx.ui.tooling)
+ debugImplementation(libs.androidx.ui.test.manifest)
}
\ No newline at end of file
diff --git a/app/src/androidTest/java/com/stormtales/notevault/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/stormtales/notevault/ExampleInstrumentedTest.java
deleted file mode 100644
index b779b0e..0000000
--- a/app/src/androidTest/java/com/stormtales/notevault/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.stormtales.notevault;
-
-import android.content.Context;
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
- assertEquals("com.stormtales.notevault", appContext.getPackageName());
- }
-}
\ No newline at end of file
diff --git a/app/src/androidTest/java/come/stormborntales/notevault/ExampleInstrumentedTest.kt b/app/src/androidTest/java/come/stormborntales/notevault/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..0a0df47
--- /dev/null
+++ b/app/src/androidTest/java/come/stormborntales/notevault/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package come.stormborntales.notevault
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("come.stormborntales.notevault", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4915f2a..65dd20c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,12 +1,11 @@
-
+
+ android:theme="@style/Theme.NoteVault">
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/MainActivity.java b/app/src/main/java/com/stormtales/notevault/MainActivity.java
deleted file mode 100644
index edd4e25..0000000
--- a/app/src/main/java/com/stormtales/notevault/MainActivity.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.stormtales.notevault;
-
-import android.os.Bundle;
-import android.view.MenuItem;
-import android.view.Menu;
-import android.widget.Toast;
-import androidx.lifecycle.ViewModelProvider;
-import com.google.android.material.navigation.NavigationView;
-import androidx.navigation.NavController;
-import androidx.navigation.Navigation;
-import androidx.navigation.ui.AppBarConfiguration;
-import androidx.navigation.ui.NavigationUI;
-import androidx.drawerlayout.widget.DrawerLayout;
-import androidx.appcompat.app.AppCompatActivity;
-import com.stormtales.notevault.databinding.ActivityMainBinding;
-import com.stormtales.notevault.network.APICallback;
-import com.stormtales.notevault.network.auth.AuthService;
-import com.stormtales.notevault.ui.login.LoginDialog;
-import com.stormtales.notevault.ui.login.LoginViewModel;
-
-public class MainActivity extends AppCompatActivity {
-
- private AppBarConfiguration mAppBarConfiguration;
- private ActivityMainBinding binding;
- private LoginViewModel loginViewModel;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- binding = ActivityMainBinding.inflate(getLayoutInflater());
- setContentView(binding.getRoot());
-
- setSupportActionBar(binding.appBarMain.toolbar);
- binding.appBarMain.toolbar.setOnMenuItemClickListener(item -> {
- if (item.getItemId() == R.id.auth_action) {
- showLoginDialog();
- return true;
- }
- return false;
- });
- DrawerLayout drawer = binding.drawerLayout;
- NavigationView navigationView = binding.navView;
- // Passing each menu ID as a set of Ids because each
- // menu should be considered as top level destinations.
- mAppBarConfiguration = new AppBarConfiguration.Builder(
- R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
- .setOpenableLayout(drawer)
- .build();
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
- NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
- NavigationUI.setupWithNavController(navigationView, navController);
-
- loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class);
- loginViewModel.setAuthService(new AuthService(getApplicationContext()));
- loginViewModel.getIsLoggedIn().observe(this, isLoggedIn -> {
- this.invalidateOptionsMenu();
- });
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
- @Override
- public boolean onSupportNavigateUp() {
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
- return NavigationUI.navigateUp(navController, mAppBarConfiguration)
- || super.onSupportNavigateUp();
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- MenuItem loginItem = menu.findItem(R.id.auth_action);
- if (Boolean.TRUE.equals(loginViewModel.getIsLoggedIn().getValue())) {
- loginItem.setIcon(R.drawable.logout); // Setze das Logout-Symbol
- } else {
- loginItem.setIcon(R.drawable.login); // Setze das Login-Symbol
- }
- return super.onPrepareOptionsMenu(menu);
- }
-
- public void showLoginDialog() {
- LoginDialog loginDialog = new LoginDialog(loginViewModel);
- loginDialog.show(getSupportFragmentManager(), "login");
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/data/MusicDatabase.java b/app/src/main/java/com/stormtales/notevault/data/MusicDatabase.java
deleted file mode 100644
index f22b907..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/MusicDatabase.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.stormtales.notevault.data;
-
-import android.content.Context;
-import androidx.room.Database;
-import androidx.room.Room;
-import androidx.room.RoomDatabase;
-import androidx.room.TypeConverters;
-import com.stormtales.notevault.data.entities.NoteSheet;
-import com.stormtales.notevault.data.entities.Song;
-import com.stormtales.notevault.data.dao.SongDao;
-import com.stormtales.notevault.data.sync.DateConverter;
-import com.stormtales.notevault.data.sync.SyncStatusConverter;
-
-@Database(entities = {Song.class, NoteSheet.class}, version = 1, exportSchema = false)
-@TypeConverters({SyncStatusConverter.class, DateConverter.class})
-public abstract class MusicDatabase extends RoomDatabase {
- public abstract SongDao getSongTable();
-
- private static volatile MusicDatabase INSTANCE;
-
- public static MusicDatabase getDatabase(final Context context) {
- if (INSTANCE == null) {
- synchronized (MusicDatabase.class) {
- if (INSTANCE == null) {
- INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
- MusicDatabase.class, "music_database")
- .build();
- }
- }
- }
- return INSTANCE;
- }
-}
diff --git a/app/src/main/java/com/stormtales/notevault/data/dao/SongDao.java b/app/src/main/java/com/stormtales/notevault/data/dao/SongDao.java
deleted file mode 100644
index 135178d..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/dao/SongDao.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.stormtales.notevault.data.dao;
-
-import androidx.lifecycle.LiveData;
-import androidx.room.*;
-import com.stormtales.notevault.data.entities.NoteSheet;
-import com.stormtales.notevault.data.entities.Song;
-import com.stormtales.notevault.data.sync.SyncStatus;
-
-import java.util.List;
-
-@Dao
-public interface SongDao {
- @Insert
- long insert(Song song);
-
- @Query("SELECT * FROM song WHERE syncStatus != 1")
- List getAllSongs();
-
- @Update
- void update(Song song);
-
- @Insert
- void insert(List noteSheets);
-
- @Delete
- void deleteNoteSheets(List noteSheets);
-
- @Query("SELECT * FROM NoteSheet WHERE songID = :songID")
- List getNoteSheetsBySong(int songID);
-
- @Query("SELECT localFileName FROM NoteSheet WHERE songID = :songID")
- List getNoteSheetFilesBySongID(int songID);
-
- @Query("SELECT * FROM Song WHERE syncStatus = :syncStatus")
- List getSongsBySyncStatus(SyncStatus syncStatus);
-
- @Update
- void updateSongs(List songs);
-
- @Query("SELECT * FROM Song WHERE localID IN (:localIDs)")
- List getSongsByLocalIDs(List localIDs);
-
- @Query("SELECT * FROM Song WHERE serverID IN (:serverIDs)")
- List getSongsByServerIDs(List serverIDs);
-
- @Query("DELETE FROM Song WHERE serverID IN (:serverIDs)")
- void deleteSongsByServerIDs(List serverIDs);
-
- @Query("DELETE FROM SONG WHERE localID IN (:localIDs)")
- void deleteSongsByLocalIDs(List localIDs);
-
- @Query("SELECT * FROM NoteSheet WHERE songID IN (:localSongIDs)")
- List getNoteSheetsBySongIDs(List localSongIDs);
-
- @Query("SELECT * FROM NoteSheet WHERE songID IN (:songIDs)")
- List getNoteSheetsByLocalFiles(List songIDs);
-
- @Update
- void updateNoteSheets(List uploadedNoteSheets);
-
- @Query("SELECT localID FROM Song WHERE serverID IN (:serverIDs)")
- List getLocalSongIDsByServerIDs(List serverIDs);
-
- @Query("SELECT * FROM NoteSheet WHERE serverFileName IN (:serverFileNames)")
- List getNoteSheetsByServerFileNames(List serverFileNames);
-
- @Query("SELECT * FROM NoteSheet WHERE syncStatus = :status")
- List getNoteSheetsBySyncStatus(SyncStatus status);
-
- @Query("SELECT * FROM NoteSheet WHERE songID IN (:localSongIDs)")
- List getNoteSheetFilesBySongIDs(List localSongIDs);
-
- @Insert
- void insertSongs(List onlyRemoteExistingSongs);
-
- @Delete
- void deleteSong(Song song);
-
- @Query("DELETE FROM NoteSheet WHERE songID = :localID")
- void deleteNoteSheetsByLocalSongID(int localID);
-
- @Update
- void updateNoteSheet(NoteSheet noteSheet);
-
- @Query("SELECT * FROM NoteSheet WHERE serverFileName =:serverFileName")
- NoteSheet getNoteSheetByServerFileName(String serverFileName);
-}
diff --git a/app/src/main/java/com/stormtales/notevault/data/entities/NoteSheet.java b/app/src/main/java/com/stormtales/notevault/data/entities/NoteSheet.java
deleted file mode 100644
index 397f70b..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/entities/NoteSheet.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.stormtales.notevault.data.entities;
-
-import androidx.room.Entity;
-import androidx.room.Ignore;
-import androidx.room.PrimaryKey;
-import com.stormtales.notevault.data.sync.SyncStatus;
-
-import java.util.Objects;
-
-@Entity
-public class NoteSheet {
- @PrimaryKey(autoGenerate = true)
- private int localID;
- private int songID;
- private String localFileName;
- private String serverFileName;
- private String hash;
-
- private SyncStatus syncStatus;
-
- @Ignore
- public NoteSheet(String localFileName, String hash) {
- this.localFileName = localFileName;
- this.hash = hash;
- this.syncStatus = SyncStatus.CREATED;
- }
-
- @Ignore
- public NoteSheet(int songID, String localFileName, String serverFileName, String hash) {
- this.songID = songID;
- this.localFileName = localFileName;
- this.serverFileName = serverFileName;
- this.hash = hash;
- this.syncStatus = SyncStatus.REMOTE_MODIFIED;
- }
-
-
- public NoteSheet() {
-
- }
-
- public int getLocalID() {
- return localID;
- }
-
- public void setLocalID(int localID) {
- this.localID = localID;
- }
-
- public String getLocalFileName() {
- return localFileName;
- }
-
- public void setLocalFileName(String localFileName) {
- this.localFileName = localFileName;
- }
-
- public String getHash() {
- return hash;
- }
-
- public void setHash(String hash) {
- this.hash = hash;
- }
-
- public String getServerFileName() {
- return serverFileName;
- }
-
- public void setServerFileName(String serverFileName) {
- this.serverFileName = serverFileName;
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == null || getClass() != o.getClass()) return false;
- NoteSheet noteSheet = (NoteSheet) o;
- return localID == noteSheet.localID && Objects.equals(localFileName, noteSheet.localFileName) && Objects.equals(hash, noteSheet.hash);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(localID, localFileName, hash);
- }
-
- public int getSongID() {
- return songID;
- }
-
- public void setSongID(int songID) {
- this.songID = songID;
- }
-
- public SyncStatus getSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(SyncStatus syncStatus) {
- this.syncStatus = syncStatus;
- }
-}
diff --git a/app/src/main/java/com/stormtales/notevault/data/entities/Song.java b/app/src/main/java/com/stormtales/notevault/data/entities/Song.java
deleted file mode 100644
index 241326b..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/entities/Song.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.stormtales.notevault.data.entities;
-
-import androidx.room.Entity;
-import androidx.room.Ignore;
-import androidx.room.PrimaryKey;
-import com.stormtales.notevault.data.sync.SyncStatus;
-import com.stormtales.notevault.network.sync.models.SongModel;
-
-import java.time.LocalDateTime;
-import java.util.Objects;
-
-@Entity
-public class Song {
- @PrimaryKey(autoGenerate = true)
- private int localID;
-
- private String serverID;
- private SyncStatus syncStatus;
- private LocalDateTime syncTime;
-
- /**Meta Data of Song*/
- private String title;
- private String composer;
- private String genre;
- private int year;
-
- @Ignore
- public Song(String title, String composer, String genre, int year) {
- this.title = title;
- this.composer = composer;
- this.genre = genre;
- this.year = year;
- this.syncStatus = SyncStatus.CREATED;
- }
-
- @Ignore
- public Song(SongModel songModel) {
- this.serverID = songModel.getServerID();
- this.title = songModel.getTitle();
- this.composer = songModel.getComposer();
- this.genre = songModel.getGenre();
- this.year = songModel.getYear();
- this.syncStatus = SyncStatus.SYNCED;
- this.syncTime = LocalDateTime.now();
- }
-
- public Song() {
- }
-
- @Ignore
- public Song(String serverID) {
- this.serverID = serverID;
- this.syncStatus = SyncStatus.REMOTE_MODIFIED;
- }
-
- public int getLocalID() {
- return localID;
- }
-
- public void setLocalID(int localID) {
- this.localID = localID;
- }
-
- public String getServerID() {
- return serverID;
- }
-
- public void setServerID(String serverID) {
- this.serverID = serverID;
- }
-
- public SyncStatus getSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(SyncStatus syncStatus) {
- this.syncStatus = syncStatus;
- }
-
- public LocalDateTime getSyncTime() {
- return syncTime;
- }
-
- public void setSyncTime(LocalDateTime syncTime) {
- this.syncTime = syncTime;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getComposer() {
- return composer;
- }
-
- public void setComposer(String composer) {
- this.composer = composer;
- }
-
- public String getGenre() {
- return genre;
- }
-
- public void setGenre(String genre) {
- this.genre = genre;
- }
-
- public int getYear() {
- return year;
- }
-
- public void setYear(int year) {
- this.year = year;
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == null || getClass() != o.getClass()) return false;
- Song song = (Song) o;
- return localID == song.localID && Objects.equals(serverID, song.serverID);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(localID, serverID);
- }
-}
diff --git a/app/src/main/java/com/stormtales/notevault/data/entities/SongNoteSheet.java b/app/src/main/java/com/stormtales/notevault/data/entities/SongNoteSheet.java
deleted file mode 100644
index 3f26f9f..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/entities/SongNoteSheet.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.stormtales.notevault.data.entities;
-
-import androidx.room.Embedded;
-import androidx.room.Relation;
-
-import java.util.List;
-
-public class SongNoteSheet {
- @Embedded public Song song;
- @Relation(
- parentColumn = "localID",
- entityColumn = "songID"
- )
- public List noteSheets;
-}
diff --git a/app/src/main/java/com/stormtales/notevault/data/model/LoggedInUser.java b/app/src/main/java/com/stormtales/notevault/data/model/LoggedInUser.java
deleted file mode 100644
index d2b5be7..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/model/LoggedInUser.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.stormtales.notevault.data.model;
-
-/**
- * Data class that captures user information for logged in users retrieved from LoginRepository
- */
-public class LoggedInUser {
-
- private String userId;
- private String displayName;
-
- public LoggedInUser(String userId, String displayName) {
- this.userId = userId;
- this.displayName = displayName;
- }
-
- public String getUserId() {
- return userId;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/data/repositories/SongRepository.java b/app/src/main/java/com/stormtales/notevault/data/repositories/SongRepository.java
deleted file mode 100644
index a9923c8..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/repositories/SongRepository.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.stormtales.notevault.data.repositories;
-
-import android.app.Application;
-import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
-import androidx.lifecycle.LiveData;
-import com.stormtales.notevault.data.MusicDatabase;
-import com.stormtales.notevault.data.dao.SongDao;
-import com.stormtales.notevault.data.entities.NoteSheet;
-import com.stormtales.notevault.data.entities.Song;
-import com.stormtales.notevault.data.sync.SyncStatus;
-import com.stormtales.notevault.utils.NoteSheetsUtil;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-public class SongRepository {
- private SongDao songDao;
- public SongRepository(Context context) {
- MusicDatabase database = MusicDatabase.getDatabase(context);
- songDao = database.getSongTable();
- }
- public void insert(Song song, Callback callback) {
- Executors.newSingleThreadExecutor().execute(() -> {
- long result = songDao.insert(song);
- Handler mainHandler = new Handler(Looper.getMainLooper());
- mainHandler.post(()-> callback.onResult(result));
- });
- }
-
- public interface LoadHomeViewModelCallback {
- void onResult(T result);
- }
-
- public void getAllSongs(LoadHomeViewModelCallback> callback) {
- ExecutorService executorService = Executors.newSingleThreadExecutor();
- executorService.execute(() -> {
- List songs = songDao.getAllSongs();
- Handler mainHandler = new Handler(Looper.getMainLooper());
- mainHandler.post(()-> callback.onResult(songs));
- });
- }
-
- public void updateSong(Song song) {
- Executors.newSingleThreadExecutor().execute(() -> {
- songDao.update(song);
- });
- }
-
- public void insertNoteSheets(List noteSheets) {
- Executors.newSingleThreadExecutor().execute(() -> {
- songDao.insert(noteSheets);
- });
- }
-
- public interface Callback {
- void onResult(T result);
- }
-
- public void deleteSong(Song song) {
- Executors.newSingleThreadExecutor().execute(() -> {
- song.setSyncStatus(SyncStatus.DELETED);
- songDao.update(song);
-
- List noteSheets = songDao.getNoteSheetsBySong(song.getLocalID());
- for(NoteSheet noteSheet : noteSheets) {
- try {
- NoteSheetsUtil.deleteNoteSheet(noteSheet.getLocalFileName());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- songDao.deleteNoteSheets(noteSheets);
- });
- }
-
- public void getNoteSheetFilesBySongID(int songID, Callback> callback) {
- Executors.newSingleThreadExecutor().execute(()-> {
- List noteSheetFiles = songDao.getNoteSheetFilesBySongID(songID);
- callback.onResult(noteSheetFiles);
- });
- }
-}
diff --git a/app/src/main/java/com/stormtales/notevault/data/repositories/SongSyncRepository.java b/app/src/main/java/com/stormtales/notevault/data/repositories/SongSyncRepository.java
deleted file mode 100644
index bed896d..0000000
--- a/app/src/main/java/com/stormtales/notevault/data/repositories/SongSyncRepository.java
+++ /dev/null
@@ -1,303 +0,0 @@
-package com.stormtales.notevault.data.repositories;
-
-import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
-import androidx.recyclerview.widget.AsyncListUtil;
-import com.stormtales.notevault.data.MusicDatabase;
-import com.stormtales.notevault.data.dao.SongDao;
-import com.stormtales.notevault.data.entities.NoteSheet;
-import com.stormtales.notevault.data.entities.Song;
-import com.stormtales.notevault.data.sync.SyncStatus;
-import com.stormtales.notevault.network.sync.models.*;
-import com.stormtales.notevault.utils.NoteSheetsUtil;
-
-import java.io.File;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-
-public class SongSyncRepository {
- private SongDao songDao;
- public SongSyncRepository(Context context) {
- MusicDatabase database = MusicDatabase.getDatabase(context);
- songDao = database.getSongTable();
- }
-
- public void loadCreatedSongs(LoadDataCallback> callback) {
- Executors.newSingleThreadExecutor().execute(() -> {
- List createdSongs = songDao.getSongsBySyncStatus(SyncStatus.CREATED);
- Handler mainHandler = new Handler(Looper.getMainLooper());
- mainHandler.post(()-> callback.onResult(createdSongs));
- });
- }
-
- public void loadModifiedSongs(LoadDataCallback