first attempt at a rewrite of the media producer + some bugfixes here and there
authorzapata <zapata>
Thu, 6 Jun 2002 22:56:02 +0000 (22:56 +0000)
committerzapata <zapata>
Thu, 6 Jun 2002 22:56:02 +0000 (22:56 +0000)
source/mir/producer/FileDateSettingProducerNode.java
source/mircoders/entity/adapter/ContentAdapterDefinition.java
source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java
source/mircoders/producer/GeneratingProducerNode.java
source/mircoders/producer/MediaGeneratingProducerNode.java [new file with mode: 0755]
source/mircoders/servlet/ServletModuleOpenIndy.java
source/mirlocal/bolivia.indymedia.org/BoliviaProducerLocalizer.java
source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java

index 25a55a1..4a12062 100755 (executable)
@@ -25,7 +25,7 @@ public class FileDateSettingProducerNode extends FileOperationProducerNode {
         throw new ProducerFailure("FileDateSettingProducerNode: expression " + dateExpression + " does not evaluate to a Date!", null );
 
       if (!aFile.setLastModified(((Date) date).getTime())) {
-        aLogger.print("Can't set date for " + aFile.getName());
+        aLogger.println("Can't set date for " + aFile.getName());
       }
     }
     catch (Throwable t) {
index a9be850..1d94398 100755 (executable)
@@ -125,7 +125,6 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition {
 
   private class ContentToIconField implements CalculatedField {
     public Object getValue(EntityAdapter anEntityAdapter) {
-//      EntityUploadedMedia uploadedMedia;
       EntityAdapter media;
       Entity mediaType;
       RewindableIterator iterator;
@@ -135,23 +134,16 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition {
       String iconAlt;
 
       try {
-/*        iterator = (RewindableIterator) (anEntityAdapter.get("to_uploaded_media"));
+        iterator = (RewindableIterator) (anEntityAdapter.get("to_uploaded_media"));
         iterator.rewind();
-        browser =
-            new EntityBrowser(
-                DatabaseUploadedMedia.getInstance(),
-                "exists (select * from content_x_media where content_id="+anEntityAdapter.get("id")+" and media_id=id)",
-                "id",
-                1);
-*/
 
         tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyText");
         iconAlt = "Text";
 
-/*        if (iterator.hasNext()) {
+        if (iterator.hasNext()) {
           media = (EntityAdapter) iterator.next();
 
-          mediaType = ((EntityMedia) (media.getEntity())).getMediaType();
+          mediaType = ((EntityUploadedMedia) (media.getEntity())).getMediaType();
           mediaHandler = MediaHelper.getHandler( mediaType );
 
           if (mediaHandler.isVideo()) {
@@ -170,12 +162,12 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition {
             tinyIcon = mediaHandler.getTinyIcon();
             iconAlt = mediaHandler.getIconAlt();
           }
-*/
+
         }
       }
       catch (Throwable t) {
         System.out.println("ContentToIconField: exception: " +t.getMessage());
-        t.printStackTrace(t);
+        t.printStackTrace(System.out);
         throw new RuntimeException(t.getMessage());
       }
 
index cc9627b..a487b02 100755 (executable)
@@ -10,7 +10,9 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer {
 
   public void afterContentPosting() {
     MirGlobal.producerEngine().addJob("content", "new");
+    MirGlobal.producerEngine().addJob("media", "new");
     MirGlobal.producerEngine().addJob("openposting", "new");
+    MirGlobal.producerEngine().addJob("topics", "new");
     MirGlobal.producerEngine().addJob("startpage", "(default)");
 
     MirGlobal.producerEngine().addJob("synchronization", "run");
index 1ab617b..fa8595a 100755 (executable)
@@ -40,6 +40,8 @@ public class GeneratingProducerNode implements ProducerNode {
       MirGlobal.localizer().producerTool().closeWriter( printWriter );
        }
        catch (Throwable t) {
+         aLogger.println("  error while generating: " + t.getMessage());
+      aLogger.flush();
     }
     endTime = System.currentTimeMillis();
 
diff --git a/source/mircoders/producer/MediaGeneratingProducerNode.java b/source/mircoders/producer/MediaGeneratingProducerNode.java
new file mode 100755 (executable)
index 0000000..5f19248
--- /dev/null
@@ -0,0 +1,62 @@
+package mircoders.producer;
+
+import java.util.*;
+import java.io.*;
+import mir.util.*;
+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.*;
+
+public class MediaGeneratingProducerNode implements ProducerNode {
+  private String mediaEntityKey;
+
+  public MediaGeneratingProducerNode(String aMediaEntityKey) {
+    mediaEntityKey = aMediaEntityKey;
+  }
+
+  public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+    Object data;
+    Entity entity;
+    Entity currentMediaType;
+    MirMedia currentMediaHandler;
+
+    try {
+      data = ParameterExpander.findValueForKey( aValueMap, mediaEntityKey );
+
+      if (!(data instanceof EntityAdapter)) {
+        throw new ProducerFailure("MediaGeneratingProducerNode: value of '"+mediaEntityKey+"' is not an EntityAdapter, but an " + data.getClass().getName(), null);
+      }
+
+      entity = ((EntityAdapter) data).getEntity();
+      if (! (entity instanceof EntityUploadedMedia)) {
+        throw new ProducerFailure("MediaGeneratingProducerNode: value of '"+mediaEntityKey+"' is not an uploaded media EntityAdapter, but a " + entity.getClass().getName() + " adapter", null);
+      }
+
+      currentMediaType = DatabaseUploadedMedia.getInstance().getMediaType(entity);
+
+      currentMediaHandler = MediaHelper.getHandler( currentMediaType );
+      currentMediaHandler.produce(entity,currentMediaType);
+      entity.setValueForProperty("publish_server", currentMediaHandler.getPublishHost());
+      entity.setValueForProperty("icon_is_produced", "1");
+      entity.setValueForProperty("is_produced", "1");
+      entity.update();
+    }
+    catch (Throwable t) {
+      aLogger.println("Error while generating media: " + t.getMessage());
+      t.printStackTrace(aLogger);
+
+      throw new ProducerFailure(t.getMessage(), t);
+    }
+  }
+
+  public Set buildVerbSet() {
+    return new HashSet();
+  }
+}
index 3cd43f6..98021e9 100755 (executable)
@@ -387,7 +387,7 @@ public class ServletModuleOpenIndy extends ServletModule
         String mediaTypeId = null;
         MirMedia mediaHandler;
         Database mediaStorage;
-        ProducerMedia mediaProducer;
+//        ProducerMedia mediaProducer;
 
         //if we didn't find an entry matching the
         //content-type int the table.
@@ -427,9 +427,9 @@ public class ServletModuleOpenIndy extends ServletModule
           mediaHandler = MediaHelper.getHandler(mediaType);
           mediaStorage = MediaHelper.getStorage(mediaType,
                                               "mircoders.storage.Database");
-          Class prodCls = Class.forName("mircoders.producer.Producer"
-                                            +mediaType.getValue("tablename"));
-          mediaProducer = (ProducerMedia)prodCls.newInstance();
+//          Class prodCls = Class.forName("mircoders.producer.Producer"
+//                                            +mediaType.getValue("tablename"));
+//          mediaProducer = (ProducerMedia)prodCls.newInstance();
         } catch (Exception e) {
           theLog.printError("getting media handler failed: "+e.toString());
           contentModule.deleteById(cid);
@@ -460,7 +460,7 @@ public class ServletModuleOpenIndy extends ServletModule
           mediaEnt.setValueForProperty("is_published","1");
           mediaEnt.update();
           //produce it
-          mediaProducer.handle(null, null, false, false, mediaId);
+//          mediaProducer.handle(null, null, false, false, mediaId);
           DatabaseContentToMedia.getInstance().addMedia(cid,mediaId);
         } catch (Exception e) {
           theLog.printError("setting media failed: "+e.toString());
index 3d3774d..3031c9d 100755 (executable)
@@ -19,18 +19,20 @@ public class BoliviaProducerLocalizer extends MirBasicProducerLocalizer {
       contentNode =
           new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
             new CompositeProducerNode( new ProducerNode[] {
-              new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
-                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
-                    new CompositeProducerNode( new ProducerNode[] {
-                      new GeneratingProducerNode(
-                          "/producer/bolivia.indymedia.org/article.template",
-                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
-                      ),
-                      new FileDateSettingProducerNode(
-                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
-                          "content.date.date"
-                      )
-                    } )
+              new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c' and exists(select * from content_x_topic where content_id=${content.id} and topic_id=id", "",
+                new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+                  new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                      new CompositeProducerNode( new ProducerNode[] {
+                        new GeneratingProducerNode(
+                            "/producer/bolivia.indymedia.org/article.template",
+                            "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                        ),
+                        new FileDateSettingProducerNode(
+                            "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
+                            "content.webdb_create.raw"
+                        )
+                      } )
+                  )
                 )
               ),
               new ContentMarkingProducerNode( "content")
@@ -92,7 +94,7 @@ public class BoliviaProducerLocalizer extends MirBasicProducerLocalizer {
                         new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                           new GeneratingProducerNode(
                               "/producer/bolivia.indymedia.org/startpage.template",
-                              "${config.storageRoot}/${language.code}/${city.filename}/index.shtml"
+                              "${config.storageRoot}/${city.filename}/${language.code}/index.shtml"
                           )
                         )
                       )
index 8d45559..106e372 100755 (executable)
@@ -105,7 +105,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
                   "", "code", 10, 0,
             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
-              new ResourceBundleProducerNode("lang", "producer_${language.code}",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                 new GeneratingProducerNode(
                     "/producer/indymedia.nl/topic.template",
                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
@@ -116,7 +116,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
                   "", "code", 10, 0,
             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
-              new ResourceBundleProducerNode("lang", "producer_${language.code}",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                 new GeneratingProducerNode(
                     "/producer/indymedia.nl/topicnavigation.template",
                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"