Package com.fms.kccc.controller

Source Code of com.fms.kccc.controller.ImageContentServlet

package com.fms.kccc.controller;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.ByteBuffer;
import java.util.List;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fms.kccc.object.ImageContent;
import com.fms.kccc.service.ImageContentService;
import com.fms.kccc.service.ImageContentServiceImpl;
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.blobstore.UploadOptions;
import com.google.appengine.api.datastore.Blob;
import com.google.appengine.api.files.AppEngineFile;
import com.google.appengine.api.files.FileService;
import com.google.appengine.api.files.FileServiceFactory;
import com.google.appengine.api.files.FileWriteChannel;

public class ImageContentServlet extends BaseServlet {
  /**
   *
   */
  private static final long serialVersionUID = 1L;

  private static final String ACTION_ADD = "add";
  private static final String ACTION_EDIT = "edit";
  private static final String PARAMETER_ACTION = "oper";
  private static final String PARAMETER_ID = "id";
  private static final String PARAMETER_TITLE = "title";
  private static final String PARAMETER_SOURCE = "source";
  private static final String PARAMETER_IMAGEURL = "imageURL";
  private static final String PARAMETER_SMALLIMAGEURL = "smallImageURL";
  private static final String PARAMETER_CATEGORY = "category";
  private static final String PARAMETER_PAGE = "page";
  private static final String PARAMETER_ROWS = "rows";
  private boolean isUseSmallImageBakup = false;
 
  ImageContentService imageContentService = new ImageContentServiceImpl();

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    // TODO Auto-generated method stub
    int page = Integer.parseInt(getParameter(req, PARAMETER_PAGE));
    int rows = Integer.parseInt(getParameter(req, PARAMETER_ROWS));
    String category = getParameter(req, PARAMETER_CATEGORY);
    List<ImageContent> imageContents = imageContentService
        .getImageContents(category, page, rows);
    jsonRespone(resp, HttpServletResponse.SC_OK,
        ImageContent.toJsonArray(imageContents));
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    // TODO Auto-generated method stub
    String action = getParameter(req, PARAMETER_ACTION);
    if (action.equals(ACTION_ADD)) {
      doAdd(req, resp);
    } else if (action.equals(ACTION_EDIT)) {
      doEdit(req, resp);
    }
  }

  private void doEdit(HttpServletRequest req, HttpServletResponse resp) {
    // TODO Auto-generated method stub

  }

  private void doAdd(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    // TODO Auto-generated method stub
    String title = getParameter(req, PARAMETER_TITLE);
    String source = getParameter(req, PARAMETER_SOURCE);
    String imageURL = getParameter(req, PARAMETER_IMAGEURL);
    String smallImageURL = getParameter(req, PARAMETER_SMALLIMAGEURL);
    String category = getParameter(req, PARAMETER_CATEGORY);
    String imageURLBackup = getURLBackup(imageURL);
    String smallImageURLBackup;
    if(isUseSmallImageBakup){
      smallImageURLBackup = getURLBackup(smallImageURL);
    }else{
      smallImageURLBackup = imageURLBackup;
    }
    ImageContent imageContent = new ImageContent(title, source, imageURL,
        smallImageURL, imageURLBackup, smallImageURLBackup, category);
    imageContentService.addNewImageContent(imageContent);
  }

  public String getURLBackup(String imageURL) throws IOException {
    Blob blob = getBlobFromURL(imageURL);
    return toBlobstore(blob).getKeyString();
  }

  public Blob getBlobFromURL(String imageUrl) throws IOException {
    URL url = new URL(imageUrl);
    InputStream stream = url.openStream();
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    long streamLength = stream.available();
    byte[] data = new byte[(int) streamLength];
    int nRead;
    while ((nRead = stream.read(data, 0, data.length)) != -1) {
      buffer.write(data, 0, nRead);
    }
    buffer.flush();
    stream.close();
    return new Blob(buffer.toByteArray());
  }

  public BlobKey toBlobstore(Blob imageData) throws IOException {
    if (null == imageData)
      return null;

    // Get a file service
    FileService fileService = FileServiceFactory.getFileService();

    // Create a new Blob file with mime-type "image/png"
    AppEngineFile file = fileService.createNewBlobFile("image/jpeg");// png

    // Open a channel to write to it
    boolean lock = true;
    FileWriteChannel writeChannel = fileService
        .openWriteChannel(file, lock);

    // This time we write to the channel directly
    writeChannel.write(ByteBuffer.wrap(imageData.getBytes()));

    // Now finalize
    writeChannel.closeFinally();
    return fileService.getBlobKey(file);
  }
}
TOP

Related Classes of com.fms.kccc.controller.ImageContentServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.