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;
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());
}
}
- 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());
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,
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())
} )
);
}
throw new MirLocalizerFailure(e);
}
};
+
+ public void produceAllNew() {
+ MirGlobal.producerEngine().addTasks(allNewProducerTasks);
+ };
+
+ public ProducerFactory getFactoryForName(String aName) {
+ return (ProducerFactory) nameToFactory.get(aName);
+ }
}