import java.lang.*;
import java.util.*;
-
import freemarker.template.*;
-import com.icl.saxon.trax.Transformer;
-
import mir.misc.*;
import mir.storage.*;
import mir.module.*;
public class ProducerContent extends Producer {
-
-
- public static void main(String argv[]){
-
- Configuration.initConfig("config");
-
- System.out.println(Configuration.getProperty("Producer.DocRoot"));
-
- try {
-
- new ProducerContent().handle(new PrintWriter(System.out), null, false,false);
-
- } catch(Exception e) { System.err.println(e.toString()); }
-
- }
-
-
-
- public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
-
- throws StorageObjectException, ModuleException {
-
- handle(htmlout,user,force,sync,null);
-
- }
-
-
-
-
-
- public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)
-
- throws StorageObjectException, ModuleException
-
- {
-
-
-
- String contentTemplate = Configuration.getProperty("Producer.Content.Template");
-
- int contentBatchsize = Integer.parseInt(Configuration.getProperty("Producer.Content.Batchsize"));
-
- 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 whereClause = " ";
- String orderBy = " ";
- String htmlFileName = null;
- String currentMediaId;
- EntityContent currentContent;
- EntityList batchEntityList;
-
- HashMap currentContentValues;
-
- SimpleHash imageHash = new SimpleHash();
-
- EntityGruppen userEntity=null;
-
-
-
- // production of the content-pages
-
- orderBy="date desc, webdb_lastchange desc";
-
- if(force==true){
-
- whereClause="is_published='1'";
-
-
-
- // if true: produces a single content item
-
- if(id !=null){
-
- whereClause += " AND id="+id;
-
- }
-
- batchEntityList = contentModule.getContent(whereClause, orderBy, 0, contentBatchsize, userEntity);
-
- } else {
-
- whereClause="is_produced='0' AND is_published='1'";
-
-
-
- //if true produces a single contentitem
-
- if(id !=null){
-
- whereClause += " AND id="+id;
-
- }
-
- batchEntityList = contentModule.getContent(whereClause, orderBy, 0, contentBatchsize, userEntity);
-
- }
-
-
-
- while (batchEntityList != null) {
-
- for(int i=0;i<batchEntityList.size();i++) {
-
- currentContent = (EntityContent)batchEntityList.elementAt(i);
-
- currentContentValues = currentContent.getValues();
-
- //currentContentValues.put("content_data",currentContent.getContentData());
-
-
-
-
-
- String date = (String)currentContentValues.get("date");
-
- String year = date.substring(0,4);
-
- String month = date.substring(4,6);
-
-
-
- htmlFileName = producerDocRoot
-
- + "/" + year + "/" + month + "/" + currentContentValues.get("id") + ".shtml";
-
-
-
- currentContentValues.put("content_data",StringUtil.deleteForbiddenTags((String)currentContentValues.get("content_data")));
-
- currentContentValues.put("description",StringUtil.deleteForbiddenTags((String)currentContentValues.get("description")));
-
-
-
- if (currentContentValues.get("is_html").equals("0")) {
-
- String temp = (String)currentContentValues.get("content_data");
-
- theLog.printDebugInfo("länge:"+temp.length());
-
- if(temp!=null && temp.length()>0){
-
- temp = StringUtil.createHTML(temp,imageRoot,mailLinkName,extLinkName,intLinkName);
-
- temp = StringUtil.decodeHTMLinTags(temp);
-
- currentContentValues.put("content_data",temp);
-
- }
-
- temp = (String)currentContentValues.get("description");
-
- if(temp!=null && temp.length()>0){
-
- temp = StringUtil.createHTML(temp,imageRoot,mailLinkName,extLinkName,intLinkName);
-
- temp = StringUtil.decodeHTMLinTags(temp);
-
- currentContentValues.put("description",temp);
-
- }
-
- } else {
-
- String temp = (String)currentContentValues.get("content_data");
-
- if(temp!=null && temp.length()>0){
-
- temp = StringUtil.decodeHTMLinTags(temp);
-
- currentContentValues.put("content_data",temp);
-
- }
-
- temp = (String)currentContentValues.get("description");
-
- if(temp!=null && temp.length()>0){
-
- temp = StringUtil.decodeHTMLinTags(temp);
-
- currentContentValues.put("description",temp);
-
- }
+ private String contentTemplate = MirConfig.getProp("Producer.Content.Template");
+
+ public static void main(String argv[]){
+ /**
+ * Why are we reloading the config here?
+ * Can someone please explain this?
+ * Hope I didn't break anything
+ * -mh. <heckmann@hbe.ca>
+ *
+ * This is the entry point for standalone production. The code
+ * is then running in a new virtual machine, e.g. when called
+ * from cron-script. In that case the config has to be initliased.
+ * Don't know if is ok that way //rk
+ *
+ */
+ //Configuration.initConfig("config");
+ System.out.println(MirConfig.getProp("Producer.DocRoot"));
+
+ try {
+ new ProducerContent().handle(new PrintWriter(System.out), null,
+ false,false);
+ } catch(Exception e) {
+ System.err.println(e.toString());
+ }
+ }
+
+
+
+ public void handle(PrintWriter htmlout, EntityUsers user, boolean force,
+ boolean sync)
+ throws StorageObjectException, ModuleException {
+
+ handle(htmlout,user,force,sync,null);
+ }
+
+ public void handle(PrintWriter htmlout, EntityUsers user, boolean force,
+ boolean sync, String id) throws StorageObjectException, ModuleException
+ {
+
+ long startTime = System.currentTimeMillis();
+ int pageCount=0;
+
+ String whereClause = " ";
+ String orderBy = " ";
+ String htmlFileName = null;
+ EntityContent currentContent;
+ EntityList batchEntityList;
+ EntityUsers userEntity=null;
+
+ // production of the content-pages
+
+ /** @todo this should be moved to ModuleContent */
+ orderBy="date desc, webdb_lastchange desc";
+ if(force==true){
+ whereClause="is_published='1'";
+ // if true: produces a single content item
+ if(id !=null){
+ whereClause += " AND id="+id;
+ }
+ batchEntityList = contentModule.getContent(whereClause, orderBy, 0,
+ -1, userEntity);
+ } else {
+ whereClause="is_produced='0' AND is_published='1'";
+ //if true produces a single contentitem
+ if(id !=null){
+ whereClause += " AND id="+id;
+ }
+ batchEntityList = contentModule.getContent(whereClause, orderBy, 0,
+ -1, userEntity);
+ }
+
+ if (batchEntityList!=null) {
+ for(int i=0;i<batchEntityList.size();i++) {
+ currentContent = (EntityContent)batchEntityList.elementAt(i);
+
+ try {
+
+ SimpleHash mergeData=new SimpleHash();
+ mergeData.put("content", currentContent);
+ String date = currentContent.getValue("date");
+ String year = date.substring(0,4);
+ String month = date.substring(4,6);
+ htmlFileName = producerDocRoot + "/" + year + "/" + month + "/" +
+ currentContent.getValue("id") + ".shtml";
+
+ //produce html
+ boolean retVal = produce(contentTemplate, htmlFileName, mergeData, htmlout);
+ if ( retVal ) currentContent.setProduced(true);
}
+ catch(Exception e)
+ {
+ String errorText = "Producer.Content ERROR while producing content ID:"
+ + currentContent.getId()+", skipping it :: "+e.toString();
+ logHTML(htmlout, errorText);
+ theLog.printError(errorText);
+ }
+ pageCount++;
+ }//for
+ }
+ // timing and message to browser
+ long overall = System.currentTimeMillis() - startTime;
+ long pagesPerMinute=0; float perMinute = overall/60000;
+ if (perMinute >0) pagesPerMinute = (long) (pageCount / perMinute);
+ logHTML(htmlout, "Producer.Content finished producing: " +
+ overall + " ms for "+ pageCount+" Pages = " +pagesPerMinute + " pages/min");
+ logHTML(htmlout, "Back to <a href=\""+actionRoot+"\">Admin-Startage</a>");
+ /** @todo why no syncing here? */
- SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(currentContentValues);
-
-
-
- // get the images
-
- currentMediaId = currentContent.getValue("to_media");
-
- if (currentMediaId!=null && !currentMediaId.equals("")) {
-
- imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
-
- }
-
- mergeData.put("images", imageHash);
-
-
-
- // get the comments for the article
-
- mergeData.put("comments", currentContent.getComments());
-
-
-
- // get the topics of this article
- mergeData.put("topics",HTMLTemplateProcessor.makeSimpleList(DatabaseContentToTopics.getInstance().getTopics(currentContent)));
-
- boolean retVal = produce(contentTemplate, htmlFileName, mergeData, htmlout);
- sessionConnectTime = new java.util.Date().getTime() - startTime;
- if (retVal == true && !"1".equals(currentContent.getValue("is_produced")))
- currentContent.setProduced(true);
- }
-
- if (batchEntityList.hasNextBatch()){
-
- batchEntityList = contentModule.getContent(whereClause, orderBy, batchEntityList.getNextBatch(),contentBatchsize, userEntity);
-
- //theLog.printDebugInfo("producing next batch");
-
- } else {
-
- batchEntityList=null;
-
- }
-
- }
-
- // Finish
-
- sessionConnectTime = new java.util.Date().getTime() - startTime;
-
- logHTML(htmlout, "Producer.Content finished: " + sessionConnectTime + " ms.");
-
-
-
- }
-
+ }
+}
-}
\ No newline at end of file