GenericStorageTools.java
package hu.ddsi.java.database;
import java.util.ArrayList;
import java.util.List;
import eu.javaexperience.interfaces.simple.publish.SimplePublish1;
import eu.javaexperience.query.F;
import eu.javaexperience.query.LogicalGroup;
public class GenericStorageTools
{
public static <T extends GenericStorable> T getOrCreate(GenericStoreDatabase gdb,T obj,String field,Object fieldVal) throws GenericStoreException
{
/*GenericStoreDBCursor<T> cur = (GenericStoreDBCursor<T>) GenericStorage.getObjectsByQuery(obj.getClass(), F.eq.is(field, fieldVal), gdb);
Iterator<T> it = cur.iterator();
*/
T elem = (T) tryGetOrNull(obj.getClass(), field, fieldVal, gdb);
if(null != elem)
{
return elem;
}
else
{
GenericStorage.storeObject(obj, gdb);
}
return obj;
}
public static <T extends GenericStorable> T tryGetOrNull(Class<T> cls,String field,Object value,GenericStoreDatabase db) throws GenericStoreException
{
return getSingle(cls, F.eq.is(field, value), db);
}
public static <T extends GenericStorable> T getSingle(Class<T> class1, LogicalGroup lg, GenericStoreDatabase gdb) throws GenericStoreException
{
ArrayList<T> arr = new ArrayList<>();
GenericStorage.getAllObjectsByQuery(class1, lg, arr, gdb);
if(arr.size() > 0)
{
return arr.get(0);
}
else
{
return null;
}
}
public static <G extends GenericStorable> void updateAllWhere(Class<G> type, LogicalGroup select, SimplePublish1<G> updater, GenericStoreDatabase gdb) throws GenericStoreException
{
ArrayList<G> fs = new ArrayList<>();
GenericStorage.getAllObjectsByQuery(type, select, fs, gdb);
for(G g:fs)
{
updater.publish(g);
}
GenericStorage.storeAll(fs, gdb);
}
public static <C extends GenericStorable> boolean checkFieldIsUniqueExcludeInstance(GenericStoreDatabase gdb, Class<C> cls, String field, Object value, C except) throws GenericStoreException
{
ArrayList<C> ret = new ArrayList<C>();
GenericStorage.getAllObjectsByQuery(cls, F.eq.is(field, value), ret, gdb);
if(0 == ret.size())
{
return true;
}
if(ret.size() > 1)
{
return false;
}
return ret.get(0) != value;
}
public static <G extends GenericStorable> List<G> getAllObjectOf(GenericStoreDatabase gdb, Class<G> cls) throws GenericStoreException
{
ArrayList<G> ret = new ArrayList<>();
GenericStorage.getAllObjectsByQuery(cls, F.eq.not("do", -1), ret, gdb);
return ret;
}
public static <G extends GenericStorable> List<G> queryAll(GenericStoreDatabase gdb, Class<G> cls, LogicalGroup lg) throws GenericStoreException
{
ArrayList<G> ret = new ArrayList<>();
GenericStorage.getAllObjectsByQuery(cls, lg, ret, gdb);
return ret;
}
}