From 9f7074c4ca8171b9f0f23ec5c8e62823160a2429 Mon Sep 17 00:00:00 2001 From: zapata Date: Mon, 25 Nov 2002 19:04:33 +0000 Subject: [PATCH] log4j implemented for the producer subsystem --- etc/log4j.properties | 21 +++- ...ggerAdapter.java => LoggerToWriterAdapter.java} | 6 +- source/mir/misc/StringUtil.java | 10 +- source/mir/misc/createIndex.java | 20 ++-- source/mir/producer/AssignmentProducerNode.java | 5 +- source/mir/producer/CompositeProducerNode.java | 4 +- source/mir/producer/ConditionalProducerNode.java | 4 +- source/mir/producer/DirCopyingProducerNode.java | 8 +- .../mir/producer/EntityBatchingProducerNode.java | 6 +- .../producer/EntityEnumeratingProducerNode.java | 6 +- source/mir/producer/EntityListProducerNode.java | 18 ++- .../producer/EvaluatedAssignmentProducerNode.java | 6 +- .../producer/ExpandedAssignmentProducerNode.java | 6 +- .../mir/producer/FileDateSettingProducerNode.java | 10 +- source/mir/producer/FileDeletingProducerNode.java | 10 +- source/mir/producer/FileOperationProducerNode.java | 11 +- source/mir/producer/GeneratingProducerNode.java | 18 ++- source/mir/producer/LoggingProducerNode.java | 12 +- source/mir/producer/LoopProducerNode.java | 6 +- source/mir/producer/NodedProducer.java | 4 +- source/mir/producer/Producer.java | 3 +- source/mir/producer/ProducerNode.java | 4 +- source/mir/producer/ProducerNodeDecorator.java | 4 +- .../mir/producer/ResourceBundleProducerNode.java | 28 ++--- source/mir/producer/ScriptCallingProducerNode.java | 10 +- source/mir/producer/ValuesMapProducerNode.java | 4 +- .../reader/DefaultProducerNodeBuilders.java | 29 ++++- .../mir/producer/reader/ScriptedProducerNode.java | 6 +- .../reader/ScriptedProducerNodeDefinition.java | 4 +- source/mircoders/global/ProducerEngine.java | 29 ++--- .../basic/MirBasicDataModelLocalizer.java | 1 + source/mircoders/producer/CompositeProducer.java | 3 +- .../producer/ContentMarkingProducerNode.java | 10 +- .../producer/ContentModifyingProducerNode.java | 12 +- .../mircoders/producer/IndexingProducerNode.java | 130 ++++++++++----------- .../producer/MediaGeneratingProducerNode.java | 11 +- source/mircoders/producer/OldProducerAdapter.java | 8 +- .../producer/PDFGeneratingProducerNode.java | 19 ++- .../producer/PDFPreFormattingProducerNode.java | 21 ++-- 39 files changed, 309 insertions(+), 218 deletions(-) rename source/mir/log/{WriterToLoggerAdapter.java => LoggerToWriterAdapter.java} (86%) diff --git a/etc/log4j.properties b/etc/log4j.properties index 72ffb6e2..bd74e81d 100755 --- a/etc/log4j.properties +++ b/etc/log4j.properties @@ -1,15 +1,24 @@ - log4j.rootLogger= DEBUG, A1 log4j.logger.servlet= INFO, ServletA +log4j.logger.media= DEBUG, MediaA +log4j.logger.producer= INFO, ProducerA log4j.appender.A1=org.apache.log4j.ConsoleAppender - -log4j.appender.ServletA=org.apache.log4j.RollingFileAppender -log4j.appender.ServletA.File=${log.home}/servlet.log - -# A1 uses PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +log4j.appender.ServletA=org.apache.log4j.RollingFileAppender +log4j.appender.ServletA.File=${log.home}/servlet.log log4j.appender.ServletA.layout=org.apache.log4j.PatternLayout log4j.appender.ServletA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n + + +log4j.appender.MediaA=org.apache.log4j.RollingFileAppender +log4j.appender.MediaA.File=${log.home}/media.log +log4j.appender.MediaA.layout=org.apache.log4j.PatternLayout +log4j.appender.MediaA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n + +log4j.appender.ProducerA=org.apache.log4j.RollingFileAppender +log4j.appender.ProducerA.File=${log.home}/producer.log +log4j.appender.ProducerA.layout=org.apache.log4j.PatternLayout +log4j.appender.ProducerA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n diff --git a/source/mir/log/WriterToLoggerAdapter.java b/source/mir/log/LoggerToWriterAdapter.java similarity index 86% rename from source/mir/log/WriterToLoggerAdapter.java rename to source/mir/log/LoggerToWriterAdapter.java index 67b13d1f..a0c8ae48 100755 --- a/source/mir/log/WriterToLoggerAdapter.java +++ b/source/mir/log/LoggerToWriterAdapter.java @@ -3,20 +3,20 @@ package mir.log; import java.io.*; import java.util.*; -public class WriterToLoggerAdapter extends Writer { +public class LoggerToWriterAdapter extends Writer { private LoggerWrapper logger; private int messageType; private StringBuffer lineBuffer; private String lineSeparator; - public WriterToLoggerAdapter(LoggerWrapper aLogger, int aMessageType) { + public LoggerToWriterAdapter(LoggerWrapper aLogger, int aMessageType) { lineBuffer = new StringBuffer(); logger = aLogger; messageType = aMessageType; lineSeparator = System.getProperty("line.separator"); } - public WriterToLoggerAdapter(Logger aLogger, int aMessageType) { + public LoggerToWriterAdapter(Logger aLogger, int aMessageType) { this(new LoggerWrapper(aLogger), aMessageType); } diff --git a/source/mir/misc/StringUtil.java b/source/mir/misc/StringUtil.java index ce1edb6b..cb915fbb 100755 --- a/source/mir/misc/StringUtil.java +++ b/source/mir/misc/StringUtil.java @@ -40,7 +40,7 @@ import gnu.regexp.*; /** * Statische Hilfsmethoden zur Stringbehandlung * - * @version $Id: StringUtil.java,v 1.26 2002/11/04 04:35:21 mh Exp $ + * @version $Id: StringUtil.java,v 1.27 2002/11/25 19:06:45 zapata Exp $ * @author mir-coders group * */ @@ -554,13 +554,17 @@ public final class StringUtil { return s; } - /** * verwandelt einen String in eine gültige Url, konvertiert Sonderzeichen * und Spaces werden zu Underscores * * @return gültige Url */ +/* + ML: I don't exactly understand the point of this routine, and I think it isn't + being used anymore. (And it sometimes causes locale problems). So I commented + it. + public static String convert2url(String s) { s = toLowerCase(s); StringBuffer buf = new StringBuffer(); @@ -588,7 +592,7 @@ public final class StringUtil { } return buf.toString(); } - +*/ public static String decodeHTMLinTags(String s){ StringBuffer buffer = new StringBuffer(); diff --git a/source/mir/misc/createIndex.java b/source/mir/misc/createIndex.java index 7af2ac74..429352e2 100755 --- a/source/mir/misc/createIndex.java +++ b/source/mir/misc/createIndex.java @@ -1,3 +1,5 @@ +package mir.misc; + import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.IndexWriter; @@ -5,15 +7,15 @@ import org.apache.lucene.index.IndexWriter; class createIndex{ public static void main(String[] args){ - try{ - - IndexWriter indexWriter = new IndexWriter(args[0], new StandardAnalyzer(), true); + try{ + + IndexWriter indexWriter = new IndexWriter(args[0], new StandardAnalyzer(), true); - indexWriter.close(); - //and make it owned by correct user?(not in java!) - } - catch (Exception e){ - System.out.println(e.toString()); - } + indexWriter.close(); + //and make it owned by correct user?(not in java!) + } + catch (Exception e){ + System.out.println(e.toString()); + } } } diff --git a/source/mir/producer/AssignmentProducerNode.java b/source/mir/producer/AssignmentProducerNode.java index 37bb08c8..8795332b 100755 --- a/source/mir/producer/AssignmentProducerNode.java +++ b/source/mir/producer/AssignmentProducerNode.java @@ -33,8 +33,11 @@ package mir.producer; import java.util.*; import java.io.*; + import org.apache.struts.util.MessageResources; + import mir.util.*; +import mir.log.*; public class AssignmentProducerNode extends ProducerNodeDecorator { private String key; @@ -48,7 +51,7 @@ public class AssignmentProducerNode extends ProducerNodeDecorator { value = aValue; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { try { ParameterExpander.setValueForKey(aValueMap, key, value); diff --git a/source/mir/producer/CompositeProducerNode.java b/source/mir/producer/CompositeProducerNode.java index 29c54508..8c465a3d 100755 --- a/source/mir/producer/CompositeProducerNode.java +++ b/source/mir/producer/CompositeProducerNode.java @@ -34,6 +34,8 @@ package mir.producer; import java.util.*; import java.io.*; +import mir.log.*; + public class CompositeProducerNode implements ProducerNode { private List subNodes; @@ -75,7 +77,7 @@ public class CompositeProducerNode implements ProducerNode { ((NodedProducer) producerValue).getIsAborted()); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure, ProducerExc { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure, ProducerExc { Iterator i = subNodes.iterator(); while (i.hasNext() && !isAborted(aValueMap)) { diff --git a/source/mir/producer/ConditionalProducerNode.java b/source/mir/producer/ConditionalProducerNode.java index 85e7eb28..fffeed5c 100755 --- a/source/mir/producer/ConditionalProducerNode.java +++ b/source/mir/producer/ConditionalProducerNode.java @@ -33,7 +33,9 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; +import mir.log.*; public class ConditionalProducerNode implements ProducerNode { private String condition; @@ -46,7 +48,7 @@ public class ConditionalProducerNode implements ProducerNode { falseNode = aFalseNode; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { try { if (ParameterExpander.evaluateBooleanExpression(aValueMap, condition)) { if (trueNode!=null) diff --git a/source/mir/producer/DirCopyingProducerNode.java b/source/mir/producer/DirCopyingProducerNode.java index a9f5509f..835f99db 100755 --- a/source/mir/producer/DirCopyingProducerNode.java +++ b/source/mir/producer/DirCopyingProducerNode.java @@ -33,7 +33,9 @@ package mir.producer; import java.io.*; import java.util.*; + import mir.util.*; +import mir.log.*; public class DirCopyingProducerNode implements ProducerNode { private String sourceExpression; @@ -48,7 +50,7 @@ public class DirCopyingProducerNode implements ProducerNode { destinationExpression = aDestination; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { String source = ""; String destination = ""; File sourceFile; @@ -57,13 +59,13 @@ public class DirCopyingProducerNode implements ProducerNode { try { source = ParameterExpander.expandExpression( aValueMap, sourceExpression ); destination = ParameterExpander.expandExpression( aValueMap, destinationExpression ); - aLogger.println("Copying " + source + " into " + destination); FileCopier.copy( new File(sourceBasePath, source), new File(destinationBasePath, destination)); + aLogger.info(source + " copied into " + destination); } catch (Throwable e) { - throw new ProducerFailure("Copying " + source + " into " + destination + " failed: " + e.getMessage(), e); + aLogger.error("Copying " + source + " into " + destination + " failed: " + e.getMessage()); } } } diff --git a/source/mir/producer/EntityBatchingProducerNode.java b/source/mir/producer/EntityBatchingProducerNode.java index 2f491158..cb61f9d0 100755 --- a/source/mir/producer/EntityBatchingProducerNode.java +++ b/source/mir/producer/EntityBatchingProducerNode.java @@ -33,10 +33,12 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.entity.adapter.*; import mir.entity.*; import mir.storage.*; import mir.util.*; +import mir.log.*; public class EntityBatchingProducerNode implements ProducerNode { private String batchInfoKey; @@ -88,7 +90,7 @@ public class EntityBatchingProducerNode implements ProducerNode { ((NodedProducer) producerValue).getIsAborted()); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Iterator browser; int nrEntities; int nrBatchesAfterFirst; @@ -191,7 +193,7 @@ public class EntityBatchingProducerNode implements ProducerNode { } } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("EntityBatchingProducerNode caused an exception: " + t.getMessage()); } }; diff --git a/source/mir/producer/EntityEnumeratingProducerNode.java b/source/mir/producer/EntityEnumeratingProducerNode.java index 85a5a9dc..2a288331 100755 --- a/source/mir/producer/EntityEnumeratingProducerNode.java +++ b/source/mir/producer/EntityEnumeratingProducerNode.java @@ -33,10 +33,12 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.entity.adapter.*; import mir.entity.*; import mir.storage.*; import mir.util.*; +import mir.log.*; public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { private String key; @@ -67,7 +69,7 @@ public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { skip = aSkip; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Iterator browser; try { @@ -86,7 +88,7 @@ public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { } } catch (Throwable t) { - aLogger.println("Exception occurred inside an EntityEnumeratingProducerNode: " + t.getMessage()); + aLogger.error("Exception occurred inside an EntityEnumeratingProducerNode: " + t.getMessage()); } }; } \ No newline at end of file diff --git a/source/mir/producer/EntityListProducerNode.java b/source/mir/producer/EntityListProducerNode.java index 9e2cd142..08e663cb 100755 --- a/source/mir/producer/EntityListProducerNode.java +++ b/source/mir/producer/EntityListProducerNode.java @@ -33,10 +33,12 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.entity.adapter.*; import mir.entity.*; import mir.storage.*; import mir.util.*; +import mir.log.*; public class EntityListProducerNode extends ProducerNodeDecorator { private String key; @@ -71,7 +73,7 @@ public class EntityListProducerNode extends ProducerNodeDecorator { Integer.toString(aLimit), Integer.toString(aSkip), aSubNode); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure, ProducerExc { try { int limit = ParameterExpander.evaluateIntegerExpressionWithDefault(aValueMap, limitExpression, -1); int skip = ParameterExpander.evaluateIntegerExpressionWithDefault(aValueMap, skipExpression, 0); @@ -93,11 +95,21 @@ public class EntityListProducerNode extends ProducerNodeDecorator { skip ) ) ); - super.produce(aValueMap, aVerb, aLogger); } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("cannot retrieve list into key " + key + ": " + t.getMessage()); + try { + ParameterExpander.setValueForKey( + aValueMap, + key, + new CachingRewindableIterator(new Vector().iterator()) + ); + } + catch (Throwable s) { + } } + + super.produce(aValueMap, aVerb, aLogger); }; } \ No newline at end of file diff --git a/source/mir/producer/EvaluatedAssignmentProducerNode.java b/source/mir/producer/EvaluatedAssignmentProducerNode.java index 5d6f5423..1a02b293 100755 --- a/source/mir/producer/EvaluatedAssignmentProducerNode.java +++ b/source/mir/producer/EvaluatedAssignmentProducerNode.java @@ -33,7 +33,9 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; +import mir.log.*; public class EvaluatedAssignmentProducerNode implements ProducerNode { private String key; @@ -45,7 +47,7 @@ public class EvaluatedAssignmentProducerNode implements ProducerNode { value = aValue; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { try { ParameterExpander.setValueForKey( aValueMap, @@ -54,7 +56,7 @@ public class EvaluatedAssignmentProducerNode implements ProducerNode { } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("key " + key + " could not be set to " + value + ": " + t.getMessage()); } }; } \ No newline at end of file diff --git a/source/mir/producer/ExpandedAssignmentProducerNode.java b/source/mir/producer/ExpandedAssignmentProducerNode.java index cdc49927..7c9d425b 100755 --- a/source/mir/producer/ExpandedAssignmentProducerNode.java +++ b/source/mir/producer/ExpandedAssignmentProducerNode.java @@ -33,7 +33,9 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; +import mir.log.*; public class ExpandedAssignmentProducerNode implements ProducerNode { private String key; @@ -45,7 +47,7 @@ public class ExpandedAssignmentProducerNode implements ProducerNode { value = aValue; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { try { ParameterExpander.setValueForKey( aValueMap, @@ -54,7 +56,7 @@ public class ExpandedAssignmentProducerNode implements ProducerNode { } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("key " + key + " could not be set to " + value + ": " + t.getMessage()); } }; } \ No newline at end of file diff --git a/source/mir/producer/FileDateSettingProducerNode.java b/source/mir/producer/FileDateSettingProducerNode.java index 57bcea26..f4e567df 100755 --- a/source/mir/producer/FileDateSettingProducerNode.java +++ b/source/mir/producer/FileDateSettingProducerNode.java @@ -33,6 +33,8 @@ package mir.producer; import java.util.*; import java.io.*; + +import mir.log.*; import mir.util.*; import mir.producer.*; import mir.generator.*; @@ -48,19 +50,19 @@ public class FileDateSettingProducerNode extends FileOperationProducerNode { dateExpression = aDateExpression; } - protected void perform(File aFile, Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + protected void perform(File aFile, Map aValueMap, String aVerb, LoggerWrapper aLogger) { try { Object date = ParameterExpander.findValueForKey( aValueMap, dateExpression ); if (!(date instanceof Date)) - throw new ProducerFailure("FileDateSettingProducerNode: expression " + dateExpression + " does not evaluate to a Date!", null ); + aLogger.error( "FileDateSettingProducerNode: expression " + dateExpression + " does not evaluate to a Date!") ; if (!aFile.setLastModified(((Date) date).getTime())) { - aLogger.println("Can't set date for " + aFile.getName()); + aLogger.error("Can't set date for " + aFile.getName()); } } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error( "File " + aFile.getName() + " could not be set to date " + dateExpression + ": " + t.getMessage()); } } } \ No newline at end of file diff --git a/source/mir/producer/FileDeletingProducerNode.java b/source/mir/producer/FileDeletingProducerNode.java index 1fb0f7ed..f509ba49 100755 --- a/source/mir/producer/FileDeletingProducerNode.java +++ b/source/mir/producer/FileDeletingProducerNode.java @@ -33,9 +33,12 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; import mir.producer.*; import mir.generator.*; +import mir.log.*; + import mircoders.global.*; import mircoders.localizer.*; @@ -45,9 +48,12 @@ public class FileDeletingProducerNode extends FileOperationProducerNode { super(aFileIdentifier); } - protected void perform(File aFile, Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + protected void perform(File aFile, Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { if (!aFile.delete()) { - aLogger.print("Can't delete " + aFile.getName()); + aLogger.error("Can't delete file " + aFile.getName()); + } + else { + aLogger.info("File " + aFile.getName() + " deleted"); } } } \ No newline at end of file diff --git a/source/mir/producer/FileOperationProducerNode.java b/source/mir/producer/FileOperationProducerNode.java index 5ab999bb..215fb52f 100755 --- a/source/mir/producer/FileOperationProducerNode.java +++ b/source/mir/producer/FileOperationProducerNode.java @@ -33,9 +33,12 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; import mir.producer.*; import mir.generator.*; +import mir.log.*; + import mircoders.global.*; import mircoders.localizer.*; @@ -46,9 +49,9 @@ public abstract class FileOperationProducerNode implements ProducerNode { fileName = aFileName; } - protected abstract void perform(File aFile, Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure; + protected abstract void perform(File aFile, Map aValueMap, String aVerb, LoggerWrapper aLogger); - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { String fileIdentifier; try { @@ -58,9 +61,7 @@ public abstract class FileOperationProducerNode implements ProducerNode { perform(file, aValueMap, aVerb, aLogger); } catch (Throwable t) { - aLogger.println("Error while performing file operation: " + t.getMessage()); - - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("Error while performing file operation: " + t.getMessage()); } } } \ No newline at end of file diff --git a/source/mir/producer/GeneratingProducerNode.java b/source/mir/producer/GeneratingProducerNode.java index ba9a34fc..df2b85bd 100755 --- a/source/mir/producer/GeneratingProducerNode.java +++ b/source/mir/producer/GeneratingProducerNode.java @@ -33,9 +33,11 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; import mir.producer.*; import mir.generator.*; +import mir.log.*; public class GeneratingProducerNode implements ProducerNode { private String generatorExpression; @@ -56,7 +58,7 @@ public class GeneratingProducerNode implements ProducerNode { this(aGeneratorLibrary, aWriterEngine, aGenerator, aDestination, ""); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Generator generator; Object writer; String generatorIdentifier; @@ -72,20 +74,16 @@ public class GeneratingProducerNode implements ProducerNode { generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression ); parameters = ParameterExpander.expandExpression( aValueMap, parametersExpression ); - aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier + " using parameters " + parameters); - aLogger.flush(); - writer = writerEngine.openWriter( destinationIdentifier, parameters ); generator = generatorLibrary.makeGenerator( generatorIdentifier ); - generator.generate(writer, aValueMap, aLogger); + generator.generate(writer, aValueMap, new PrintWriter(new LoggerToWriterAdapter(aLogger, LoggerWrapper.INFO_MESSAGE))); writerEngine.closeWriter( writer ); + + endTime = System.currentTimeMillis(); + aLogger.info("Generated " + generatorIdentifier + " into " + destinationIdentifier + " [" + parameters + "] in " + (endTime-startTime) + " ms"); } catch (Throwable t) { - aLogger.println(" error while generating: " + t.getClass().getName() + ": " + t.getMessage()); + aLogger.error(" error while generating: " + t.getClass().getName() + ": " + t.getMessage()); } - endTime = System.currentTimeMillis(); - - aLogger.println(" Time: " + (endTime-startTime) + " ms"); - aLogger.flush(); } } \ No newline at end of file diff --git a/source/mir/producer/LoggingProducerNode.java b/source/mir/producer/LoggingProducerNode.java index ded152a0..4dd9b6d3 100755 --- a/source/mir/producer/LoggingProducerNode.java +++ b/source/mir/producer/LoggingProducerNode.java @@ -33,26 +33,30 @@ package mir.producer; import java.io.*; import java.util.*; + import mir.util.*; import mir.producer.*; +import mir.log.*; public class LoggingProducerNode implements ProducerNode { private String expression; + private int messageType; - public LoggingProducerNode(String anExpression) { + public LoggingProducerNode(String anExpression, int aMessageType) { expression = anExpression; + messageType = aMessageType; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { String text; try { text = ParameterExpander.expandExpression( aValueMap, expression ); - aLogger.println(text); + aLogger.message(messageType, text); } catch (Throwable t) { try { - aLogger.println("Exception while logging message '"+expression+"': " + t.getMessage()); + aLogger.error("Exception while logging message '"+expression+"': " + t.getMessage()); } catch (Throwable s) { } diff --git a/source/mir/producer/LoopProducerNode.java b/source/mir/producer/LoopProducerNode.java index a62d5ddb..65c57724 100755 --- a/source/mir/producer/LoopProducerNode.java +++ b/source/mir/producer/LoopProducerNode.java @@ -33,7 +33,9 @@ package mir.producer; import java.util.*; import java.io.*; + import mir.util.*; +import mir.log.*; public class LoopProducerNode extends ProducerNodeDecorator { @@ -51,7 +53,7 @@ public class LoopProducerNode extends ProducerNodeDecorator { } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { int loopNr; int maxNrLoops; @@ -66,7 +68,7 @@ public class LoopProducerNode extends ProducerNodeDecorator { } } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("LoopProducerNode raised an exception: " + t.getMessage()); } }; } \ No newline at end of file diff --git a/source/mir/producer/NodedProducer.java b/source/mir/producer/NodedProducer.java index b9e30121..83fc96c3 100755 --- a/source/mir/producer/NodedProducer.java +++ b/source/mir/producer/NodedProducer.java @@ -34,6 +34,8 @@ package mir.producer; import java.util.*; import java.io.*; +import mir.log.*; + public class NodedProducer implements Producer { private ProducerNode rootNode; private String verb; @@ -50,7 +52,7 @@ public class NodedProducer implements Producer { isAborted = false; } - public void produce( PrintWriter aLogger ) throws ProducerFailure, ProducerExc { + public void produce( LoggerWrapper aLogger ) throws ProducerFailure, ProducerExc { Map valueMap; valueMap = new HashMap(); diff --git a/source/mir/producer/Producer.java b/source/mir/producer/Producer.java index 3b13de17..1c2e19e1 100755 --- a/source/mir/producer/Producer.java +++ b/source/mir/producer/Producer.java @@ -32,8 +32,9 @@ package mir.producer; import java.io.*; +import mir.log.*; public interface Producer { - public void produce( PrintWriter aLogger ) throws ProducerFailure, ProducerExc; + public void produce( LoggerWrapper aLogger ) throws ProducerFailure, ProducerExc; public void abort(); } diff --git a/source/mir/producer/ProducerNode.java b/source/mir/producer/ProducerNode.java index 1afaa59d..23ea273c 100755 --- a/source/mir/producer/ProducerNode.java +++ b/source/mir/producer/ProducerNode.java @@ -34,6 +34,8 @@ package mir.producer; import java.util.*; import java.io.*; +import mir.log.*; + public interface ProducerNode { - public void produce(Map aValueSet, String aVerb, PrintWriter aLogger) throws ProducerExc, ProducerFailure; + public void produce(Map aValueSet, String aVerb, LoggerWrapper aLogger) throws ProducerExc, ProducerFailure; } \ No newline at end of file diff --git a/source/mir/producer/ProducerNodeDecorator.java b/source/mir/producer/ProducerNodeDecorator.java index d0cceedf..e77b7e31 100755 --- a/source/mir/producer/ProducerNodeDecorator.java +++ b/source/mir/producer/ProducerNodeDecorator.java @@ -34,6 +34,8 @@ package mir.producer; import java.util.*; import java.io.*; +import mir.log.*; + public class ProducerNodeDecorator implements ProducerNode { private ProducerNode slave; @@ -48,7 +50,7 @@ public class ProducerNodeDecorator implements ProducerNode { ((NodedProducer) producerValue).getIsAborted()); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure, ProducerExc { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure, ProducerExc { if (slave!=null) slave.produce(aValueMap, aVerb, aLogger); } diff --git a/source/mir/producer/ResourceBundleProducerNode.java b/source/mir/producer/ResourceBundleProducerNode.java index 533c9fc4..b80342ef 100755 --- a/source/mir/producer/ResourceBundleProducerNode.java +++ b/source/mir/producer/ResourceBundleProducerNode.java @@ -34,44 +34,46 @@ package mir.producer; import java.util.*; import java.io.*; import org.apache.struts.util.MessageResources; + import mir.util.*; import mir.misc.*; +import mir.log.*; public class ResourceBundleProducerNode implements ProducerNode { private String key; - private String bundleIdentifier; - private String languageIdentifier; + private String bundleExpression; + private String languageExpression; - public ResourceBundleProducerNode(String aKey, String aBundleIdentifier) { - this (aKey, aBundleIdentifier, null); + public ResourceBundleProducerNode(String aKey, String aBundleExpression) { + this (aKey, aBundleExpression, null); } - public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, String aLanguageIdentifier) { - bundleIdentifier = aBundleIdentifier; - languageIdentifier = aLanguageIdentifier; + public ResourceBundleProducerNode(String aKey, String aBundleExpression, String aLanguageExpression) { + bundleExpression = aBundleExpression; + languageExpression = aLanguageExpression; key = aKey; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Object messages; try { - if (languageIdentifier!=null) { + if (languageExpression!=null) { messages = new ResourceBundleGeneratorFunction( - new Locale(ParameterExpander.expandExpression( aValueMap, languageIdentifier ), "" ), - MessageResources.getMessageResources( ParameterExpander.expandExpression( aValueMap, bundleIdentifier )) + new Locale(ParameterExpander.expandExpression( aValueMap, languageExpression ), "" ), + MessageResources.getMessageResources( ParameterExpander.expandExpression( aValueMap, bundleExpression )) ); } else { messages = MessageResources.getMessageResources( - ParameterExpander.expandExpression( aValueMap, bundleIdentifier )); + ParameterExpander.expandExpression( aValueMap, bundleExpression )); } ParameterExpander.setValueForKey( aValueMap, key, messages ); } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("Failed to load bundle " + bundleExpression + " for language " + languageExpression + " into key " + key + ": " + t.getMessage()); } }; diff --git a/source/mir/producer/ScriptCallingProducerNode.java b/source/mir/producer/ScriptCallingProducerNode.java index 7080a08f..234efc4c 100755 --- a/source/mir/producer/ScriptCallingProducerNode.java +++ b/source/mir/producer/ScriptCallingProducerNode.java @@ -33,7 +33,9 @@ package mir.producer; import java.io.*; import java.util.*; + import mir.util.*; +import mir.log.*; public class ScriptCallingProducerNode implements ProducerNode { String scriptExpression; @@ -42,21 +44,19 @@ public class ScriptCallingProducerNode implements ProducerNode { scriptExpression = aScriptExpression; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { String script; Process process; int returnValue; try { script = ParameterExpander.expandExpression( aValueMap, scriptExpression ); - aLogger.println("Executing " + script + ":"); - process = Runtime.getRuntime().exec(script); returnValue = process.waitFor(); - aLogger.println("Terminated successfully, return value = " + returnValue + "."); + aLogger.info(script + " terminated successfully, return value = " + returnValue + "."); } catch (Throwable e) { - throw new ProducerFailure("Executing script failed: " + e.getMessage(), e); + aLogger.error(scriptExpression + " failed to execute: " + e.getMessage()); } } } diff --git a/source/mir/producer/ValuesMapProducerNode.java b/source/mir/producer/ValuesMapProducerNode.java index 05d154d5..a3f7a8ef 100755 --- a/source/mir/producer/ValuesMapProducerNode.java +++ b/source/mir/producer/ValuesMapProducerNode.java @@ -34,7 +34,9 @@ package mir.producer; import java.util.*; import java.io.*; import org.apache.struts.util.MessageResources; + import mir.util.*; +import mir.log.*; public class ValuesMapProducerNode extends ProducerNodeDecorator { private String key; @@ -45,7 +47,7 @@ public class ValuesMapProducerNode extends ProducerNodeDecorator { super(aSubNode); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { try { aValueMap.putAll(map); diff --git a/source/mir/producer/reader/DefaultProducerNodeBuilders.java b/source/mir/producer/reader/DefaultProducerNodeBuilders.java index b8617d3a..78f3787d 100755 --- a/source/mir/producer/reader/DefaultProducerNodeBuilders.java +++ b/source/mir/producer/reader/DefaultProducerNodeBuilders.java @@ -32,10 +32,13 @@ package mir.producer.reader; import java.util.*; + import mir.generator.*; + import mir.producer.*; import mir.entity.adapter.*; import mir.util.*; +import mir.log.*; public class DefaultProducerNodeBuilders { @@ -296,24 +299,46 @@ public class DefaultProducerNodeBuilders { public static class LoggingProducerNodeBuilder extends AbstractProducerNodeBuilder { private final static String LOG_MESSAGE_ATTRIBUTE = "message"; + private final static String LOG_TYPE_ATTRIBUTE = "type"; private final static String[] LOG_REQUIRED_ATTRIBUTES = { LOG_MESSAGE_ATTRIBUTE }; - private final static String[] LOG_OPTIONAL_ATTRIBUTES = {}; + private final static String[] LOG_OPTIONAL_ATTRIBUTES = { LOG_TYPE_ATTRIBUTE }; private final static String[] LOG_SUBNODES = {}; private String message; + private int type = LoggerWrapper.INFO_MESSAGE; public LoggingProducerNodeBuilder() { super(LOG_SUBNODES); } public void setAttributes(Map anAttributes) throws ProducerConfigExc { + String typeString; + ReaderTool.checkAttributes(anAttributes, LOG_REQUIRED_ATTRIBUTES, LOG_OPTIONAL_ATTRIBUTES); message = (String) anAttributes.get(LOG_MESSAGE_ATTRIBUTE); + if (anAttributes.containsKey(LOG_TYPE_ATTRIBUTE)) { + typeString = ((String) anAttributes.get( LOG_TYPE_ATTRIBUTE )); + + if (typeString.toLowerCase().equals("debug")) + type = LoggerWrapper.DEBUG_MESSAGE; + else if (typeString.toLowerCase().equals("info")) + type = LoggerWrapper.INFO_MESSAGE; + else if (typeString.toLowerCase().equals("error")) + type = LoggerWrapper.ERROR_MESSAGE; + else if (typeString.toLowerCase().equals("warning")) + type = LoggerWrapper.WARN_MESSAGE; + else if (typeString.toLowerCase().equals("fatal")) + type = LoggerWrapper.FATAL_MESSAGE; + else + throw new ProducerConfigExc("unknown log type: " + typeString + " (allowed are debug, info, warning, error, fatal)"); + } + else + type = LoggerWrapper.INFO_MESSAGE; }; public ProducerNode constructNode() { - return new LoggingProducerNode(message); + return new LoggingProducerNode(message, type); }; } diff --git a/source/mir/producer/reader/ScriptedProducerNode.java b/source/mir/producer/reader/ScriptedProducerNode.java index c3100b57..4e275a1e 100755 --- a/source/mir/producer/reader/ScriptedProducerNode.java +++ b/source/mir/producer/reader/ScriptedProducerNode.java @@ -33,8 +33,10 @@ package mir.producer.reader; import java.util.*; import java.io.*; + import mir.producer.*; import mir.util.*; +import mir.log.*; public class ScriptedProducerNode implements ProducerNode { private ScriptedProducerNodeDefinition definition; @@ -52,7 +54,7 @@ public class ScriptedProducerNode implements ProducerNode { nodeParameterValues.putAll(aNodeParameterValues); } - public void produce(Map aValues, String aVerb, PrintWriter aLogger) throws ProducerFailure, ProducerExc { + public void produce(Map aValues, String aVerb, LoggerWrapper aLogger) throws ProducerFailure, ProducerExc { try { Map oldValues = new HashMap(); ScriptedProducerNodeTool.saveMapValues(oldValues, aValues, definition.getStringParameters().keySet()); @@ -92,7 +94,7 @@ public class ScriptedProducerNode implements ProducerNode { } } catch (Exception e) { - throw new ProducerFailure(e); + aLogger.error("Scripted producer node " + definition.getName() + " caused an exception: " + e.getMessage()); } } diff --git a/source/mir/producer/reader/ScriptedProducerNodeDefinition.java b/source/mir/producer/reader/ScriptedProducerNodeDefinition.java index 6420bc8a..6f45b72a 100755 --- a/source/mir/producer/reader/ScriptedProducerNodeDefinition.java +++ b/source/mir/producer/reader/ScriptedProducerNodeDefinition.java @@ -33,7 +33,9 @@ package mir.producer.reader; import java.util.*; import java.io.*; + import mir.producer.*; +import mir.log.*; public class ScriptedProducerNodeDefinition { private Map integerParameters; // name -> default value @@ -132,7 +134,7 @@ public class ScriptedProducerNodeDefinition { parameterName = aParameterName; } - public void produce(Map aValues, String aVerb, PrintWriter aLogger) throws ProducerExc, ProducerFailure { + public void produce(Map aValues, String aVerb, LoggerWrapper aLogger) throws ProducerExc, ProducerFailure { ProducerNode producerNode; Map runTimeData = (Map) ((Map) aValues.get(SCRIPTED_PRODUCERNODE_RUNTIMEDATA_KEY)).get(definitionName); diff --git a/source/mircoders/global/ProducerEngine.java b/source/mircoders/global/ProducerEngine.java index 4748dae4..2af4b85a 100755 --- a/source/mircoders/global/ProducerEngine.java +++ b/source/mircoders/global/ProducerEngine.java @@ -37,23 +37,19 @@ import mir.producer.*; import mir.util.*; import multex.Exc; import multex.Failure; +import mir.log.*; public class ProducerEngine { // private Map producers; private JobQueue producerJobQueue; private Thread queueThread; - private PrintWriter log; + private LoggerWrapper logger; + protected ProducerEngine() { producerJobQueue = new JobQueue(); - try { - RandomAccessFile raFile = (new RandomAccessFile(MirGlobal.getConfigProperty("Home") + "/" + MirGlobal.getConfigProperty("Producer.Logfile"), "rw")); - raFile.seek(raFile.length()); - log = new PrintWriter(new FileWriter( raFile.getFD())); - } - catch (Exception e) { - log = new PrintWriter(new NullWriter()); - } + logger = new LoggerWrapper("producer"); + queueThread = new Thread(new ProducerJobQueueThread()); queueThread.start(); } @@ -155,7 +151,7 @@ private class ProducerJob { Map startingMap = new HashMap(); startTime = System.currentTimeMillis(); - log.println("Producing job: "+factoryName+"."+verb); + logger.info("Producing job: "+factoryName+"."+verb); try { factory = MirGlobal.localizer().producers().getFactoryForName( factoryName ); @@ -167,18 +163,16 @@ private class ProducerJob { producer = factory.makeProducer(verb, startingMap); } if (producer!=null) { - producer.produce(log); + producer.produce(logger); } } } catch (Throwable t) { - log.println(" exception "+t.getMessage()); - t.printStackTrace(log); + logger.error("Exception occurred while producing " + factoryName + "." + verb + t.getMessage()); + t.printStackTrace(new PrintWriter(new LoggerToWriterAdapter(logger, LoggerWrapper.ERROR_MESSAGE))); } - log.println("Done producing job: "+factoryName+"."+verb); endTime = System.currentTimeMillis(); - log.println("Time: " + (endTime-startTime) + " ms"); - log.flush(); + logger.info("Done producing job: " + factoryName + "." + verb + ", time elapsed:" + (endTime-startTime) + " ms"); } boolean isAborted() { @@ -188,8 +182,7 @@ private class ProducerJob { private class ProducerJobQueueThread implements Runnable { public void run() { - log.println("starting ProducerJobQueueThread"); - log.flush(); + logger.debug("starting ProducerJobQueueThread"); while (true) { ProducerJob job = (ProducerJob) producerJobQueue.acquirePendingJob(); diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java index d65cd234..e103e6d8 100755 --- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java @@ -315,6 +315,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { return result; } } + protected class ContentCommentCountField implements EntityAdapterDefinition.CalculatedField { private String extraCondition; diff --git a/source/mircoders/producer/CompositeProducer.java b/source/mircoders/producer/CompositeProducer.java index dd137434..e6b90c91 100755 --- a/source/mircoders/producer/CompositeProducer.java +++ b/source/mircoders/producer/CompositeProducer.java @@ -34,6 +34,7 @@ package mircoders.producer; import java.util.*; import java.io.*; import mir.producer.*; +import mir.log.*; public class CompositeProducer implements mir.producer.Producer { private List producers; @@ -46,7 +47,7 @@ public class CompositeProducer implements mir.producer.Producer { producers.add(aProducer); } - public void produce( PrintWriter aLogger ) throws ProducerFailure, ProducerExc { + public void produce( LoggerWrapper aLogger ) throws ProducerFailure, ProducerExc { Iterator i; i=producers.iterator(); diff --git a/source/mircoders/producer/ContentMarkingProducerNode.java b/source/mircoders/producer/ContentMarkingProducerNode.java index 3b1018b3..4430a5a6 100755 --- a/source/mircoders/producer/ContentMarkingProducerNode.java +++ b/source/mircoders/producer/ContentMarkingProducerNode.java @@ -32,7 +32,8 @@ package mircoders.producer; import java.util.*; -import java.io.*; + +import mir.log.*; import mir.util.*; import mir.producer.*; import mir.entity.*; @@ -47,7 +48,7 @@ public class ContentMarkingProducerNode implements ProducerNode { contentKey = aContentKey; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Object data; Entity entity; @@ -66,10 +67,7 @@ public class ContentMarkingProducerNode implements ProducerNode { ((EntityContent) entity).setProduced(true); } catch (Throwable t) { - aLogger.println("Error while marking content: " + t.getMessage()); - t.printStackTrace(aLogger); - - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("Error while marking content: " + t.getMessage()); } } } \ No newline at end of file diff --git a/source/mircoders/producer/ContentModifyingProducerNode.java b/source/mircoders/producer/ContentModifyingProducerNode.java index 7034e60a..e65c6593 100755 --- a/source/mircoders/producer/ContentModifyingProducerNode.java +++ b/source/mircoders/producer/ContentModifyingProducerNode.java @@ -33,10 +33,13 @@ package mircoders.producer; import java.util.*; import java.io.*; + import mir.util.*; import mir.producer.*; import mir.entity.*; import mir.entity.adapter.*; +import mir.log.*; + import mircoders.entity.*; import mircoders.module.*; import mircoders.storage.*; @@ -53,7 +56,7 @@ public class ContentModifyingProducerNode implements ProducerNode { valueExpression = aValueExpression; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) { Object data; Entity entity; String value; @@ -80,13 +83,10 @@ public class ContentModifyingProducerNode implements ProducerNode { entity.setValueForProperty(fieldName, value); entity.update(); - aLogger.println(" Modified content " + entity.get("id") + ": " + fieldName + " = " + value ); + aLogger.info(" Modified content " + entity.get("id") + ": " + fieldName + " = " + value ); } catch (Throwable t) { - aLogger.println("Error while modifying content: " + t.getMessage()); - t.printStackTrace(aLogger); - - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("Error while modifying content: " + t.getMessage()); } } } diff --git a/source/mircoders/producer/IndexingProducerNode.java b/source/mircoders/producer/IndexingProducerNode.java index 051f5976..26749dd3 100755 --- a/source/mircoders/producer/IndexingProducerNode.java +++ b/source/mircoders/producer/IndexingProducerNode.java @@ -33,7 +33,7 @@ package mircoders.producer; import java.util.*; import java.io.*; - + import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.*; import org.apache.lucene.document.Document; @@ -44,6 +44,7 @@ import freemarker.template.*; import mir.util.*; +import mir.log.*; import mir.producer.*; //import mir.generator.*; import mircoders.global.*; @@ -57,149 +58,146 @@ import mircoders.storage.*; public class IndexingProducerNode implements ProducerNode { private String contentKey; private String indexPath; - - + + public IndexingProducerNode(String aContentKey, String pathToIndex) { contentKey = aContentKey; indexPath=pathToIndex; } - - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { IndexReader indexReader = null; IndexWriter indexWriter = null; Object data; Entity entity; - + long startTime; long endTime; - + startTime = System.currentTimeMillis(); - + try { data = ParameterExpander.findValueForKey( aValueMap, contentKey ); - + if (! (data instanceof EntityAdapter)) { - throw new ProducerFailure("IndexingProducerNode: value of '"+contentKey+"' is not an EntityAdapter, but an " + data.getClass().getName(), null); + throw new ProducerFailure("IndexingProducerNode: value of '"+contentKey+"' is not an EntityAdapter, but an " + data.getClass().getName(), null); } - + entity = ((EntityAdapter) data).getEntity(); if (! (entity instanceof EntityContent)) { - throw new ProducerFailure("IndexingProducerNode: value of '"+contentKey+"' is not a content EntityAdapter, but a " + entity.getClass().getName() + " adapter", null); + throw new ProducerFailure("IndexingProducerNode: value of '"+contentKey+"' is not a content EntityAdapter, but a " + entity.getClass().getName() + " adapter", null); } - aLogger.println("Indexing " + (String) entity.getValue("id") + " into " + indexPath); - aLogger.flush(); - + aLogger.info("Indexing " + (String) entity.getValue("id") + " into " + indexPath); + indexReader = IndexReader.open(indexPath); indexReader.delete(new Term("id",entity.getValue("id"))); indexReader.close(); - + indexWriter = new IndexWriter(indexPath, new StandardAnalyzer(), false); Document theDoc = new Document(); - + // Keyword is stored and indexed, but not tokenized // Text is tokenized,stored, indexed // Unindexed is not tokenized or indexed, only stored // Unstored is tokenized and indexed, but not stored - + theDoc.add(Field.Keyword("id",entity.getValue("id"))); theDoc.add(Field.Keyword("where",entity.getValue("publish_path")+entity.getValue("id")+".shtml")); theDoc.add(Field.Text("creator",entity.getValue("creator"))); theDoc.add(Field.Text("title",entity.getValue("title"))); theDoc.add(Field.Keyword("webdb_create",entity.getValue("webdb_create_formatted"))); theDoc.add(Field.UnStored("content_and_description",entity.getValue("description")+entity.getValue("content_data"))); - + //topics TemplateModel topics=entity.get("to_topics"); - aLogger.println("THE CLASS NAME WAS: "+entity.get("to_topics").getClass().getName()); + aLogger.debug("THE CLASS NAME WAS: "+entity.get("to_topics").getClass().getName()); while (((TemplateListModel)topics).hasNext()){ - theDoc.add(Field.UnStored("topic",((TemplateHashModel)((TemplateListModel)topics).next()).get("title").toString())); + theDoc.add(Field.UnStored("topic",((TemplateHashModel)((TemplateListModel)topics).next()).get("title").toString())); } - - + + //media - + //images TemplateModel images=entity.get("to_media_images"); if (images != null){ - //here we should really store a list of urls instead, - //so we can thumbnail from another server - theDoc.add(Field.UnStored("media","images")); - + //here we should really store a list of urls instead, + //so we can thumbnail from another server + theDoc.add(Field.UnStored("media","images")); + } //audio TemplateModel audio=entity.get("to_media_audio"); if (audio != null){ - theDoc.add(Field.UnStored("media","audio")); + theDoc.add(Field.UnStored("media","audio")); } //video TemplateModel video=entity.get("to_media_video"); if (video != null){ - theDoc.add(Field.UnStored("media","video")); + theDoc.add(Field.UnStored("media","video")); } //comments-just aggregate all relevant fields String commentsAggregate = ""; TemplateModel comments=entity.get("to_comments"); if (comments != null){ - while (((TemplateListModel)comments).hasNext()){ - TemplateModel aComment = ((TemplateListModel)comments).next(); - commentsAggregate = commentsAggregate + " " + ((TemplateHashModel)aComment).get("title").toString() - + " " + ((TemplateHashModel)aComment).get("creator").toString() - + " " + ((TemplateHashModel)aComment).get("text").toString(); - } + while (((TemplateListModel)comments).hasNext()){ + TemplateModel aComment = ((TemplateListModel)comments).next(); + commentsAggregate = commentsAggregate + " " + ((TemplateHashModel)aComment).get("title").toString() + + " " + ((TemplateHashModel)aComment).get("creator").toString() + + " " + ((TemplateHashModel)aComment).get("text").toString(); + } } theDoc.add(Field.UnStored("comments",commentsAggregate)); indexWriter.addDocument(theDoc); - + } catch (Throwable t) { - aLogger.println("Error while indexing content: " + t.getMessage()); - t.printStackTrace(aLogger); + aLogger.error("Error while indexing content: " + t.getMessage()); + t.printStackTrace(new PrintWriter(new LoggerToWriterAdapter(aLogger, LoggerWrapper.DEBUG_MESSAGE))); //should remove index lock here.....jd - throw new ProducerFailure(t.getMessage(), t); } finally { if (indexReader != null){ - try{ - indexReader.close(); - } - catch (Throwable t) { - aLogger.println("Error while closing indexReader: " + t.getMessage()); - } - + try{ + indexReader.close(); + } + catch (Throwable t) { + aLogger.warn("Error while closing indexReader: " + t.getMessage()); + } + } if (indexWriter != null){ - try{ - indexWriter.close(); - } - catch (Throwable t) { - aLogger.println("Error while closing indexWriter: " + t.getMessage()); - } - + try{ + indexWriter.close(); + } + catch (Throwable t) { + aLogger.warn("Error while closing indexWriter: " + t.getMessage()); + } + } - + try{ - FSDirectory theIndexDir=FSDirectory.getDirectory(indexPath,false); - if (indexReader.isLocked(theIndexDir)){ - indexReader.unlock(theIndexDir); - } + FSDirectory theIndexDir=FSDirectory.getDirectory(indexPath,false); + if (indexReader.isLocked(theIndexDir)){ + indexReader.unlock(theIndexDir); + } } catch (Throwable t) { - aLogger.println("Error while unlocking index: " + t.getMessage()); + aLogger.warn("Error while unlocking index: " + t.getMessage()); } } - - - + + + endTime = System.currentTimeMillis(); - - aLogger.println(" IndexTime: " + (endTime-startTime) + " ms
"); - aLogger.flush(); + + aLogger.info(" IndexTime: " + (endTime-startTime) + " ms
"); } } diff --git a/source/mircoders/producer/MediaGeneratingProducerNode.java b/source/mircoders/producer/MediaGeneratingProducerNode.java index 93ffab97..ad9281ac 100755 --- a/source/mircoders/producer/MediaGeneratingProducerNode.java +++ b/source/mircoders/producer/MediaGeneratingProducerNode.java @@ -33,15 +33,16 @@ package mircoders.producer; import java.util.*; import java.io.*; + import mir.util.*; +import mir.log.*; import mir.misc.*; import mir.media.*; import mir.producer.*; import mir.generator.*; import mir.entity.*; import mir.entity.adapter.*; -//import mircoders.global.*; -//import mircoders.localizer.*; + import mircoders.entity.*; import mircoders.storage.*; @@ -52,7 +53,7 @@ public class MediaGeneratingProducerNode implements ProducerNode { mediaEntityKey = aMediaEntityKey; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure, ProducerExc { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) { Object data; Entity entity; EntityUploadedMedia uploadedMediaEntity = null; @@ -83,7 +84,7 @@ public class MediaGeneratingProducerNode implements ProducerNode { entity.setValueForProperty("is_produced", "1"); entity.update(); - aLogger.println("media with id "+uploadedMediaEntity.getValue("id") + ", mediaType " + mediaType.getValue("name") + " successfully produced"); + aLogger.info("media with id "+uploadedMediaEntity.getValue("id") + ", mediaType " + mediaType.getValue("name") + " successfully produced"); } catch (Throwable t) { String message = "Error while generating media"; @@ -98,7 +99,7 @@ public class MediaGeneratingProducerNode implements ProducerNode { } message = message + ": " + t.getMessage(); - aLogger.println(message); + aLogger.error(message); } } } diff --git a/source/mircoders/producer/OldProducerAdapter.java b/source/mircoders/producer/OldProducerAdapter.java index 8eb81c2c..a9d2803f 100755 --- a/source/mircoders/producer/OldProducerAdapter.java +++ b/source/mircoders/producer/OldProducerAdapter.java @@ -31,9 +31,11 @@ package mircoders.producer; -import mir.producer.*; import java.io.*; +import mir.producer.*; +import mir.log.*; + public class OldProducerAdapter implements mir.producer.Producer { private mircoders.producer.Producer oldProducer; @@ -44,9 +46,9 @@ public class OldProducerAdapter implements mir.producer.Producer { forced = aForced; } - public void produce( PrintWriter aLogger ) throws ProducerFailure { + public void produce( LoggerWrapper aLogger ) throws ProducerFailure { try { - oldProducer.handle( aLogger, null, forced.booleanValue(), false ); + oldProducer.handle( new PrintWriter(new LoggerToWriterAdapter( aLogger, LoggerWrapper.INFO_MESSAGE )), null, forced.booleanValue(), false ); } catch (Throwable e) { throw new ProducerFailure("Failure at handling old Producers",e); diff --git a/source/mircoders/producer/PDFGeneratingProducerNode.java b/source/mircoders/producer/PDFGeneratingProducerNode.java index 1240bc58..05dd2518 100755 --- a/source/mircoders/producer/PDFGeneratingProducerNode.java +++ b/source/mircoders/producer/PDFGeneratingProducerNode.java @@ -33,6 +33,8 @@ package mircoders.producer; import java.util.*; import java.io.*; + +import mir.log.*; import mir.util.*; import mir.producer.*; import mir.misc.PDFUtil; @@ -48,7 +50,7 @@ public class PDFGeneratingProducerNode implements ProducerNode { stylesheet=aStylesheet; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) { String generatorIdentifier; String destinationIdentifier; @@ -64,21 +66,18 @@ public class PDFGeneratingProducerNode implements ProducerNode { generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression ); stylesheetIdentifier = ParameterExpander.expandExpression( aValueMap, stylesheet); - aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier + " using "+ stylesheetIdentifier); - aLogger.flush(); + aLogger.info("Generating " + generatorIdentifier + " into " + destinationIdentifier + " using "+ stylesheetIdentifier); PDFUtil.makePDF(generatorIdentifier,destinationIdentifier,stylesheetIdentifier); - } - catch (Throwable t) { - t.printStackTrace(); - aLogger.println(" error while generating: " + t.getMessage() + t.toString()); - aLogger.flush(); + } + catch (Throwable t) { + t.printStackTrace(); + aLogger.error(" error while generating: " + t.getMessage() + t.toString()); } endTime = System.currentTimeMillis(); - aLogger.println(" Time: " + (endTime-startTime) + " ms
"); - aLogger.flush(); + aLogger.info(" Time: " + (endTime-startTime) + " ms
"); } } diff --git a/source/mircoders/producer/PDFPreFormattingProducerNode.java b/source/mircoders/producer/PDFPreFormattingProducerNode.java index bcff7c92..dca788a7 100755 --- a/source/mircoders/producer/PDFPreFormattingProducerNode.java +++ b/source/mircoders/producer/PDFPreFormattingProducerNode.java @@ -33,10 +33,13 @@ package mircoders.producer; import java.util.*; import java.io.*; + import mir.util.*; import mir.producer.*; import mir.entity.*; import mir.entity.adapter.*; +import mir.log.*; + import mircoders.entity.*; import mircoders.storage.*; @@ -66,7 +69,7 @@ public class PDFPreFormattingProducerNode implements ProducerNode { //float lineHeightCM = .5F; } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Object data; Entity entity; @@ -119,7 +122,7 @@ public class PDFPreFormattingProducerNode implements ProducerNode { } row0.put("hasImage","0"); brokenUpContent.add(row0); - aLogger.println("CP1 is "+ currentPosition); + aLogger.debug("CP1 is "+ currentPosition); while(images.hasNext()){ HashMap row1 = new HashMap(); HashMap row2 = new HashMap(); @@ -147,8 +150,8 @@ public class PDFPreFormattingProducerNode implements ProducerNode { row1.put("img_width",Float.toString(img_width)); row1.put("img_height",Float.toString(img_height)); - aLogger.println("img_width " +Float.toString(img_width)); - aLogger.println("img_height "+Float.toString(img_height)); + aLogger.debug("img_width " +Float.toString(img_width)); + aLogger.debug("img_height "+Float.toString(img_height)); row1.put("img_src",currentImage.getValue("publish_path")); row1.put("hasImage","1"); @@ -163,7 +166,7 @@ public class PDFPreFormattingProducerNode implements ProducerNode { outOfText = true; } } - aLogger.println("CP2 is "+ currentPosition); + aLogger.debug("CP2 is "+ currentPosition); brokenUpContent.add(row1); if (! outOfText){ @@ -180,7 +183,7 @@ public class PDFPreFormattingProducerNode implements ProducerNode { row2.put("hasImage","0"); brokenUpContent.add(row2); - aLogger.println("CP3 is "+ currentPosition); + aLogger.debug("CP3 is "+ currentPosition); } HashMap row3 = new HashMap(); if (! outOfText){ @@ -204,10 +207,8 @@ public class PDFPreFormattingProducerNode implements ProducerNode { } catch (Throwable t) { - aLogger.println("Error while formatting content for PDF: " + t.getMessage()); - t.printStackTrace(aLogger); - - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("Error while formatting content for PDF: " + t.getMessage()); + t.printStackTrace(new PrintWriter(new LoggerToWriterAdapter(aLogger, LoggerWrapper.DEBUG_MESSAGE))); } } } -- 2.11.0