package com.android.yzd.memo.mvp.model.Realm;
import android.content.Context;
import com.android.yzd.memo.mvp.model.bean.God;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.RealmQuery;
import io.realm.RealmResults;
/**
* Created by yezhidong on 2016/1/26.
*/
public class RealmHelper {
private static RealmHelper instances;
private Context mContext;
private RealmHelper(Context context){
mContext = context;
}
public static RealmHelper getInstances(Context context){
synchronized (RealmHelper.class) {
if (instances == null) {
instances = new RealmHelper(context);
}
}
return instances;
}
private static void closeConnect(Realm realm) {
if (null != realm) {
try {
realm.close();
realm = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static RealmConfiguration secure(Context context) {
byte[] key = new byte[64];
new SecureRandom().nextBytes(key);
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(context)
.encryptionKey(key)
.build();
// Start with a clean slate every time
Realm.deleteRealm(realmConfiguration);
return realmConfiguration;
}
public static ArrayList<God> selector(Context context, int godType){
Realm realm = Realm.getInstance(context);
RealmQuery<God> realmQuery = realm.where(God.class);
RealmQuery<God> godRealmQuery = realmQuery.equalTo("godType", godType);
RealmResults<God> realmResults = godRealmQuery.findAll();
if (realmResults != null && realmResults.size() > 0) {
ArrayList<God> godList = new ArrayList<>();
for (God god : realmResults) {
godList.add(god);
}
Collections.reverse(godList);
return godList;
}
return null;
}
public static boolean save(Context context, God god) {
if (check(context, god)) {
return true;
}
Realm realm = Realm.getInstance(context);
realm.beginTransaction();
realm.copyToRealm(god);
realm.commitTransaction();
return false;
}
private static boolean check(Context context, God god) {
int godType = god.getGodType();
Realm realm = Realm.getInstance(context);
RealmQuery<God> realmQuery = realm.where(God.class);
RealmQuery<God> godRealmQuery = realmQuery.equalTo("godType", godType);
RealmResults<God> title = godRealmQuery.contains("title", god.getTitle()).findAll();
if (title!=null&&title.size()>0) {
return true;
}
return false;
}
/**
* 更新数据库
* @param context 上下文
* @param god bean
* @return 成功返回true
*/
public static boolean update(Context context, God god) {
Realm realm = Realm.getInstance(context);
realm.beginTransaction();
realm.copyToRealmOrUpdate(god);
realm.commitTransaction();
return true;
}
public static void delete(Context context, God god, int position) {
Realm realm = Realm.getInstance(context);
RealmQuery<God> realmQuery = realm.where(God.class);
RealmQuery<God> godRealmQuery = realmQuery.equalTo("godType", god.getGodType());
RealmResults<God> realmResults = godRealmQuery.findAll();
if (realmResults != null ) {
int size = realmResults.size() - 1;
int i = size - position;
realm.beginTransaction();
realmResults.remove(i);
realm.commitTransaction();
}
}
}