Доброго
Есть файд json, при первом запуске приложения нужно создать бд, распарсить файл и записать данные в бд, создание бд лежит в Dagger2. Соответственно это нужно сделать в новом потоке. Как бы вроде я и понимаю что и как, но вот то что бд создаётся в модуле Dagger вводит в затруднение
модуль:
@Module
public class MainAppModule {
private Context context;
public MainAppModule(Context context) {
this.context = context;
}
@Singleton
@Provides //scope is not necessary for parameters stored within the module
public Context context() {
return context;
}
@Singleton
@Provides
public RoomDB provideRoomDB(Context context) {
RoomDatabase.Builder<RoomDB> roomDatabase = Room.databaseBuilder(context, RoomDB.class, RoomDB.NAME_DB).addCallback(new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
//тут нужно заполнять бд
}
});
return roomDatabase.build();
}
@Singleton
@Provides
public CityUserDAO provideCustomMenuDAO(RoomDB roomDB) {
return roomDB.getCityUserDAO();
}
}
тут набросал тестовый код парсинга, он работает
public class TempParserJson {
private static final String TAG = "TempParserJson";
@Inject
Context context;
public TempParserJson() {
MainApp.app().appComponent().inject(this);
String strJson;
AssetManager assetManager = context.getAssets();
try {
InputStream stream = assetManager.open("city.json");
int size = stream.available();
byte[] buffer = new byte[size];
stream.read(buffer);
stream.close();
strJson = new String(buffer, "UTF-8");
JsonParser parser = new JsonParser();
Object obj = parser.parse(strJson);
JsonArray jsonArray = (JsonArray) obj;
Log.d(TAG, "TempParserJson: " + jsonArray.get(0));
TempWeather tempWeather = new Gson().fromJson(jsonArray.get(0), TempWeather.class);
Log.d(TAG, "TempParserJson: " + tempWeather.getId());
} catch (IOException e) {
e.printStackTrace();
}
}
}
вот и как бы это всё объединить?