1 package mircoders.servlet;
3 import freemarker.template.SimpleHash;
4 import freemarker.template.SimpleList;
5 import mir.entity.Entity;
6 import mir.entity.EntityList;
7 import mir.media.MediaHelper;
8 import mir.media.MirMedia;
9 import mir.media.MirMediaException;
10 import mir.media.MirMediaUserException;
11 import mir.misc.MirConfig;
12 import mir.misc.MpRequest;
13 import mir.misc.StringUtil;
14 import mir.misc.WebdbMultipartRequest;
15 import mir.module.ModuleException;
16 import mir.servlet.ServletModule;
17 import mir.servlet.ServletModuleException;
18 import mir.servlet.ServletModuleUserException;
19 import mir.storage.Database;
20 import mir.storage.StorageObjectException;
21 import mircoders.entity.EntityUsers;
22 import mircoders.storage.DatabaseMediaType;
23 import mircoders.storage.DatabaseMediafolder;
24 import mircoders.media.MediaRequest;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.servlet.http.HttpSession;
29 import javax.servlet.ServletContext;
31 import java.io.IOException;
32 import java.net.URLEncoder;
33 import java.util.GregorianCalendar;
34 import java.util.HashMap;
37 * ServletModuleBilder -
38 * liefert HTML fuer Bilder
44 public abstract class ServletModuleUploadedMedia
45 extends mir.servlet.ServletModule {
47 //private static DatabaseRights dbRights;
49 public static ServletModule getInstance() {
53 public void insert(HttpServletRequest req, HttpServletResponse res)
54 throws ServletModuleException, ServletModuleUserException {
56 WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
57 EntityUsers user = _getUser(req);
58 EntityList mediaList =
59 new MediaRequest(mp, user.getId()).getMedia(false, false);
62 catch (MirMediaUserException e) {
63 throw new ServletModuleUserException(e.getMsg());
65 catch (MirMediaException e) {
66 throw new ServletModuleException(
67 "upload -- media handling exception " + e.toString());
69 catch (IOException e) {
70 throw new ServletModuleException("upload -- ioexception " + e.toString());
74 public void update(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException {
77 WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
78 HashMap parameters = mp.getParameters();
80 EntityUsers user = _getUser(req);
81 parameters.put("to_publisher", user.getId());
82 parameters.put("is_produced", "0");
83 if (!parameters.containsKey("is_published"))
84 parameters.put("is_published", "0");
86 String id = mainModule.set(parameters);
87 theLog.printError("media ID" + id);
90 catch (IOException e) {
91 throw new ServletModuleException("upload -- ioexception " + e.toString());
93 catch (ModuleException e) {
94 throw new ServletModuleException("upload -- moduleexception " + e.toString());
100 public void list(HttpServletRequest req, HttpServletResponse res)
101 throws ServletModuleException {
102 // Parameter auswerten
103 SimpleHash mergeData = new SimpleHash();
104 SimpleHash popups = new SimpleHash();
106 String query_text = req.getParameter("query_text");
107 mergeData.put("query_text", query_text);
108 if (query_text != null) mergeData.put("query_text_encoded", URLEncoder.encode(query_text));
109 String query_field = req.getParameter("query_field");
110 mergeData.put("query_field", query_field);
111 String query_is_published = req.getParameter("query_is_published");
112 mergeData.put("query_is_published", query_is_published);
113 String query_media_folder = req.getParameter("query_media_folder");
114 mergeData.put("query_media_folder", query_media_folder);
115 String offset = req.getParameter("offset");
116 if (offset == null || offset.equals("")) offset = "0";
117 mergeData.put("offset", offset);
119 String order = req.getParameter("order");
120 if (order == null) order = "webdb_lastchange desc";
122 // if in connection mode to content
123 String cid = req.getParameter("cid");
124 mergeData.put("cid", cid);
128 String whereClause = "";
129 boolean isFirst = true;
130 if (query_text != null && !query_text.equalsIgnoreCase("")) {
131 whereClause += "lower(" + query_field + ") like lower('%" + query_text + "%')";
134 if (query_is_published != null && !query_is_published.equals("")) {
135 if (isFirst == false) whereClause += " and ";
136 whereClause += "is_published='" + query_is_published + "'";
139 if (query_media_folder != null && !query_media_folder.equals("")) {
140 if (isFirst == false) whereClause += " and ";
141 whereClause += "to_media_folder='" + query_media_folder + "'";
143 //theLog.printDebugInfo("sql-whereclause: " + whereClause + " order: " + order + " offset: " + offset);
145 // fetch und ausliefern
147 if (query_text != null || query_is_published != null || query_media_folder != null) {
148 EntityList theList = mainModule.getByWhereClause(whereClause, order, (new Integer(offset)).intValue(), 10);
149 if (theList != null) {
150 mergeData.put("contentlist", theList);
151 if (theList.getOrder() != null) {
152 mergeData.put("order", theList.getOrder());
153 mergeData.put("order_encoded", URLEncoder.encode(theList.getOrder()));
155 mergeData.put("count", (new Integer(theList.getCount())).toString());
156 mergeData.put("from", (new Integer(theList.getFrom())).toString());
157 mergeData.put("to", (new Integer(theList.getTo())).toString());
158 if (theList.hasNextBatch())
159 mergeData.put("next", (new Integer(theList.getNextBatch())).toString());
160 if (theList.hasPrevBatch())
161 mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString());
165 popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
167 deliver(req, res, mergeData, popups, templateListString);
169 catch (ModuleException e) {
170 throw new ServletModuleException(e.toString());
172 catch (Exception e) {
173 throw new ServletModuleException(e.toString());
178 public void add(HttpServletRequest req, HttpServletResponse res)
179 throws ServletModuleException {
181 SimpleHash mergeData = new SimpleHash();
182 mergeData.put("new", "1");
183 SimpleHash popups = new SimpleHash();
184 popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
185 String maxMedia = MirConfig.getProp("ServletModule.OpenIndy.MaxMediaUploadItems");
186 String numOfMedia = req.getParameter("medianum");
187 if(numOfMedia==null||numOfMedia.equals("")){
189 } else if(Integer.parseInt(numOfMedia) > Integer.parseInt(maxMedia)) {
190 numOfMedia = maxMedia;
193 int mediaNum = Integer.parseInt(numOfMedia);
194 SimpleList mediaFields = new SimpleList();
195 for(int i =0; i<mediaNum;i++){
196 Integer mNum = new Integer(i+1);
197 mediaFields.add(mNum.toString());
199 mergeData.put("medianum",numOfMedia);
200 mergeData.put("mediafields",mediaFields);
201 deliver(req, res, mergeData, popups, templateObjektString);
202 } catch (Exception e) {
203 throw new ServletModuleException(e.toString());
207 public void edit(HttpServletRequest req, HttpServletResponse res)
208 throws ServletModuleException {
209 String idParam = req.getParameter("id");
210 _edit(idParam, req, res);
213 private void _edit(String idParam, HttpServletRequest req, HttpServletResponse res)
214 throws ServletModuleException {
215 if (idParam != null && !idParam.equals("")) {
217 SimpleHash popups = new SimpleHash();
218 popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
219 deliver(req, res, mainModule.getById(idParam), popups,
220 templateObjektString);
222 catch (ModuleException e) {
223 throw new ServletModuleException(e.toString());
225 catch (StorageObjectException e) {
226 throw new ServletModuleException(e.toString());
230 throw new ServletModuleException("ServletmoduleUploadedMedia :: _edit without id");
235 /** @todo should be in ServletModule.java */
236 private EntityUsers _getUser(HttpServletRequest req) {
237 HttpSession session = req.getSession(false);
238 return (EntityUsers) session.getAttribute("login.uid");