X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleUploadedMedia.java;h=d2425165ee19c97721403d29aa9b428f622bf40c;hb=69742ccb6ca960d82bf53a0d591d04bfc5f92468;hp=62430c0d577f8b8116123d86019eaf6bf80e197b;hpb=627becfe22637207a6a13f0538cb67bbe96704f4;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleUploadedMedia.java b/source/mircoders/servlet/ServletModuleUploadedMedia.java index 62430c0d..d2425165 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.4 2002/12/10 10:01:50 mh Exp $ + * @author RK, the mir-coders group */ public abstract class ServletModuleUploadedMedia @@ -170,7 +173,7 @@ public abstract class ServletModuleUploadedMedia mergeData.put("offset", offset); String order = req.getParameter("order"); - if (order == null) order = "webdb_lastchange desc"; + if (order == null || order.equals("")) order = "webdb_lastchange desc"; // if in connection mode to content String cid = req.getParameter("cid"); @@ -197,22 +200,20 @@ public abstract class ServletModuleUploadedMedia // fetch und ausliefern try { - if (query_text != null || query_is_published != null || query_media_folder != null) { - EntityList theList = mainModule.getByWhereClause(whereClause, order, (new Integer(offset)).intValue(), 10); - if (theList != null) { - mergeData.put("contentlist", theList); - if (theList.getOrder() != null) { - mergeData.put("order", theList.getOrder()); - mergeData.put("order_encoded", URLEncoder.encode(theList.getOrder())); - } - mergeData.put("count", (new Integer(theList.getCount())).toString()); - mergeData.put("from", (new Integer(theList.getFrom())).toString()); - mergeData.put("to", (new Integer(theList.getTo())).toString()); - if (theList.hasNextBatch()) - mergeData.put("next", (new Integer(theList.getNextBatch())).toString()); - if (theList.hasPrevBatch()) - mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString()); + EntityList theList = mainModule.getByWhereClause(whereClause, order, (new Integer(offset)).intValue(), 10); + if (theList != null) { + mergeData.put("contentlist", theList); + if (theList.getOrder() != null) { + mergeData.put("order", theList.getOrder()); + mergeData.put("order_encoded", URLEncoder.encode(theList.getOrder())); } + mergeData.put("count", (new Integer(theList.getCount())).toString()); + mergeData.put("from", (new Integer(theList.getFrom())).toString()); + mergeData.put("to", (new Integer(theList.getTo())).toString()); + if (theList.hasNextBatch()) + mergeData.put("next", (new Integer(theList.getNextBatch())).toString()); + if (theList.hasPrevBatch()) + mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString()); } //fetch the popups popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData()); @@ -291,6 +292,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 + } + }