use of com.google.appengine.api.datastore.Entity in project siena by mandubian.
the class GaePersistenceManager method get.
public <T> int get(Iterable<T> objects) {
List<Key> keys = new ArrayList<Key>();
for (Object obj : objects) {
keys.add(GaeMappingUtils.getKey(obj));
}
Map<Key, Entity> entityMap = ds.get(keys);
for (Object obj : objects) {
Entity e = entityMap.get(GaeMappingUtils.getKey(obj));
if (e != null) {
GaeMappingUtils.fillModel(obj, e);
}
}
return entityMap.size();
}
use of com.google.appengine.api.datastore.Entity in project siena by mandubian.
the class GaePersistenceManager method _insertAddEntity.
private <T> void _insertAddEntity(final List<Entity> entities, final T obj, final ClassInfo info, final Key parentEntityKey, final ClassInfo parentInfo, final Field field) {
if (parentEntityKey == null) {
Field idField = info.getIdField();
Entity entity = GaeMappingUtils.createEntityInstance(idField, info, obj);
GaeMappingUtils.fillEntity(obj, entity);
entities.add(entity);
} else {
Field idField = info.getIdField();
Entity entity = GaeMappingUtils.createEntityInstanceFromParent(idField, info, obj, parentEntityKey, parentInfo, field);
GaeMappingUtils.fillEntity(obj, entity);
entities.add(entity);
}
}
use of com.google.appengine.api.datastore.Entity in project siena by mandubian.
the class GaePersistenceManager method _updateSimpleMultiple.
private <T> void _updateSimpleMultiple(Iterable<T> objs, Key parentKey, ClassInfo parentInfo, Field parentField) {
List<Entity> entities = new ArrayList<Entity>();
ClassInfo info = null;
Field idField = null;
for (T obj : objs) {
if (info == null) {
info = ClassInfo.getClassInfo(obj.getClass());
idField = info.getIdField();
}
Entity entity;
Object idVal = Util.readField(obj, idField);
// id with null value means insert
if (idVal == null) {
if (parentKey == null) {
entity = GaeMappingUtils.createEntityInstance(idField, info, obj);
} else {
entity = GaeMappingUtils.createEntityInstanceFromParent(idField, info, obj, parentKey, parentInfo, parentField);
}
GaeMappingUtils.fillEntity(obj, entity);
} else {
if (parentKey == null) {
entity = GaeMappingUtils.createEntityInstanceForUpdate(info, obj);
} else {
entity = GaeMappingUtils.createEntityInstanceForUpdateFromParent(info, obj, parentKey, parentInfo, parentField);
}
GaeMappingUtils.fillEntity(obj, entity);
}
entities.add(entity);
}
if (!entities.isEmpty()) {
ds.put(entities);
}
}
use of com.google.appengine.api.datastore.Entity in project siena by mandubian.
the class GaePersistenceManagerAsync method getByKey.
public <T> SienaFuture<T> getByKey(final Class<T> clazz, final Object key) {
Key gkey = GaeMappingUtils.makeKeyFromId(clazz, key);
try {
Future<Entity> future = ds.get(gkey);
Future<T> wrapped = new SienaFutureWrapper<Entity, T>(future) {
@Override
protected T wrap(Entity entity) throws Exception {
T obj = Util.createObjectInstance(clazz);
GaeMappingUtils.fillModelAndKey(obj, entity);
return obj;
}
};
return new SienaFutureContainer<T>(wrapped);
} catch (Exception e) {
throw new SienaException(e);
}
}
use of com.google.appengine.api.datastore.Entity in project siena by mandubian.
the class GaePersistenceManager method _updateSimple.
private <T> void _updateSimple(T obj, ClassInfo info, Key parentKey, ClassInfo parentInfo, Field parentField) {
Entity entity;
Field idField = info.getIdField();
Object idVal = Util.readField(obj, idField);
// id with null value means insert
if (idVal == null) {
if (parentKey == null) {
entity = GaeMappingUtils.createEntityInstance(idField, info, obj);
} else {
entity = GaeMappingUtils.createEntityInstanceFromParent(idField, info, obj, parentKey, parentInfo, parentField);
}
GaeMappingUtils.fillEntity(obj, entity);
} else {
if (parentKey == null) {
entity = GaeMappingUtils.createEntityInstanceForUpdate(info, obj);
} else {
entity = GaeMappingUtils.createEntityInstanceForUpdateFromParent(info, obj, parentKey, parentInfo, parentField);
}
GaeMappingUtils.fillEntity(obj, entity);
}
if (entity != null) {
ds.put(entity);
}
}
Aggregations