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 = 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"));
25 public static void main(String argv[]){
27 Configuration.initConfig(argv[0]);
28 new ProducerStartPage().handle(new PrintWriter(System.out), null);
29 } catch(Exception e) {
30 System.err.println(e.toString());
34 public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
35 throws StorageObjectException, ModuleException
37 printHTML(htmlout, "Producer.StartPage: started");
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");
44 long sessionConnectTime = 0;
45 long startTime = (new java.util.Date()).getTime();
46 String nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
49 FileWriter outputFile;
51 EntityContent currentContent;
52 EntityList entityList;
53 SimpleHash startPageModel;
54 SimpleList contentList;
55 String currentMediaId;
56 SimpleHash imageHash = new SimpleHash();
59 entityList = topicsModule.getByWhereClause("","title",-1);
60 SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
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);
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);
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)));
84 // get the breaking news
86 ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
87 entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
88 SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
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);
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));
102 currentMediaId = currentContent.getValue("to_media");
103 if (currentMediaId!=null && !currentMediaId.equals("")) {
104 imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
107 SimpleList itemList = HTMLTemplateProcessor.makeSimpleList(entityList);
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);
118 htmlFileName = producerDocRoot + "/index.shtml";
120 produce(startPageTemplate, htmlFileName, startPageModel, new LineFilterWriter(htmlout));
123 sessionConnectTime = new java.util.Date().getTime() - startTime;
124 logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
127 logHTML(htmlout, "Producer.Startseite: rsync done");