use of com.faltenreich.diaguard.shared.event.data.EntryAddedEvent in project Diaguard by Faltenreich.
the class EntryEditFragment method submit.
private void submit() {
Entry entry = viewModel.getEntry();
List<Measurement> measurements = viewModel.getMeasurements();
entry.setMeasurementCache(measurements);
boolean isNewEntry = !entry.isPersisted();
entry = EntryDao.getInstance().createOrUpdate(entry);
for (Measurement measurement : EntryDao.getInstance().getMeasurements(entry)) {
boolean isObsolete = !measurements.contains(measurement);
if (isObsolete) {
MeasurementDao.getInstance(measurement.getClass()).delete(measurement);
}
}
for (Measurement measurement : measurements) {
MeasurementDao.getInstance(measurement.getClass()).createOrUpdate(measurement);
}
List<Tag> tags = new ArrayList<>();
List<EntryTag> entryTags = new ArrayList<>();
for (int index = 0; index < tagListView.getChildCount(); index++) {
View view = tagListView.getChildAt(index);
if (view.getTag() instanceof Tag) {
Tag tag = (Tag) view.getTag();
if (tag.getId() < 0) {
tag = TagDao.getInstance().createOrUpdate(tag);
Tag legacy = TagDao.getInstance().getByName(tag.getName());
if (legacy != null) {
tag.setId(legacy.getId());
}
}
tag.setUpdatedAt(DateTime.now());
tags.add(tag);
EntryTag entryTag = new EntryTag();
entryTag.setEntry(entry);
entryTag.setTag(tag);
entryTags.add(entryTag);
}
}
TagDao.getInstance().bulkCreateOrUpdate(tags);
// TODO: Update instead of delete
EntryTagDao.getInstance().deleteAll(entry);
EntryTagDao.getInstance().bulkCreateOrUpdate(entryTags);
List<FoodEaten> foodEatenList = getFoodEaten();
// Force update in order to synchronize the measurement cache
entry = EntryDao.getInstance().getById(entry.getId());
entry.setMeasurementCache(EntryDao.getInstance().getMeasurements(entry));
if (isNewEntry) {
Toast.makeText(getContext(), getString(R.string.entry_added), Toast.LENGTH_LONG).show();
Events.post(new EntryAddedEvent(entry, entryTags, foodEatenList));
} else {
Events.post(new EntryUpdatedEvent(entry, entryTags, foodEatenList));
}
int alarmInMinutes = viewModel.getAlarmInMinutes();
if (alarmInMinutes > 0) {
AlarmUtils.setAlarm(alarmInMinutes * DateTimeConstants.MILLIS_PER_MINUTE);
}
finish();
}
use of com.faltenreich.diaguard.shared.event.data.EntryAddedEvent in project Diaguard by Faltenreich.
the class CalculatorFragment method storeValues.
private void storeValues(float mgDl, float carbohydrates, float bolus, float correction) {
DateTime now = DateTime.now();
Entry entry = new Entry();
entry.setDate(now);
EntryDao.getInstance().createOrUpdate(entry);
BloodSugar bloodSugar = new BloodSugar();
bloodSugar.setMgDl(mgDl);
bloodSugar.setEntry(entry);
MeasurementDao.getInstance(BloodSugar.class).createOrUpdate(bloodSugar);
List<FoodEaten> foodEatenList = new ArrayList<>();
if (carbohydrates > 0) {
FoodInputView foodInputView = getBinding().foodInputView;
foodEatenList.addAll(foodInputView.getFoodEatenList());
meal.setCarbohydrates(foodInputView.getInputCarbohydrates());
meal.setEntry(entry);
MeasurementDao.getInstance(Meal.class).createOrUpdate(meal);
for (FoodEaten foodEaten : foodEatenList) {
if (foodEaten.getAmountInGrams() > 0) {
foodEaten.setMeal(meal);
FoodEatenDao.getInstance().createOrUpdate(foodEaten);
}
}
}
if (bolus > 0 || correction > 0) {
Insulin insulin = new Insulin();
insulin.setBolus(bolus);
insulin.setCorrection(correction);
insulin.setEntry(entry);
MeasurementDao.getInstance(Insulin.class).createOrUpdate(insulin);
}
Events.post(new EntryAddedEvent(entry, null, foodEatenList));
openEntry(entry);
clearInput();
update();
}
use of com.faltenreich.diaguard.shared.event.data.EntryAddedEvent in project Diaguard by Faltenreich.
the class BaseFragment method onEvent.
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(final EntryDeletedEvent event) {
if (getView() == null) {
return;
}
ViewUtils.showSnackbar(getView(), getString(R.string.entry_deleted), v -> {
Entry entry = event.context;
EntryDao.getInstance().createOrUpdate(entry);
for (Measurement measurement : entry.getMeasurementCache()) {
measurement.setEntry(entry);
// noinspection unchecked
MeasurementDao.getInstance(measurement.getClass()).createOrUpdate(measurement);
}
for (EntryTag entryTag : event.entryTags) {
entryTag.setEntry(entry);
EntryTagDao.getInstance().createOrUpdate(entryTag);
}
Events.post(new EntryAddedEvent(entry, event.entryTags, event.foodEatenList));
});
}
Aggregations