1 package mircoders.producer;
5 import java.lang.reflect.*;
9 import freemarker.template.*;
17 import mircoders.entity.*;
18 import mircoders.storage.*;
22 public class ProducerTopics extends ProducerList {
25 String currentMediaId;
26 EntityList upMediaEntityList;
27 EntityList imageEntityList;
28 EntityList currentMediaList;
30 EntityMedia uploadedMedia;
31 Class mediaHandlerClass=null;
32 MirMedia mediaHandler=null;
33 String mediaHandlerName=null;
34 Database mediaStorage=null;
38 public void setAdditional(String key, TemplateModel value) {
39 additional.put(key,value);
42 public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)
43 throws StorageObjectException, ModuleException {
45 handle(htmlout,user,force,sync);
48 public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
49 throws StorageObjectException, ModuleException {
51 orderBy="date desc, webdb_create desc";
52 listTemplate = MirConfig.getProp("Producer.TopicList.Template");
54 EntityList topicsEntityList;
56 topicsEntityList = topicsModule.getByWhereClause("","title", -1);
58 topicsEntityList = topicsModule.getByWhereClause(where,"title", -1);
60 SimpleList topicsList = HTMLTemplateProcessor.makeSimpleList(topicsEntityList);
62 for(int i=0; i < topicsEntityList.size(); i++){
64 EntityTopics currentTopic = (EntityTopics)topicsEntityList.elementAt(i);
65 EntityList contentEntityList = DatabaseContentToTopics.getInstance().getContent(currentTopic);
66 String whereClauseSpecial=null;
68 if (contentEntityList!=null || force==true) {
69 if (contentEntityList!=null){
71 whereClause="is_published='1' AND to_article_type >= 1 AND to_article_type <=2 AND id IN (";
72 whereClauseSpecial="is_published='1' AND to_article_type=3 AND id IN (";
73 for(int j=0; j < contentEntityList.size(); j++){
76 whereClauseSpecial += ",";
78 EntityContent currentContent = (EntityContent)contentEntityList.elementAt(j);
79 whereClause += currentContent.getId();
80 whereClauseSpecial += currentContent.getId();
82 setAdditional("topic",HTMLTemplateProcessor.makeSimpleHash(currentTopic));
87 whereClauseSpecial += ")";
90 if(contentEntityList==null && force==true){
91 //hihi, das ist eigentlich boese
92 whereClause="is_published='1' AND to_article_type>=1 AND id IN (0)";
95 fileDesc = currentTopic.getValue("filename");
97 // get the startarticle
98 EntityList entityList = contentModule.getContent(whereClauseSpecial,"date desc, webdb_create desc",0,1);
99 String currentMediaId = null;
100 SimpleHash imageHash = new SimpleHash();
101 EntityContent currentContent;
102 if(entityList != null && entityList.size()==1){
103 currentContent = (EntityContent)entityList.elementAt(0);
105 SimpleHash specialHash = HTMLTemplateProcessor.makeSimpleHash(currentContent);
107 currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent);
108 if (currentMediaList!=null && currentMediaList.getCount()>=1) {
109 SimpleList mediaListAudio = new SimpleList();
110 SimpleList mediaListImages = new SimpleList();
111 SimpleList mediaListVideo = new SimpleList();
112 SimpleList mediaListOther = new SimpleList();
113 for (int n=0; n < currentMediaList.size();n++) {
114 upMedia = currentMediaList.elementAt(n);
115 upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
116 mediaType = ((EntityMedia)upMedia).getMediaType();
117 //must be a non-existant to_media_type entry..
118 if (mediaType != null) {
119 mediaHandlerName = mediaType.getValue("classname");
120 mediaStorageName = mediaType.getValue("tablename");
121 mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
122 mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
123 mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
124 Method m = mediaStorageClass.getMethod("getInstance", null);
125 mediaStorage = (Database)m.invoke(null, null);
126 //we most likely need further info
127 upMedia = mediaStorage.selectById(upMedia.getId());
128 upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType));
129 if (upMedia.getValue("is_published") == "1") {
130 if (mediaHandler.isImage()) {
131 mediaListImages.add(upMediaSimpleHash);
132 } else if (mediaHandler.isAudio()) {
133 mediaListAudio.add(upMediaSimpleHash);
134 } else if (mediaHandler.isVideo()) {
135 mediaListVideo.add(upMediaSimpleHash);
137 mediaListOther.add(upMediaSimpleHash);
139 } //end if is_published
140 } //end if media_type != null
142 specialHash.put("to_media_audio", mediaListAudio);
143 specialHash.put("to_media_images", mediaListImages);
144 specialHash.put("to_media_video", mediaListVideo);
145 specialHash.put("to_media_other", mediaListOther);
146 } //end if currentMediaList != null
147 setAdditional("special",specialHash);
148 } catch (Exception e) {
149 theLog.printError("ProducerTopics: problem with start special: "+currentContent.getId()+" "+e.toString());
150 logHTML(htmlout,"ProducerTopics: problem with start special: "+currentContent.getId()+" "+e.toString());
154 //set the list of topics
155 setAdditional("topicslist",topicsList);
157 handleIt(htmlout,user,force);
162 public static void main(String argv[]){
164 new ProducerOpenPosting().handle(new PrintWriter(System.out), null,false, false);
165 } catch(Exception e) {
166 System.err.println(e.toString());