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 EntityList imageEntityList;
61 SimpleHash contentHash;
64 entityList = topicsModule.getByWhereClause("","title",-1);
65 SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
68 whereClause="is_published=true AND to_article_type >= 1";
69 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,newsPerPage);
70 SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList);
72 // get the startarticle and the related images
73 whereClause="is_published=true AND to_article_type=4";
74 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
75 //if no startspecial exists
76 if (entityList==null || entityList.size()==0){
77 whereClause="is_published=true AND to_article_type=3";
78 entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
80 SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList);
81 for (int i=0; i < entityList.size();i++) {
82 currentContent = (EntityContent)entityList.elementAt(i);
83 //fetching/setting the images
84 imageEntityList = DatabaseContentToMedia.getInstance().getImages(currentContent);
85 if (imageEntityList!=null && imageEntityList.getCount()>=1) {
87 mediaList = HTMLTemplateProcessor.makeSimpleList(imageEntityList);
88 contentHash = (SimpleHash)startItemList.get(i);
89 contentHash.put("to_media", mediaList);
90 } catch (Exception e){}
94 // get the breaking news
96 // todo: the number of breaking_news items have to be configurable
97 ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
98 entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
99 SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
102 whereClause="is_published=true AND to_article_type=2";
103 orderBy="date desc, webdb_create desc";
104 entityList = contentModule.getContent(whereClause, orderBy, 0, itemsPerPage);
105 SimpleList featureList = HTMLTemplateProcessor.makeSimpleList(entityList);
106 for (int i=0; i < entityList.size();i++) {
107 currentContent = (EntityContent)entityList.elementAt(i);
108 //fetching/setting the images
109 imageEntityList = DatabaseContentToMedia.getInstance().getImages(currentContent);
110 if (imageEntityList!=null && imageEntityList.getCount()>=1) {
112 mediaList = HTMLTemplateProcessor.makeSimpleList(imageEntityList);
113 contentHash = (SimpleHash)featureList.get(i);
114 contentHash.put("to_media", mediaList);
115 } catch (Exception e){}
119 // Zusaetzlich Informationen
120 startPageModel = new SimpleHash();
121 startPageModel.put("breakingnews", breakingList);
122 startPageModel.put("topics", topicList);
123 startPageModel.put("newswire", newsWireList);
124 startPageModel.put("startspecial", startItemList);
125 startPageModel.put("features", featureList);
127 htmlFileName = producerDocRoot + "/index.shtml";
129 produce(startPageTemplate, htmlFileName, startPageModel, htmlout);
132 sessionConnectTime = new java.util.Date().getTime() - startTime;
133 logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
136 logHTML(htmlout, "Producer.Startseite: rsync done");