.
, @VGR . , Android API 16. , @VGR, , API 24. , , . , - , .
, StephaneM, , , , .
@Eugene @mickaël-b, , . , , , . , :)

. , , . ... 2 , 2 , .
, , Realm csv.
RealmDbGenerator dbGenerator = new RealmDbGenerator(this);
dbGenerator.setGenerationStrategy(new FlagDefStrategy());
dbGenerator.addData(FILE_FLAGS,SEPARATOR);
dbGenerator.setGenerationStrategy(new PictureStrategy());
dbGenerator.addData(FILE_PICTURES,SEPARATOR);
RealDbGenerator:
public class RealmDbGenerator {
private static final String TAG = RealmDbGenerator.class.getSimpleName();
public void setGenerationStrategy(GenerationStrategy generationStrategy) {
this.generationStrategy = generationStrategy;
}
private GenerationStrategy generationStrategy;
private Realm realm;
private Context context;
public RealmDbGenerator(Context context) {
this.realm = Realm.getDefaultInstance();
this.context = context;
}
public void addData(String csvFile, char separator) {
CSVReader reader;
int lineNumber = 1;
try {
reader = new CSVReader(new InputStreamReader(context.getAssets().open(csvFile)), separator);
String[] line;
realm.beginTransaction();
while ((line = reader.readNext()) != null) {
generationStrategy.addData(line, realm);
}
realm.commitTransaction();
reader.close();
} catch (FileNotFoundException ex) {
Log.e(TAG, String.format("File %s not found : %s", csvFile, ex));
} catch (IOException ex) {
Log.e(TAG, String.format("Error parsing line number %s : %s", lineNumber, ex));
}
}
}
:
public interface GenerationStrategy {
void addData(String[] line, Realm realm);
}
FlagDefStrategy:
public class FlagDefStrategy implements GenerationStrategy {
private static final String TAG = FlagDefStrategy.class.getSimpleName();
@Override
public void addData(String[] line, Realm realm) {
FlagDef flagDef = new FlagDef(Long.parseLong(line[0]), line[1], line[2]);
Log.d(TAG, String.format("%s %s %s", line[0], line[1], line[2]));
realm.copyToRealm(flagDef);
}
}
PictureStrategy:
public class PictureStrategy implements GenerationStrategy {
private static final String TAG = FlagDefStrategy.class.getSimpleName();
@Override
public void addData(String[] line, Realm realm) {
Picture picture = new Picture(Long.parseLong(line[0]), line[1]);
Log.d(TAG, String.format("%s %s", line[0], line[1]));
realm.copyToRealm(picture);
}
}