Search in sources :

Example 36 with Entity

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();
}
Also used : Entity(com.google.appengine.api.datastore.Entity) ArrayList(java.util.ArrayList) Key(com.google.appengine.api.datastore.Key)

Example 37 with Entity

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);
    }
}
Also used : Field(java.lang.reflect.Field) Entity(com.google.appengine.api.datastore.Entity)

Example 38 with 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);
    }
}
Also used : Entity(com.google.appengine.api.datastore.Entity) Field(java.lang.reflect.Field) ArrayList(java.util.ArrayList) ClassInfo(siena.ClassInfo)

Example 39 with Entity

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);
    }
}
Also used : SienaFutureWrapper(siena.core.async.SienaFutureWrapper) Entity(com.google.appengine.api.datastore.Entity) SienaFutureContainer(siena.core.async.SienaFutureContainer) SienaException(siena.SienaException) Key(com.google.appengine.api.datastore.Key) SienaException(siena.SienaException) NotImplementedException(org.apache.commons.lang.NotImplementedException)

Example 40 with Entity

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);
    }
}
Also used : Entity(com.google.appengine.api.datastore.Entity) Field(java.lang.reflect.Field)

Aggregations

Entity (com.google.appengine.api.datastore.Entity)50 Key (com.google.appengine.api.datastore.Key)34 ArrayList (java.util.ArrayList)25 Field (java.lang.reflect.Field)22 ClassInfo (siena.ClassInfo)17 SienaException (siena.SienaException)15 EntityNotFoundException (com.google.appengine.api.datastore.EntityNotFoundException)9 QueryResultList (com.google.appengine.api.datastore.QueryResultList)9 HashMap (java.util.HashMap)9 List (java.util.List)9 SienaFutureContainer (siena.core.async.SienaFutureContainer)9 SienaFutureWrapper (siena.core.async.SienaFutureWrapper)9 Map (java.util.Map)8 SienaRestrictedApiException (siena.SienaRestrictedApiException)6 DatastoreService (com.google.appengine.api.datastore.DatastoreService)5 IOException (java.io.IOException)5 Date (java.util.Date)4 Query (com.google.appengine.api.datastore.Query)3 ShortBlob (com.google.appengine.api.datastore.ShortBlob)3 NotImplementedException (org.apache.commons.lang.NotImplementedException)3