Search in sources :

Example 1 with Medicine

use of m.co.rh.id.a_medic_log.base.entity.Medicine in project a-medic-log by rh-id.

the class NoteDaoTest method insertUpdateDelete_noteState.

@Test
public void insertUpdateDelete_noteState() {
    NoteDao noteDao = mAppDatabase.noteDao();
    MedicineDao medicineDao = mAppDatabase.medicineDao();
    String noteContent = "test note";
    String noteTagTag = "sample tag";
    String medicineName = "test medicine name";
    String medicineIntakeDesc = "test medicine intake";
    String medicineReminderMessage = "test medicine reminder message";
    NoteState noteState = new NoteState();
    Note note = new Note();
    note.content = noteContent;
    noteState.updateNote(note);
    NoteTag noteTag = new NoteTag();
    noteTag.tag = noteTagTag;
    noteState.updateNoteTagSet(Collections.singletonList(noteTag));
    List<MedicineState> medicineStateList = new ArrayList<>();
    MedicineState medicineState = new MedicineState();
    Medicine medicine = new Medicine();
    medicine.name = medicineName;
    medicineState.updateMedicine(medicine);
    MedicineReminder medicineReminder = new MedicineReminder();
    medicineReminder.message = medicineReminderMessage;
    medicineState.updateMedicineReminderList(Collections.singletonList(medicineReminder));
    medicineStateList.add(medicineState);
    noteState.updateMedicineStates(medicineStateList);
    // INSERT NOTE
    noteDao.insertNote(noteState);
    assertEquals(1, noteDao.countNote());
    assertEquals(1, noteDao.countNoteTag());
    assertEquals(1, medicineDao.countMedicine());
    assertEquals(1, medicineDao.countMedicineReminder());
    assertEquals(0, medicineDao.countMedicineIntake());
    Note noteFromInsert = noteDao.findNoteById(noteState.getNoteId());
    assertEquals(noteContent, noteFromInsert.content);
    List<NoteTag> noteTagListFromInsert = noteDao.findNoteTagsByNoteId(noteState.getNoteId());
    assertEquals(1, noteTagListFromInsert.size());
    assertEquals(noteTagTag, noteTagListFromInsert.get(0).tag);
    List<Medicine> medicineListFromInsert = noteDao.findMedicinesByNoteId(noteState.getNoteId());
    assertEquals(1, medicineListFromInsert.size());
    assertEquals(medicineName, medicineListFromInsert.get(0).name);
    List<MedicineReminder> medicineReminderListFromInsert = medicineDao.findMedicineRemindersByMedicineId(medicineListFromInsert.get(0).id);
    assertEquals(1, medicineReminderListFromInsert.size());
    assertEquals(medicineReminderMessage, medicineReminderListFromInsert.get(0).message);
    // try insert medicine intake
    MedicineIntake medicineIntake = new MedicineIntake();
    medicineIntake.medicineId = medicineListFromInsert.get(0).id;
    medicineIntake.description = medicineIntakeDesc;
    medicineDao.insert(medicineIntake);
    // after that update note
    String noteContentUpdate = noteContent + " updated ";
    noteState.getNote().content = noteContentUpdate;
    // UPDATE NOTE
    noteDao.updateNote(noteState);
    assertEquals(1, noteDao.countNote());
    assertEquals(1, noteDao.countNoteTag());
    assertEquals(1, medicineDao.countMedicine());
    assertEquals(1, medicineDao.countMedicineReminder());
    assertEquals(1, medicineDao.countMedicineIntake());
    Note noteFromUpdate = noteDao.findNoteById(noteState.getNoteId());
    assertEquals(noteContentUpdate, noteFromUpdate.content);
    List<NoteTag> noteTagListFromUpdate = noteDao.findNoteTagsByNoteId(noteState.getNoteId());
    assertEquals(1, noteTagListFromUpdate.size());
    assertEquals(noteTagTag, noteTagListFromUpdate.get(0).tag);
    List<Medicine> medicineListFromUpdate = noteDao.findMedicinesByNoteId(noteState.getNoteId());
    assertEquals(1, medicineListFromUpdate.size());
    assertEquals(medicineName, medicineListFromUpdate.get(0).name);
    List<MedicineReminder> medicineReminderListFromUpdate = medicineDao.findMedicineRemindersByMedicineId(medicineListFromUpdate.get(0).id);
    assertEquals(1, medicineReminderListFromUpdate.size());
    assertEquals(medicineReminderMessage, medicineReminderListFromUpdate.get(0).message);
    // ensure medicine intake not deleted when updating note state
    MedicineIntake updateNoteMedicineIntake = medicineDao.findLastMedicineIntake(medicineIntake.medicineId);
    assertNotNull(updateNoteMedicineIntake);
    assertEquals(medicineIntakeDesc, updateNoteMedicineIntake.description);
    // DELETE NOTE
    noteDao.deleteNote(noteState);
    assertEquals(0, noteDao.countNote());
    assertEquals(0, noteDao.countNoteTag());
    assertEquals(0, medicineDao.countMedicine());
    assertEquals(0, medicineDao.countMedicineReminder());
    assertEquals(0, medicineDao.countMedicineIntake());
}
Also used : MedicineState(m.co.rh.id.a_medic_log.base.state.MedicineState) ArrayList(java.util.ArrayList) NoteTag(m.co.rh.id.a_medic_log.base.entity.NoteTag) NoteState(m.co.rh.id.a_medic_log.base.state.NoteState) Medicine(m.co.rh.id.a_medic_log.base.entity.Medicine) Note(m.co.rh.id.a_medic_log.base.entity.Note) MedicineIntake(m.co.rh.id.a_medic_log.base.entity.MedicineIntake) MedicineReminder(m.co.rh.id.a_medic_log.base.entity.MedicineReminder) Test(org.junit.Test)

Example 2 with Medicine

use of m.co.rh.id.a_medic_log.base.entity.Medicine in project a-medic-log by rh-id.

the class MedicineDao method findMedicineStateByMedicineId.

@Transaction
public MedicineState findMedicineStateByMedicineId(long medicineId) {
    MedicineState medicineState = new MedicineState();
    Medicine medicine = findMedicineById(medicineId);
    List<MedicineReminder> medicineReminders = findMedicineRemindersByMedicineId(medicineId);
    medicineState.updateMedicine(medicine);
    medicineState.updateMedicineReminderList(medicineReminders);
    return medicineState;
}
Also used : Medicine(m.co.rh.id.a_medic_log.base.entity.Medicine) MedicineState(m.co.rh.id.a_medic_log.base.state.MedicineState) MedicineReminder(m.co.rh.id.a_medic_log.base.entity.MedicineReminder) Transaction(androidx.room.Transaction)

Example 3 with Medicine

use of m.co.rh.id.a_medic_log.base.entity.Medicine in project a-medic-log by rh-id.

the class NoteDao method insertNote.

@Transaction
public void insertNote(NoteState noteState) {
    Note note = noteState.getNote();
    Set<NoteTag> noteTags = noteState.getNoteTagSet();
    List<NoteAttachmentState> noteAttachmentStates = noteState.getNoteAttachmentStates();
    List<MedicineState> medicineStates = noteState.getMedicineList();
    long noteId = insert(note);
    note.id = noteId;
    if (noteTags != null && !noteTags.isEmpty()) {
        for (NoteTag noteTag : noteTags) {
            noteTag.noteId = noteId;
            noteTag.id = insert(noteTag);
        }
    }
    if (noteAttachmentStates != null && !noteAttachmentStates.isEmpty()) {
        for (NoteAttachmentState noteAttachmentState : noteAttachmentStates) {
            NoteAttachment noteAttachment = noteAttachmentState.getNoteAttachment();
            noteAttachment.noteId = noteId;
            insertNoteAttachment(noteAttachmentState);
        }
    }
    if (medicineStates != null && !medicineStates.isEmpty()) {
        for (MedicineState medicineState : medicineStates) {
            Medicine medicine = medicineState.getMedicine();
            medicine.noteId = noteId;
            long medicineId = insert(medicine);
            medicine.id = medicineId;
            List<MedicineReminder> medicineReminders = medicineState.getMedicineReminderList();
            if (medicineReminders != null && !medicineReminders.isEmpty()) {
                for (MedicineReminder medicineReminder : medicineReminders) {
                    medicineReminder.medicineId = medicineId;
                    medicineReminder.id = insert(medicineReminder);
                }
            }
        }
    }
}
Also used : NoteAttachmentState(m.co.rh.id.a_medic_log.base.state.NoteAttachmentState) NoteAttachment(m.co.rh.id.a_medic_log.base.entity.NoteAttachment) Medicine(m.co.rh.id.a_medic_log.base.entity.Medicine) MedicineState(m.co.rh.id.a_medic_log.base.state.MedicineState) Note(m.co.rh.id.a_medic_log.base.entity.Note) NoteTag(m.co.rh.id.a_medic_log.base.entity.NoteTag) MedicineReminder(m.co.rh.id.a_medic_log.base.entity.MedicineReminder) Transaction(androidx.room.Transaction)

Example 4 with Medicine

use of m.co.rh.id.a_medic_log.base.entity.Medicine in project a-medic-log by rh-id.

the class MedicineState method readObject.

@SuppressWarnings("unchecked")
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
    Medicine medicine = (Medicine) in.readObject();
    ArrayList<MedicineReminder> medicineReminders = (ArrayList<MedicineReminder>) in.readObject();
    mMedicineSubject = BehaviorSubject.createDefault(medicine);
    mMedicineReminderListSubject = BehaviorSubject.createDefault(medicineReminders);
}
Also used : Medicine(m.co.rh.id.a_medic_log.base.entity.Medicine) ArrayList(java.util.ArrayList) MedicineReminder(m.co.rh.id.a_medic_log.base.entity.MedicineReminder)

Example 5 with Medicine

use of m.co.rh.id.a_medic_log.base.entity.Medicine in project a-medic-log by rh-id.

the class MedicineState method clone.

@Override
public MedicineState clone() {
    MedicineState medicineState = new MedicineState();
    Medicine medicine = mMedicineSubject.getValue();
    if (medicine != null) {
        medicine = medicine.clone();
    }
    medicineState.updateMedicine(medicine);
    ArrayList<MedicineReminder> medicineReminders = mMedicineReminderListSubject.getValue();
    if (medicineReminders != null) {
        ArrayList<MedicineReminder> clonedList = new ArrayList<>(medicineReminders.size());
        for (MedicineReminder medicineReminder : medicineReminders) {
            clonedList.add(medicineReminder.clone());
        }
        medicineReminders = clonedList;
    } else {
        medicineReminders = new ArrayList<>();
    }
    medicineState.updateMedicineReminderList(medicineReminders);
    return medicineState;
}
Also used : Medicine(m.co.rh.id.a_medic_log.base.entity.Medicine) ArrayList(java.util.ArrayList) MedicineReminder(m.co.rh.id.a_medic_log.base.entity.MedicineReminder)

Aggregations

Medicine (m.co.rh.id.a_medic_log.base.entity.Medicine)10 MedicineReminder (m.co.rh.id.a_medic_log.base.entity.MedicineReminder)6 ArrayList (java.util.ArrayList)4 Note (m.co.rh.id.a_medic_log.base.entity.Note)4 MedicineState (m.co.rh.id.a_medic_log.base.state.MedicineState)4 Transaction (androidx.room.Transaction)3 NoteAttachment (m.co.rh.id.a_medic_log.base.entity.NoteAttachment)2 NoteTag (m.co.rh.id.a_medic_log.base.entity.NoteTag)2 Profile (m.co.rh.id.a_medic_log.base.entity.Profile)2 Activity (android.app.Activity)1 PendingIntent (android.app.PendingIntent)1 Intent (android.content.Intent)1 Handler (android.os.Handler)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 Button (android.widget.Button)1 NonNull (androidx.annotation.NonNull)1 NotificationCompat (androidx.core.app.NotificationCompat)1 NotificationManagerCompat (androidx.core.app.NotificationManagerCompat)1 DrawerLayout (androidx.drawerlayout.widget.DrawerLayout)1