/*
* Copyright (c) 2014-2015 Sean Liu.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.baoti.pioneer.data;
import android.support.annotation.Keep;
import com.github.baoti.pioneer.AppMain;
import com.github.baoti.pioneer.event.app.AppInitializeReportEvent;
import com.github.baoti.pioneer.event.app.AppInitializeRequestEvent;
import com.github.baoti.pioneer.misc.util.IoUtils;
import com.squareup.otto.Bus;
import com.squareup.otto.Subscribe;
import java.io.File;
import javax.inject.Inject;
import javax.inject.Named;
import timber.log.Timber;
/**
* Created by liuyedong on 14-12-25.
*/
public class DataInitializer {
private boolean initialized;
private final Bus appBus;
@Inject
@Named("cacheDir")
File cacheDir;
public DataInitializer(Bus appBus) {
this.appBus = appBus;
}
private void initialize() {
if (!initialized) {
initialized = true;
AppMain.globalGraph().inject(this);
}
}
@Subscribe @Keep
public void onAppInitializeRequest(AppInitializeRequestEvent event) {
// 构造的时候无法执行注入, 推迟到需要的时候再注入
initialize();
File dbInCache = new File(cacheDir, "db/store.db");
if (cacheDir != null && !dbInCache.exists()) {
appBus.post(new AppInitializeReportEvent("正在缓存数据库"));
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
return;
}
if (IoUtils.ensureDirsExist(dbInCache.getParentFile())) {
IoUtils.copyAssets(AppMain.app().getAssets(), Assets.STORE_DB, dbInCache);
} else {
Timber.w("Can't ensure cache dir");
}
}
}
}