1 package mircoders.entity.adapter;
6 import mir.entity.adapter.*;
9 import mircoders.storage.*;
10 import mircoders.global.*;
11 import mircoders.entity.*;
12 import mircoders.localizer.*;
14 public class ContentAdapterDefinition extends EntityAdapterDefinition {
15 private static ContentAdapterDefinition instance;
17 public static ContentAdapterDefinition getInstance() {
18 synchronized (ContentAdapterDefinition.class) {
19 if (instance == null) {
20 instance = new ContentAdapterDefinition();
26 public ContentAdapterDefinition() {
29 addDBDateField("creationdate", "webdb_lastchange");
30 addDBDateField("changedate", "webdb_create");
31 addMirDateField("date", "date");
32 addCalculatedField("to_topics", new ContentToTopicsField());
33 addCalculatedField("to_comments", new ContentToCommentsField());
35 addCalculatedField("to_media_images", new ContentToMediaField(
36 DatabaseImages.getInstance(), ImagesAdapterDefinition.getInstance()));
37 addCalculatedField("to_uploaded_media", new ContentToMediaField(
38 DatabaseUploadedMedia.getInstance(), UploadedMediaAdapterDefinition.getInstance()));
39 addCalculatedField("to_media_audio", new ContentToMediaField(
40 DatabaseAudio.getInstance(), AudioAdapterDefinition.getInstance()));
41 addCalculatedField("to_media_video", new ContentToMediaField(
42 DatabaseVideo.getInstance(), VideoAdapterDefinition.getInstance()));
43 addCalculatedField("to_media_other", new ContentToMediaField(
44 DatabaseOther.getInstance(), OtherAdapterDefinition.getInstance()));
45 addCalculatedField("to_media_icon", new ContentToIconField());
48 System.out.println(t.getMessage());
49 t.printStackTrace(System.out);
52 addCalculatedField("description_parsed", new FilteredField("description"));
53 addCalculatedField("content_data_parsed", new FilteredField("content_data"));
56 private class FilteredField implements CalculatedField {
59 public FilteredField(String aFieldName) {
60 fieldName = aFieldName;
63 public Object getValue(EntityAdapter anEntityAdapter) {
64 if (anEntityAdapter.get("is_html").equals("0")) {
65 return MirGlobal.localizer().producerTool().filterText((String) anEntityAdapter.get(fieldName));
68 return anEntityAdapter.get(fieldName);
73 private class ContentToCommentsField implements CalculatedField {
74 public Object getValue(EntityAdapter anEntityAdapter) {
77 DatabaseComment.getInstance(),
78 "to_media="+anEntityAdapter.get("id"),
80 CommentAdapterDefinition.getInstance());
83 throw new RuntimeException(t.getMessage());
88 private class ContentToTopicsField implements CalculatedField {
89 public Object getValue(EntityAdapter anEntityAdapter) {
92 DatabaseTopics.getInstance(),
93 "exists (select * from content_x_topic where content_id="+anEntityAdapter.get("id")+" and topic_id=id)",
95 TopicsAdapterDefinition.getInstance());
98 throw new RuntimeException(t.getMessage());
103 private class ContentToMediaField implements CalculatedField {
104 StorageObject storage;
105 EntityAdapterDefinition definition;
107 public ContentToMediaField(StorageObject aStorage, EntityAdapterDefinition aDefinition) {
108 definition = aDefinition;
112 public Object getValue(EntityAdapter anEntityAdapter) {
116 "exists (select * from content_x_media where content_id="+anEntityAdapter.get("id")+" and media_id=id)",
120 catch (Throwable t) {
121 throw new RuntimeException(t.getMessage());
126 private class ContentToIconField implements CalculatedField {
127 public Object getValue(EntityAdapter anEntityAdapter) {
130 RewindableIterator iterator;
132 MirMedia mediaHandler;
137 iterator = (RewindableIterator) (anEntityAdapter.get("to_uploaded_media"));
140 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyText");
143 if (iterator.hasNext()) {
144 media = (EntityAdapter) iterator.next();
146 mediaType = ((EntityUploadedMedia) (media.getEntity())).getMediaType();
147 mediaHandler = MediaHelper.getHandler( mediaType );
149 if (mediaHandler.isVideo()) {
150 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyVideo");
153 else if (mediaHandler.isAudio()) {
154 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyAudio");
157 else if (mediaHandler.isImage()) {
158 tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyImage");
162 tinyIcon = mediaHandler.getTinyIcon();
163 iconAlt = mediaHandler.getIconAlt();
168 catch (Throwable t) {
169 System.out.println("ContentToIconField: exception: " +t.getMessage());
170 t.printStackTrace(System.out);
171 throw new RuntimeException(t.getMessage());
174 result = new HashMap();
175 result.put("tiny_icon", tinyIcon);
176 result.put("icon_alt", iconAlt);