Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.utilitiessavings.testapp.server;
- import java.io.IOException;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import javax.inject.Singleton;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import com.google.appengine.api.blobstore.BlobInfo;
- import com.google.appengine.api.blobstore.BlobInfoFactory;
- import com.google.appengine.api.blobstore.BlobKey;
- import com.google.appengine.api.blobstore.BlobstoreService;
- import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
- import com.google.appengine.api.datastore.DatastoreService;
- import com.google.appengine.api.datastore.DatastoreServiceFactory;
- import com.google.appengine.api.datastore.Entity;
- import com.google.appengine.api.datastore.EntityNotFoundException;
- import com.google.appengine.api.datastore.Key;
- import com.google.appengine.api.datastore.KeyFactory;
- import com.google.appengine.api.utils.SystemProperty;
- import com.google.gwt.user.server.rpc.RemoteServiceServlet;
- import com.google.inject.Inject;
- import com.utilitiessavings.testapp.client.service.BlobService;
- import com.utilitiessavings.testapp.shared.BlobFile;
- @Singleton
- @SuppressWarnings("serial")
- public class BlobServiceImpl extends RemoteServiceServlet implements BlobService
- {
- // Start a GAE BlobstoreService, DatastoreService and Objectify session
- BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
- DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
- private Dao dao;
- @Inject
- public BlobServiceImpl(Dao dao)
- {
- super();
- System.out.println("BlobServiceImpl constructed");
- this.dao = dao;
- }
- // @Override
- // public void init() throws ServletException
- // {
- // super.init();
- //
- // System.out.println("BlobServiceImpl init");
- // }
- @Override
- public void deleteAllBlobs()
- {
- // get blobinfos and delete all
- Iterator<BlobInfo> blobIterator = new BlobInfoFactory().queryBlobInfos();
- while(blobIterator.hasNext())
- {
- blobstoreService.delete(blobIterator.next().getBlobKey());
- }
- // get BlobFiles and delete all
- dao.emptyDatastoreOfType(BlobFile.class);
- }
- @Override
- public void deleteBlob(String id)
- {
- // convert id to Long
- Long lid = Long.parseLong(id); // 51
- // get BlobFile
- // BlobFile blobFile = ofy().load().type(BlobFile.class).id(lid).get();
- BlobFile blobFile = dao.get(BlobFile.class, lid);
- // get BlobInfo
- BlobInfo blobInfo = new BlobInfoFactory(this.datastoreService).loadBlobInfo(new BlobKey(blobFile.getBlobKey()));
- // delete BlobInfo
- blobstoreService.delete(blobInfo.getBlobKey());
- // delete the BlobFile
- dao.delete(blobFile);
- // dao.ofy.delete(BlobFile.class, lid);
- }
- @Override
- public List<String> getBlobs()
- {
- List<String> blobsStrings = new LinkedList<String>();
- Iterator<BlobInfo> blobIterator = new BlobInfoFactory().queryBlobInfos();
- while(blobIterator.hasNext())
- {
- blobsStrings.add(blobIterator.next().getBlobKey().getKeyString());
- }
- return blobsStrings;
- }
- // Generate a Blobstore Upload URL from the GAE BlobstoreService
- @Override
- public String getBlobStoreUploadUrl()
- {
- // Map the UploadURL to the uploadservice which will be called by
- // submitting the FormPanel
- String url = blobstoreService.createUploadUrl("/testapp4/uploadservice");
- // change the computer name to standard localhost ip address, if in dev mode
- if(SystemProperty.environment.value() == SystemProperty.Environment.Value.Development)
- {
- url = url.replace("UtilitiesSav-PC", "127.0.0.1");
- }
- return url;
- }
- // Retrieve a file's metadata from the Datastore using Objectify
- @Override
- public BlobFile getFile(String id)
- {
- Long lid = Long.parseLong(id);
- // BlobInfo b = dao.ofy.get(BlobInfo.class, lid);
- // BlobFile blobFile = dao.ofy.load().type(BlobFile.class).id(lid).get();
- BlobFile blobFile = dao.get(BlobFile.class, lid);
- return blobFile;
- }
- @Override
- public List<BlobFile> getExistingFiles(String code)
- {
- // CODE FOR MIGRATION
- /*
- * try
- * {
- * // migrate supplierfiles
- * List<SupplierFile> mList = new ArrayList<SupplierFile>();
- *
- * Query<SupplierFile> mQuery = dao.ofy.query(SupplierFile.class).filter("supplierCode", code);
- *
- * Iterator<SupplierFile> mIterator = mQuery.iterator();
- * while(mIterator.hasNext())
- * {
- * BlobFile tempFile = new BlobFile(mIterator.next());
- * dao.ofy.put(tempFile);
- * }
- *
- * } catch(Exception e)
- * {
- * System.out.println(e.getMessage() + " | " + e.getCause());
- * }
- */
- List<BlobFile> list = dao.getListByFilter(BlobFile.class, "code", code);
- // Query<BlobFile> query = dao.query(BlobFile.class).filter("code", code);
- //
- // // Query<BlobFile> query = ofy().load().type(BlobFile.class).filter("code", code);
- // // Query<BlobFile> query = dao.ofy.query(BlobFile.class).filter("code", code);
- //
- // Iterator<BlobFile> iterator = query.iterator();
- // while(iterator.hasNext())
- // {
- // list.add(iterator.next());
- // }
- return list;
- }
- // Override doGet to serve blobs. This will be called automatically by the Image Widget in the client
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
- {
- BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
- String filename = "file";
- // use low-level API to get filename and filesize from BlobInfo entity
- Entity entity = null;
- Key k = KeyFactory.createKey("__BlobInfo__", blobKey.getKeyString());
- try
- {
- entity = datastoreService.get(k);
- }
- catch(EntityNotFoundException e)
- {
- e.printStackTrace();
- }
- filename = (String) entity.getProperty("filename");
- resp.addHeader("Content-Disposition", "filename=\"" + filename + "\"");
- blobstoreService.serve(blobKey, resp);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement