mutlifile-upload in openmir
[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 mir.misc.*;
10 import mir.storage.*;
11 import mir.module.*;
12 import mir.entity.*;
13
14 import mircoders.module.*;
15 import mircoders.storage.*;
16 import mircoders.entity.*;
17
18
19 public class ProducerStartPage extends Producer {
20
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"));
24
25   public static void main(String argv[]){
26     try {
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());
34     }
35   }
36
37   public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
38     throws StorageObjectException, ModuleException
39   {
40     printHTML(htmlout, "Producer.StartPage: started");
41
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");
46
47     long                sessionConnectTime = 0;
48     long                startTime = (new java.util.Date()).getTime();
49     String              nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
50     String              whereClause;
51     String              orderBy;
52     FileWriter          outputFile;
53     String              htmlFileName;
54     EntityContent       currentContent;
55     EntityList          entityList;
56     SimpleHash          startPageModel;
57     SimpleList          contentList;
58     String              currentMediaId;
59     SimpleHash          imageHash = new SimpleHash();
60
61     // get the topiclist
62     entityList = topicsModule.getByWhereClause("","title",-1);
63     SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
64
65     // get the newswire
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);
69
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);
77     }
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)));
84       }
85     }
86
87     // get the breaking news
88     // only the first 5
89     ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
90     entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
91     SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
92
93     // get the articles
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);
99       /**
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));
103       }
104       */
105       currentMediaId = currentContent.getValue("to_media");
106       if (currentMediaId!=null && !currentMediaId.equals("")) {
107         imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
108       }
109     }
110     SimpleList itemList = HTMLTemplateProcessor.makeSimpleList(entityList);
111
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);
120
121     htmlFileName = producerDocRoot + "/index.shtml";
122     
123     produce(startPageTemplate, htmlFileName, startPageModel, htmlout);
124
125     // Finish
126     sessionConnectTime = new java.util.Date().getTime() - startTime;
127     logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
128     if(sync==true){
129       Helper.rsync();
130       logHTML(htmlout, "Producer.Startseite: rsync done");
131     }
132   }
133 }
134