package com.itstherules.mediacentre;
import java.io.IOException;
import java.net.URLDecoder;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itstherules.image.AWTImage;
import com.itstherules.image.IImage;
public class ImageServlet extends HttpServlet {
private static final int FLASH_PIXEL_HARD_LIMIT = 2880;
private static final long serialVersionUID = 6347391321899093805L;
private int getIntParameter(ServletConfig request, String key) {
try{
return Integer.parseInt(request.getInitParameter(key));
} catch (NumberFormatException e) {
return 0;
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
String imageName = request.getServletPath();
imageName = URLDecoder.decode(imageName, "utf8");
String baseDirectory = getServletContext().getInitParameter("directory");
String noImageImage = getServletConfig().getInitParameter("noImageImage");
int width = getIntParameter(getServletConfig(), "width");
int height = getIntParameter(getServletConfig(), "height");
try {
IImage image = new AWTImage(PathResolver.resolve(baseDirectory+imageName, ImageServlet.class));
if(width!=0 || height != 0){
image.scale(width, height, true, true);
}
if(image.getWidth() > FLASH_PIXEL_HARD_LIMIT || image.getHeight() > FLASH_PIXEL_HARD_LIMIT){
image.scale(FLASH_PIXEL_HARD_LIMIT, FLASH_PIXEL_HARD_LIMIT, true, true);
}
image.streamTo(resp.getOutputStream());
} catch(Exception e){
IImage image = new AWTImage(PathResolver.resolve("com/itstherules/mediacentre"+noImageImage, ImageServlet.class));
image.streamTo(resp.getOutputStream());
}
}
}