20248da46baa9bc0ab87fca7d052cc4882db3b2e
[mir.git] / source / mircoders / producer / ProducerStartPage.java
1 package mircoders.producer;
2
3 import java.io.*;
4 import java.lang.*;
5 import java.util.*;
6
7 import freemarker.template.*;
8
9 import webdb.misc.*;
10 import webdb.storage.*;
11 import webdb.module.*;
12 import webdb.entity.*;
13
14 import mir.module.*;
15 import mir.storage.*;
16 import mir.entity.*;
17
18
19 public class ProducerStartPage extends Producer {
20
21         private static String startPageTemplate = Configuration.getProperty("Producer.StartPage.Template");
22         private static int itemsPerPage = Integer.parseInt(Configuration.getProperty("Producer.StartPage.Items"));
23   private static int newsPerPage = Integer.parseInt(Configuration.getProperty("Producer.StartPage.Newswire"));
24
25         public static void main(String argv[]){
26                 try {
27                         Configuration.initConfig(argv[0]);
28                         new ProducerStartPage().handle(new PrintWriter(System.out), null);
29                 } catch(Exception e) {
30                         System.err.println(e.toString());
31                 }
32         }
33
34         public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
35                 throws StorageObjectException, ModuleException
36         {
37                 printHTML(htmlout, "Producer.StartPage: started");
38
39                 String extLinkName = Configuration.getProperty("Producer.ExtLinkName");
40                 String intLinkName = Configuration.getProperty("Producer.IntLinkName");
41                 String mailLinkName = Configuration.getProperty("Producer.MailLinkName");
42                 String imageRoot = Configuration.getProperty("Producer.ImageRoot");
43
44                 long                sessionConnectTime = 0;
45                 long                startTime = (new java.util.Date()).getTime();
46                 String              nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
47                 String              whereClause;
48                 String              orderBy;
49                 FileWriter          outputFile;
50                 String              htmlFileName;
51                 EntityContent       currentContent;
52                 EntityList          entityList;
53                 SimpleHash          startPageModel;
54                 SimpleList          contentList;
55                 String              currentMediaId;
56                 SimpleHash          imageHash = new SimpleHash();
57
58                 // get the topiclist
59                 entityList = topicsModule.getByWhereClause("","title",-1);
60                 SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
61
62                 // get the newswire
63                 whereClause="is_published=true AND to_article_type >= 1";
64                 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,newsPerPage);
65                 SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList);
66
67                 // get the startarticle and the related images
68                 whereClause="is_published=true AND to_article_type=4";
69                 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
70                 //if no startspecial exists
71                 if (entityList==null || entityList.size()==0){
72                         whereClause="is_published=true AND to_article_type=3";
73                         entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
74                 }
75                 SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList);
76                 for (int i=0; i < entityList.size();i++) {
77                         currentContent = (EntityContent)entityList.elementAt(i);
78                         currentMediaId = currentContent.getValue("to_media");
79                         if (currentMediaId!=null && !currentMediaId.equals("")) {
80                                 imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
81                         }
82                 }
83
84                 // get the breaking news
85                 // only the first 5
86                 ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
87                 entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
88                 SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
89
90                 // get the articles
91                 whereClause="is_published=true AND to_article_type=2";
92                 orderBy="date desc, webdb_create desc";
93                 entityList = contentModule.getContent(whereClause, orderBy, 0, itemsPerPage);
94                 for (int i=0; i < entityList.size();i++) {
95                         currentContent = (EntityContent)entityList.elementAt(i);
96                         /**
97                         if (currentContent.get("is_html").equals("0")) {
98                                 currentContent.put("content_data",StringUtil.createHTML((String)currentContent.get("content_data"),imageRoot,mailLinkName,extLinkName,intLinkName));
99                                 currentContent.put("description",StringUtil.createHTML((String)currentContent.get("description"),imageRoot,mailLinkName,extLinkName,intLinkName));
100                         }
101                         */
102                         currentMediaId = currentContent.getValue("to_media");
103                         if (currentMediaId!=null && !currentMediaId.equals("")) {
104                                 imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
105                         }
106                 }
107                 SimpleList itemList = HTMLTemplateProcessor.makeSimpleList(entityList);
108
109                 // Zusaetzlich Informationen
110                 startPageModel = new SimpleHash();
111                 startPageModel.put("breaking", breakingList);
112                 startPageModel.put("topics", topicList);
113                 startPageModel.put("newswire", newsWireList);
114                 startPageModel.put("start", startItemList);
115                 startPageModel.put("items", itemList);
116                 startPageModel.put("images", imageHash);
117
118                 htmlFileName = producerDocRoot + "/index.shtml";
119
120                 produce(startPageTemplate, htmlFileName, startPageModel, new LineFilterWriter(htmlout));
121
122                 // Finish
123                 sessionConnectTime = new java.util.Date().getTime() - startTime;
124                 logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
125                 if(sync==true){
126                         Helper.rsync();
127                         logHTML(htmlout, "Producer.Startseite: rsync done");
128                 }
129         }
130 }
131