UploadServlet.java 2.96 KB
package fi.insomnia.intra;

import java.io.IOException;
import java.math.BigInteger;
import java.util.List;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import sun.misc.BASE64Encoder;

import fi.insomnia.intra.db.User;
import fi.insomnia.intra.utilbeans.UserDaoBeanLocal;
import fi.insomnia.intra.utilbeans.UserImageDaoBeanLocal;

/**
 * Servlet implementation class UploadServlet
 */
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public UploadServlet() {
	super();
	// TODO Auto-generated constructor stub
    }

    private static final Logger logger = LoggerFactory.getLogger(UploadServlet.class);

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doPost(request, response);
    }
    
    @EJB 
    private UserImageDaoBeanLocal imagebean;

    @EJB 
    private UserDaoBeanLocal userbean;

    
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	String rawResourcePath = request.getPathInfo();
	logger.info("respath2 : {}", rawResourcePath);
	String[] paths = rawResourcePath.trim().split("/");
	logger.info("paths length: {}", paths.length);

	if (paths.length != 2 || paths[1].trim().isEmpty()) {
	    return;
	}
	BigInteger userId = new BigInteger(paths[1].trim());
	logger.info("Uploadinfg for user {}", userId);

	
	// Create a factory for disk-based file items
	FileItemFactory factory = new DiskFileItemFactory();

	// Create a new file upload handler
	ServletFileUpload upload = new ServletFileUpload(factory);

	// Parse the request
	try {
	    List /* FileItem */items = upload.parseRequest(request);
	    for (Object ti : items) {
		if (ti instanceof DiskFileItem) {
		    DiskFileItem fi = (DiskFileItem) ti;
		    if (fi.getName() != null && fi.getName().equals("image.png")) {
		
			logger.info("finding user for userId: {}",userId);
			User user = userbean.load(userId);
			
			imagebean.createImage(user, fi.get());
		    
		    }
		}
		logger.info("Downloaded object {}", ti.getClass());
	    }
	} catch (FileUploadException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}
    }

}