|
|
@ -21,11 +21,12 @@ package org.isoron.uhabits.core.io;
|
|
|
|
|
|
|
|
|
|
|
|
import android.support.annotation.*;
|
|
|
|
import android.support.annotation.*;
|
|
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.io.*;
|
|
|
|
|
|
|
|
import org.isoron.uhabits.core.database.*;
|
|
|
|
import org.isoron.uhabits.core.database.*;
|
|
|
|
import org.isoron.uhabits.core.models.*;
|
|
|
|
import org.isoron.uhabits.core.models.*;
|
|
|
|
|
|
|
|
import org.isoron.uhabits.core.models.sqlite.records.*;
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.*;
|
|
|
|
import java.io.*;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.inject.*;
|
|
|
|
import javax.inject.*;
|
|
|
|
|
|
|
|
|
|
|
@ -36,14 +37,19 @@ import static org.isoron.uhabits.core.Config.*;
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class LoopDBImporter extends AbstractImporter
|
|
|
|
public class LoopDBImporter extends AbstractImporter
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
|
|
|
|
private final ModelFactory modelFactory;
|
|
|
|
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@NonNull
|
|
|
|
private final DatabaseOpener opener;
|
|
|
|
private final DatabaseOpener opener;
|
|
|
|
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
@Inject
|
|
|
|
public LoopDBImporter(@NonNull HabitList habits,
|
|
|
|
public LoopDBImporter(@NonNull HabitList habitList,
|
|
|
|
|
|
|
|
@NonNull ModelFactory modelFactory,
|
|
|
|
@NonNull DatabaseOpener opener)
|
|
|
|
@NonNull DatabaseOpener opener)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
super(habits);
|
|
|
|
super(habitList);
|
|
|
|
|
|
|
|
this.modelFactory = modelFactory;
|
|
|
|
this.opener = opener;
|
|
|
|
this.opener = opener;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -78,11 +84,32 @@ public class LoopDBImporter extends AbstractImporter
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void importHabitsFromFile(@NonNull File file) throws IOException
|
|
|
|
public synchronized void importHabitsFromFile(@NonNull File file)
|
|
|
|
|
|
|
|
throws IOException
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// DatabaseUtils.dispose();
|
|
|
|
Database db = opener.open(file);
|
|
|
|
File originalDB = opener.getProductionDatabaseFile();
|
|
|
|
MigrationHelper helper = new MigrationHelper(db);
|
|
|
|
FileUtils.copyFile(file, originalDB);
|
|
|
|
helper.migrateTo(DATABASE_VERSION);
|
|
|
|
// DatabaseUtils.initializeDatabase(context);
|
|
|
|
|
|
|
|
|
|
|
|
Repository<HabitRecord> habitsRepository;
|
|
|
|
|
|
|
|
Repository<RepetitionRecord> repsRepository;
|
|
|
|
|
|
|
|
habitsRepository = new Repository<>(HabitRecord.class, db);
|
|
|
|
|
|
|
|
repsRepository = new Repository<>(RepetitionRecord.class, db);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (HabitRecord habitRecord : habitsRepository.findAll(
|
|
|
|
|
|
|
|
"order by position"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Habit h = modelFactory.buildHabit();
|
|
|
|
|
|
|
|
habitRecord.copyTo(h);
|
|
|
|
|
|
|
|
h.setId(null);
|
|
|
|
|
|
|
|
habitList.add(h);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<RepetitionRecord> reps =
|
|
|
|
|
|
|
|
repsRepository.findAll("where habit = ?",
|
|
|
|
|
|
|
|
habitRecord.id.toString());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (RepetitionRecord r : reps)
|
|
|
|
|
|
|
|
h.getRepetitions().toggle(r.timestamp, r.value);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|