log4j implemented for the producer subsystem
authorzapata <zapata>
Mon, 25 Nov 2002 19:04:33 +0000 (19:04 +0000)
committerzapata <zapata>
Mon, 25 Nov 2002 19:04:33 +0000 (19:04 +0000)
40 files changed:
etc/log4j.properties
source/mir/log/LoggerToWriterAdapter.java [new file with mode: 0755]
source/mir/log/WriterToLoggerAdapter.java [deleted file]
source/mir/misc/StringUtil.java
source/mir/misc/createIndex.java
source/mir/producer/AssignmentProducerNode.java
source/mir/producer/CompositeProducerNode.java
source/mir/producer/ConditionalProducerNode.java
source/mir/producer/DirCopyingProducerNode.java
source/mir/producer/EntityBatchingProducerNode.java
source/mir/producer/EntityEnumeratingProducerNode.java
source/mir/producer/EntityListProducerNode.java
source/mir/producer/EvaluatedAssignmentProducerNode.java
source/mir/producer/ExpandedAssignmentProducerNode.java
source/mir/producer/FileDateSettingProducerNode.java
source/mir/producer/FileDeletingProducerNode.java
source/mir/producer/FileOperationProducerNode.java
source/mir/producer/GeneratingProducerNode.java
source/mir/producer/LoggingProducerNode.java
source/mir/producer/LoopProducerNode.java
source/mir/producer/NodedProducer.java
source/mir/producer/Producer.java
source/mir/producer/ProducerNode.java
source/mir/producer/ProducerNodeDecorator.java
source/mir/producer/ResourceBundleProducerNode.java
source/mir/producer/ScriptCallingProducerNode.java
source/mir/producer/ValuesMapProducerNode.java
source/mir/producer/reader/DefaultProducerNodeBuilders.java
source/mir/producer/reader/ScriptedProducerNode.java
source/mir/producer/reader/ScriptedProducerNodeDefinition.java
source/mircoders/global/ProducerEngine.java
source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java
source/mircoders/producer/CompositeProducer.java
source/mircoders/producer/ContentMarkingProducerNode.java
source/mircoders/producer/ContentModifyingProducerNode.java
source/mircoders/producer/IndexingProducerNode.java
source/mircoders/producer/MediaGeneratingProducerNode.java
source/mircoders/producer/OldProducerAdapter.java
source/mircoders/producer/PDFGeneratingProducerNode.java
source/mircoders/producer/PDFPreFormattingProducerNode.java

index 72ffb6e..bd74e81 100755 (executable)
@@ -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/LoggerToWriterAdapter.java b/source/mir/log/LoggerToWriterAdapter.java
new file mode 100755 (executable)
index 0000000..a0c8ae4
--- /dev/null
@@ -0,0 +1,52 @@
+package mir.log;
+
+import java.io.*;
+import java.util.*;
+
+public class LoggerToWriterAdapter extends Writer {
+  private LoggerWrapper logger;
+  private int messageType;
+  private StringBuffer lineBuffer;
+  private String lineSeparator;
+
+  public LoggerToWriterAdapter(LoggerWrapper aLogger, int aMessageType) {
+    lineBuffer = new StringBuffer();
+    logger = aLogger;
+    messageType = aMessageType;
+    lineSeparator = System.getProperty("line.separator");
+  }
+
+  public LoggerToWriterAdapter(Logger aLogger, int aMessageType) {
+    this(new LoggerWrapper(aLogger), aMessageType);
+  }
+
+  public void close() {
+    flush();
+  }
+
+  public void flush() {
+    if (lineBuffer.length()>0) {
+      logger.message(messageType, lineBuffer.toString());
+      lineBuffer.delete(0, lineBuffer.length());
+    }
+  }
+
+  protected void checkBuffer() {
+    int from = 0;
+    int until = lineBuffer.toString().indexOf(lineSeparator, from);
+
+    while (until>-1) {
+      String line = lineBuffer.substring(from, until);
+      logger.message(messageType, line);
+      from = until + lineSeparator.length();
+      until = lineBuffer.toString().indexOf(lineSeparator, from);
+    }
+
+    lineBuffer.delete(0, from);
+  };
+
+  public void write(char[] aBuffer, int anOffset, int aLength)  {
+    lineBuffer.append(aBuffer, anOffset, aLength);
+    checkBuffer();
+  }
+}
\ No newline at end of file
diff --git a/source/mir/log/WriterToLoggerAdapter.java b/source/mir/log/WriterToLoggerAdapter.java
deleted file mode 100755 (executable)
index 67b13d1..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-package mir.log;
-
-import java.io.*;
-import java.util.*;
-
-public class WriterToLoggerAdapter extends Writer {
-  private LoggerWrapper logger;
-  private int messageType;
-  private StringBuffer lineBuffer;
-  private String lineSeparator;
-
-  public WriterToLoggerAdapter(LoggerWrapper aLogger, int aMessageType) {
-    lineBuffer = new StringBuffer();
-    logger = aLogger;
-    messageType = aMessageType;
-    lineSeparator = System.getProperty("line.separator");
-  }
-
-  public WriterToLoggerAdapter(Logger aLogger, int aMessageType) {
-    this(new LoggerWrapper(aLogger), aMessageType);
-  }
-
-  public void close() {
-    flush();
-  }
-
-  public void flush() {
-    if (lineBuffer.length()>0) {
-      logger.message(messageType, lineBuffer.toString());
-      lineBuffer.delete(0, lineBuffer.length());
-    }
-  }
-
-  protected void checkBuffer() {
-    int from = 0;
-    int until = lineBuffer.toString().indexOf(lineSeparator, from);
-
-    while (until>-1) {
-      String line = lineBuffer.substring(from, until);
-      logger.message(messageType, line);
-      from = until + lineSeparator.length();
-      until = lineBuffer.toString().indexOf(lineSeparator, from);
-    }
-
-    lineBuffer.delete(0, from);
-  };
-
-  public void write(char[] aBuffer, int anOffset, int aLength)  {
-    lineBuffer.append(aBuffer, anOffset, aLength);
-    checkBuffer();
-  }
-}
\ No newline at end of file
index ce1edb6..cb915fb 100755 (executable)
@@ -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();
index 7af2ac7..429352e 100755 (executable)
@@ -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());
+        }
     }
 }
index 37bb08c..8795332 100755 (executable)
@@ -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);
 
index 29c5450..8c465a3 100755 (executable)
@@ -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)) {
index 85e7eb2..fffeed5 100755 (executable)
@@ -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)
index a9f5509..835f99d 100755 (executable)
@@ -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());
     }
   }
 }
index 2f49115..cb61f9d 100755 (executable)
@@ -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());
     }
   };
 
index 85a5a9d..2a28833 100755 (executable)
@@ -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
index 9e2cd14..08e663c 100755 (executable)
@@ -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
index 5d6f542..1a02b29 100755 (executable)
@@ -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
index cdc4992..7c9d425 100755 (executable)
@@ -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
index 57bcea2..f4e567d 100755 (executable)
@@ -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
index 1fb0f7e..f509ba4 100755 (executable)
@@ -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
index 5ab999b..215fb52 100755 (executable)
@@ -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
index ba9a34f..df2b85b 100755 (executable)
@@ -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
index ded152a..4dd9b6d 100755 (executable)
@@ -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) {
       }
index a62d5dd..65c5772 100755 (executable)
@@ -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
index b9e3012..83fc96c 100755 (executable)
@@ -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();
index 3b13de1..1c2e19e 100755 (executable)
@@ -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();
 }
index 1afaa59..23ea273 100755 (executable)
@@ -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
index d0cceed..e77b7e3 100755 (executable)
@@ -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);
   }
index 533c9fc..b80342e 100755 (executable)
@@ -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());
     }
   };
 
index 7080a08..234efc4 100755 (executable)
@@ -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());
     }
   }
 }
index 05d154d..a3f7a8e 100755 (executable)
@@ -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);
 
index b8617d3..78f3787 100755 (executable)
 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);
     };
   }
 
index c3100b5..4e275a1 100755 (executable)
@@ -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());
     }
   }
 
index 6420bc8..6f45b72 100755 (executable)
@@ -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);
index 4748dae..2af4b85 100755 (executable)
@@ -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();
index d65cd23..e103e6d 100755 (executable)
@@ -315,6 +315,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
       return result;\r
     }\r
   }\r
+\r
   protected class ContentCommentCountField implements EntityAdapterDefinition.CalculatedField {\r
     private String extraCondition;\r
 \r
index dd13743..e6b90c9 100755 (executable)
@@ -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();
index 3b1018b..4430a5a 100755 (executable)
@@ -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
index 7034e60..e65c659 100755 (executable)
@@ -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());
     }
   }
 }
index 051f597..26749dd 100755 (executable)
@@ -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<br>");
-    aLogger.flush();
+
+    aLogger.info("  IndexTime: " + (endTime-startTime) + " ms<br>");
   }
 }
 
index 93ffab9..ad9281a 100755 (executable)
@@ -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);
     }
   }
 }
index 8eb81c2..a9d2803 100755 (executable)
 
 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);
index 1240bc5..05dd251 100755 (executable)
@@ -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<br>");
-    aLogger.flush();
+    aLogger.info("  Time: " + (endTime-startTime) + " ms<br>");
   }
 }
 
index bcff7c9..dca788a 100755 (executable)
@@ -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)));
     }
   }
 }