diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java index 77f96771ba9535de854e0a28b329d25d6a996cab..26e7bc21a7187b2bbe050e0addeb71a183329ace 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java @@ -9,7 +9,6 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.View; import android.view.Menu; import android.view.MenuItem; @@ -17,14 +16,16 @@ import android.view.MenuItem; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.ireallydontcare.viet.posseidon.adapter.SubjectAdapter; +import com.ireallydontcare.viet.posseidon.data.EventDatabase; import com.ireallydontcare.viet.posseidon.data.SubjectDatabase; import com.ireallydontcare.viet.posseidon.fragments.NewDialogSubjectFragment; +import com.ireallydontcare.viet.posseidon.json.eventJsonObject; import com.ireallydontcare.viet.posseidon.json.subjectJsonObject; +import com.ireallydontcare.viet.posseidon.model.Event; import com.ireallydontcare.viet.posseidon.model.Subject; -import com.ireallydontcare.viet.posseidon.qr.QRActivity; -import com.ireallydontcare.viet.posseidon.qr.QRReaderActivity; import com.ireallydontcare.viet.posseidon.qr.ScannedBarcodeActivity; +import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity @@ -35,6 +36,8 @@ public class MainActivity extends AppCompatActivity private RecyclerView.LayoutManager subjectLayoutManager; private SubjectDatabase database; + private MainActivity ref = this; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -116,22 +119,6 @@ public class MainActivity extends AppCompatActivity }.execute(); }; - public Long onSubjectItemCreatedWithID(final Subject newItem) { - new AsyncTask<Void, Void, Subject>() { - - @Override - protected Subject doInBackground(Void... voids) { - newItem.id = database.SubjectDao().insert(newItem); - return newItem; - } - - @Override - protected void onPostExecute(Subject subject) { - subjectAdapter.addItem(subject); - } - }.execute(); - return newItem.id; - }; private void loadItemsInBackground(){ new AsyncTask<Void, Void, List<Subject>>() { @@ -160,23 +147,97 @@ public class MainActivity extends AppCompatActivity showDetailsIntent.setClass(MainActivity.this, ScannedBarcodeActivity.class); startActivity(showDetailsIntent); return true; + case R.id.action_deleteall: + deleteall(); default: return true; } } - public void importQRJsonData(){ + public void importQRJsonDataasd(){ + Subject newSubject; + subjectJsonObject jsonObject; try{ String toParse = getIntent().getExtras().getString(ScannedBarcodeActivity.QR_DATA); if(!toParse.isEmpty()) { Gson gson = new GsonBuilder().create(); - subjectJsonObject jsonObject = gson.fromJson(toParse,subjectJsonObject.class); - Subject newSubject = jsonObject.getSubject(); - newSubject.id = onSubjectItemCreatedWithID(newSubject); - System.out.print(newSubject.id); + jsonObject = gson.fromJson(toParse,subjectJsonObject.class); + newSubject = jsonObject.getSubject(); + database.SubjectDao().insert(newSubject); + Long id = subjectAdapter.getall().get(subjectAdapter.getall().size()-1).id; + importEvents(jsonObject.events, id); + } - }catch (Exception e){} + }catch (Exception e){ + } } + private void importQRJsonData(){ + new AsyncTask<Void, Void, Subject>() { + + @Override + protected Subject doInBackground(Void... voids) { + Subject newSubject; + subjectJsonObject jsonObject; + try{ + String toParse = getIntent().getExtras().getString(ScannedBarcodeActivity.QR_DATA); + if(!toParse.isEmpty()) { + Gson gson = new GsonBuilder().create(); + jsonObject = gson.fromJson(toParse,subjectJsonObject.class); + newSubject = jsonObject.getSubject(); + newSubject.id = database.SubjectDao().insert(newSubject); + importEvents(jsonObject.events, newSubject.id); + return newSubject; + } + + }catch (Exception e){ + return null; + } + return null; + } + protected void onPostExecute(Subject subject) { + if( subject != null) + subjectAdapter.addItem(subject);} + }.execute(); + } + + public void importEvents(List<eventJsonObject> events,Long subjectId){ + EventDatabase eventDatabase; + + eventDatabase = Room.databaseBuilder( + getApplicationContext(), + EventDatabase.class, + "event-list" + ).build(); + + + for ( eventJsonObject event: events) { + Event eventDataObject = event.getEventObject(subjectId); + eventDatabase.EventDao().insert(eventDataObject); + } + } + + public void deleteall(){ + subjectAdapter.empty(); + + new AsyncTask<Void, Void, Void>() { + + @Override + protected Void doInBackground(Void... voids) { + database.SubjectDao().deleteAll(); + + EventDatabase eventDatabase; + eventDatabase = Room.databaseBuilder( + getApplicationContext(), + EventDatabase.class, + "event-list" + ).build(); + eventDatabase.EventDao().deleteAll(); + + return null; + } + + }.execute(); + } } diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java index b410845892b82b9632138a1072f65a2b337860b4..c57360a6f7c09edf2e09a512d15bba1b054e2247 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java @@ -87,6 +87,11 @@ public class SubjectActivity extends AppCompatActivity "event-list" ).build(); + } + + @Override + public void onResume() { + super.onResume(); loadItemsInBackground(); } diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java index 327434b698a8885ae0ace7194a6c7b49f977cad6..d6e24e3451515b0dd8204178d40a97bc92ff2d0d 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java @@ -69,7 +69,7 @@ public class EventAdapter extends RecyclerView.Adapter<EventAdapter.EventViewHol public void addItem(Event Event){ events.add(Event); - notifyItemInserted(events.size() - 1); + notifyDataSetChanged(); } public void update(List<Event> events){ diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java index 0c68732d36888e4b1d8abfd04e29138607c20179..f7b4553055407ee339348b962b20ba8615b0dbb6 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java @@ -55,6 +55,11 @@ public class SubjectAdapter extends RecyclerView.Adapter<SubjectAdapter.SubjectV notifyDataSetChanged(); } + public void empty(){ + this.subjects.clear(); + notifyDataSetChanged(); + } + @Override public int getItemCount() { return subjects.size(); @@ -88,4 +93,8 @@ public class SubjectAdapter extends RecyclerView.Adapter<SubjectAdapter.SubjectV notifyItemInserted(subjects.size() - 1); } + public List<Subject> getall(){ + return subjects; + } + } \ No newline at end of file diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java index 381f82041f393c9d2ec015039d373a6f02d09aa1..f373ad5d3e244ead7bf6a0b2352da93eb150b5fd 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java @@ -27,4 +27,7 @@ public interface EventDao { @Delete void deleteItem(Event eventitem); + + @Query("DELETE FROM eventitem") + void deleteAll(); } diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java index e3972d14c8044cb9d517decd2a45adb71b28923b..a5dbd3751e0198c92d8f4423671292f8b0bfa5c5 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java @@ -27,4 +27,7 @@ public interface SubjectDao { @Query("SELECT * FROM subjectitem where id = :id") Subject getSubjectById(Long id); + + @Query("DELETE FROM subjectitem") + void deleteAll(); } diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index a20ab8c1351114697233ef21df77697ae3abaefa..39ddc1ec2e846304365ce23de093b9898e30e108 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -7,4 +7,9 @@ android:orderInCategory="100" android:title="scanQR" app:showAsAction="never" /> + <item + android:id="@+id/action_deleteall" + android:orderInCategory="100" + android:title="delete alll" + app:showAsAction="never" /> </menu> diff --git a/app/src/main/res/menu/menu_subject.xml b/app/src/main/res/menu/menu_subject.xml index 3b3896cf314ee97e242b4d41b42b76946017caec..1fe8decfaf0bf54cb7f1e8573d497f0c4cd35622 100644 --- a/app/src/main/res/menu/menu_subject.xml +++ b/app/src/main/res/menu/menu_subject.xml @@ -2,11 +2,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.ireallydontcare.viet.posseidon.MainActivity"> - <item - android:id="@+id/deleteSubject" - android:orderInCategory="100" - android:title="Delete" - app:showAsAction="never" /> <item android:id="@+id/genQR" android:orderInCategory="100"