UserImageServlet.java 2.63 KB
package fi.insomnia.bortal.servlet;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.UserImage;

/**
 * Servlet implementation class UploadServlet
 */
public class UserImageServlet extends GenericImageServlet {

	/**
     * 
     */
	private static final long serialVersionUID = -3359999630873773508L;

	@EJB
	private transient UserBeanLocal userbean;

	@EJB
	private transient PermissionBeanLocal permbean;

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */

	// private final Pattern lhMatcher =
	// Pattern.compile("^(10|127).[0-9.]*|(0:)*1%0");

	private static final Logger logger = LoggerFactory.getLogger(UserImageServlet.class);
	private static final Pattern URLPATTERN = Pattern.compile("([^./]+)");

	// /dydata/(userimage|...)/stuff...

	@Override
	protected ImageMover getImagedata() {
		ImageMover ret = new ImageMover();
		Matcher matcher = URLPATTERN.matcher(super.request.getPathInfo());
		List<String> urlparts = new ArrayList<String>();
		logger.info("urlparts {}", urlparts);

		while (matcher.find()) {
			urlparts.add(matcher.group());
		}

		if (urlparts.isEmpty()) {
			ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
		} else if (urlparts.get(0).equals("userimage") && urlparts.size() > 2) {
			int imageid = Integer.parseInt(urlparts.get(1));
			UserImage image = userbean.findUserimageFORCE(imageid);
			if (image != null)
			{
				ret.setData(image.getImageData());
				ret.setImagetype(image.getMimeType());
			}
		}

		if (ret.getImagetype() == null) {
			ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
		}
		return ret;

	}

	// protected ImageMover getImagedata2() {
	// ImageMover ret = new ImageMover();
	// UserImage image =
	// userbean.findUserimageFORCE(super.getIdParam("imageid"));
	// if (image != null) { // &&
	// // if (permbean.isCurrentUser(image.getUser()) ||
	// // permbean.hasPermission(UserPermission.MODIFY) ||
	// // lhMatcher.matcher(request.getLocalAddr()).matches())
	// // {
	// ret.setData(image.getImageData());
	// ret.setImagetype(image.getMimeType());
	// // }
	// // else
	// // {
	// // ret.setResponse(HttpServletResponse.SC_FORBIDDEN);
	// // }
	//
	// } else
	// {
	// ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
	// }
	// return ret;
	//
	// }
}