import java.io.*;
import java.lang.*;
+import java.lang.reflect.*;
import java.util.*;
-
import freemarker.template.*;
-import com.icl.saxon.trax.Transformer;
-
import mir.misc.*;
+import mir.media.*;
import mir.storage.*;
import mir.module.*;
import mir.entity.*;
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")));
-
-
-
+ 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>
+ */
+ //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 {
+
+ String contentTemplate = MirConfig.getProp("Producer.Content.Template");
+ int contentBatchsize = Integer.parseInt(MirConfig.getProp("Producer.Content.Batchsize"));
+ 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 whereClause = " ";
+ String orderBy = " ";
+ String htmlFileName = null;
+ String currentMediaId;
+ EntityContent currentContent;
+ EntityList batchEntityList;
+ HashMap currentContentValues;
+ SimpleHash imageHash = new SimpleHash();
+ EntityUsers userEntity=null;
+ Entity mediaType;
+ Entity upMedia;
+ SimpleHash upMediaSimpleHash;
+ Class mediaHandlerClass;
+ Class mediaStorageClass;
+ String mediaStorageName;
+ String mediaHandlerName=null;
+ MirMedia mediaHandler=null;
+ Database mediaStorage=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();
+
+ //because of postgres 7.1.* not needed anymore
+ //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")));
+
+
+ //create http-links and email-links
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 {
-
+ } 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);
-
}
-
}
+ //create the freemarker-model
+ SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(currentContentValues);
+
+ // get the uploaded media
+ EntityList currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent);
+ if (currentMediaList!=null && currentMediaList.getCount()>=1) {
+ SimpleList mediaList = new SimpleList();
+ for (int n=0; n < currentMediaList.size();n++) {
+ upMedia = currentMediaList.elementAt(n);
+ upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
+ mediaType = ((EntityMedia)upMedia).getMediaType();
+ //in case it's a non-existant to_media_type entry..
+ if (mediaType != null) {
+ try {
+ mediaHandlerName = mediaType.getValue("classname");
+ mediaStorageName = mediaType.getValue("tablename");
+ mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
+ mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
+ mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
+ Method m = mediaStorageClass.getMethod("getInstance", null);
+ mediaStorage = (Database)m.invoke(null, null);
+ //we most likely need further info
+ upMedia = mediaStorage.selectById(upMedia.getId());
+ } catch (Exception e) {
+ theLog.printError("ProducerStartpage:problem in reflection: "+mediaHandlerName);
+ } //end catch
+ upMediaSimpleHash.put("url", mediaHandler.getURL(upMedia, mediaType));
+ upMediaSimpleHash.put("type",mediaType.getValue("classname"));
+ mediaList.add(upMediaSimpleHash);
+ } //end if media_type != null
+ } //end for
+ mergeData.put("to_media", mediaList);
+ } //end if currentMediaList != null
+
+ // get the comments for the article
+ // and html-ize them
+ SimpleList commentList = currentContent.getComments();
+ try{
+ if(commentList.isEmpty()==false){
+ while(commentList.hasNext()){
+ SimpleHash comment = (SimpleHash)commentList.next();
+ SimpleScalar commentText = (SimpleScalar)comment.get("description");
+ comment.put("description",new SimpleScalar(StringUtil.createHTML(commentText.getAsString(),imageRoot,mailLinkName,extLinkName,intLinkName)));
+ }
+ }
+ } catch(Exception e){}
+ mergeData.put("comments", commentList);
+ // get the topics of this article
+ mergeData.put("topics",HTMLTemplateProcessor.makeSimpleList(DatabaseContentToTopics.getInstance().getTopics(currentContent)));
- 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.");
-
-
+ //produce html
+ 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);
+ }//while
- }
+ if (batchEntityList.hasNextBatch()){
+ batchEntityList = contentModule.getContent(whereClause, orderBy, batchEntityList.getNextBatch(),contentBatchsize, userEntity);
+ } else {
+ batchEntityList=null;
+ }
+ }
+ // timing an message to browser
+ sessionConnectTime = new java.util.Date().getTime() - startTime;
+ logHTML(htmlout, "Producer.Content finished: " + sessionConnectTime + " ms.");
+ }
+}
-}
\ No newline at end of file