package mircoders.producer;
import java.io.*;
-import java.lang.*;
import java.util.*;
import freemarker.template.*;
+import mir.entity.*;
import mir.misc.*;
-import mir.storage.*;
import mir.module.*;
-import mir.entity.*;
-
+import mir.storage.*;
import mircoders.module.*;
import mircoders.storage.*;
import mircoders.entity.*;
public class ProducerStartPage extends Producer {
private static String startPageTemplate = MirConfig.getProp("Producer.StartPage.Template");
+ private static String featuresRSSTemplate = MirConfig.getProp("Producer.FeaturesRSS.Template");
private static int itemsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Items"));
private static int newsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Newswire"));
public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync)
throws StorageObjectException, ModuleException
{
+ long startTime = System.currentTimeMillis();
printHTML(htmlout, "Producer.StartPage: started");
+ SimpleHash startPageModel = new SimpleHash();
- String extLinkName = MirConfig.getProp("Producer.ExtLinkName");
- String intLinkName = MirConfig.getProp("Producer.IntLinkName");
- String mailLinkName = MirConfig.getProp("Producer.MailLinkName");
- String imageRoot = MirConfig.getProp("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;
- EntityList imageEntityList;
- SimpleList mediaList;
- SimpleHash contentHash;
-
- // 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);
- //fetching/setting the images
- imageEntityList = DatabaseContentToMedia.getInstance().getImages(currentContent);
- if (imageEntityList!=null && imageEntityList.getCount()>=1) {
- try{
- mediaList = HTMLTemplateProcessor.makeSimpleList(imageEntityList);
- contentHash = (SimpleHash)startItemList.get(i);
- contentHash.put("to_media", mediaList);
- } catch (Exception e){}
- }
- }
-
- // get the breaking news
- // only the first 5
- // todo: the number of breaking_news items have to be configurable
+ // breaking news
ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
- entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
- SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
+ startPageModel.put("breakingnews", breakingModule.getBreakingNews());
+ startPageModel.put("topics", topicsModule.getTopicsList());
+ startPageModel.put("newswire", contentModule.getNewsWire(0,newsPerPage));
+ startPageModel.put("startspecial", contentModule.getStartArticle());
+ startPageModel.put("features", contentModule.getFeatures(0,itemsPerPage));
+ startPageModel.put("dc_now", new SimpleScalar(StringUtil.date2w3DateTime(new GregorianCalendar())));
- // 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);
- SimpleList featureList = HTMLTemplateProcessor.makeSimpleList(entityList);
- for (int i=0; i < entityList.size();i++) {
- currentContent = (EntityContent)entityList.elementAt(i);
- //fetching/setting the images
- imageEntityList = DatabaseContentToMedia.getInstance().getImages(currentContent);
- if (imageEntityList!=null && imageEntityList.getCount()>=1) {
- try{
- mediaList = HTMLTemplateProcessor.makeSimpleList(imageEntityList);
- contentHash = (SimpleHash)featureList.get(i);
- contentHash.put("to_media", mediaList);
- } catch (Exception e){}
- }
- }
-
- // Zusaetzlich Informationen
- startPageModel = new SimpleHash();
- startPageModel.put("breakingnews", breakingList);
- startPageModel.put("topics", topicList);
- startPageModel.put("newswire", newsWireList);
- startPageModel.put("startspecial", startItemList);
- startPageModel.put("features", featureList);
- htmlFileName = producerDocRoot + "/index.shtml";
+ /** @todo switch to compressed */
+ produce(startPageTemplate, producerDocRoot + "/index.shtml", startPageModel, htmlout);
- produce(startPageTemplate, htmlFileName, startPageModel, htmlout);
+ /** should be mandatory in light of new www.indy newswire */
+ produce(featuresRSSTemplate, producerDocRoot + "/features.1-0.rdf", startPageModel, htmlout);
+
+ // finished
+ logHTMLFinish(htmlout, "Startpage", 1, startTime, System.currentTimeMillis());
- // Finish
- sessionConnectTime = new java.util.Date().getTime() - startTime;
- logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms.");
if(sync==true){
+ logHTML(htmlout, "Producer.Startpage: rsyncing...");
Helper.rsync();
- logHTML(htmlout, "Producer.Startseite: rsync done");
+ printHTML(htmlout, "Producer.Startpage: rsync done");
}
}
}