indy.nl updates
[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
11 public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
12
13   protected void setupContentFactory(CompositeProducerNode aProducerNode) {
14     EntityEnumeratingProducerNode contentNode = null;
15
16     try {
17       // trashed comments
18       contentNode =
19           new EntityEnumeratingProducerNode( "content", model, "content",
20             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
21               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
22                 new GeneratingProducerNode(
23                     "/producer/indymedia.nl/trashedcomments.template",
24                     "${config.storageRoot}/trashed/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.trashed.shtml"
25                 )
26               )
27             )
28           );
29
30       contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "" );
31       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "" );
32
33       aProducerNode.addSubNode( contentNode );
34
35
36       // ordinary articles
37       contentNode =
38           new EntityEnumeratingProducerNode( "content", model, "content",
39             new CompositeProducerNode( new ProducerNode[] {
40               new GeneratingProducerNode(
41                   "/producer/indymedia.nl/content.template",
42                   "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
43               ),
44               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
45                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
46                     new CompositeProducerNode( new ProducerNode[] {
47                       new GeneratingProducerNode(
48                           "/producer/indymedia.nl/article.template",
49                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
50                       ),
51                       new FileDateSettingProducerNode(
52                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
53                           "content.date.date"
54                       )
55                     } )
56                 )
57               ),
58               new ContentMarkingProducerNode( "content" )
59             } )
60           );
61
62       contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and to_article_type<>${articletype.static}", "webdb_create desc, date desc" );
63       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and to_article_type<>${articletype.static}", "webdb_create desc, date desc" );
64
65       aProducerNode.addSubNode( contentNode );
66
67       // openly trashed articles
68       contentNode =
69           new EntityEnumeratingProducerNode( "content", model, "content",
70             new CompositeProducerNode( new ProducerNode[] {
71               new GeneratingProducerNode(
72                   "/producer/indymedia.nl/removed.template",
73                   "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
74               ),
75               new EntityEnumeratingProducerNode( "language", model, "language", "code = 'nl'", "",
76                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
77                     new CompositeProducerNode( new ProducerNode[] {
78                       new GeneratingProducerNode(
79                           "/producer/indymedia.nl/trashed.template",
80                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
81                       ),
82                       new FileDateSettingProducerNode(
83                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
84                           "content.date.date"
85                       ),
86                       new ContentMarkingProducerNode( "content" )
87                     } )
88                 )
89               ),
90               new ContentMarkingProducerNode( "content" )
91             })
92           );
93       contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.opentrashed}", "" );
94       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.opentrashed}", "" );
95
96       aProducerNode.addSubNode( contentNode );
97
98       // closedly trashed articles
99       contentNode =
100           new EntityEnumeratingProducerNode( "content", model, "content",
101             new CompositeProducerNode( new ProducerNode[] {
102               new GeneratingProducerNode(
103                   "/producer/indymedia.nl/removed.template",
104                   "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
105               ),
106               new EntityEnumeratingProducerNode( "language", model, "language", "code = 'nl'", "",
107                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
108                     new CompositeProducerNode( new ProducerNode[] {
109                       new GeneratingProducerNode(
110                           "/producer/indymedia.nl/removed.template",
111                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
112                       ),
113                       new GeneratingProducerNode(
114                           "/producer/indymedia.nl/trashed.template",
115                           "${config.storageRoot}/trashed/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
116                       ),
117                       new FileDateSettingProducerNode(
118                           "${config.storageRoot}/trashed/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
119                           "content.date.date"
120                       ),
121                       new ContentMarkingProducerNode( "content" )
122                     } )
123                 )
124               ),
125               new ContentMarkingProducerNode( "content" )
126             })
127           );
128       contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.trashed}", "" );
129       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.trashed}", "" );
130
131       aProducerNode.addSubNode( contentNode );
132     }
133     catch (Throwable t) {
134       logger.printError("IndyNLProducerLocalizer.setupContentFactory: Exception "+t.getMessage());
135     }
136
137   }
138
139   protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
140     try {
141       aProducerNode.addSubNode(
142             new EntityListProducerNode("newswire", model, "content",
143                     "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 40, 0,
144               new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
145                     new CompositeProducerNode( new ProducerNode[] {
146                         new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
147                           new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
148                               new GeneratingProducerNode(
149                                   "/producer/indymedia.nl/newswire.template",
150                                   "${config.storageRoot}/${language.code}/newswire.inc"
151                               )
152                           )
153                         ),
154                         new EntityListProducerNode("startspecials", model, "content",
155                                 "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
156                           new EntityListProducerNode("features", model, "content",
157                                   "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 15, 0,
158                             new EntityListProducerNode("breaking", model, "breakingNews",
159                                       "", "webdb_create desc", 5, 0,
160                               new CompositeProducerNode( new ProducerNode[] {
161                                 new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
162                                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
163                                     new GeneratingProducerNode(
164                                         "/producer/indymedia.nl/features.template",
165                                         "${config.storageRoot}/${language.code}/features.inc"
166                                     )
167                                   )
168                                 ),
169                                 new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
170                                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
171                                     new AssignmentProducerNode( "staticinclude", "1",
172                                       new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
173                                       new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
174                                       new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
175                                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
176                                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
177                                         new GeneratingProducerNode(
178                                             "/producer/indymedia.nl/start.template",
179                                             "${config.storageRoot}/index.shtml"
180                                         )
181                                       )))))
182                                     )
183                                   )
184                                 )
185                               } )
186                             )
187                           )
188                         )
189                     })
190               )
191             )
192       );
193     }
194     catch (Throwable t) {
195       logger.printError("IndyNLProducerLocalizer.setupStartPageFactory: Exception "+t.getMessage());
196     }
197   }
198
199   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
200     EntityBatchingProducerNode topicPageNode = null;
201
202     try {
203       topicPageNode =
204         new EntityBatchingProducerNode( "articles", "batch", model, "content",
205               "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire}) and id in (select content_id from content_x_topic where topic_id = ${topic.id})", "webdb_create asc, date asc", 20, 10, 0,
206           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
207             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
208               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
209                 new GeneratingProducerNode(
210                     "/producer/indymedia.nl/topic.template",
211                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
212                 )
213               )
214             )
215           ),
216           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
217             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
218               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
219                 new GeneratingProducerNode(
220                     "/producer/indymedia.nl/topicnavigation.template",
221                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
222                 )
223               )
224             )
225           )
226         );
227       topicPageNode.addVerb("all", -1);
228       topicPageNode.addVerb("new", 3);
229
230       aProducerNode.addSubNode(
231           new EntityEnumeratingProducerNode( "topic", model, "topic","", "",
232             new EntityListProducerNode("topicspecial", model, "content",
233                   "is_published='1' and to_article_type = ${articletype.topicspecial} and id in (select content_id from content_x_topic where topic_id = ${topic.id})", "date, webdb_create", 1, 0,
234               topicPageNode
235             )
236           )
237       );
238     }
239     catch (Throwable t) {
240       logger.printError("IndyNLProducerLocalizer.setupTopicsFactory Exception "+t.getMessage());
241     }
242   }
243
244
245   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
246     try {
247       aProducerNode.addSubNode(
248           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
249               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
250                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
251                   new CompositeProducerNode( new ProducerNode[] {
252                     new GeneratingProducerNode(
253                         "/producer/indymedia.nl/nav.template",
254                         "${config.storageRoot}/${language.code}/nav.inc"
255                     ),
256                     new GeneratingProducerNode(
257                         "/producer/indymedia.nl/top.template",
258                         "${config.storageRoot}/${language.code}/top.inc"
259                     ),
260                     new GeneratingProducerNode(
261                         "/producer/indymedia.nl/bottom.template",
262                         "${config.storageRoot}/${language.code}/bottom.inc"
263                     ),
264                     new GeneratingProducerNode(
265                         "/producer/indymedia.nl/style.template",
266                         "${config.storageRoot}/${language.code}/style.css"
267                     ),
268                     new GeneratingProducerNode(
269                         "/producer/indymedia.nl/style2.template",
270                         "${config.storageRoot}/${language.code}/style2.css"
271                     ),
272                     new GeneratingProducerNode(
273                         "/producer/indymedia.nl/trashtop.template",
274                         "${config.storageRoot}/${language.code}/trashtop.inc"
275                     ),
276                     new GeneratingProducerNode(
277                         "/producer/indymedia.nl/articlepre.template",
278                         "${config.storageRoot}/${language.code}/articlepre.shtml"
279                     ),
280                     new GeneratingProducerNode(
281                         "/producer/indymedia.nl/articlepost.template",
282                         "${config.storageRoot}/${language.code}/articlepost.shtml"
283                     ),
284                     new AssignmentProducerNode( "staticinclude", "0",
285                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
286                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
287                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
288                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
289                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/${language.code}/features.inc",
290                         new GeneratingProducerNode(
291                             "/producer/indymedia.nl/start.template",
292                             "${config.storageRoot}/${language.code}/start.shtml"
293                         )
294                       )))))
295                     ),
296                     new AssignmentProducerNode( "staticinclude", "0",
297                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
298                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
299                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
300                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
301                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/try/${language.code}/features.inc",
302                         new GeneratingProducerNode(
303                             "/producer/indymedia.nl/start.template",
304                             "${config.storageRoot}/try/${language.code}/start.shtml"
305                         )
306                       )))))
307                     )
308                   } )
309                 )
310               )
311           )
312       );
313     }
314     catch (Throwable t) {
315       logger.printError("IndyNLProducerLocalizer.setupStaticFactory Exception "+t.getMessage());
316     }
317   }
318
319   protected void setupFactories(Map aFactoriesMap ) {
320     super.setupFactories(aFactoriesMap);
321
322     ProducerNode node = null;
323     EntityBatchingProducerNode batchingNode = null;
324     EntityEnumeratingProducerNode enumeratingNode = null;
325
326 /*
327     try {
328       node =
329         new EntityListProducerNode("startspecials", model, "content",
330                 "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
331           new EntityListProducerNode("features", model, "content",
332                   "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
333             new EntityListProducerNode("breaking", model, "breakingNews",
334                       "", "webdb_create desc", 5, 0,
335               new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
336                 new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
337                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
338                       new GeneratingProducerNode(
339                           "/producer/indymedia.nl/features.template",
340                           "${config.storageRoot}/${language.code}/features.inc"
341                       )
342                   )
343                 )
344               )
345             )
346           )
347         );
348       aFactoriesMap.put("features", new NodedProducerFactory( node ) );
349     }
350     catch (Throwable t) {
351       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
352     }
353 */
354
355 /*
356     try {
357       node =
358           new EntityListProducerNode("features", model, "content",
359                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 15, 0,
360             new EntityListProducerNode("breaking", model, "breakingNews",
361                       "", "webdb_create desc", 5, 0,
362               new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
363                 new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
364                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
365                       new GeneratingProducerNode(
366                           "/producer/indymedia.nl/features.template",
367                           "${config.storageRoot}/try/${language.code}/features.inc"
368                       )
369                   )
370                 )
371               )
372             )
373           );
374       aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
375     }
376     catch (Throwable t) {
377       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
378     }
379 */
380
381     try {
382       batchingNode =
383           new EntityBatchingProducerNode( "comments", "batch", model, "comments",
384
385                 "", "id asc", 25, 15, 0,
386             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
387               new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
388                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
389                   new GeneratingProducerNode(
390                       "/producer/indymedia.nl/commentsindex.template",
391                       "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
392                   )
393                 )
394               )
395             ),
396             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
397               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
398                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
399                   new GeneratingProducerNode(
400                       "/producer/indymedia.nl/commentsindexnavigation.template",
401                       "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
402                   )
403                 )
404               )
405             )
406           );
407       batchingNode.addVerb("new", 3);
408       batchingNode.addVerb("all", -1);
409
410       aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
411     }
412     catch (Throwable t) {
413       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
414     }
415
416     try {
417       enumeratingNode =
418               new EntityEnumeratingProducerNode( "content", model, "content",
419                   new GeneratingProducerNode(
420                       "/producer/indymedia.nl/static.template",
421                       "${config.storageRoot}/${language.code}/static/${content.edittitle}.shtml"
422                   )
423                 );
424
425       enumeratingNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
426       enumeratingNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
427
428       aFactoriesMap.put("staticarticles", new NodedProducerFactory(
429           new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
430             new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
431               enumeratingNode
432             )
433           )
434       ));
435     }
436     catch (Throwable t) {
437       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
438     }
439
440
441     try {
442       batchingNode =
443           new EntityBatchingProducerNode( "articles", "batch", model, "content",
444                 "to_article_type=${articletype.trashed} or exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "webdb_create asc, date asc", 25, 15, 0,
445             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
446               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
447                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
448                   new GeneratingProducerNode(
449                       "/producer/indymedia.nl/trashbin.template",
450                       "${config.storageRoot}/trashbin/${language.code}/trashbin${batch.current.identifier}.shtml"
451                   )
452                 )
453               )
454             ),
455             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
456               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
457                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
458                   new GeneratingProducerNode(
459                       "/producer/indymedia.nl/trashbinnavigation.template",
460                       "${config.storageRoot}/trashbin/${language.code}/trashbinnavigation.inc"
461                   )
462                 )
463               )
464             )
465           );
466       batchingNode.addVerb("new", 3);
467       batchingNode.addVerb("all", -1);
468
469       aFactoriesMap.put("trashbin", new NodedProducerFactory( batchingNode ));
470     }
471     catch (Throwable t) {
472       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
473     }
474
475 // archives
476
477     try {
478       batchingNode =
479         new EntityBatchingProducerNode( "articles", "batch", model, "content",
480               "is_published='1' and to_article_type = ${articletype.feature}", "webdb_create asc, date asc", 20, 10, 0,
481           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
482             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
483               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
484                 new GeneratingProducerNode(
485                     "/producer/indymedia.nl/feature.archive.template",
486                     "${config.storageRoot}/${language.code}/feature/feature${batch.current.identifier}.shtml"
487                 )
488               )
489             )
490           ),
491           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
492             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
493               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
494                 new GeneratingProducerNode(
495                     "/producer/indymedia.nl/feature.archive.navigation.template",
496                     "${config.storageRoot}/${language.code}/feature/featurenavigation.inc"
497                 )
498               )
499             )
500           )
501         );
502       batchingNode.addVerb("all", -1);
503       batchingNode.addVerb("new", 3);
504
505       aFactoriesMap.put("featurearchive", new NodedProducerFactory( batchingNode ));
506     }
507     catch (Throwable t) {
508       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
509     }
510
511     try {
512       batchingNode =
513         new EntityBatchingProducerNode( "articles", "batch", model, "content",
514               "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
515           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
516             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
517               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
518                 new GeneratingProducerNode(
519                     "/producer/indymedia.nl/newswire.archive.template",
520                     "${config.storageRoot}/${language.code}/newswire/newswire${batch.current.identifier}.shtml"
521                 )
522               )
523             )
524           ),
525           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
526             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
527               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
528                 new GeneratingProducerNode(
529                     "/producer/indymedia.nl/newswire.archive.navigation.template",
530                     "${config.storageRoot}/${language.code}/newswire/newswirenavigation.inc"
531                 )
532               )
533             )
534           )
535         );
536       batchingNode.addVerb("all", -1);
537       batchingNode.addVerb("new", 3);
538
539       aFactoriesMap.put("newswirearchive", new NodedProducerFactory( batchingNode ));
540     }
541     catch (Throwable t) {
542       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
543     }
544
545     try {
546       batchingNode =
547         new EntityBatchingProducerNode( "articles", "batch", model, "content",
548               "is_published='1' and to_article_type in (${articletype.openposting}, ${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
549           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
550             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
551               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
552                 new GeneratingProducerNode(
553                     "/producer/indymedia.nl/openposting.archive.template",
554                     "${config.storageRoot}/${language.code}/openposting/openposting${batch.current.identifier}.shtml"
555                 )
556               )
557             )
558           ),
559           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
560             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
561               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
562                 new GeneratingProducerNode(
563                     "/producer/indymedia.nl/openposting.archive.navigation.template",
564                     "${config.storageRoot}/${language.code}/openposting/openpostingnavigation.inc"
565                 )
566               )
567             )
568           )
569         );
570       batchingNode.addVerb("all", -1);
571       batchingNode.addVerb("new", 3);
572
573       aFactoriesMap.put("openpostingarchive", new NodedProducerFactory( batchingNode ));
574     }
575     catch (Throwable t) {
576       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
577     }
578
579     try {
580       node =
581         new EntityListProducerNode( "articles", model, "content",
582               "is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
583               "(select max(webdb_create) from comment where to_media=content.id and is_published='t') desc", 30, 0,
584           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
585             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
586               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
587                 new GeneratingProducerNode(
588                     "/producer/indymedia.nl/commentedarticles.template",
589                     "${config.storageRoot}/${language.code}/commentedarticles.shtml"
590                 )
591               )
592             )
593           )
594         );
595       aFactoriesMap.put("commentedarticles", new NodedProducerFactory( node ));
596     }
597     catch (Throwable t) {
598       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
599     }
600
601     try {
602       node =
603         new EntityListProducerNode( "articles", model, "content",
604               "is_published='1' and to_article_type = ${articletype.opentrashed}", "webdb_create desc, date desc", 30, 0,
605           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
606             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
607               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
608                 new GeneratingProducerNode(
609                     "/producer/indymedia.nl/opentrashbin.template",
610                     "${config.storageRoot}/${language.code}/opentrashbin.shtml"
611                 )
612               )
613             )
614           )
615         );
616       aFactoriesMap.put("opentrashbin", new NodedProducerFactory( node ));
617     }
618     catch (Throwable t) {
619       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
620     }
621
622     try {
623       node =
624         new EntityListProducerNode( "articles", model, "content",
625               "is_published='1' and length(source)>10 and id>5000 and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
626               "webdb_create desc, date desc", 10, 0,
627           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
628             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('en')", "",
629               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
630                 new GeneratingProducerNode(
631                     "/producer/indymedia.nl/featuressyndication.template",
632                     "${config.storageRoot}/features.1-0.rdf",
633                     "UTF-8"
634                 )
635               )
636             )
637           )
638         );
639       aFactoriesMap.put("syndication", new NodedProducerFactory( node ));
640     }
641     catch (Throwable t) {
642       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
643     }
644
645     try {
646       node =
647           new EntityEnumeratingProducerNode( "content", model, "content", "to_article_type = ${articletype.opentrashed} and webdb_create<now()-interval '5 days'", "",
648             new ContentModifyingProducerNode(
649               "content",
650               "to_article_type",
651               "${articletype.trashed}"
652             )
653           );
654       aFactoriesMap.put("trashbinmover", new NodedProducerFactory( node ));
655     }
656     catch (Throwable t) {
657       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
658     }
659   }
660 }