X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fproducer%2FProducer.java;h=c2cb9771ee93d9f3a7f2b0d5565c6bbe55a7bce3;hb=9e7c3fb1998086dc2b979b6494abb47d165237df;hp=f8eb656d32f1d6f2772275140b189cd46966c59f;hpb=3ce3769bedde80278c7d936b6035017b2cae3a77;p=mir.git diff --git a/source/mircoders/producer/Producer.java b/source/mircoders/producer/Producer.java index f8eb656d..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.*; @@ -62,39 +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,null); - outputFile.close(); + outputFileStream.close(); outStream.close(); - 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); @@ -130,7 +171,7 @@ abstract public class Producer { logHTML(htmlout, "Producer."+moduleName+" finished producing: " + overall + " ms for "+ pageCount+" Pages = " +pagesPerMinute + " pages/min"); - logHTML(htmlout, "Back to Admin-Startage"); + printHTML(htmlout, "Back to Admin-Startage"); } public void logHTML(PrintWriter out, String s) {