1 package mircoders.localizer.basic;
6 import mir.generator.*;
7 import mir.producer.reader.*;
10 import mir.entity.adapter.*;
11 import mircoders.global.*;
12 import mircoders.global.*;
13 import mircoders.localizer.*;
14 import mircoders.producer.reader.*;
15 import mircoders.producer.*;
17 public class MirBasicProducerLocalizer implements MirProducerLocalizer {
18 private Map producerFactories;
19 protected FileMonitor fileMonitor;
20 protected EntityAdapterModel model;
21 protected Generator.GeneratorLibrary generatorLibrary;
22 protected WriterEngine writerEngine;
24 protected static Logfile logger = Logfile.getInstance( MirGlobal.getConfigProperty("Home") + "/" + MirGlobal.getConfigProperty("Mir.Localizer.Logfile"));
26 public MirBasicProducerLocalizer() {
29 producerFactories = new HashMap();
30 model = MirGlobal.localizer().dataModel().adapterModel();
31 generatorLibrary = MirGlobal.localizer().generators().makeGeneratorLibrary();
32 writerEngine = MirGlobal.localizer().generators().makeWriterEngine();
35 logger.printError("MirBasicProducerLocalizer(): Exception "+t.getMessage());
36 model = new EntityAdapterModel();
40 public Map factories() throws MirLocalizerException {
41 if (fileMonitor==null || producerFactories == null || fileMonitor.hasChanged()) {
43 Map newProducers = new HashMap();
44 FileMonitor newFileMonitor = new FileMonitor();
45 setupFactories(newProducers, newFileMonitor);
47 producerFactories = newProducers;
48 fileMonitor = newFileMonitor;
51 logger.printError("MirBasicProducerLocalizer.factories(): Unable to setup factories: "+t.getMessage());
55 return producerFactories;
58 protected void setupContentFactory(CompositeProducerNode aProducerNode) {
61 protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
64 protected void setupSynchronizationFactory(CompositeProducerNode aProducerNode) {
65 if(MirGlobal.getConfigBooleanProperty("Rsync")){
66 aProducerNode.addSubNode(
67 new ScriptCallingProducerNode(MirGlobal.getConfigProperty("Rsync.Script.Path"))
72 protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
75 protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
78 protected void setupProducerNodeBuilderLibrary(ProducerNodeBuilderLibrary aLibrary) {
79 DefaultProducerNodeBuilders.registerBuilders(aLibrary, model, generatorLibrary, writerEngine);
80 SupplementalProducerNodeBuilders.registerBuilders(aLibrary, model);
83 protected void setupFactories(Map aFactoriesMap, FileMonitor aFileMonitor) throws MirLocalizerException, MirLocalizerFailure {
84 ProducerConfigReader reader;
85 ProducerNodeBuilderLibrary library = new ProducerNodeBuilderLibrary();
86 setupProducerNodeBuilderLibrary(library);
87 List usedFiles = new Vector();
90 reader = new ProducerConfigReader();
91 reader.parseFile(MirGlobal.getConfigProperty("Home") + "/" + MirGlobal.getConfigProperty("Mir.Localizer.ProducerConfigFile"), library, aFactoriesMap, usedFiles);
93 Iterator i = usedFiles.iterator();
95 aFileMonitor.addFile((File) i.next());
97 setupFactories(aFactoriesMap);
100 protected void setupFactories(Map aFactoriesMap ) throws MirLocalizerException, MirLocalizerFailure {
101 CompositeProducerNode node;
104 node = new CompositeProducerNode();
105 setupContentFactory( node );
106 if (node.getNrSubNodes()>0)
107 aFactoriesMap.put("content", new NodedProducerFactory(node));
109 node = new CompositeProducerNode();
110 setupStartPageFactory( node );
111 if (node.getNrSubNodes()>0)
112 aFactoriesMap.put("startpage", new NodedProducerFactory(node));
114 node = new CompositeProducerNode();
115 setupSynchronizationFactory( node );
116 if (node.getNrSubNodes()>0)
117 aFactoriesMap.put("synchronization", new NodedProducerFactory(node));
119 node = new CompositeProducerNode();
120 setupStaticFactory( node );
121 if (node.getNrSubNodes()>0)
122 aFactoriesMap.put("static", new NodedProducerFactory(node));
124 node = new CompositeProducerNode();
125 setupTopicsFactory( node );
126 if (node.getNrSubNodes()>0)
127 aFactoriesMap.put("topics", new NodedProducerFactory(node));
129 aFactoriesMap.put("media",
130 new CompositeProducerFactory( new ProducerFactory[] {
131 new OldProducerAdapterFactory(new ProducerImages()),
132 new OldProducerAdapterFactory(new ProducerAudio()),
133 new OldProducerAdapterFactory(new ProducerVideo()),
134 new OldProducerAdapterFactory(new ProducerOther())
138 catch (Exception e) {
139 throw new MirLocalizerFailure(e);