log4j implemented for the producer subsystem
[mir.git] / source / mircoders / producer / IndexingProducerNode.java
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>");
   }
 }