X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fproducer%2FProducer.java;h=c2cb9771ee93d9f3a7f2b0d5565c6bbe55a7bce3;hb=19e43122d238202f5026ae776893305bdcdafc7c;hp=93862aa14d6744743aef1242ec3d20e52865f010;hpb=991a8eeb9f18ef922985d79bf2c4ac300fbee4a3;p=mir.git diff --git a/source/mircoders/producer/Producer.java b/source/mircoders/producer/Producer.java index 93862aa1..c2cb9771 100755 --- a/source/mircoders/producer/Producer.java +++ b/source/mircoders/producer/Producer.java @@ -1,3 +1,34 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, The Mir-coders gives permission to link + * the code of this program with the com.oreilly.servlet library, any library + * licensed under the Apache Software License, The Sun (tm) Java Advanced + * Imaging library (JAI), The Sun JIMI library (or with modified versions of + * the above that use the same license as the above), and distribute linked + * combinations including the two. You must obey the GNU General Public + * License in all respects for all of the code used other than the above + * mentioned libraries. If you modify this file, you may extend this exception + * to your version of the file, but you are not obligated to do so. If you do + * not wish to do so, delete this exception statement from your version. + */ + package mircoders.producer; import java.io.*; @@ -14,28 +45,40 @@ import mircoders.storage.*; abstract public class Producer { - protected static String producerDocRoot = MirConfig.getProp("Producer.DocRoot"); - protected static String producerStorageRoot = MirConfig.getProp("Producer.StorageRoot"); - protected static String producerProductionHost = MirConfig.getProp("Producer.ProductionHost"); - protected static String producerOpenAction = MirConfig.getProp("Producer.OpenAction");; - protected static Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("Producer.Logfile")); - protected static ModuleTopics topicsModule; - protected static ModuleSchwerpunkt schwerpunktModule; - protected static ModuleFeature featureModule; - protected static ModuleContent contentModule; - protected static ModuleImages imageModule; - protected static ModuleUploadedMedia uploadedMediaModule; + protected static String producerDocRoot = MirConfig.getProp("Producer.DocRoot"); + protected static String producerStorageRoot = MirConfig.getProp("Producer.StorageRoot"); + protected static String producerProductionHost = MirConfig.getProp("Producer.ProductionHost"); + protected static String producerOpenAction = MirConfig.getProp("Producer.OpenAction");; + + /** @todo same as in HTMLTemplateProcessor, this should be dynamically set */ + protected static String actionRoot = MirConfig.getProp("RootUri") + "/servlet/Mir"; + + protected static Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home") + "/" + MirConfig.getProp("Producer.Logfile")); + protected static ModuleTopics topicsModule; + protected static ModuleLinksImcs linksImcsModule; + protected static ModuleSchwerpunkt schwerpunktModule; + protected static ModuleFeature featureModule; + protected static ModuleContent contentModule; + protected static ModuleImages imageModule; + protected static ModuleUploadedMedia uploadedMediaModule; static { // init try { - contentModule = new ModuleContent(DatabaseContent.getInstance()); - topicsModule = new ModuleTopics(DatabaseTopics.getInstance()); - schwerpunktModule = new ModuleSchwerpunkt(DatabaseFeature.getInstance()); - featureModule = new ModuleFeature(DatabaseFeature.getInstance()); - imageModule = new ModuleImages(DatabaseImages.getInstance()); - uploadedMediaModule = new ModuleUploadedMedia(DatabaseImages.getInstance()); - } catch(StorageObjectException e) {;} + + contentModule = new ModuleContent(DatabaseContent.getInstance()); + topicsModule = new ModuleTopics(DatabaseTopics.getInstance()); + linksImcsModule = new ModuleLinksImcs(DatabaseLinksImcs.getInstance()); + schwerpunktModule = new ModuleSchwerpunkt(DatabaseFeature.getInstance()); + featureModule = new ModuleFeature(DatabaseFeature.getInstance()); + imageModule = new ModuleImages(DatabaseImages.getInstance()); + uploadedMediaModule = new ModuleUploadedMedia(DatabaseImages.getInstance()); + + } + catch(StorageObjectException e) + { + System.err.println("*** failed to initialize Producer " + e.toString()); + } } public void handle(PrintWriter htmlout, EntityUsers user) @@ -50,38 +93,49 @@ abstract public class Producer { // Methods for producing files public boolean produce(String template, String filename, TemplateModelRoot model, PrintWriter htmlout) { - return _produce(template, filename, model, htmlout, false); + return _produce(template, filename, model, htmlout, false, + MirConfig.getProp("Mir.DefaultEncoding")); + } + + public boolean produce(String template, String filename, TemplateModelRoot model, PrintWriter htmlout, String encoding) { + return _produce(template, filename, model, htmlout, false, encoding); } public boolean produce_compressed(String template, String filename, TemplateModelRoot model, PrintWriter htmlout) { - return _produce(template, filename, model, htmlout, true); + return _produce(template, filename, model, htmlout, true, + MirConfig.getProp("Mir.DefaultEncoding")); } - private boolean _produce(String template, String filename, TemplateModelRoot model, PrintWriter htmlout, boolean compressed) { + private boolean _produce(String template, String filename, TemplateModelRoot model, PrintWriter htmlout, boolean compressed, String encoding) { try { File f = new File(producerStorageRoot + filename); File dir = new File(f.getParent()); dir.mkdirs(); - FileWriter outputFile = new FileWriter(f); + // it's important that we set the desired encoding. It should be UTF8 + // not the platform default. + OutputStreamWriter outputFileStream = + new OutputStreamWriter(new FileOutputStream(f), encoding); PrintWriter outStream; if (compressed==true) { - outStream = new LineFilterWriter(outputFile); + outStream = new LineFilterWriter(outputFileStream); } else { - outStream = new PrintWriter(outputFile); + outStream = new PrintWriter(outputFileStream); } - HTMLTemplateProcessor.process(null,template, model, outStream); - outputFile.close(); + HTMLTemplateProcessor.process(null,template, model, outStream,null); + outputFileStream.close(); outStream.close(); - printHTML(htmlout, "Produced " + filename + ""); + printHTML(htmlout, "Produced " + filename + ""); //theLog.printInfo("Produced: " + producerStorageRoot + filename); - //theLog.printDebugInfo("free mem:" + java.lang.Runtime.getRuntime().freeMemory()); + //theLog.printDebugInfo("free mem:" + java.lang.Runtime.getRuntime().freeMemory()); //theLog.printDebugInfo("total mem:" + java.lang.Runtime.getRuntime().totalMemory()); return true; } catch(IOException exception){ logHTML(htmlout, "Producer: File could not be written " + filename); + System.out.println(exception.toString()); return false; } catch(HTMLParseException exception){ logHTML(htmlout,"Producer: Error in HTML-parsing: " + filename); @@ -89,37 +143,6 @@ abstract public class Producer { } } - public boolean produceFile(String filename, byte[] in, PrintWriter htmlout, boolean icon) { - - boolean retVal = false; - - if (in!=null) { - try { - File f = null; - if(icon==false){ - f = new File(filename); - theLog.printDebugInfo("image: " + filename); - } else { - f = new File(producerStorageRoot + filename); - theLog.printDebugInfo("icon: " + filename); - } - File dir = new File(f.getParent()); - dir.mkdirs(); - - FileOutputStream outStream; - outStream = new FileOutputStream(f); - outStream.write(in); - outStream.close(); - retVal = true; - } catch(IOException exception) { - logHTML(htmlout, "Producer: File could not be written: " + filename); - } - } - return retVal; - } - - - // // filename methods @@ -139,6 +162,18 @@ abstract public class Producer { /** * logging */ + + public void logHTMLFinish(PrintWriter htmlout,String moduleName, int pageCount, long startTime, long endTime) { + // timing and message to browser + long overall = endTime - startTime; + int pagesPerMinute=0; float perMinute = (float)overall/(float)60000; + if (perMinute >0) pagesPerMinute = (int) ((float)pageCount / perMinute); + + logHTML(htmlout, "Producer."+moduleName+" finished producing: " + + overall + " ms for "+ pageCount+" Pages = " +pagesPerMinute + " pages/min"); + printHTML(htmlout, "Back to Admin-Startage"); + } + public void logHTML(PrintWriter out, String s) { _print(out, s, true); } @@ -148,7 +183,7 @@ abstract public class Producer { } private void _print(PrintWriter out, String s, boolean log) { - if (out != null) { out.println(s+"
");out.flush(); } + if (out != null) { out.println(s+"
");out.flush(); } if (log == true) { theLog.printInfo(s); }