Package nsf.playground.playground

Source Code of nsf.playground.playground.PreviewImportHandler

package nsf.playground.playground;

import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import lotus.domino.NotesException;
import lotus.domino.View;
import nsf.playground.impexp.JsonImport;

import com.ibm.commons.util.StringUtil;
import com.ibm.commons.util.io.LookAheadInputStream;
import com.ibm.commons.util.io.StreamUtil;
import com.ibm.xsp.model.domino.DominoUtils;


public class PreviewImportHandler extends PreviewHandler {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("GET Upload");
  }
 
  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(req);
    if(isMultipart) {
      try {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<FileItem> items = upload.parseRequest(req);
        String key = req.getParameter("type");
        for(FileItem item: items) {
          if(!item.isFormField()) {
            String fileName = item.getName();
            InputStream is = item.getInputStream();
            try {
              LookAheadInputStream lis = new LookAheadInputStream(is, 16);
              if(!lis.startsWith("PK")) {
                result(req, resp, HttpServletResponse.SC_BAD_REQUEST, "The uploaded file is not a zip file");
                return;
              }
              JsonImport imp = new JsonImport(new JsonImport.ZipImportSource(lis));
             
              // Delete all the documents
              View view = DominoUtils.getCurrentDatabase().getView("AllSnippetsById");
              try {
                view.getAllEntriesByKey(key).removeAll(true);
              } finally {
                view.recycle();
              }
             
              // And import the new ones
              imp.importDocuments(DominoUtils.getCurrentDatabase());
             
              result(req, resp, HttpServletResponse.SC_OK, "");
            } finally {
              StreamUtil.close(is);
            }
          }
        }
      } catch(NotesException ex) {
        throw new IOException(ex);
      } catch(FileUploadException ex) {
        throw new IOException(ex);
      }
    }
  }
 
  private void result(HttpServletRequest req, HttpServletResponse resp, int code, String message) throws ServletException, IOException {
    resp.setStatus(code);
    resp.setContentType("text/html");
    String result = StringUtil.format("<html><body><textarea>{0}</textarea></body></html>",message);
    Writer w = resp.getWriter();
    w.write(result);
    w.flush();
  }

}
TOP

Related Classes of nsf.playground.playground.PreviewImportHandler

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.