package com.googlecode.objectify.impl; import com.googlecode.objectify.Key; import com.googlecode.objectify.Result; import com.googlecode.objectify.cmd.DeleteType; import com.googlecode.objectify.cmd.Deleter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Implementation of the Delete command. * * @author Jeff Schnitzer <jeff@infohazard.org> */ public class DeleterImpl implements Deleter { /** */ ObjectifyImpl<?> ofy; /** */ public DeleterImpl(ObjectifyImpl<?> ofy) { this.ofy = ofy; } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Delete#type(java.lang.Class) */ @Override public DeleteType type(Class<?> type) { return new DeleteTypeImpl(this, type); } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Deleter#key(com.googlecode.objectify.Key) */ @Override public Result<Void> key(Key<?> key) { return this.keys(key); } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Deleter#keys(com.googlecode.objectify.Key<?>[]) */ @Override public Result<Void> keys(Key<?>... keys) { return this.keys(Arrays.asList(keys)); } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Delete#values(java.lang.Iterable) */ @Override public Result<Void> keys(Iterable<? extends Key<?>> keys) { List<com.google.appengine.api.datastore.Key> rawKeys = new ArrayList<>(); for (Key<?> key: keys) rawKeys.add(key.getRaw()); return ofy.createWriteEngine().delete(rawKeys); } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Deleter#entity(java.lang.Object) */ @Override public Result<Void> entity(Object entity) { return this.entities(entity); } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Deleter#entities(java.lang.Iterable) */ @Override public Result<Void> entities(Iterable<?> entities) { List<com.google.appengine.api.datastore.Key> keys = new ArrayList<>(); for (Object obj: entities) keys.add(ofy.factory().keys().anythingToRawKey(obj)); return ofy.createWriteEngine().delete(keys); } /* (non-Javadoc) * @see com.googlecode.objectify.cmd.Deleter#entities(java.lang.Object[]) */ @Override public Result<Void> entities(Object... entities) { return this.entities(Arrays.asList(entities)); } }