/**
*
* Manages (CRUD) report sheets for each entity
*
*/
package com.casamind.adware.server.servlet;
import java.io.IOException;
import java.util.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.casamind.adware.server.domain.OrphanBlob;
import com.casamind.adware.server.proxy.DatastoreProxy;
import com.casamind.adware.shared.GoogleDocumentsTaskTypes;
import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreFailureException;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
@SuppressWarnings("serial")
public class BlobstoreHelper extends HttpServlet {
private static final Logger log = Logger.getLogger(BlobstoreHelper.class.getName());
private long blobThreadSleep;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
ServletContext context = config.getServletContext();
blobThreadSleep = Long.parseLong(context.getInitParameter("blobThreadSleep"));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String task = req.getParameter("task");
String blobKey = req.getParameter("blobKey");
resp.setHeader("Content-Type", "text/html");
try {
if (task.equals(GoogleDocumentsTaskTypes.DELETE)) {
try {
log.info("Entering deletion task for orphan blob with key=" + blobKey);
log.info("Sleeping " + blobThreadSleep + " milliseconds...");
Thread.sleep(blobThreadSleep);
log.info("Wake up!");
BlobstoreServiceFactory.getBlobstoreService().delete(new BlobKey(blobKey));
log.info("Successfully delete orphan blob with key=" + blobKey);
} catch (BlobstoreFailureException e) {
log.severe("Could not delete blob with key=" + blobKey);
DatastoreProxy.createOrphantBlob(new OrphanBlob(blobKey));
log.info("Created a corresponding OrphanBlob object.");
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}