package cn.flightfeather.thirdapp.common.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import com.ping.greendao.gen.ChangeAdviceDao;
import com.ping.greendao.gen.DaoMaster;
import com.ping.greendao.gen.DaoSession;
import org.greenrobot.greendao.query.QueryBuilder;
import java.io.File;
import java.util.List;
import cn.flightfeather.thirdapp.CommonApplication;
import cn.flightfeather.thirdapp.bean.entity.ChangeAdvice;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.schedulers.Schedulers;
public class GreenDaoDb implements DbSource {
private DaoSession daoSession;
private static GreenDaoDb greenDaoDb;
//
// FIXME: 2019/3/27 by riku 原来的代码将greendao数据库初始化放在了自定义Application类中,暂时直接调用之前的初始化
private GreenDaoDb(CommonApplication commonApplication) {
daoSession = commonApplication.getDaoSession();
}
private GreenDaoDb(Context context) {
File path = new File(Environment.getExternalStorageDirectory(), "FlightFeather/third_new.db");
path.getParentFile().mkdirs();
//创建数据库shop.db"
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, path.getAbsolutePath(), null);
//获取可写数据库
SQLiteDatabase db = helper.getWritableDatabase();
//获取数据库对象
DaoMaster daoMaster = new DaoMaster(db);
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
daoSession = daoMaster.newSession();
}
public static synchronized GreenDaoDb getInstance(CommonApplication commonApplication) {
if (greenDaoDb == null) {
greenDaoDb = new GreenDaoDb(commonApplication);
}
return greenDaoDb;
}
public static synchronized GreenDaoDb getInstance(Context context) {
if (greenDaoDb == null) {
greenDaoDb = new GreenDaoDb(context);
}
return greenDaoDb;
}
//t
@Override
public Observable> getAdviceByProblemType(final String ptGuid) {
final ChangeAdviceDao adviceDao = daoSession.getChangeAdviceDao();
return Observable.create(new ObservableOnSubscribe>() {
@Override
public void subscribe(ObservableEmitter> emitter) throws Exception {
List adviceList = adviceDao.queryBuilder()
.where(
ChangeAdviceDao.Properties.AdProblemtypeguid
.eq(ptGuid)
).list();
emitter.onNext(adviceList);
emitter.onComplete();
}
}).subscribeOn(Schedulers.io());
}
}