use of com.faltenreich.diaguard.shared.data.database.entity.Entry in project Diaguard by Faltenreich.
the class HbA1cDashboardValue method forUserGeneratedHbA1c.
@Nullable
private Float forUserGeneratedHbA1c() {
Entry latestHbA1cEntry = getLatestEntryWithHbA1c();
if (latestHbA1cEntry != null) {
latestHbA1cEntry.setMeasurementCache(EntryDao.getInstance().getMeasurements(latestHbA1cEntry));
for (Measurement measurement : latestHbA1cEntry.getMeasurementCache()) {
if (measurement instanceof HbA1c) {
this.entry = latestHbA1cEntry;
HbA1c hbA1c = (HbA1c) measurement;
return PreferenceStore.getInstance().formatDefaultToCustomUnit(Category.HBA1C, hbA1c.getValues()[0]);
}
}
}
return null;
}
use of com.faltenreich.diaguard.shared.data.database.entity.Entry in project Diaguard by Faltenreich.
the class CsvExport method doInBackground.
@Override
protected File doInBackground(Void... params) {
DateTime dateStart = config.getDateStart();
DateTime dateEnd = config.getDateEnd();
Category[] categories = config.getCategories();
boolean isBackup = config.isBackup();
File file = isBackup ? Export.getBackupFile(config, FileType.CSV) : Export.getExportFile(config);
try {
FileWriter fileWriter = new FileWriter(file);
CSVWriter writer = new CSVWriter(fileWriter, CsvMeta.CSV_DELIMITER);
if (isBackup) {
// Meta information to detect the data scheme in future iterations
String[] meta = new String[] { CsvMeta.CSV_KEY_META, Integer.toString(DatabaseHelper.getVersion()) };
writer.writeNext(meta);
List<Tag> tags = TagDao.getInstance().getAll();
for (Tag tag : tags) {
writer.writeNext(ArrayUtils.add(tag.getValuesForBackup(), 0, tag.getKeyForBackup()));
}
List<Food> foods = FoodDao.getInstance().getAllFromUser();
for (Food food : foods) {
writer.writeNext(ArrayUtils.add(food.getValuesForBackup(), 0, food.getKeyForBackup()));
}
}
List<Entry> entries = dateStart != null && dateEnd != null ? EntryDao.getInstance().getEntriesBetween(dateStart, dateEnd) : EntryDao.getInstance().getAll();
int position = 0;
for (Entry entry : entries) {
publishProgress(String.format(Locale.getDefault(), "%s %d/%d", config.getContext().getString(R.string.entry), position, entries.size()));
writer.writeNext(isBackup ? ArrayUtils.add(entry.getValuesForBackup(), 0, entry.getKeyForBackup()) : entry.getValuesForExport());
List<Measurement> measurements = categories != null ? EntryDao.getInstance().getMeasurements(entry, categories) : EntryDao.getInstance().getMeasurements(entry);
for (Measurement measurement : measurements) {
writer.writeNext(isBackup ? ArrayUtils.add(measurement.getValuesForBackup(), 0, measurement.getKeyForBackup()) : measurement.getValuesForExport());
if (isBackup && measurement instanceof Meal) {
Meal meal = (Meal) measurement;
for (FoodEaten foodEaten : meal.getFoodEaten()) {
if (foodEaten.getMeal() != null && foodEaten.getFood() != null) {
writer.writeNext(ArrayUtils.add(foodEaten.getValuesForBackup(), 0, foodEaten.getKeyForBackup()));
}
}
}
}
if (isBackup) {
List<EntryTag> entryTags = EntryTagDao.getInstance().getAll(entry);
for (EntryTag entryTag : entryTags) {
if (entryTag.getEntry() != null && entryTag.getTag() != null) {
writer.writeNext(ArrayUtils.add(entryTag.getValuesForBackup(), 0, entryTag.getKeyForBackup()));
}
}
}
position++;
}
writer.close();
} catch (IOException exception) {
Log.e(TAG, exception.toString());
}
return file;
}
use of com.faltenreich.diaguard.shared.data.database.entity.Entry in project Diaguard by Faltenreich.
the class CsvImport method importFromVersion2_2.
@SuppressWarnings("ParameterCanBeLocal")
private void importFromVersion2_2(CSVReader reader, String[] nextLine) throws Exception {
Entry entry = null;
while ((nextLine = reader.readNext()) != null) {
String key = nextLine[0];
if (key.equalsIgnoreCase(Entry.BACKUP_KEY)) {
entry = new Entry();
entry.setDate(DateTimeFormat.forPattern(Export.BACKUP_DATE_FORMAT).parseDateTime(nextLine[1]));
String note = nextLine[2];
entry.setNote(note != null && note.length() > 0 ? note : null);
entry = EntryDao.getInstance().createOrUpdate(entry);
} else if (key.equalsIgnoreCase(Measurement.BACKUP_KEY) && entry != null) {
try {
Category category = Helper.valueOf(Category.class, nextLine[1]);
Measurement measurement = category.toClass().newInstance();
List<Float> valueList = new ArrayList<>();
for (int position = 2; position < nextLine.length; position++) {
String valueString = nextLine[position];
try {
valueList.add(FloatUtils.parseNumber(valueString));
} catch (NumberFormatException exception) {
Log.e(TAG, exception.toString());
}
}
float[] values = new float[valueList.size()];
for (int position = 0; position < valueList.size(); position++) {
values[position] = valueList.get(position);
}
measurement.setValues(values);
measurement.setEntry(entry);
MeasurementDao.getInstance(category.toClass()).createOrUpdate(measurement);
} catch (InstantiationException exception) {
Log.e(TAG, exception.toString());
} catch (IllegalAccessException exception) {
Log.e(TAG, exception.toString());
}
}
}
}
use of com.faltenreich.diaguard.shared.data.database.entity.Entry in project Diaguard by Faltenreich.
the class CsvImport method importFromVersion3_0.
@SuppressWarnings("ParameterCanBeLocal")
private void importFromVersion3_0(CSVReader reader, String[] nextLine) throws Exception {
Entry lastEntry = null;
Meal lastMeal = null;
while ((nextLine = reader.readNext()) != null) {
switch(nextLine[0]) {
case Tag.BACKUP_KEY:
if (nextLine.length >= 2) {
String tagName = nextLine[1];
if (TagDao.getInstance().getByName(tagName) == null) {
Tag tag = new Tag();
tag.setName(nextLine[1]);
TagDao.getInstance().createOrUpdate(tag);
}
}
break;
case Food.BACKUP_KEY:
if (nextLine.length >= 5) {
String foodName = nextLine[1];
Food food = FoodDao.getInstance().get(foodName);
if (food == null) {
food = new Food();
food.setName(foodName);
food.setBrand(nextLine[2]);
food.setIngredients(nextLine[3]);
food.setCarbohydrates(FloatUtils.parseNumber(nextLine[4]));
FoodDao.getInstance().createOrUpdate(food);
} else if (food.isDeleted()) {
// Reactivate previously deleted food that is being re-imported
food.setDeletedAt(null);
FoodDao.getInstance().createOrUpdate(food);
}
}
break;
case Entry.BACKUP_KEY:
lastMeal = null;
if (nextLine.length >= 3) {
DateTime parsedDateTime = DateTimeFormat.forPattern(Export.BACKUP_DATE_FORMAT).parseDateTime(nextLine[1]);
DateStrategy dateStrategy = this.dateStrategy != null ? this.dateStrategy : defaultDateStrategy;
DateTime dateTime = dateStrategy.convertDate(parsedDateTime);
lastEntry = new Entry();
lastEntry.setDate(dateTime);
String note = nextLine[2];
lastEntry.setNote(note != null && note.length() > 0 ? note : null);
lastEntry = EntryDao.getInstance().createOrUpdate(lastEntry);
break;
}
case Measurement.BACKUP_KEY:
if (lastEntry != null && nextLine.length >= 3) {
Category category = Helper.valueOf(Category.class, nextLine[1]);
if (category != null) {
try {
Measurement measurement = category.toClass().newInstance();
List<Float> valueList = new ArrayList<>();
for (int position = 2; position < nextLine.length; position++) {
String valueString = nextLine[position];
try {
valueList.add(FloatUtils.parseNumber(valueString));
} catch (NumberFormatException exception) {
Log.e(TAG, exception.toString());
}
}
float[] values = new float[valueList.size()];
for (int position = 0; position < valueList.size(); position++) {
values[position] = valueList.get(position);
}
measurement.setValues(values);
measurement.setEntry(lastEntry);
MeasurementDao.getInstance(category.toClass()).createOrUpdate(measurement);
if (measurement instanceof Meal) {
lastMeal = (Meal) measurement;
}
} catch (InstantiationException exception) {
Log.e(TAG, exception.toString());
} catch (IllegalAccessException exception) {
Log.e(TAG, exception.toString());
}
}
}
break;
case EntryTag.BACKUP_KEY:
if (lastEntry != null && nextLine.length >= 2) {
Tag tag = TagDao.getInstance().getByName(nextLine[1]);
if (tag != null) {
EntryTag entryTag = new EntryTag();
entryTag.setEntry(lastEntry);
entryTag.setTag(tag);
EntryTagDao.getInstance().createOrUpdate(entryTag);
}
}
break;
case FoodEaten.BACKUP_KEY:
if (lastMeal != null && nextLine.length >= 3) {
Food food = FoodDao.getInstance().get(nextLine[1]);
if (food != null) {
FoodEaten foodEaten = new FoodEaten();
foodEaten.setMeal(lastMeal);
foodEaten.setFood(food);
foodEaten.setAmountInGrams(FloatUtils.parseNumber(nextLine[2]));
FoodEatenDao.getInstance().createOrUpdate(foodEaten);
}
}
break;
}
}
}
use of com.faltenreich.diaguard.shared.data.database.entity.Entry in project Diaguard by Faltenreich.
the class CsvImport method importFromVersion1_0.
private void importFromVersion1_0(CSVReader reader, String[] nextLine) throws Exception {
while (nextLine != null) {
Entry entry = new Entry();
entry.setDate(DateTimeFormat.forPattern(Export.BACKUP_DATE_FORMAT).parseDateTime(nextLine[1]));
String note = nextLine[2];
entry.setNote(note != null && note.length() > 0 ? note : null);
EntryDao.getInstance().createOrUpdate(entry);
try {
CategoryDeprecated categoryDeprecated = Helper.valueOf(CategoryDeprecated.class, nextLine[2]);
Category category = categoryDeprecated.toUpdate();
Measurement measurement = category.toClass().newInstance();
measurement.setValues(FloatUtils.parseNumber(nextLine[0]));
measurement.setEntry(entry);
MeasurementDao.getInstance(category.toClass()).createOrUpdate(measurement);
} catch (InstantiationException exception) {
Log.e(TAG, exception.toString());
} catch (IllegalAccessException exception) {
Log.e(TAG, exception.toString());
}
nextLine = reader.readNext();
}
}
Aggregations