- producer links are moved to an "advanced" page, not intended for normal
[mir.git] / source / mircoders / localizer / basic / MirBasicProducerLocalizer.java
index 2b72ee7..0c0f9ce 100755 (executable)
@@ -46,7 +46,10 @@ import mircoders.producer.reader.*;
 import mircoders.producer.*;
 
 public class MirBasicProducerLocalizer implements MirProducerLocalizer {
-  private Map producerFactories;
+  private List producerFactories;
+  private Map nameToFactory;
+  private List allNewProducerTasks;
+
   protected FileMonitor fileMonitor;
   protected EntityAdapterModel model;
   protected Generator.GeneratorLibrary generatorLibrary;
@@ -56,11 +59,17 @@ public class MirBasicProducerLocalizer implements MirProducerLocalizer {
 
   public MirBasicProducerLocalizer() {
 
+
+
     try {
-      producerFactories = new HashMap();
+      String allNewProducers = MirGlobal.getConfigProperty("Mir.Localizer.Producer.AllNewProducers");
+      allNewProducerTasks = ProducerEngine.ProducerTask.parseProducerTaskList(allNewProducers);
+
+      producerFactories = new Vector();
       model = MirGlobal.localizer().dataModel().adapterModel();
       generatorLibrary = MirGlobal.localizer().generators().makeProducerGeneratorLibrary();
       writerEngine = MirGlobal.localizer().generators().makeWriterEngine();
+      nameToFactory = new HashMap();
     }
     catch (Throwable t) {
       logger.printError("MirBasicProducerLocalizer(): Exception "+t.getMessage());
@@ -68,16 +77,23 @@ public class MirBasicProducerLocalizer implements MirProducerLocalizer {
     }
   }
 
-  public Map factories() throws MirLocalizerException {
+  public List factories() throws MirLocalizerException {
     if (fileMonitor==null || producerFactories == null || fileMonitor.hasChanged()) {
       try {
-        Map newProducers = new HashMap();
+        List newProducers = new Vector();
         FileMonitor newFileMonitor = new FileMonitor();
         setupFactories(newProducers, newFileMonitor);
 
         producerFactories = newProducers;
         fileMonitor = newFileMonitor;
-        logger.printError("MirBasicProducerLocalizer.factories(): successfully setup factories");
+        logger.printInfo("MirBasicProducerLocalizer.factories(): successfully setup factories");
+
+        nameToFactory.clear();
+        Iterator i = producerFactories.iterator();
+        while (i.hasNext()) {
+          ProducerFactory factory = (ProducerFactory) i.next();
+          nameToFactory.put(factory.getName(), factory);
+        }
       }
       catch (Throwable t) {
         logger.printError("MirBasicProducerLocalizer.factories(): Unable to setup factories: "+t.getMessage());
@@ -87,26 +103,6 @@ public class MirBasicProducerLocalizer implements MirProducerLocalizer {
     return producerFactories;
   };
 
-  protected void setupContentFactory(CompositeProducerNode aProducerNode) {
-  }
-
-  protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
-  }
-
-  protected void setupSynchronizationFactory(CompositeProducerNode aProducerNode) {
-    if(MirGlobal.getConfigBooleanProperty("Rsync")){
-      aProducerNode.addSubNode(
-        new ScriptCallingProducerNode(MirGlobal.getConfigProperty("Rsync.Script.Path"))
-      );
-    }
-  }
-
-  protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
-  }
-
-  protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
-  }
-
   protected void setupProducerNodeBuilderLibrary(ProducerNodeBuilderLibrary aLibrary) {
     DefaultProducerNodeBuilders.registerBuilders(
       aLibrary, model, generatorLibrary, writerEngine,
@@ -114,58 +110,34 @@ public class MirBasicProducerLocalizer implements MirProducerLocalizer {
     SupplementalProducerNodeBuilders.registerBuilders(aLibrary, model);
   }
 
-  protected void setupFactories(Map aFactoriesMap, FileMonitor aFileMonitor) throws MirLocalizerException, MirLocalizerFailure {
+  protected void setupFactories(List aFactories, FileMonitor aFileMonitor) throws MirLocalizerException, MirLocalizerFailure {
     ProducerConfigReader reader;
     ProducerNodeBuilderLibrary library = new ProducerNodeBuilderLibrary();
     setupProducerNodeBuilderLibrary(library);
     List usedFiles = new Vector();
+    Iterator i;
 
     aFileMonitor.clear();
     reader = new ProducerConfigReader();
-    reader.parseFile(MirGlobal.getConfigProperty("Home") + File.separatorChar + MirGlobal.getConfigProperty("Mir.Localizer.ProducerConfigFile"), library, aFactoriesMap, usedFiles);
+    reader.parseFile(MirGlobal.getConfigProperty("Home") + File.separatorChar + MirGlobal.getConfigProperty("Mir.Localizer.ProducerConfigFile"), library, aFactories, usedFiles);
 
-    Iterator i = usedFiles.iterator();
+    i = usedFiles.iterator();
     while (i.hasNext())
       aFileMonitor.addFile((File) i.next());
 
-    setupFactories(aFactoriesMap);
+    setupFactories(aFactories);
   }
 
-  protected void setupFactories(Map aFactoriesMap ) throws MirLocalizerException, MirLocalizerFailure {
+  protected void setupFactories(List aFactories) throws MirLocalizerException, MirLocalizerFailure {
     CompositeProducerNode node;
 
     try {
-      node = new CompositeProducerNode();
-      setupContentFactory( node );
-      if (node.getNrSubNodes()>0)
-        aFactoriesMap.put("content", new NodedProducerFactory(node));
-
-      node = new CompositeProducerNode();
-      setupStartPageFactory( node );
-      if (node.getNrSubNodes()>0)
-        aFactoriesMap.put("startpage", new NodedProducerFactory(node));
-
-      node = new CompositeProducerNode();
-      setupSynchronizationFactory( node );
-      if (node.getNrSubNodes()>0)
-        aFactoriesMap.put("synchronization", new NodedProducerFactory(node));
-
-      node = new CompositeProducerNode();
-      setupStaticFactory( node );
-      if (node.getNrSubNodes()>0)
-        aFactoriesMap.put("static", new NodedProducerFactory(node));
-
-      node = new CompositeProducerNode();
-      setupTopicsFactory( node );
-      if (node.getNrSubNodes()>0)
-        aFactoriesMap.put("topics", new NodedProducerFactory(node));
-
-      aFactoriesMap.put("media",
-                   new CompositeProducerFactory( new ProducerFactory[] {
-                      new OldProducerAdapterFactory(new ProducerImages()),
-                      new OldProducerAdapterFactory(new ProducerAudio()),
-                      new OldProducerAdapterFactory(new ProducerVideo()),
-                      new OldProducerAdapterFactory(new ProducerOther())
+      aFactories.add(
+                   new CompositeProducerFactory("media", new ProducerFactory[] {
+                      new OldProducerAdapterFactory("images", new ProducerImages()),
+                      new OldProducerAdapterFactory("audio", new ProducerAudio()),
+                      new OldProducerAdapterFactory("video", new ProducerVideo()),
+                      new OldProducerAdapterFactory("other", new ProducerOther())
                   } )
       );
     }
@@ -173,4 +145,12 @@ public class MirBasicProducerLocalizer implements MirProducerLocalizer {
       throw new MirLocalizerFailure(e);
     }
   };
+
+  public void produceAllNew() {
+    MirGlobal.producerEngine().addTasks(allNewProducerTasks);
+  };
+
+  public ProducerFactory getFactoryForName(String aName) {
+    return (ProducerFactory) nameToFactory.get(aName);
+  }
 }