use of com.faltenreich.diaguard.shared.data.database.entity.deprecated.CategoryDeprecated 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();
}
}
use of com.faltenreich.diaguard.shared.data.database.entity.deprecated.CategoryDeprecated in project Diaguard by Faltenreich.
the class CsvImport method importFromVersion1_1.
@SuppressWarnings("ParameterCanBeLocal")
private void importFromVersion1_1(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 {
CategoryDeprecated categoryDeprecated = Helper.valueOf(CategoryDeprecated.class, nextLine[2]);
Category category = categoryDeprecated.toUpdate();
Measurement measurement = category.toClass().newInstance();
measurement.setValues(FloatUtils.parseNumber(nextLine[1]));
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.deprecated.CategoryDeprecated in project Diaguard by Faltenreich.
the class DatabaseHelper method upgradeToVersion19.
private <M extends Measurement> void upgradeToVersion19(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource) {
List<Entry> entries = new ArrayList<>();
String entryQuery = String.format("SELECT * FROM %s", DatabaseHelper.ENTRY);
Cursor cursor = sqliteDatabase.rawQuery(entryQuery, null);
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
try {
Entry entry = new Entry();
entry.setId(Long.parseLong(cursor.getString(0)));
entry.setDate(DateTimeFormat.forPattern(DATE_TIME_FORMAT_1_1).parseDateTime(cursor.getString(1)));
entry.setNote(cursor.getString(2));
entries.add(entry);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
cursor.moveToNext();
}
}
cursor.close();
HashMap<Entry, List<M>> entities = new HashMap<>();
for (Entry entry : entries) {
List<M> measurements = new ArrayList<>();
String measurementQuery = String.format("SELECT * FROM %s WHERE %s = %d", DatabaseHelper.MEASUREMENT, ENTRY_ID, entry.getId());
cursor = sqliteDatabase.rawQuery(measurementQuery, null);
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
try {
String categoryString = cursor.getString(2);
CategoryDeprecated categoryDeprecated = Helper.valueOf(CategoryDeprecated.class, categoryString);
Category category = categoryDeprecated.toUpdate();
M measurement = (M) category.toClass().newInstance();
float value = FloatUtils.parseNumber(cursor.getString(1));
float[] values = new float[measurement.getValues().length];
values[0] = value;
measurement.setValues(values);
measurements.add(measurement);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
cursor.moveToNext();
}
}
entities.put(entry, measurements);
cursor.close();
}
sqliteDatabase.execSQL("DROP TABLE IF EXISTS " + ENTRY);
sqliteDatabase.execSQL("DROP TABLE IF EXISTS " + MEASUREMENT);
sqliteDatabase.execSQL("DROP TABLE IF EXISTS " + FOOD);
sqliteDatabase.execSQL("DROP TABLE IF EXISTS " + FOOD_EATEN);
onCreate(sqliteDatabase, connectionSource);
for (Map.Entry<Entry, List<M>> mapEntry : entities.entrySet()) {
Entry tempEntry = mapEntry.getKey();
tempEntry.setId(-1);
Entry entry = EntryDao.getInstance().createOrUpdate(tempEntry);
for (Measurement measurement : mapEntry.getValue()) {
measurement.setId(-1);
measurement.setEntry(entry);
MeasurementDao.getInstance(measurement.getClass()).createOrUpdate(measurement);
}
}
}
Aggregations