Initial revision
[mir.git] / source / mircoders / producer / ProducerStartPage.java
diff --git a/source/mircoders/producer/ProducerStartPage.java b/source/mircoders/producer/ProducerStartPage.java
new file mode 100755 (executable)
index 0000000..20248da
--- /dev/null
@@ -0,0 +1,131 @@
+package mircoders.producer;
+
+import java.io.*;
+import java.lang.*;
+import java.util.*;
+
+import freemarker.template.*;
+
+import webdb.misc.*;
+import webdb.storage.*;
+import webdb.module.*;
+import webdb.entity.*;
+
+import mir.module.*;
+import mir.storage.*;
+import mir.entity.*;
+
+
+public class ProducerStartPage extends Producer {
+
+       private static String startPageTemplate = Configuration.getProperty("Producer.StartPage.Template");
+       private static int itemsPerPage = Integer.parseInt(Configuration.getProperty("Producer.StartPage.Items"));
+  private static int newsPerPage = Integer.parseInt(Configuration.getProperty("Producer.StartPage.Newswire"));
+
+       public static void main(String argv[]){
+               try {
+                       Configuration.initConfig(argv[0]);
+                       new ProducerStartPage().handle(new PrintWriter(System.out), null);
+               } catch(Exception e) {
+                       System.err.println(e.toString());
+               }
+       }
+
+       public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
+               throws StorageObjectException, ModuleException
+       {
+               printHTML(htmlout, "Producer.StartPage: started");
+
+               String extLinkName = Configuration.getProperty("Producer.ExtLinkName");
+               String intLinkName = Configuration.getProperty("Producer.IntLinkName");
+               String mailLinkName = Configuration.getProperty("Producer.MailLinkName");
+               String imageRoot = Configuration.getProperty("Producer.ImageRoot");
+
+               long                sessionConnectTime = 0;
+               long                startTime = (new java.util.Date()).getTime();
+               String              nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar());
+               String              whereClause;
+               String              orderBy;
+               FileWriter          outputFile;
+               String              htmlFileName;
+               EntityContent       currentContent;
+               EntityList          entityList;
+               SimpleHash          startPageModel;
+               SimpleList          contentList;
+               String              currentMediaId;
+               SimpleHash          imageHash = new SimpleHash();
+
+               // get the topiclist
+               entityList = topicsModule.getByWhereClause("","title",-1);
+               SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
+
+               // get the newswire
+               whereClause="is_published=true AND to_article_type >= 1";
+               entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,newsPerPage);
+               SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList);
+
+               // get the startarticle and the related images
+               whereClause="is_published=true AND to_article_type=4";
+               entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
+               //if no startspecial exists
+               if (entityList==null || entityList.size()==0){
+                       whereClause="is_published=true AND to_article_type=3";
+                       entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1);
+               }
+               SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList);
+               for (int i=0; i < entityList.size();i++) {
+                       currentContent = (EntityContent)entityList.elementAt(i);
+                       currentMediaId = currentContent.getValue("to_media");
+                       if (currentMediaId!=null && !currentMediaId.equals("")) {
+                               imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
+                       }
+               }
+
+               // get the breaking news
+               // only the first 5
+               ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
+               entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
+               SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
+
+               // get the articles
+               whereClause="is_published=true AND to_article_type=2";
+               orderBy="date desc, webdb_create desc";
+               entityList = contentModule.getContent(whereClause, orderBy, 0, itemsPerPage);
+               for (int i=0; i < entityList.size();i++) {
+                       currentContent = (EntityContent)entityList.elementAt(i);
+                       /**
+                       if (currentContent.get("is_html").equals("0")) {
+                               currentContent.put("content_data",StringUtil.createHTML((String)currentContent.get("content_data"),imageRoot,mailLinkName,extLinkName,intLinkName));
+                               currentContent.put("description",StringUtil.createHTML((String)currentContent.get("description"),imageRoot,mailLinkName,extLinkName,intLinkName));
+                       }
+                       */
+                       currentMediaId = currentContent.getValue("to_media");
+                       if (currentMediaId!=null && !currentMediaId.equals("")) {
+                               imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
+                       }
+               }
+               SimpleList itemList = HTMLTemplateProcessor.makeSimpleList(entityList);
+
+               // Zusaetzlich Informationen
+               startPageModel = new SimpleHash();
+               startPageModel.put("breaking", breakingList);
+               startPageModel.put("topics", topicList);
+               startPageModel.put("newswire", newsWireList);
+               startPageModel.put("start", startItemList);
+               startPageModel.put("items", itemList);
+               startPageModel.put("images", imageHash);
+
+               htmlFileName = producerDocRoot + "/index.shtml";
+
+               produce(startPageTemplate, htmlFileName, startPageModel, new LineFilterWriter(htmlout));
+
+               // Finish
+               sessionConnectTime = new java.util.Date().getTime() - startTime;
+               logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
+               if(sync==true){
+                       Helper.rsync();
+                       logHTML(htmlout, "Producer.Startseite: rsync done");
+               }
+       }
+}
+