first cut of merge of STABLE-pre1_0 into HEAD. I won't even guarantee that it
[mir.git] / source / mir / misc / HTMLTemplateProcessor.java
index c40c367..1abaae5 100755 (executable)
@@ -38,14 +38,24 @@ public final class HTMLTemplateProcessor {
   // init
 
   static {
-
+    /** @todo either in the above block or here :) //rk */
     templateDir = MirConfig.getPropWithHome("HTMLTemplateProcessor.Dir");
     templateCache = new FileTemplateCache(templateDir);
     templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND);
-    templateCache.startAutoUpdate();
+    // gone in freemarker 1.7.1
+    // templateCache.startAutoUpdate();
     theLog = Logfile.getInstance(MirConfig.getPropWithHome("HTMLTemplateProcessor.Logfile"));
     docRoot = MirConfig.getProp("RootUri");
-    actionRoot = docRoot + "/servlet/" + MirConfig.getProp("ServletName");
+    //the quick hack is back in effect as it was more broken than ever before
+    // -mh
+    // sorry: nadir back in town, i have to debug the mirbase.jar in the
+    // nadir evironment. from my point of coding, this needs an urgent
+    // fixxx.
+    // yeah, from my point too - tob.
+         //actionRoot = docRoot + "/servlet/" + MirConfig.getProp("ServletName");
+    //actionRoot = docRoot + "/servlet/NadirAktuell";
+
+    actionRoot = docRoot + "/servlet/Mir";
 
     openAction = MirConfig.getProp("Producer.OpenAction");
     productionHost = MirConfig.getProp("Producer.ProductionHost");
@@ -54,7 +64,6 @@ public final class HTMLTemplateProcessor {
     imageHost = MirConfig.getProp("Producer.Image.Host");
     producerDocRoot = MirConfig.getProp("Producer.DocRoot");
     producerStorageRoot = MirConfig.getProp("Producer.StorageRoot");
-
   }
 
   /**
@@ -189,6 +198,10 @@ public final class HTMLTemplateProcessor {
         session=res.encodeURL("");
       }
 
+      /** @todo why do we double those? should be cleaned up and
+       *  statically initialized, we do not need to assemble a config
+       *  hash everytime we give out a page, only exception is
+       *  date "now" // rk */
       // put standard configuration into tempalteRootmodel
       SimpleHash configHash = new SimpleHash();
       configHash.put("docroot", new SimpleScalar(producerDocRoot));
@@ -206,6 +219,8 @@ public final class HTMLTemplateProcessor {
       tmr.put("videoHost", new SimpleScalar(videoHost));
       tmr.put("audioHost", new SimpleScalar(audioHost));
       tmr.put("imageHost", new SimpleScalar(imageHost));
+      // this conform to updated freemarker syntax
+      tmr.put("compressWhitespace", new freemarker.template.utility.CompressWhitespace() );
 
       tmr.put("config", configHash);
       tmpl.process(tmr, out);
@@ -214,16 +229,19 @@ public final class HTMLTemplateProcessor {
 
 
   /**
-   *   Wandelt eine Entity-Liste in eine SimpleList von SimpleHashes um.
+   *   Converts Entity-List to SimpleList of SimpleHashes.
    *   @param aList ist eine Liste von Entity
    *   @return eine freemarker.template.SimpleList von SimpleHashes.
+   *
+   *    @deprecated EntityLists comply with TemplateListModel now.
    */
   public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException
   {
-    SimpleList      simpleList = new SimpleList();
+    theLog.printWarning("## using deprecated makeSimpleList(entityList) - a waste of resources");
+    SimpleList  simpleList = new SimpleList();
     if (aList != null) {
-      for(int i=0;i<aList.size();i++){
-        simpleList.add(makeSimpleHash(aList.elementAt(i)));
+      for(int i=0;i<aList.size();i++) {
+        simpleList.add(aList.elementAt(i));
       }
     }
     return simpleList;
@@ -244,7 +262,7 @@ public final class HTMLTemplateProcessor {
     if (aList != null) {
       for (int i=0;i<aList.size();i++) {
          currentEntity = (Entity)aList.elementAt(i);
-         simpleHash.put(currentEntity.getId(), makeSimpleHash(currentEntity));
+         simpleHash.put(currentEntity.getId(), currentEntity);
       }
     }
     return simpleHash;
@@ -255,16 +273,19 @@ public final class HTMLTemplateProcessor {
    *  @param entity ist die Entity
    *  @return SimpleHash mit den entsprechenden freemarker Daten
    *
+   *  @deprecated This method is deprecated and will be deleted in the next
+   *  release. Entity interfaces freemarker.template.TemplateHashModel now
+   *  and can be used in the same way as SimpleHash. It is not necessary any
+   *  more to make a SimpleHash from an Entity
    */
-    public static SimpleHash makeSimpleHash(Entity entity) {
-      if (entity != null) {
-        return makeSimpleHash(entity.getValues());
-      }
-      else {
-        //theLog.printWarning("Entity ist <null>");
-        return null;
-      }
+  public static SimpleHash makeSimpleHash(Entity entity) {
+    if (entity != null) {
+      theLog.printWarning("## using deprecated makeSimpleHash(entity) - a waste of resources");
+      return makeSimpleHash(entity.getValues());
     }
+    else
+      return null;
+  }
 
   /**
    *  Konvertiert ein Hashtable mit den keys und values als String
@@ -290,38 +311,38 @@ public final class HTMLTemplateProcessor {
 
 
   /**
-   * Wandelt EntityListe in SimpleHash um, und versieht die Liste mit StandardInfos,
-   * die aus EntityList kommen.
+   * Converts EntityList in SimpleHash and adds additional information
+   * to the returned SimpleHash
    *
    * @param entList
    * @return SimpleHash returns SimpleHash with the converted EntityList plus
    *        additional Data about the list.
    * @exception StorageObjectException
    */
-    public static SimpleHash makeSimpleHashWithEntitylistInfos(EntityList entList) throws StorageObjectException {
-      SimpleHash modelRoot = new SimpleHash();
-      if (entList!=null) {
-                modelRoot.put("contentlist", makeSimpleList(entList));
-                modelRoot.put("count", new SimpleScalar((new Integer(entList.getCount())).toString()));
-          if (entList.getWhere()!=null) {
-            modelRoot.put("where", new SimpleScalar(entList.getWhere()));
-            modelRoot.put("where_encoded", new SimpleScalar(URLEncoder.encode(entList.getWhere())));
-          }
-
-          if(entList.getOrder()!=null) {
-            modelRoot.put("order", new SimpleScalar(entList.getOrder()));
-            modelRoot.put("order_encoded", new SimpleScalar(URLEncoder.encode(entList.getOrder())));
-          }
-          modelRoot.put("from", new SimpleScalar((new Integer(entList.getFrom())).toString()));
-          modelRoot.put("to", new SimpleScalar((new Integer(entList.getTo())).toString()));
-
-          if (entList.hasNextBatch())
-            modelRoot.put("next", new SimpleScalar((new Integer(entList.getNextBatch())).toString()));
-          if (entList.hasPrevBatch())
-            modelRoot.put("prev", new SimpleScalar((new Integer(entList.getPrevBatch())).toString()));
+
+  public static SimpleHash makeSimpleHashWithEntitylistInfos(EntityList entList) throws StorageObjectException {
+    SimpleHash modelRoot = new SimpleHash();
+    if (entList!=null) {
+      modelRoot.put("contentlist", entList);
+      modelRoot.put("count", new SimpleScalar((new Integer(entList.getCount())).toString()));
+      if (entList.getWhere()!=null) {
+        modelRoot.put("where", new SimpleScalar(entList.getWhere()));
+        modelRoot.put("where_encoded", new SimpleScalar(URLEncoder.encode(entList.getWhere())));
+      }
+      if(entList.getOrder()!=null) {
+        modelRoot.put("order", new SimpleScalar(entList.getOrder()));
+        modelRoot.put("order_encoded", new SimpleScalar(URLEncoder.encode(entList.getOrder())));
       }
-      return modelRoot;
+      modelRoot.put("from", new SimpleScalar((new Integer(entList.getFrom())).toString()));
+      modelRoot.put("to", new SimpleScalar((new Integer(entList.getTo())).toString()));
+
+      if (entList.hasNextBatch())
+        modelRoot.put("next", new SimpleScalar((new Integer(entList.getNextBatch())).toString()));
+      if (entList.hasPrevBatch())
+        modelRoot.put("prev", new SimpleScalar((new Integer(entList.getPrevBatch())).toString()));
     }
+    return modelRoot;
+  }
 
   /**
    * Private methods to get template from a templateFilename
@@ -331,11 +352,17 @@ public final class HTMLTemplateProcessor {
    */
   private static Template getTemplateFor(String templateFilename) throws HTMLParseException
   {
-    if (templateFilename!=null) return templateCache.getTemplate(templateFilename);
-    else {
+    Template returnTemplate = null;
+    if (templateFilename!=null)
+      returnTemplate = (Template)templateCache.getItem(templateFilename,"template");
+
+
+    if (returnTemplate==null) {
       theLog.printError("CACHE (ERR): Unknown template: " + templateFilename);
       throw new HTMLParseException("Templatefile: "+ templateFilename + " not found.");
     }
+
+    return returnTemplate;
   }
 
   public static void stopAutoUpdate(){