package com.etiennelawlor.loop.realm;
import android.text.TextUtils;
import com.etiennelawlor.loop.realm.objects.RealmSuggestion;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import io.realm.Realm;
import io.realm.RealmResults;
import io.realm.Sort;
/**
* Created by etiennelawlor on 10/8/15.
*/
public class RealmUtility {
public static void saveQuery(String query){
Realm realm = Realm.getDefaultInstance();
try {
RealmSuggestion realmSuggestion = new RealmSuggestion();
realmSuggestion.setToken(query);
realmSuggestion.setTimestamp(new Date());
realm.beginTransaction();
// This will create a new one in Realm
// realm.copyToRealm(obj);
// This will update a existing one with the same id or create a new one instead
realm.copyToRealmOrUpdate(realmSuggestion);
realm.commitTransaction();
} finally {
realm.close();
}
}
public static void deleteQuery(String query){
Realm realm = Realm.getDefaultInstance();
try {
realm.beginTransaction();
RealmSuggestion realmSuggestion
= realm.where(RealmSuggestion.class)
.equalTo("token", query)
.findFirst();
if(realmSuggestion != null){
realmSuggestion.deleteFromRealm();
}
realm.commitTransaction();
} finally {
realm.close();
}
}
public static List<String> getSuggestions(String query) {
List<String> suggestions = new ArrayList<>();
Realm realm = Realm.getDefaultInstance();
try {
RealmResults<RealmSuggestion> realmResults
= realm.where(RealmSuggestion.class)
.contains("token", query)
.findAll();
realmResults = realmResults.sort("timestamp", Sort.DESCENDING);
if (realmResults != null) {
int size = (realmResults.size() > 5) ? 5 : realmResults.size();
for (int i = 0; i < size; i++) {
RealmSuggestion realmSuggestion = realmResults.get(i);
if (realmSuggestion != null) {
String token = realmSuggestion.getToken();
if (!TextUtils.isEmpty(token)) {
suggestions.add(suggestions.size(), token);
}
}
}
}
} finally {
realm.close();
}
return suggestions;
}
}