package ilarkesto.persistence;
import ilarkesto.auth.AUser;
import ilarkesto.auth.Auth;
import ilarkesto.fp.Predicate;
import ilarkesto.id.Identifiable;
import ilarkesto.search.Searchable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public abstract class Persist {
public static List<String> getIdsAsList(Collection<? extends Identifiable> entities) {
List<String> ret = new ArrayList<String>(entities.size());
for (Identifiable entity : entities) {
ret.add(entity.getId());
}
return ret;
}
public static List<Map> createPropertiesMaps(Collection<? extends AEntity> entities) {
List<Map> result = new ArrayList<Map>(entities.size());
for (AEntity entity : entities) {
result.add(entity.createPropertiesMap());
}
return result;
}
public static boolean test(AEntity entity, Predicate<Class> typeFilter, Predicate<AEntity> entityFilter) {
if (typeFilter != null && !typeFilter.test(entity.getClass())) return false;
if (entityFilter != null && !entityFilter.test(entity)) return false;
return true;
}
public static boolean matchesKeys(Searchable e, Collection<String> keys) {
for (String key : keys) {
if (!e.matchesKey(key)) return false;
}
return true;
}
public static List<AEntity> getVisible(Collection<AEntity> entities, AUser user) {
List<AEntity> result = new ArrayList<AEntity>(entities.size());
for (AEntity entity : entities)
if (Auth.isVisible(entity, user)) result.add(entity);
return result;
}
}