X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fmisc%2FHTMLTemplateProcessor.java;h=8a797057951f1a7bc371e9b95873411e99962f4f;hb=cc839c9fcd0e85f65074b5b259e8d5d1ed1b13dd;hp=06597da4abc0a671d16d7e66f57a5dcc03899e37;hpb=c0190d326d9d7f44de252cfccb45343bfca4e340;p=mir.git diff --git a/source/mir/misc/HTMLTemplateProcessor.java b/source/mir/misc/HTMLTemplateProcessor.java index 06597da4..8a797057 100755 --- a/source/mir/misc/HTMLTemplateProcessor.java +++ b/source/mir/misc/HTMLTemplateProcessor.java @@ -20,53 +20,60 @@ import javax.servlet.http.*; */ 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"); - //quickhack: action-root is only for Mir!!!!, idfx - //actionRoot = docRoot + "/servlet/" + MirConfig.getProp("ServletName"); - 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"); - - - } + 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 /** @@ -82,12 +89,12 @@ public final class HTMLTemplateProcessor { 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 entList in freemarker-Struktur um, mischt die Daten mit * Template templateFilename und gibt das Ergebnis an den PrintWriter * out @@ -97,10 +104,10 @@ public final class HTMLTemplateProcessor { * @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 additionalModel @@ -122,13 +129,12 @@ public final class HTMLTemplateProcessor { 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); @@ -145,7 +151,7 @@ public final class HTMLTemplateProcessor { * out * * @param templateFilename - * @param mergeData + * @param mergeData - a HashMap with mergeData to be converted in SimpleHash * @param out * @exception HTMLParseException */ @@ -181,12 +187,13 @@ public final class HTMLTemplateProcessor { */ 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(""); } @@ -216,16 +223,16 @@ 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. */ public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException { - SimpleList simpleList = new SimpleList(); + SimpleList simpleList = new SimpleList(); if (aList != null) { - for(int i=0;i"); - 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 @@ -292,56 +302,63 @@ 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 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; + } + }