--- /dev/null
+package mircoders.servlet;
+
+import java.io.*;
+import java.sql.*;
+import java.util.*;
+import java.net.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import freemarker.template.*;
+import com.oreilly.servlet.multipart.*;
+import com.oreilly.servlet.*;
+
+import webdb.servlet.*;
+import webdb.module.*;
+import webdb.misc.*;
+import webdb.entity.*;
+import webdb.storage.*;
+
+import mir.entity.*;
+import mir.storage.*;
+import mir.module.*;
+
+/*
+ * ServletModuleBilder -
+ * liefert HTML fuer Bilder
+ *
+ *
+ * @author RK
+ */
+
+public class ServletModuleImages extends webdb.servlet.ServletModule
+{
+
+ private static ModuleMediafolder mediafolderModule;
+ private static DatabaseRights dbRights;
+ private static DatabaseImageFormat dbImageFormat;
+ private static DatabaseImageType dbImageType;
+ private static DatabaseImageColor dbImageColor;
+ private static DatabaseImageLayout dbImageLayout;
+
+ // Singelton / Kontruktor
+ private static ServletModuleImages instance = new ServletModuleImages();
+ public static ServletModule getInstance() { return instance; }
+
+
+ private ServletModuleImages() {
+ theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("ServletModule.Bilder.Logfile"));
+ templateListString = Configuration.getProperty("ServletModule.Bilder.ListTemplate");
+ templateObjektString = Configuration.getProperty("ServletModule.Bilder.ObjektTemplate");
+ templateConfirmString = Configuration.getProperty("ServletModule.Bilder.ConfirmTemplate");
+ try {
+ mainModule = new ModuleImages(DatabaseImages.getInstance());
+ mediafolderModule = new ModuleMediafolder(DatabaseMediafolder.getInstance());
+ dbRights = DatabaseRights.getInstance();
+ dbImageFormat = DatabaseImageFormat.getInstance();
+ dbImageColor = DatabaseImageColor.getInstance();
+ dbImageType = DatabaseImageType.getInstance();
+ dbImageLayout = DatabaseImageLayout.getInstance();
+ }
+ catch (StorageObjectException e) {
+ theLog.printDebugInfo("servletmodulebilder konnte nicht initialisiert werden");
+ }
+ }
+
+
+ public void insert(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
+ {
+ try {
+ WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
+ HashMap parameters = mp.getParameters();
+ byte[] imageData=mp.getMedia();
+ String fileName=mp.getFilename();
+
+ EntityUsers user = _getUser(req);
+ parameters.put("date", StringUtil.date2webdbDate(new GregorianCalendar()));
+ parameters.put("to_publisher", user.getId());
+ parameters.put("is_produced", "0");
+ if (!parameters.containsKey("is_published"))
+ parameters.put("is_published","0");
+
+ String id = mainModule.add(parameters);
+ EntityImage entImage = (EntityImage)mainModule.getById(id);
+
+ if (imageData!=null && fileName!=null) {
+ int fileType = -1;
+ if (fileName.toLowerCase().endsWith(".jpg")) fileType=0;
+ if (fileName.toLowerCase().endsWith(".gif")) fileType=1;
+ if (fileType>=0)
+ entImage.setImage(imageData, fileType);
+ else
+ theLog.printError("Wrong file uploaded!");
+ }
+ _edit(id, req, res);
+ }
+ catch (IOException e) { throw new ServletModuleException("upload -- ioexception " + e.toString());}
+ catch (ModuleException e) { throw new ServletModuleException("upload -- moduleexception " + e.toString());}
+
+ }
+
+ public void update(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
+ {
+
+ try {
+ WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
+ HashMap parameters = mp.getParameters();
+ byte[] imageData=mp.getMedia();
+ String fileName=mp.getFilename();
+
+ EntityUsers user = _getUser(req);
+ parameters.put("to_publisher", user.getId());
+ parameters.put("is_produced", "0");
+ if (!parameters.containsKey("is_published"))
+ parameters.put("is_published","0");
+
+ String id = mainModule.set(parameters);
+ EntityImage entImage = (EntityImage)mainModule.getById(id);
+
+ if (imageData!=null && fileName!=null) {
+ int fileType = -1;
+ if (fileName.toLowerCase().endsWith(".jpg")) fileType=0;
+ if (fileName.toLowerCase().endsWith(".gif")) fileType=1;
+ if (fileType>=0)
+ entImage.setImage(imageData, fileType);
+ else
+ theLog.printError("Wrong file uploaded!");
+ }
+ _edit(id, req, res);
+ }
+ catch (IOException e) { throw new ServletModuleException("upload -- ioexception " + e.toString());}
+ catch (ModuleException e) { throw new ServletModuleException("upload -- moduleexception " + e.toString());}
+
+ }
+
+
+ public void showimg(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException
+ {
+ String idParam = req.getParameter("id");
+ if (idParam!=null && !idParam.equals("")) {
+ try {
+ EntityImage entImage =(EntityImage)mainModule.getById(idParam);
+ res.setContentType("image/jpeg"); // testweise
+ ServletOutputStream out = res.getOutputStream(); // wichtig, dass vorher kein res.getwriter() gelaufen ist
+
+ byte[] outbytes = entImage.getImage();
+ out.write(outbytes);
+ 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 showicon(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException
+ {
+ String idParam = req.getParameter("id");
+ if (idParam!=null && !idParam.equals("")) {
+ try {
+ EntityImage entImage =(EntityImage)mainModule.getById(idParam);
+ res.setContentType("image/jpeg"); // testweise
+ ServletOutputStream out = res.getOutputStream(); // wichtig, dass vorher kein res.getwriter() gelaufen ist
+
+ byte[] outbytes = entImage.getIcon();
+ out.write(outbytes);
+ 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 throw new ServletModuleException("id nicht angeben.");
+ }
+
+ public void list(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException
+ {
+ // Parameter auswerten
+ SimpleHash mergeData = new SimpleHash();
+ String query_text = req.getParameter("query_text");
+ mergeData.put("query_text",query_text);
+ if (query_text!=null) mergeData.put("query_text_encoded",URLEncoder.encode(query_text));
+ String query_field = req.getParameter("query_field");
+ mergeData.put("query_field",query_field);
+ String query_is_published = req.getParameter("query_is_published");
+ mergeData.put("query_is_published",query_is_published);
+ String query_media_folder = req.getParameter("query_media_folder");
+ mergeData.put("query_media_folder",query_media_folder);
+ String offset = req.getParameter("offset");
+ if (offset==null || offset.equals("")) offset="0";
+ mergeData.put("offset",offset);
+
+ String order = req.getParameter("order");
+ if (order==null) order="webdb_lastchange desc";
+
+ // if in connection mode to content
+ String cid = req.getParameter("cid");
+ mergeData.put("cid",cid);
+
+
+ // sql basteln
+ String whereClause=""; boolean isFirst=true;
+ if (query_text!=null && !query_text.equalsIgnoreCase("")) {
+ whereClause += "lower("+query_field+") like lower('%"+query_text+"%')"; isFirst=false;}
+ if (query_is_published != null && !query_is_published.equals("")) {
+ if (isFirst==false) whereClause+=" and ";
+ whereClause += "is_published='"+query_is_published+"'";
+ isFirst=false;
+ }
+ if (query_media_folder != null && !query_media_folder.equals("")) {
+ if (isFirst==false) whereClause+=" and ";
+ whereClause += "to_media_folder='"+query_media_folder+"'";
+ }
+ //theLog.printDebugInfo("sql-whereclause: " + whereClause + " order: " + order + " offset: " + offset);
+
+ // fetch und ausliefern
+ try {
+ mergeData.put("mediafolderPopupData", mediafolderModule.getPopupData());
+ mergeData.put("mediafolderHashdata", mediafolderModule.getHashData());
+ 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",HTMLTemplateProcessor.makeSimpleList(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());
+ }
+ }
+ // raus damit
+ HTMLTemplateProcessor.process(getLanguage(req)+"/"+templateListString, mergeData, res.getWriter());
+ }
+ catch (ModuleException e) {throw new ServletModuleException(e.toString());}
+ catch (IOException e) {throw new ServletModuleException(e.toString());}
+ catch (Exception e) {throw new ServletModuleException(e.toString());}
+ }
+
+
+ public void add(HttpServletRequest req, HttpServletResponse res)
+ throws ServletModuleException
+ {
+ try {
+ SimpleHash mergeData = new SimpleHash();
+ mergeData.put("new", "1");
+ mergeData.put("mediafolderPopupData", mediafolderModule.getPopupData());
+ deliver(req, res, mergeData, templateObjektString);
+ }
+ catch (Exception e) { throw new ServletModuleException(e.toString());}
+ }
+
+ public void edit(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
+ {
+ String idParam = req.getParameter("id");
+ _edit(idParam, req, res);
+ }
+
+ private void _edit(String idParam, HttpServletRequest req, HttpServletResponse res) throws ServletModuleException {
+ if (idParam!=null && !idParam.equals("")) {
+ try {
+ SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(mainModule.getById(idParam));
+ mergeData.put("mediafolderPopupData", mediafolderModule.getPopupData());
+ mergeData.put("rightsHashdata", dbRights.getHashData());
+ mergeData.put("imgformatHashdata", dbImageFormat.getHashData());
+ mergeData.put("imgcolorHashdata", dbImageColor.getHashData());
+ mergeData.put("imgtypeHashdata", dbImageType.getHashData());
+ mergeData.put("imglayoutHashdata", dbImageLayout.getHashData());
+ deliver(req, res, mergeData, templateObjektString);
+ }
+ catch (ModuleException e) { throw new ServletModuleException(e.toString());}
+ }
+ else throw new ServletModuleException("ServletmoduleImage :: _edit without id");
+ }
+
+
+ /** @todo should be in ServletModule.java */
+ private EntityUsers _getUser(HttpServletRequest req)
+ {
+ HttpSession session=req.getSession(false);
+ return (EntityUsers)session.getAttribute("login.uid");
+ }
+
+
+ // deprecated
+ public void upload(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException
+ {
+ //theLog.printDebugInfo("-- trying to upload");
+ String idParam = req.getParameter("id");
+ if (idParam!=null && !idParam.equals("")) {
+ try {
+
+ WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
+ HashMap withValues = mp.getParameters();
+ byte[] imageData=mp.getMedia();
+ String fileName=mp.getFilename();
+
+ int fileType = -1;
+ if (fileName.toLowerCase().endsWith(".jpg")) fileType=0;
+ if (fileName.toLowerCase().endsWith(".gif")) fileType=1;
+ if (fileType>=0) {
+ EntityImage entImage = (EntityImage)mainModule.getById(idParam);
+ entImage.setImage(imageData, fileType);
+ }
+ else
+ theLog.printError("Wrong file uploaded!");
+ }
+ catch (IOException e) { throw new ServletModuleException("upload -- ioexception " + e.toString());}
+ catch (ModuleException e) { throw new ServletModuleException("upload -- moduleexception " + e.toString());}
+ }
+ else // keine id
+ throw new ServletModuleException("Keine id angegeben");
+ edit(req,res);
+ }
+
+
+}