5ecb03ff66a40fcef66854f1c45890b2aac73a65
[mir.git] / source / mirlocal / indymedia.nl / IndyNLProducerLocalizer.java
1 package mirlocal.indymedia.nl;
2
3 import java.util.*;
4 import mir.producer.*;
5 import mircoders.global.*;
6 import mircoders.localizer.*;
7 import mircoders.localizer.basic.*;
8 import mircoders.producer.*;
9 import mircoders.storage.*;
10 import mircoders.entity.adapter.*;
11
12 public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
13
14   protected void setupContentFactory(CompositeProducerFactory aContentFactory) {
15     EntityEnumeratingProducerNode contentNode = null;
16
17     try {
18       contentNode =
19           new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
20             new CompositeProducerNode( new ProducerNode[] {
21               new GeneratingProducerNode(
22                   "/producer/indymedia.nl/content.template",
23                   "${config.storageRoot}/content/${content.date.year}/${content.date.month}/${content.id}.inc"
24               ),
25               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
26                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
27                     new CompositeProducerNode( new ProducerNode[] {
28                       new GeneratingProducerNode(
29                           "/producer/indymedia.nl/article.template",
30                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date..formatted.MM}/${content.id}.shtml"
31                       ),
32                       new FileDateSettingProducerNode(
33                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date..formatted.MM}/${content.id}.shtml",
34                           "content.date.date"
35                       )
36                     } )
37                 )
38               )
39             } )
40           );
41     }
42     catch (Throwable t) {
43     }
44
45     contentNode.addVerb( "all", "is_published='1'", "" );
46     contentNode.addVerb( "all", "is_published='1' and is_produced='f'", "" );
47
48     aContentFactory.addFactory( new NodedProducerFactory( contentNode ) );
49
50
51 /*
52     aContentFactory.addFactory(
53       new ContentProducerFactory(
54       "producer/content.template",
55       "bundles.admin",
56       MirGlobal.getConfigProperty("Producer.StorageRoot") + "/content/${contentyear}/${contentmonth}/${contentid}.inc",
57       Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
58
59     aContentFactory.addFactory(
60       new ContentProducerFactory(
61       "producer/article.template",
62       "bundles.admin",
63       MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/${contentyear}/${contentmonth}/${contentid}.shtml",
64       Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
65  */
66   }
67
68   protected void setupStartPageFactory(CompositeProducerFactory aStartPageFactory) {
69     ProducerNode startPageNode = null;
70
71     try {
72       startPageNode =
73             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
74                     "is_published='1' and to_article_type = 1", "date desc, webdb_create desc", 40, 0,
75               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
76                             "", "code", 10, 0,
77                     new CompositeProducerNode( new ProducerNode[] {
78                         new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
79                           new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
80                               new GeneratingProducerNode(
81                                   "/producer/indymedia.nl/newswire.template",
82                                   "${config.storageRoot}/${language.code}/newswire.inc"
83                               )
84                           )
85                         ),
86                         new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
87                                 "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
88                           new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
89                                     "", "webdb_create desc", 5, 0,
90                             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
91                                 new AssignmentProducerNode( "staticinclude", "1",
92                                   new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
93                                   new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
94                                   new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
95                                   new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
96                                   new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
97                                     new GeneratingProducerNode(
98                                         "/producer/indymedia.nl/start.template",
99                                         "${config.storageRoot}/index.shtml"
100                                     )
101                                   )))))
102                                 )
103                             )
104                           )
105                         )
106                     })
107               )
108             );
109     }
110     catch (Throwable t) {
111     }
112
113     aStartPageFactory.addFactory( new NodedProducerFactory( startPageNode ) );
114 /*
115     aStartPageFactory.addFactory(
116       new StartPageProducerFactory(
117           "producer/start.template",
118           "bundles.admin",
119           MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start.shtml",
120           MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
121           0));
122
123     aStartPageFactory.addFactory(
124       new StartPageProducerFactory(
125           "producer/newswire.template",
126           "bundles.admin",
127           MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire.inc",
128           0,
129           MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
130 */
131   }
132
133   protected void setupSynchronizationFactory(CompositeProducerFactory aSynchronizationFactory) {
134     if(MirGlobal.getConfigBooleanProperty("Rsync")){
135       aSynchronizationFactory.addFactory(
136         new ScriptCallProducerFactory(MirGlobal.getConfigProperty("Rsync.Script.Path")));
137     }
138     else {
139       NullProducerFactory nullFactory = new NullProducerFactory();
140       nullFactory.addVerb("run");
141       aSynchronizationFactory.addFactory(nullFactory);
142     }
143   }
144
145   protected void setupStaticFactory(CompositeProducerFactory aStaticFactory) {
146     ProducerNode staticNode = null;
147
148     try {
149       staticNode =
150           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
151                   "", "code", 10, 0,
152               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
153                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
154                   new CompositeProducerNode( new ProducerNode[] {
155                     new GeneratingProducerNode(
156                         "/producer/indymedia.nl/nav.template",
157                         "${config.storageRoot}/${language.code}/nav.inc"
158                     ),
159                     new GeneratingProducerNode(
160                         "/producer/indymedia.nl/top.template",
161                         "${config.storageRoot}/${language.code}/top.inc"
162                     ),
163                     new GeneratingProducerNode(
164                         "/producer/indymedia.nl/bottom.template",
165                         "${config.storageRoot}/${language.code}/bottom.inc"
166                     ),
167                     new GeneratingProducerNode(
168                         "/producer/indymedia.nl/style.template",
169                         "${config.storageRoot}/${language.code}/style.css"
170                     ),
171                     new GeneratingProducerNode(
172                         "/producer/indymedia.nl/top.template",
173                         "${config.storageRoot}/${language.code}/top.inc"
174                     ),
175                     new GeneratingProducerNode(
176                         "/producer/indymedia.nl/articlepre.template",
177                         "${config.storageRoot}/${language.code}/articlepre.shtml"
178                     ),
179                     new GeneratingProducerNode(
180                         "/producer/indymedia.nl/articlepost.template",
181                         "${config.storageRoot}/${language.code}/articlepost.shtml"
182                     ),
183                     new AssignmentProducerNode( "staticinclude", "0",
184                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
185                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
186                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
187                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
188                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/${language.code}/features.inc",
189                         new GeneratingProducerNode(
190                             "/producer/indymedia.nl/start.template",
191                             "${config.storageRoot}/${language.code}/start.shtml"
192                         )
193                       )))))
194                     ),
195                     new AssignmentProducerNode( "staticinclude", "0",
196                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
197                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
198                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
199                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
200                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/try/${language.code}/features.inc",
201                         new GeneratingProducerNode(
202                             "/producer/indymedia.nl/start.template",
203                             "${config.storageRoot}/try/${language.code}/start.shtml"
204                         )
205                       )))))
206                     )
207                   } )
208                 )
209               )
210           );
211     }
212     catch (Throwable t) {
213     }
214
215     aStaticFactory.addFactory( new NodedProducerFactory( staticNode ) );
216   }
217
218   protected void setupFactories(Map aFactoriesMap ) {
219     super.setupFactories(aFactoriesMap);
220
221     ProducerNode node = null;
222
223     try {
224       node =
225           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
226                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
227             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
228                       "", "webdb_create desc", 5, 0,
229               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
230                         "", "code", 10, 0,
231                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
232                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
233                       new GeneratingProducerNode(
234                           "/producer/indymedia.nl/features.template",
235                           "${config.storageRoot}/${language.code}/features.inc"
236                       )
237                   )
238                 )
239               )
240             )
241           );
242     }
243     catch (Throwable t) {
244     }
245
246     aFactoriesMap.put("features", new NodedProducerFactory( node ) );
247
248     try {
249       node =
250           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
251                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
252             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
253                       "", "webdb_create desc", 5, 0,
254               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
255                         "", "code", 10, 0,
256                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
257                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
258                       new GeneratingProducerNode(
259                           "/producer/indymedia.nl/features.template",
260                           "${config.storageRoot}/try/${language.code}/features.inc"
261                       )
262                   )
263                 )
264               )
265             )
266           );
267     }
268     catch (Throwable t) {
269     }
270     aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
271
272 /*
273     aStartPageFactory.addFactory(
274       new StartPageProducerFactory(
275           "producer/start.template",
276           "bundles.admin",
277           MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start.shtml",
278           MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
279           0));
280
281     aStartPageFactory.addFactory(
282       new StartPageProducerFactory(
283           "producer/newswire.template",
284           "bundles.admin",
285           MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire.inc",
286           0,
287           MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
288 */
289   }
290 }