a09248911830782180c93922381d7d580b4b06ac
[mir.git] / source / mircoders / entity / EntityUploadedMedia.java
1 package mircoders.entity;
2
3 import freemarker.template.SimpleList;
4 import freemarker.template.SimpleScalar;
5 import freemarker.template.TemplateModel;
6 import freemarker.template.TemplateModelException;
7 import mir.entity.Entity;
8 import mir.media.MediaHelper;
9 import mir.media.MirMedia;
10 import mir.storage.StorageObject;
11 import mir.storage.StorageObjectException;
12 import mircoders.storage.DatabaseUploadedMedia;
13
14 import java.util.HashMap;
15
16 /**
17  * Diese Klasse enthält die Daten eines MetaObjekts
18  *
19  * @author RK
20  * @version 29.6.1999
21  */
22
23
24 public class EntityUploadedMedia extends Entity {
25
26
27   public EntityUploadedMedia() {
28     super();
29   }
30
31   public EntityUploadedMedia(StorageObject theStorage) {
32     this();
33     setStorage(theStorage);
34   }
35
36   public void setValues(HashMap theStringValues) {
37     if (theStringValues != null) {
38       if (!theStringValues.containsKey("is_published"))
39         theStringValues.put("is_published", "0");
40     }
41     super.setValues(theStringValues);
42   }
43
44
45   /**
46    * fetches the MediaType entry assiciated w/ this media
47    *
48    * @return mir.entity.Entity
49    */
50   public Entity getMediaType() throws StorageObjectException {
51     Entity ent = null;
52     try {
53       ent = DatabaseUploadedMedia.getInstance().getMediaType(this);
54     }
55     catch (StorageObjectException e) {
56       throwStorageObjectException(e, "get MediaType failed -- ");
57     }
58     return ent;
59   }
60
61   public String getValue(String key) {
62     String returnValue = null;
63
64     if (key != null) {
65       if (key.equals("big_icon"))
66         returnValue = getBigIcon();
67       else if (key.equals("descr"))
68         returnValue = getDescr();
69       else if (key.equals("mediatype"))
70         returnValue = getMediaTypeString();
71       else if (key.equals("mimetype"))
72         returnValue = getMimeType();
73       else
74         returnValue = super.getValue(key);
75     }
76     return returnValue;
77   }
78
79   public TemplateModel get(java.lang.String key) throws TemplateModelException {
80     if (key.equals("url"))
81       return getUrl();
82     return new SimpleScalar(getValue(key));
83   }
84
85   // @todo  all these methods should be merged into 1
86   // and the MediaHandler should be cached somehow.
87   private String getMediaTypeString() {
88     MirMedia mediaHandler = null;
89     Entity mediaType = null;
90
91     try {
92       mediaType = getMediaType();
93       mediaHandler = MediaHelper.getHandler(mediaType);
94       String t;
95       if (mediaHandler.isAudio())
96         return "audio";
97       else if (mediaHandler.isImage())
98         return "image";
99       else if (mediaHandler.isVideo())
100         return "video";
101       else
102         return "other";
103     }
104     catch (Exception ex) {
105       theLog.printWarning("-- getMediaTypeString: could not fetch data "
106                           + this.getClass().toString() + " " + ex.toString());
107     }
108     return null;
109   }
110
111   private String getBigIcon() {
112     MirMedia mediaHandler = null;
113     Entity mediaType = null;
114
115     try {
116       mediaType = getMediaType();
117       mediaHandler = MediaHelper.getHandler(mediaType);
118       return mediaHandler.getBigIcon();
119     }
120     catch (Exception ex) {
121       theLog.printWarning("-- getBigIcon: could not fetch data "
122                           + this.getClass().toString() + " " + ex.toString());
123     }
124     return null;
125   }
126
127   private SimpleList getUrl() {
128     MirMedia mediaHandler = null;
129     Entity mediaType = null;
130
131     try {
132       mediaType = getMediaType();
133       mediaHandler = MediaHelper.getHandler(mediaType);
134       return mediaHandler.getURL(this, mediaType);
135     }
136     catch (Exception ex) {
137       theLog.printWarning("-- getUrl: could not fetch data "
138                           + this.getClass().toString() + " " + ex.toString());
139     }
140     return null;
141   }
142
143   private String getDescr() {
144     MirMedia mediaHandler = null;
145     Entity mediaType = null;
146
147     try {
148       mediaType = getMediaType();
149       mediaHandler = MediaHelper.getHandler(mediaType);
150       return mediaHandler.getDescr();
151     }
152     catch (Exception ex) {
153       theLog.printWarning("-- getDescr: could not fetch data "
154                           + this.getClass().toString() + " " + ex.toString());
155     }
156     return null;
157   }
158   private String getMimeType() {
159     Entity mediaType = null;
160
161     try {
162       mediaType = getMediaType();
163       return mediaType.getValue("mime_type");
164     }
165     catch (Exception ex) {
166       theLog.printWarning("-- getBigIcon: could not fetch data "
167                           + this.getClass().toString() + " " + ex.toString());
168     }
169     return null;
170   }
171
172 }