use of m.co.rh.id.a_medic_log.base.state.NoteState in project a-medic-log by rh-id.
the class NoteDetailPage method provideComponent.
@Override
public void provideComponent(Provider provider) {
mExecutorService = provider.get(ExecutorService.class);
mSvProvider = provider.get(StatefulViewProvider.class);
mLogger = mSvProvider.get(ILogger.class);
mRxDisposer = mSvProvider.get(RxDisposer.class);
mMedicineReminderChangeNotifier = mSvProvider.get(MedicineReminderChangeNotifier.class);
mNoteAttachmentFileChangeNotifier = mSvProvider.get(NoteAttachmentFileChangeNotifier.class);
mQueryNoteCmd = mSvProvider.get(QueryNoteCmd.class);
boolean isUpdate = isUpdate();
if (isUpdate) {
mNewNoteCmd = mSvProvider.get(UpdateNoteCmd.class);
} else {
mNewNoteCmd = mSvProvider.get(NewNoteCmd.class);
}
mDeleteNoteTagCmd = mSvProvider.get(DeleteNoteTagCmd.class);
mDeleteNoteAttachmentCmd = mSvProvider.get(DeleteNoteAttachmentCmd.class);
if (mNoteState == null) {
mNoteState = new NoteState();
if (isUpdate) {
mNoteState.setNoteId(getNoteId());
mRxDisposer.add("provideComponent_queryNoteInfo", mQueryNoteCmd.queryNoteInfo(mNoteState).subscribe((noteState, throwable) -> {
if (throwable != null) {
mLogger.e(TAG, throwable.getMessage(), throwable);
}
}));
} else {
mNoteState.setNoteProfileId(getProfileId());
}
}
if (mAppBarSv == null) {
mAppBarSv = new AppBarSV(R.menu.page_note_detail);
}
if (isUpdate) {
mAppBarSv.setTitle(mNavigator.getActivity().getString(R.string.title_update_note));
} else {
mAppBarSv.setTitle(mNavigator.getActivity().getString(R.string.title_add_note));
}
mAppBarSv.setMenuItemListener(this);
initTextWatcher();
mMedicineRecyclerViewAdapter = new MedicineRecyclerViewAdapter(mNoteState, this, this, this, this, mNavigator, this);
mNoteAttachmentRecyclerViewAdapter = new NoteAttachmentRecyclerViewAdapter(mNoteState, this, this, mNavigator, this);
mCompositeDisposable = new CompositeDisposable();
}
use of m.co.rh.id.a_medic_log.base.state.NoteState 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.state.NoteState in project a-medic-log by rh-id.
the class NoteDetailPage method onMenuItemClick.
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.menu_save) {
if (mNewNoteCmd.valid(mNoteState)) {
Context context = mSvProvider.getContext();
boolean isUpdate = isUpdate();
mSvProvider.get(RxDisposer.class).add("onMenuItemClick_newNoteCmd.execute", mNewNoteCmd.execute(mNoteState).subscribe((noteState, throwable) -> {
String errorMessage;
String successMessage;
if (isUpdate) {
errorMessage = context.getString(R.string.error_failed_to_update_note);
successMessage = context.getString(R.string.success_updating_note);
} else {
errorMessage = context.getString(R.string.error_failed_to_add_note);
successMessage = context.getString(R.string.success_adding_note);
}
if (throwable != null) {
mLogger.e(TAG, errorMessage, throwable);
mNavigator.pop();
} else {
mLogger.i(TAG, successMessage);
mNavigator.pop(Result.withNote(noteState));
}
}));
} else {
String error = mNewNoteCmd.getValidationError();
mLogger.i(TAG, error);
}
}
return false;
}
Aggregations