4f9b9fd1509c9ebadc7423d531c63d3424198f21
[mir.git] / source / mircoders / producer / ProducerStartPage.java
1 package mircoders.producer;
2
3 import java.io.*;
4 import java.util.*;
5
6 import freemarker.template.*;
7
8 import mir.entity.*;
9 import mir.misc.*;
10 import mir.module.*;
11 import mir.storage.*;
12 import mircoders.module.*;
13 import mircoders.storage.*;
14 import mircoders.entity.*;
15
16
17 public class ProducerStartPage extends Producer {
18
19   private static String startPageTemplate = MirConfig.getProp("Producer.StartPage.Template");
20   private static int itemsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Items"));
21   private static int newsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Newswire"));
22
23   public static void main(String argv[]){
24     try {
25       // Why are we reloading the configuration here?
26       // is there something I'm missing?
27       // mh. <heckmann@hbe.ca>
28       // Configuration.initConfig(argv[0]);
29       new ProducerStartPage().handle(new PrintWriter(System.out), null);
30     } catch(Exception e) {
31       System.err.println(e.toString());
32     }
33   }
34
35   public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
36     throws StorageObjectException, ModuleException
37   {
38     printHTML(htmlout, "Producer.StartPage: started");
39     long                sessionConnectTime = 0;
40     long                startTime = (new java.util.Date()).getTime();
41     String              nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
42     EntityList          entityList;
43
44     // get the newswire
45     entityList = contentModule.getNewsWire(0,newsPerPage);
46     SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList);
47     // get the startarticle
48     entityList = contentModule.getStartArticle();
49     SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList);
50     // get the features
51     entityList = contentModule.getFeatures(0,itemsPerPage);
52     SimpleList featureList = HTMLTemplateProcessor.makeSimpleList(entityList);
53
54     SimpleHash startPageModel = new SimpleHash();
55
56     // breaking news
57     ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
58     startPageModel.put("breakingnews", breakingModule.getBreakingNews());
59
60     startPageModel.put("topics", topicsModule.getTopicsList());
61     startPageModel.put("newswire", newsWireList);
62     startPageModel.put("startspecial", startItemList);
63     startPageModel.put("features", featureList);
64
65     produce(startPageTemplate, producerDocRoot + "/index.shtml", startPageModel, htmlout);
66
67     // Finish
68     sessionConnectTime = new java.util.Date().getTime() - startTime;
69     logHTML(htmlout, "Producer.Startpage finished: " + sessionConnectTime + " ms.");
70     if(sync==true){
71       Helper.rsync();
72       logHTML(htmlout, "Producer.Startpage: rsync done");
73     }
74   }
75 }
76