From: mh Date: Wed, 27 Nov 2002 07:05:47 +0000 (+0000) Subject: add getIcon and getMedia methods which use the new methods with the same names from... X-Git-Tag: MIR_1_0_0_RC1~12 X-Git-Url: http://erislabs.net/gitweb/?p=mir.git;a=commitdiff_plain;h=5b95283ce53c7517926e45a2b46cff54e0d30aa4 add getIcon and getMedia methods which use the new methods with the same names from the MirMedia infrastructure. they send an InputStream into the servlet OutputStream. the purpose is to implement a preview/download for the media admin interface --- diff --git a/source/mircoders/servlet/ServletModuleUploadedMedia.java b/source/mircoders/servlet/ServletModuleUploadedMedia.java index 62430c0d..4871f667 100755 --- a/source/mircoders/servlet/ServletModuleUploadedMedia.java +++ b/source/mircoders/servlet/ServletModuleUploadedMedia.java @@ -47,6 +47,7 @@ import mir.servlet.ServletModuleUserException; import mir.storage.Database; import mir.storage.StorageObjectException; import mircoders.entity.EntityUsers; +import mircoders.entity.EntityUploadedMedia; import mircoders.storage.DatabaseMediaType; import mircoders.storage.DatabaseMediafolder; import mircoders.media.MediaRequest; @@ -55,8 +56,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.ServletContext; +import javax.servlet.ServletOutputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URLEncoder; import java.util.GregorianCalendar; import java.util.HashMap; @@ -65,8 +68,8 @@ import java.util.HashMap; * ServletModuleBilder - * liefert HTML fuer Bilder * - * - * @author RK + * @version $Id: ServletModuleUploadedMedia.java,v 1.8.2.3 2002/11/27 07:05:47 mh Exp $ + * @author RK, the mir-coders group */ public abstract class ServletModuleUploadedMedia @@ -291,6 +294,94 @@ public abstract class ServletModuleUploadedMedia return (EntityUsers) session.getAttribute("login.uid"); } + public void getMedia(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleException + { + String idParam = req.getParameter("id"); + if (idParam!=null && !idParam.equals("")) { + try { + EntityUploadedMedia ent = (EntityUploadedMedia)mainModule.getById(idParam); + Entity mediaType = ent.getMediaType(); + MirMedia mediaHandler; + + ServletContext ctx = + (ServletContext)MirConfig.getPropAsObject("ServletContext"); + String fName = ent.getId()+"."+mediaType.getValue("name"); + + mediaHandler = MediaHelper.getHandler(mediaType); + InputStream in = mediaHandler.getMedia(ent, mediaType); + + res.setContentType(ctx.getMimeType(fName)); + //important that before calling this res.getWriter was not called first + ServletOutputStream out = res.getOutputStream(); + + int read ; + byte[] buf = new byte[8 * 1024]; + while((read = in.read(buf)) != -1) { + out.write(buf, 0, read); + } + in.close(); + out.close(); + } + + catch (IOException e) { + throw new ServletModuleException(e.toString()); + } + catch (ModuleException e) { + throw new ServletModuleException(e.toString()); + } + catch (Exception e) { + throw new ServletModuleException(e.toString()); + } + } + else theLog.printDebugInfo("id nicht angeben."); + // darf keine exception werfen + } + + public void getIcon(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleException + { + String idParam = req.getParameter("id"); + if (idParam!=null && !idParam.equals("")) { + try { + EntityUploadedMedia ent = (EntityUploadedMedia)mainModule.getById(idParam); + Entity mediaType = ent.getMediaType(); + MirMedia mediaHandler; + + ServletContext ctx = + (ServletContext)MirConfig.getPropAsObject("ServletContext"); + String fName = ent.getId()+"."+mediaType.getValue("name"); + + mediaHandler = MediaHelper.getHandler(mediaType); + InputStream in = mediaHandler.getIcon(ent); + + res.setContentType(ctx.getMimeType(fName)); + //important that before calling this res.getWriter was not called first + ServletOutputStream out = res.getOutputStream(); + + int read ; + byte[] buf = new byte[8 * 1024]; + while((read = in.read(buf)) != -1) { + out.write(buf, 0, read); + } + in.close(); + out.close(); + } + + catch (IOException e) { + throw new ServletModuleException(e.toString()); + } + catch (ModuleException e) { + throw new ServletModuleException(e.toString()); + } + catch (Exception e) { + throw new ServletModuleException(e.toString()); + } + } + else theLog.printDebugInfo("id nicht angeben."); + // darf keine exception werfen + } + }