1 package mircoders.entity.adapter;
6 import mir.entity.adapter.*;
8 import mircoders.storage.*;
9 import mircoders.global.*;
10 import mircoders.entity.*;
11 import mircoders.localizer.*;
13 public class ContentAdapterDefinition extends EntityAdapterDefinition {
14 private static ContentAdapterDefinition instance;
16 public static ContentAdapterDefinition getInstance() {
17 synchronized (ContentAdapterDefinition.class) {
18 if (instance == null) {
19 instance = new ContentAdapterDefinition();
25 public ContentAdapterDefinition() {
28 addDBDateField("creationdate", "webdb_lastchange");
29 addDBDateField("changedate", "webdb_create");
30 addMirDateField("date", "date");
31 addCalculatedField("to_topics", new ContentToTopicsField());
32 addCalculatedField("to_comments", new ContentToCommentsField());
34 addCalculatedField("to_media_images", new ContentToMediaField(
35 DatabaseImages.getInstance(), ImagesAdapterDefinition.getInstance()));
36 addCalculatedField("to_media_audio", new ContentToMediaField(
37 DatabaseAudio.getInstance(), AudioAdapterDefinition.getInstance()));
38 addCalculatedField("to_media_video", new ContentToMediaField(
39 DatabaseVideo.getInstance(), VideoAdapterDefinition.getInstance()));
40 addCalculatedField("to_media_other", new ContentToMediaField(
41 DatabaseOther.getInstance(), OtherAdapterDefinition.getInstance()));
42 addCalculatedField("to_media_icon", new ContentToIconField());
45 System.out.println(t.getMessage());
46 t.printStackTrace(System.out);
49 addCalculatedField("description_parsed", new FilteredField("description"));
50 addCalculatedField("content_data_parsed", new FilteredField("content_data"));
53 private class FilteredField implements CalculatedField {
56 public FilteredField(String aFieldName) {
57 fieldName = aFieldName;
60 public Object getValue(EntityAdapter anEntityAdapter) {
61 if (anEntityAdapter.get("is_html").equals("0")) {
62 return MirGlobal.localizer().producerTool().filterText((String) anEntityAdapter.get(fieldName));
65 return anEntityAdapter.get(fieldName);
70 private class ContentToCommentsField implements CalculatedField {
71 public Object getValue(EntityAdapter anEntityAdapter) {
74 DatabaseComment.getInstance(),
75 "to_media="+anEntityAdapter.get("id"),
77 CommentAdapterDefinition.getInstance());
80 throw new RuntimeException(t.getMessage());
85 private class ContentToTopicsField implements CalculatedField {
86 public Object getValue(EntityAdapter anEntityAdapter) {
89 DatabaseTopics.getInstance(),
90 "exists (select * from content_x_topic where content_id="+anEntityAdapter.get("id")+" and topic_id=id)",
92 TopicsAdapterDefinition.getInstance());
95 throw new RuntimeException(t.getMessage());
100 private class ContentToMediaField implements CalculatedField {
101 StorageObject storage;
102 EntityAdapterDefinition definition;
104 public ContentToMediaField(StorageObject aStorage, EntityAdapterDefinition aDefinition) {
105 definition = aDefinition;
109 public Object getValue(EntityAdapter anEntityAdapter) {
113 "exists (select * from content_x_media where content_id="+anEntityAdapter.get("id")+" and media_id=id)",
117 catch (Throwable t) {
118 throw new RuntimeException(t.getMessage());
123 private class ContentToIconField implements CalculatedField {
124 public Object getValue(EntityAdapter anEntityAdapter) {
125 EntityUploadedMedia uploadedMedia;
127 EntityBrowser browser;
129 MirMedia mediaHandler;
137 DatabaseUploadedMedia.getInstance(),
138 "exists (select * from content_x_media where content_id="+anEntityAdapter.get("id")+" and media_id=id)",
142 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyText");
145 if (browser.hasNext()) {
146 uploadedMedia = (EntityUploadedMedia) browser.next();
148 mediaType = uploadedMedia.getMediaType();
149 mediaHandler = MediaHelper.getHandler( mediaType );
151 if (mediaHandler.isVideo()) {
152 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyVideo");
155 else if (mediaHandler.isAudio()) {
156 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyAudio");
159 else if (mediaHandler.isImage()) {
160 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyImage");
164 tinyIcon = mediaHandler.getTinyIcon();
165 iconAlt = mediaHandler.getIconAlt();
169 catch (Throwable t) {
170 throw new RuntimeException(t.getMessage());
173 result = new HashMap();
174 result.put("tiny_icon", tinyIcon);
175 result.put("icon_alt", iconAlt);