4090d15ffbf3504ea6ddcd653aba354fc5d69c31
[mir.git] / source / mircoders / servlet / ServletModuleUploadedMedia.java
1 package mircoders.servlet;
2
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;
25
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.servlet.http.HttpSession;
29 import javax.servlet.ServletContext;
30
31 import java.io.IOException;
32 import java.net.URLEncoder;
33 import java.util.GregorianCalendar;
34 import java.util.HashMap;
35
36 /*
37  *  ServletModuleBilder -
38  *  liefert HTML fuer Bilder
39  *
40  *
41  * @author RK
42  */
43
44 public abstract class ServletModuleUploadedMedia
45         extends mir.servlet.ServletModule {
46
47   //private static DatabaseRights dbRights;
48
49   public static ServletModule getInstance() {
50     return null;
51   }
52
53   public void insert(HttpServletRequest req, HttpServletResponse res)
54           throws ServletModuleException, ServletModuleUserException {
55     try {
56       WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
57       EntityUsers user = _getUser(req);
58       EntityList mediaList =
59         new MediaRequest(mp, user.getId()).getMedia(false, false);
60       list(req, res);
61     }
62     catch (MirMediaUserException e) {
63       throw new ServletModuleUserException(e.getMsg());
64     }
65     catch (MirMediaException e) {
66       throw new ServletModuleException(
67               "upload -- media handling exception " + e.toString());
68     }
69     catch (IOException e) {
70       throw new ServletModuleException("upload -- ioexception " + e.toString());
71     }
72   }
73
74   public void update(HttpServletRequest req, HttpServletResponse res) throws ServletModuleException {
75
76     try {
77       WebdbMultipartRequest mp = new WebdbMultipartRequest(req);
78       HashMap parameters = mp.getParameters();
79
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");
85
86       String id = mainModule.set(parameters);
87       theLog.printError("media ID" + id);
88       _edit(id, req, res);
89     }
90     catch (IOException e) {
91       throw new ServletModuleException("upload -- ioexception " + e.toString());
92     }
93     catch (ModuleException e) {
94       throw new ServletModuleException("upload -- moduleexception " + e.toString());
95     }
96
97   }
98
99
100   public void list(HttpServletRequest req, HttpServletResponse res)
101           throws ServletModuleException {
102     // Parameter auswerten
103     SimpleHash mergeData = new SimpleHash();
104     SimpleHash popups = new SimpleHash();
105
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);
118
119     String order = req.getParameter("order");
120     if (order == null) order = "webdb_lastchange desc";
121
122     // if in connection mode to content
123     String cid = req.getParameter("cid");
124     mergeData.put("cid", cid);
125
126
127     // sql basteln
128     String whereClause = "";
129     boolean isFirst = true;
130     if (query_text != null && !query_text.equalsIgnoreCase("")) {
131       whereClause += "lower(" + query_field + ") like lower('%" + query_text + "%')";
132       isFirst = false;
133     }
134     if (query_is_published != null && !query_is_published.equals("")) {
135       if (isFirst == false) whereClause += " and ";
136       whereClause += "is_published='" + query_is_published + "'";
137       isFirst = false;
138     }
139     if (query_media_folder != null && !query_media_folder.equals("")) {
140       if (isFirst == false) whereClause += " and ";
141       whereClause += "to_media_folder='" + query_media_folder + "'";
142     }
143     //theLog.printDebugInfo("sql-whereclause: " + whereClause + " order: " + order + " offset: " + offset);
144
145     // fetch und ausliefern
146     try {
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()));
154           }
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());
162         }
163       }
164       //fetch the popups
165       popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
166       // raus damit
167       deliver(req, res, mergeData, popups, templateListString);
168     }
169     catch (ModuleException e) {
170       throw new ServletModuleException(e.toString());
171     }
172     catch (Exception e) {
173       throw new ServletModuleException(e.toString());
174     }
175   }
176
177
178   public void add(HttpServletRequest req, HttpServletResponse res)
179           throws ServletModuleException {
180     try {
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("")){
188         numOfMedia="1";
189       } else if(Integer.parseInt(numOfMedia) > Integer.parseInt(maxMedia)) {
190         numOfMedia = maxMedia;
191       }
192     
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());
198       }
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());
204     }
205   }
206
207   public void edit(HttpServletRequest req, HttpServletResponse res)
208           throws ServletModuleException {
209     String idParam = req.getParameter("id");
210     _edit(idParam, req, res);
211   }
212
213   private void _edit(String idParam, HttpServletRequest req, HttpServletResponse res)
214           throws ServletModuleException {
215     if (idParam != null && !idParam.equals("")) {
216       try {
217         SimpleHash popups = new SimpleHash();
218         popups.put("mediafolderPopupData", DatabaseMediafolder.getInstance().getPopupData());
219         deliver(req, res, mainModule.getById(idParam), popups,
220                 templateObjektString);
221       }
222       catch (ModuleException e) {
223         throw new ServletModuleException(e.toString());
224       }
225       catch (StorageObjectException e) {
226         throw new ServletModuleException(e.toString());
227       }
228     }
229     else {
230       throw new ServletModuleException("ServletmoduleUploadedMedia :: _edit without id");
231     }
232   }
233
234
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");
239   }
240
241 }
242
243