1 package mircoders.producer;
7 import freemarker.template.*;
14 import mircoders.module.*;
15 import mircoders.storage.*;
16 import mircoders.entity.*;
19 public class ProducerStartPage extends Producer {
21 private static String startPageTemplate = MirConfig.getProp("Producer.StartPage.Template");
22 private static int itemsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Items"));
23 private static int newsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Newswire"));
25 public static void main(String argv[]){
27 // Why are we reloading the configuration here?
28 // is there something I'm missing?
29 // mh. <heckmann@hbe.ca>
30 // Configuration.initConfig(argv[0]);
31 new ProducerStartPage().handle(new PrintWriter(System.out), null);
32 } catch(Exception e) {
33 System.err.println(e.toString());
37 public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
38 throws StorageObjectException, ModuleException
40 printHTML(htmlout, "Producer.StartPage: started");
42 String extLinkName = MirConfig.getProp("Producer.ExtLinkName");
43 String intLinkName = MirConfig.getProp("Producer.IntLinkName");
44 String mailLinkName = MirConfig.getProp("Producer.MailLinkName");
45 String imageRoot = MirConfig.getProp("Producer.ImageRoot");
47 long sessionConnectTime = 0;
48 long startTime = (new java.util.Date()).getTime();
49 String nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
52 FileWriter outputFile;
54 EntityContent currentContent;
55 EntityList entityList;
56 SimpleHash startPageModel;
57 SimpleList contentList;
58 String currentMediaId;
59 SimpleHash imageHash = new SimpleHash();
62 entityList = topicsModule.getByWhereClause("","title",-1);
63 SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
66 whereClause="is_published=true AND to_article_type >= 1";
67 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,newsPerPage);
68 SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList);
70 // get the startarticle and the related images
71 whereClause="is_published=true AND to_article_type=4";
72 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
73 //if no startspecial exists
74 if (entityList==null || entityList.size()==0){
75 whereClause="is_published=true AND to_article_type=3";
76 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
78 SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList);
79 for (int i=0; i < entityList.size();i++) {
80 currentContent = (EntityContent)entityList.elementAt(i);
81 currentMediaId = currentContent.getValue("to_media");
82 if (currentMediaId!=null && !currentMediaId.equals("")) {
83 imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
87 // get the breaking news
89 ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
90 entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
91 SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
94 whereClause="is_published=true AND to_article_type=2";
95 orderBy="date desc, webdb_create desc";
96 entityList = contentModule.getContent(whereClause, orderBy, 0, itemsPerPage);
97 for (int i=0; i < entityList.size();i++) {
98 currentContent = (EntityContent)entityList.elementAt(i);
100 if (currentContent.get("is_html").equals("0")) {
101 currentContent.put("content_data",StringUtil.createHTML((String)currentContent.get("content_data"),imageRoot,mailLinkName,extLinkName,intLinkName));
102 currentContent.put("description",StringUtil.createHTML((String)currentContent.get("description"),imageRoot,mailLinkName,extLinkName,intLinkName));
105 currentMediaId = currentContent.getValue("to_media");
106 if (currentMediaId!=null && !currentMediaId.equals("")) {
107 imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
110 SimpleList itemList = HTMLTemplateProcessor.makeSimpleList(entityList);
112 // Zusaetzlich Informationen
113 startPageModel = new SimpleHash();
114 startPageModel.put("breaking", breakingList);
115 startPageModel.put("topics", topicList);
116 startPageModel.put("newswire", newsWireList);
117 startPageModel.put("start", startItemList);
118 startPageModel.put("items", itemList);
119 startPageModel.put("images", imageHash);
121 htmlFileName = producerDocRoot + "/index.shtml";
123 produce(startPageTemplate, htmlFileName, startPageModel, htmlout);
126 sessionConnectTime = new java.util.Date().getTime() - startTime;
127 logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
130 logHTML(htmlout, "Producer.Startseite: rsync done");