001 package com.khubla.pragmatach.plugin.responsive; 002 003 import java.io.InputStream; 004 import java.util.Map; 005 006 import javax.servlet.http.HttpServletResponse; 007 008 import com.khubla.pragmatach.framework.api.PragmatachException; 009 import com.khubla.pragmatach.framework.controller.impl.AbstractResponse; 010 011 /** 012 * @author tome 013 */ 014 public class ResponsiveImageResponse extends AbstractResponse { 015 /** 016 * imageResource 017 */ 018 private final InputStream imageResource; 019 /** 020 * width 021 */ 022 private final int width; 023 /** 024 * xscale 025 */ 026 private final double xscale; 027 /** 028 * yscale 029 */ 030 private final double yscale; 031 /** 032 * height 033 */ 034 private final int height; 035 036 public ResponsiveImageResponse(Map<String, String> cacheHeaders, InputStream imageResource, double xscale, double yscale) { 037 super(cacheHeaders); 038 this.imageResource = imageResource; 039 width = 0; 040 height = 0; 041 this.xscale = xscale; 042 this.yscale = yscale; 043 } 044 045 public ResponsiveImageResponse(Map<String, String> cacheHeaders, InputStream imageResource, int width, int height) { 046 super(cacheHeaders); 047 this.imageResource = imageResource; 048 this.width = width; 049 this.height = height; 050 xscale = 0; 051 yscale = 0; 052 } 053 054 @Override 055 public String getContentType() throws PragmatachException { 056 return CONTENT_TYPE_HTML; 057 } 058 059 @Override 060 public Map<String, String> getHeaders() throws PragmatachException { 061 return super.getCacheHeaders(); 062 } 063 064 @Override 065 public void render(HttpServletResponse httpServletResponse) throws PragmatachException { 066 try { 067 if (0 != width) { 068 ImageResizer.resize(imageResource, httpServletResponse.getOutputStream(), width, height); 069 } else { 070 ImageResizer.resize(imageResource, httpServletResponse.getOutputStream(), xscale, yscale); 071 } 072 } catch (final Exception e) { 073 throw new PragmatachException("Exception in render", e); 074 } 075 } 076 }