various fixes/cleanup: old producers are now completely gone, old logfile class too
[mir.git] / source / mircoders / entity / EntityUploadedMedia.java
1 /*
2  * Copyright (C) 2001, 2002  The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with the com.oreilly.servlet library, any library
22  * licensed under the Apache Software License, The Sun (tm) Java Advanced
23  * Imaging library (JAI), The Sun JIMI library (or with modified versions of
24  * the above that use the same license as the above), and distribute linked
25  * combinations including the two.  You must obey the GNU General Public
26  * License in all respects for all of the code used other than the above
27  * mentioned libraries.  If you modify this file, you may extend this exception
28  * to your version of the file, but you are not obligated to do so.  If you do
29  * not wish to do so, delete this exception statement from your version.
30  */
31
32 package mircoders.entity;
33
34 import java.util.HashMap;
35
36 import freemarker.template.SimpleList;
37 import freemarker.template.SimpleScalar;
38 import freemarker.template.TemplateModel;
39 import freemarker.template.TemplateModelException;
40
41 import mir.entity.Entity;
42 import mir.entity.EntityList;
43 import mir.media.MediaHelper;
44 import mir.media.MirMedia;
45 import mir.misc.NumberUtils;
46 import mir.storage.StorageObject;
47 import mir.storage.StorageObjectExc;
48 import mir.storage.StorageObjectFailure;
49 import mir.log.LoggerWrapper;
50
51 import mircoders.storage.DatabaseContentToMedia;
52 import mircoders.storage.DatabaseUploadedMedia;
53
54 /**
55  *
56  * @author mh, mir-coders group
57  * @version $Id: EntityUploadedMedia.java,v 1.19 2003/02/23 05:00:13 zapata Exp $
58  */
59
60
61 public class EntityUploadedMedia extends Entity {
62
63
64   public EntityUploadedMedia() {
65     super();
66
67     logger = new LoggerWrapper("Entity.UploadedMedia");
68   }
69
70   public EntityUploadedMedia(StorageObject theStorage) {
71     this();
72     setStorage(theStorage);
73   }
74
75   public void update() throws StorageObjectFailure {
76     super.update();
77     EntityList contentList = DatabaseContentToMedia.getInstance().getContent(this);
78     if (contentList!=null && contentList.size()>0) {
79       for(int i=0;i<contentList.size();i++) {
80         EntityContent contentEnt = (EntityContent)contentList.elementAt(i);
81         contentEnt.setProduced(false);
82       }
83     }
84   }
85
86   public void setValues(HashMap theStringValues) {
87     if (theStringValues != null) {
88       if (!theStringValues.containsKey("is_published"))
89         theStringValues.put("is_published", "0");
90     }
91     super.setValues(theStringValues);
92   }
93
94
95   /**
96    * fetches the MediaType entry assiciated w/ this media
97    *
98    * @return mir.entity.Entity
99    */
100   public Entity getMediaType() throws StorageObjectFailure {
101     Entity ent = null;
102     try {
103       ent = DatabaseUploadedMedia.getInstance().getMediaType(this);
104     }
105     catch (StorageObjectFailure e) {
106       throwStorageObjectFailure(e, "get MediaType failed -- ");
107     }
108     return ent;
109   }
110
111   public String getValue(String key) {
112     String returnValue = null;
113
114     if (key != null) {
115       if (key.equals("big_icon"))
116         returnValue = getBigIconName();
117       else if (key.equals("descr") || key.equals("media_descr"))
118         returnValue = getDescr();
119       else if (key.equals("mediatype"))
120         returnValue = getMediaTypeString();
121       else if (key.equals("mimetype"))
122         returnValue = getMimeType();
123       else if (key.equals("human_readable_size")) {
124         String size = super.getValue("size");
125         if (size != null)
126           returnValue = NumberUtils.humanReadableSize(Double.parseDouble(size));
127       }
128       else
129         returnValue = super.getValue(key);
130     }
131     return returnValue;
132   }
133
134   public TemplateModel get(java.lang.String key) throws TemplateModelException {
135     if (key.equals("url"))
136       return getUrl();
137     return new SimpleScalar(getValue(key));
138   }
139
140   // @todo  all these methods should be merged into 1
141   // and the MediaHandler should be cached somehow.
142   private String getMediaTypeString() {
143     MirMedia mediaHandler = null;
144     Entity mediaType = null;
145
146     try {
147       mediaType = getMediaType();
148       mediaHandler = MediaHelper.getHandler(mediaType);
149       String t;
150       if (mediaHandler.isAudio())
151         return "audio";
152       else if (mediaHandler.isImage())
153         return "image";
154       else if (mediaHandler.isVideo())
155         return "video";
156       else
157         return "other";
158     }
159     catch (Exception ex) {
160       logger.warn("EntityUploadedMedia.getMediaTypeString: could not fetch data: " + ex.toString());
161     }
162     return null;
163   }
164
165   private String getBigIconName() {
166     MirMedia mediaHandler = null;
167     Entity mediaType = null;
168
169     try {
170       mediaType = getMediaType();
171       mediaHandler = MediaHelper.getHandler(mediaType);
172       return mediaHandler.getBigIconName();
173     }
174     catch (Exception ex) {
175       logger.warn("EntityUploadedMedia.getBigIconName: could not fetch data: " + ex.toString());
176     }
177     return null;
178   }
179
180   private SimpleList getUrl() {
181     MirMedia mediaHandler = null;
182     Entity mediaType = null;
183
184     try {
185       mediaType = getMediaType();
186       mediaHandler = MediaHelper.getHandler(mediaType);
187       return mediaHandler.getURL(this, mediaType);
188     }
189     catch (Exception ex) {
190       logger.warn("EntityUploadedMedia.getUrl: could not fetch data: " + ex.toString());
191     }
192     return null;
193   }
194
195   private String getDescr() {
196     MirMedia mediaHandler = null;
197     Entity mediaType = null;
198
199     try {
200       mediaType = getMediaType();
201       mediaHandler = MediaHelper.getHandler(mediaType);
202       return mediaHandler.getDescr(mediaType);
203     }
204     catch (Exception ex) {
205       logger.warn("EntityUploadedMedia.getDescr: could not fetch data: " + ex.toString());
206     }
207     return null;
208   }
209   private String getMimeType() {
210     Entity mediaType = null;
211
212     try {
213       mediaType = getMediaType();
214       return mediaType.getValue("mime_type");
215     }
216     catch (Exception ex) {
217       logger.warn("EntityUploadedMedia.getBigIconName: could not fetch data: " + ex.toString());
218     }
219     return null;
220   }
221
222 }