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());
}
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;
}
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);
}
}
}
}
}
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);
}
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;
}
Aggregations