2 * Copyright (C) 2001, 2002 The Mir-coders group
4 * This file is part of Mir.
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.
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.
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
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.
32 package mircoders.producer;
36 import java.lang.reflect.*;
40 import freemarker.template.*;
48 import mircoders.entity.*;
49 import mircoders.storage.*;
53 public class ProducerTopics extends ProducerList {
56 String currentMediaId;
57 EntityList upMediaEntityList;
58 EntityList imageEntityList;
59 EntityList currentMediaList;
61 EntityMedia uploadedMedia;
62 Class mediaHandlerClass=null;
63 MirMedia mediaHandler=null;
64 String mediaHandlerName=null;
65 Database mediaStorage=null;
69 public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)
70 throws StorageObjectException, ModuleException {
72 handle(htmlout,user,force,sync);
75 public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
76 throws StorageObjectException, ModuleException
78 long startTime = System.currentTimeMillis();
80 logHTML(htmlout, "Producer.Topics: started");
82 /** @todo should be done in static */
83 listTemplate = MirConfig.getProp("Producer.TopicList.Template");
85 orderBy="date desc, webdb_create desc";
86 EntityList topicsEntityList;
88 topicsEntityList = topicsModule.getByWhereClause("","title", -1);
90 topicsEntityList = topicsModule.getByWhereClause(where,"title", -1);
93 for(int i=0; i < topicsEntityList.size(); i++){
95 EntityTopics currentTopic = (EntityTopics)topicsEntityList.elementAt(i);
98 EntityList contentEntityList = DatabaseContentToTopics.getInstance().getContent(currentTopic);
99 String whereClauseSpecial=null;
101 if (contentEntityList!=null || force==true) {
102 if (contentEntityList!=null){
104 whereClause="is_published='1' AND to_article_type >= 0 AND to_article_type <=2 AND id IN (";
105 whereClauseSpecial="is_published='1' AND to_article_type=3 AND id IN (";
106 for(int j=0; j < contentEntityList.size(); j++){
109 whereClauseSpecial += ",";
111 EntityContent currentContent = (EntityContent)contentEntityList.elementAt(j);
112 whereClause += currentContent.getId();
113 whereClauseSpecial += currentContent.getId();
115 setAdditional("topic",currentTopic);
120 whereClauseSpecial += ")";
123 if(contentEntityList==null && force==true){
124 //hihi, das ist eigentlich boese
125 whereClause="is_published='1' AND to_article_type>=0 AND id IN (0)";
128 fileDesc = currentTopic.getValue("filename");
130 // get the startarticle
131 EntityList entityList = contentModule.getContent(whereClauseSpecial,"date desc, webdb_create desc",0,1);
132 String currentMediaId = null;
133 SimpleHash imageHash = new SimpleHash();
134 EntityContent currentContent;
135 if(entityList != null && entityList.size()==1){
136 currentContent = (EntityContent)entityList.elementAt(0);
138 setAdditional("special",currentContent);
139 } catch (Exception e) {
140 theLog.printError("ProducerTopics: problem with start special media: "+currentContent.getId()+" "+e.toString()+" <font color=\"red\">skipping</font>");
141 logHTML(htmlout,"ProducerTopics: problem with start special media: "+currentContent.getId()+" "+e.toString());
145 //set the list of topics
146 setAdditional("topicslist",topicsEntityList);
148 handleIt(htmlout,user,force);
151 } catch (Exception e) {
152 theLog.printError("ProducerTopics: problem with start special media: "
153 +e.toString()+" <font color=\"red\">skipping</font>");
154 logHTML(htmlout,"ProducerTopics: problem with topic id: "
155 +currentTopic.getId()+ "<font color=\"red\">skipping</font>");
158 logHTMLFinish(htmlout, "Topics", pageCount, startTime, System.currentTimeMillis());
161 public static void main(String argv[]){
163 new ProducerOpenPosting().handle(new PrintWriter(System.out), null,false, false);
164 } catch(Exception e) {
165 System.err.println(e.toString());