Browse Source

index on DataBase: f5e1682 added database but the messages are in every folder the same, and to emailwriter there are

Simon Hammer 3 năm trước cách đây
mục cha
commit
726f83ca77

+ 9 - 3
app/schemas/com.noahvogt.miniprojekt.ui.DataBase.EmailRoomDatabase/1.json

@@ -2,11 +2,11 @@
   "formatVersion": 1,
   "database": {
     "version": 1,
-    "identityHash": "34face9405a190ae787e2fa2e498cbd7",
+    "identityHash": "217605d4a5ec0067e9003ad5b099a303",
     "entities": [
       {
         "tableName": "message_table",
-        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `to` TEXT NOT NULL, `cc` TEXT, `bcc` TEXT, `fromEmail` TEXT NOT NULL, `date` TEXT NOT NULL, `subject` TEXT, `textContent` TEXT, `seen` INTEGER NOT NULL)",
+        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `to` TEXT NOT NULL, `cc` TEXT, `bcc` TEXT, `fromEmail` TEXT NOT NULL, `date` TEXT NOT NULL, `subject` TEXT, `textContent` TEXT, `folder` TEXT NOT NULL, `seen` INTEGER NOT NULL)",
         "fields": [
           {
             "fieldPath": "id",
@@ -56,6 +56,12 @@
             "affinity": "TEXT",
             "notNull": false
           },
+          {
+            "fieldPath": "mFolder",
+            "columnName": "folder",
+            "affinity": "TEXT",
+            "notNull": true
+          },
           {
             "fieldPath": "mSeen",
             "columnName": "seen",
@@ -76,7 +82,7 @@
     "views": [],
     "setupQueries": [
       "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
-      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '34face9405a190ae787e2fa2e498cbd7')"
+      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '217605d4a5ec0067e9003ad5b099a303')"
     ]
   }
 }

+ 6 - 6
app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java

@@ -32,7 +32,7 @@ import androidx.navigation.ui.AppBarConfiguration;
 import androidx.navigation.ui.NavigationUI;
 
 import com.google.android.material.snackbar.Snackbar;
-import com.noahvogt.miniprojekt.ui.slideshow.DraftViewModel;
+import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -44,7 +44,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     private AppBarConfiguration mAppBarConfiguration;
 
     public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
-    public static DraftViewModel mEmailViewModel;
+    public static EmailViewModel mEmailViewModel;
     public static int View;
 
     private AlertDialog dialog;
@@ -103,14 +103,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
         recyclerView.setAdapter(adapter);
         recyclerView.setLayoutManager(new LinearLayoutManager(this));
 
-        if (View != 1 && View != -1) {
-            mEmailViewModel = new ViewModelProvider(this).get(DraftViewModel.class);
+
+            mEmailViewModel = new ViewModelProvider(this).get(EmailViewModel.class);
 
             mEmailViewModel.getDraftMessage().observe(this, messages -> {
                 /* Update the cached copy of the messages in the adapter*/
                 adapter.submitList(messages);
             });
-        }
+
 
         /* Start email Writer*/
         FloatingActionButton message_create_button = findViewById(R.id.messageButton);
@@ -144,7 +144,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                         data.getStringExtra(NewDraftMessageActivity.EXTRA_FROM),
                         ft.format(dNow),
                         data.getStringExtra(NewDraftMessageActivity.EXTRA_SUBJECT),
-                        data.getStringExtra(NewDraftMessageActivity.EXTRA_MESSAGE), false);
+                        data.getStringExtra(NewDraftMessageActivity.EXTRA_MESSAGE), "Draft",false);
                 mEmailViewModel.insert(word);
             } else {
                 Toast.makeText(

+ 29 - 4
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRepository.java

@@ -9,7 +9,11 @@ import java.util.List;
 public class EmailRepository {
 
     private MessageDao messageDao;
-    private LiveData<List<Message>> mAllMessage;
+    private final LiveData<List<Message>> mDraftMessage;
+    private LiveData<List<Message>> mInboxMessage;
+    private LiveData<List<Message>> mSentMessage;
+    private LiveData<List<Message>> mArchiveMessage;
+
 
     // Note that in order to unit test the WordRepository, you have to remove the Application
     // dependency. This adds complexity and much more code, and this sample is not about testing.
@@ -19,16 +23,37 @@ public class EmailRepository {
     public EmailRepository(Application application) {
         EmailRoomDatabase db = EmailRoomDatabase.getDatabase(application);
         messageDao = db.messageDao();
-        mAllMessage = messageDao.getDateMessages();
+        mDraftMessage = messageDao.getDraftMessages();
+        /*mArchiveMessage = messageDao.getArchiveMessages();
+        mInboxMessage = messageDao.getInboxMessages();
+        mSentMessage = messageDao.getSentMessages();
+
+         */
     }
 
     // Room executes all queries on a separate thread.
     // Observed LiveData will notify the observer when the data has changed.
-    /* returns all messages sorted by date */
+    /* returns all messages of with tag Draft */
     public LiveData<List<Message>> getDraftMessages() {
-        return mAllMessage;
+        return mDraftMessage;
+    }
+
+    /*
+    public LiveData<List<Message>> getInboxMessages() {
+        return mInboxMessage;
+    }
+
+    public LiveData<List<Message>> getSentMessages() {
+        return mSentMessage;
+    }
+
+    public LiveData<List<Message>> getArchiveMessages() {
+        return mArchiveMessage;
     }
 
+     */
+
+
     // You must call this on a non-UI thread or your app will throw an exception. Room ensures
     // that you're not doing any long running operations on the main thread, blocking the UI.
     public void insert(Message message) {

+ 16 - 1
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/EmailRoomDatabase.java

@@ -66,7 +66,22 @@ public abstract class EmailRoomDatabase extends RoomDatabase{
                 dao.deleteAll();
 
                 Message word = new Message("Simon", null, null,
-                        "Noah", "28.8.21", "testing", "I want to try it",
+                        "YungBoy", "28.8.21", "testing", "I want to try it", "Draft",
+                        true);
+                dao.insert(word);
+
+                word = new Message("Noah", null , null,
+                        "Samuel", "31.9.21", "draftTest", "I Try my best", "Draft",
+                        true);
+                dao.insert(word);
+
+                word = new Message("Noah", null , null,
+                        "Peter", "31.9.21", "draftTest", "I Try my best", "Draft",
+                        true);
+                dao.insert(word);
+
+                word = new Message("Noah", null , null,
+                        "Peter", "31.9.21", "draftTest", "I Try my best", "Inbox",
                         true);
                 dao.insert(word);
 

+ 8 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/Message.java

@@ -41,6 +41,10 @@ public class Message {
     @ColumnInfo(name = "textContent")
     private String mTextContent;
 
+    @NonNull
+    @ColumnInfo(name = "folder")
+    private String mFolder;
+
     @ColumnInfo(name = "seen")
     private boolean mSeen;
 
@@ -58,6 +62,8 @@ public class Message {
 
     public String getTextContent(){return this.mTextContent;}
 
+    public String getFolder(){return this.mFolder;}
+
     public int getId(){return this.id;}
 
     public boolean isSeen() {return this.mSeen;}
@@ -70,6 +76,7 @@ public class Message {
             @NonNull String date,
             String subject,
             String textContent,
+            @NonNull String folder,
             @NonNull boolean seen) {
         this.mTo = to;
         this.mFrom = from;
@@ -78,6 +85,7 @@ public class Message {
         this.mDate = date;
         this.mSubject = subject;
         this.mTextContent = textContent;
+        this.mFolder = folder;
         this.mSeen = seen;
     }
 

+ 23 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/DataBase/MessageDao.java

@@ -37,9 +37,32 @@ public interface MessageDao {
     @Query("SELECT * FROM message_table")
     LiveData<List<Message>> getAllMessages();
 
+    /*gets messages all messages ordered by date
+    * !IMPORTANT I don't know in which direction */
     @Query("SELECT * FROM message_table ORDER BY date ASC")
     LiveData<List<Message>> getDateMessages();
 
+    /* get Draft messages*/
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Draft' ORDER BY date ASC")
+    LiveData<List<Message>> getDraftMessages();
+
+    /* get Inbox messages*/
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Inbox' ORDER BY date ASC")
+    LiveData<List<Message>> getInboxMessages();
+
+    /* get Sent messages*/
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Sent' ORDER BY date ASC")
+    LiveData<List<Message>> getSentMessages();
+
+    /* get Archive messages*/
+    @Query("SELECT * FROM message_table WHERE folder LIKE 'Archive' ORDER BY date ASC")
+    LiveData<List<Message>> getArchiveMessages();
+
+
+
+
+
+
     /* selects just from, subject and date from word_table */
 
     /* @Query("SELECT fromEmail, date, subject, textContent FROM message_table")

+ 0 - 2
app/src/main/java/com/noahvogt/miniprojekt/ui/home/HomeFragment.java

@@ -19,11 +19,9 @@ import com.noahvogt.miniprojekt.R;
 public class HomeFragment extends Fragment {
 
     private HomeViewModel homeViewModel;
-    private static String Inbox;
 
     public View onCreateView(@NonNull LayoutInflater inflater,
                              ViewGroup container, Bundle savedInstanceState) {
-        MainActivity.View = -1;
 
         homeViewModel =
                 new ViewModelProvider(this).get(HomeViewModel.class);

+ 0 - 30
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/DraftViewModel.java

@@ -1,30 +0,0 @@
-package com.noahvogt.miniprojekt.ui.slideshow;
-
-import android.app.Application;
-
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.AndroidViewModel;
-
-import com.noahvogt.miniprojekt.MainActivity;
-import com.noahvogt.miniprojekt.ui.DataBase.EmailRepository;
-import com.noahvogt.miniprojekt.ui.DataBase.Message;
-
-import java.util.List;
-
-public class DraftViewModel extends AndroidViewModel {
-
-    private EmailRepository mEmailRepository;
-
-    private final LiveData<List<Message>> mDraftMessage;
-
-    public DraftViewModel(Application application) {
-        super(application);
-        mEmailRepository = new EmailRepository(application);
-        mDraftMessage = mEmailRepository.getDraftMessages();
-    }
-
-    public LiveData<List<Message>> getDraftMessage(){return mDraftMessage;}
-
-    public void insert(Message message){mEmailRepository.insert(message);}
-
-}

+ 49 - 0
app/src/main/java/com/noahvogt/miniprojekt/ui/slideshow/EmailViewModel.java

@@ -0,0 +1,49 @@
+package com.noahvogt.miniprojekt.ui.slideshow;
+
+import android.app.Application;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.AndroidViewModel;
+
+import com.noahvogt.miniprojekt.MainActivity;
+import com.noahvogt.miniprojekt.ui.DataBase.EmailRepository;
+import com.noahvogt.miniprojekt.ui.DataBase.Message;
+
+import java.util.List;
+
+public class EmailViewModel extends AndroidViewModel {
+
+    private EmailRepository mEmailRepository;
+
+    private LiveData<List<Message>> mDraftMessage;
+    private LiveData<List<Message>> mInboxMessage;
+    private LiveData<List<Message>> mSentMessage;
+    private LiveData<List<Message>> mArchiveMassage;
+
+    public EmailViewModel(Application application) {
+        super(application);
+        mEmailRepository = new EmailRepository(application);
+        mDraftMessage = mEmailRepository.getDraftMessages();
+    }
+
+    public LiveData<List<Message>> getDraftMessage(){
+        //mDraftMessage = mEmailRepository.getDraftMessages();
+        return mDraftMessage;}
+
+    /*public LiveData<List<Message>> getInboxMessage(){
+        mInboxMessage = mEmailRepository.getInboxMessages();
+        return mDraftMessage;}
+
+    public LiveData<List<Message>> getSentMessage(){
+        mSentMessage = mEmailRepository.getSentMessages();
+        return mDraftMessage;}
+
+    public LiveData<List<Message>> getArchiveMessage(){
+        mArchiveMassage = mEmailRepository.getArchiveMessages();
+        return mDraftMessage;}
+
+     */
+
+    public void insert(Message message){mEmailRepository.insert(message);}
+
+}

+ 3 - 1
app/src/main/res/layout/fragment_home.xml

@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:paddingLeft="16dp"
     android:paddingTop="16dp"
     android:paddingRight="16dp"
-    android:layout_gravity="top">
+    android:layout_gravity="top"
+    tools:context=".ui.home.HomeFragment">
 
     <!-- Add in TextView to display flower name   -->
     <TextView