*/
public final class HTMLTemplateProcessor {
- public static String templateDir;
- private static FileTemplateCache templateCache;
- private static Logfile theLog;
- private static String docRoot;
- private static String actionRoot;
- private static String productionHost;
- private static String audioHost;
- private static String videoHost;
- private static String imageHost;
- private static String openAction;
- protected static String producerDocRoot = MirConfig.getProp("Producer.DocRoot");
- protected static String producerStorageRoot = MirConfig.getProp("Producer.StorageRoot");
-
-
- //
- // Initialisierung
-
- static {
- templateDir = MirConfig.getProp("Home") + MirConfig.getProp("HTMLTemplateProcessor.Dir");
- templateCache = new FileTemplateCache(templateDir);
- templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND);
- templateCache.startAutoUpdate();
- theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("HTMLTemplateProcessor.Logfile"));
- docRoot = MirConfig.getProp("RootUri");
- actionRoot = docRoot + "/servlet/" + MirConfig.getProp("ServletName");
- openAction = MirConfig.getProp("Producer.OpenAction");
- productionHost = MirConfig.getProp("Producer.ProductionHost");
- videoHost = MirConfig.getProp("Producer.VideoHost");
- audioHost = MirConfig.getProp("Producer.AudioHost");
- imageHost = MirConfig.getProp("Producer.Image.Host");
- producerDocRoot = MirConfig.getProp("Producer.DocRoot");
- producerStorageRoot = MirConfig.getProp("Producer.StorageRoot");
-
-
- }
+ public static String templateDir;
+ private static FileTemplateCache templateCache;
+ private static Logfile theLog;
+ private static String docRoot;
+ private static String actionRoot;
+ private static String productionHost;
+ private static String audioHost;
+ private static String videoHost;
+ private static String imageHost;
+ private static String openAction;
+ protected static String producerDocRoot = MirConfig.getProp("Producer.DocRoot");
+ protected static String producerStorageRoot = MirConfig.getProp("Producer.StorageRoot");
+
+
+ //
+ // init
+
+ static {
+
+ templateDir = MirConfig.getPropWithHome("HTMLTemplateProcessor.Dir");
+ templateCache = new FileTemplateCache(templateDir);
+ templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND);
+ // gone in freemarker 1.7.1
+ // templateCache.startAutoUpdate();
+ theLog = Logfile.getInstance(MirConfig.getPropWithHome("HTMLTemplateProcessor.Logfile"));
+ docRoot = MirConfig.getProp("RootUri");
+ //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");
+ videoHost = MirConfig.getProp("Producer.VideoHost");
+ audioHost = MirConfig.getProp("Producer.AudioHost");
+ imageHost = MirConfig.getProp("Producer.Image.Host");
+ producerDocRoot = MirConfig.getProp("Producer.DocRoot");
+ producerStorageRoot = MirConfig.getProp("Producer.StorageRoot");
+ }
/**
- * Privater Konstruktor, um versehentliche Instantiierung zu verhindern
+ * empty private constructor, to avoid instantiation
*/
- private HTMLTemplateProcessor () {
- }
+ private HTMLTemplateProcessor () { }
- //
- // process-Methoden zum Mischen verschiedener Datenstrukturen mit HTML-Templates
+ // process-methods to merge different datastructures
+ // with freemarker templates
/**
public static void process(String templateFilename, Entity anEntity, PrintWriter out)
throws HTMLParseException {
- if (anEntity == null) throw new HTMLParseException("Entity leer!");
+ if (anEntity == null) throw new HTMLParseException("entity is empty!");
else process(templateFilename, anEntity, out);
}
- /**
+ /**
* Wandelt Liste mit Entities <code>entList</code> in freemarker-Struktur um, mischt die Daten mit
* Template <code>templateFilename</code> und gibt das Ergebnis an den PrintWriter
* <code>out</code>
* @param out
* @exception HTMLParseException
*/
- public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out)
+ public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out)
throws HTMLParseException {
- process(res, templateFilename, entList, (String)null, (TemplateModelRoot)null, out);
- }
+ process(res, templateFilename, entList, (String)null, (TemplateModelRoot)null, out);
+ }
/**
* Wandelt Entitylist in freemarker-Struktur um, fügt <code>additionalModel</code>
SimpleHash modelRoot = new SimpleHash();
if (entList == null) {
- //theLog.printInfo("Keine Daten! Suche erfolglos.");
process(null,templateFilename, modelRoot, out);
} else {
try {
modelRoot = makeSimpleHashWithEntitylistInfos(entList);
- //
- // Hilfskruecke um mal ein Popup mit reinzunhemen ..
+
+ // Quickhack um mal ein Popup mit reinzunhemen ..
if (additionalModelName != null && additionalModel != null)
modelRoot.put(additionalModelName, additionalModel);
* <code>out</code>
*
* @param templateFilename
- * @param mergeData
+ * @param mergeData - a HashMap with mergeData to be converted in SimpleHash
* @param out
* @exception HTMLParseException
*/
*/
public static void process(HttpServletResponse res,String templateFilename, TemplateModelRoot tmr, PrintWriter out)
throws HTMLParseException {
- if (out==null) throw new HTMLParseException("KEIN OUTPUTSTREAM");
+ if (out==null) throw new HTMLParseException("no outputstream");
Template tmpl = getTemplateFor(templateFilename);
- if (tmpl == null) throw new HTMLParseException("KEIN TEMPLATE: " + templateFilename);
+ if (tmpl == null) throw new HTMLParseException("no template: " + templateFilename);
if (tmr==null) tmr = new SimpleHash();
-
- String session=null;
+
+ /** @todo what is this for? (rk) */
+ String session="";
if (res!=null) {
session=res.encodeURL("");
}
/**
- * 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.
*/
public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException
{
- SimpleList simpleList = new SimpleList();
+ 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;
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;
* @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.
+ * AbstractEntity 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
/**
- * 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 mit Entity-Daten und ZusatzInfos.
+ * @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", 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())));
}
- return modelRoot;
+ 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()));
}
+ return modelRoot;
+ }
/**
- * Private Methode, um für templateFilename das Template zu bekommen.
+ * Private methods to get template from a templateFilename
* @param templateFilename
* @return Template
* @exception HTMLParseException
*/
private static Template getTemplateFor(String templateFilename) throws HTMLParseException
- {
- if (templateFilename!=null) return templateCache.getTemplate(templateFilename);
- else {
- theLog.printError("CACHE (ERR): Unknown template: " + templateFilename);
- throw new HTMLParseException("Templatedatei: "+ templateFilename + " nicht gefunden!");
- }
- }
+ {
+ Template returnTemplate = null;
+ if (templateFilename!=null)
+ returnTemplate = templateCache.getTemplate(templateFilename);
- public static void stopAutoUpdate(){
- templateCache.stopAutoUpdate();
- templateCache=null;
+ if (returnTemplate==null) {
+ theLog.printError("CACHE (ERR): Unknown template: " + templateFilename);
+ throw new HTMLParseException("Templatefile: "+ templateFilename + " not found.");
}
+
+ return returnTemplate;
+ }
+
+ public static void stopAutoUpdate(){
+ templateCache.stopAutoUpdate();
+ templateCache=null;
+ }
+
}