ae83f8f22e4442638f5a642ca8e54b79f10cd33a
[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 /*                    ,
297                     new AssignmentProducerNode( "staticinclude", "0",
298                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
299                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
300                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
301                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
302                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/try/${language.code}/features.inc",
303                         new GeneratingProducerNode(
304                             "/producer/indymedia.nl/start.template",
305                             "${config.storageRoot}/try/${language.code}/start.shtml"
306                         )
307                       )))))
308                     )
309 */
310                   } )
311                 )
312               )
313           )
314       );
315     }
316     catch (Throwable t) {
317       logger.printError("IndyNLProducerLocalizer.setupStaticFactory Exception "+t.getMessage());
318     }
319   }
320
321   protected void setupFactories(Map aFactoriesMap ) {
322     super.setupFactories(aFactoriesMap);
323
324     ProducerNode node = null;
325     EntityBatchingProducerNode batchingNode = null;
326     EntityEnumeratingProducerNode enumeratingNode = null;
327
328 /*
329     try {
330       node =
331         new EntityListProducerNode("startspecials", model, "content",
332                 "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
333           new EntityListProducerNode("features", model, "content",
334                   "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
335             new EntityListProducerNode("breaking", model, "breakingNews",
336                       "", "webdb_create desc", 5, 0,
337               new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
338                 new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
339                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
340                       new GeneratingProducerNode(
341                           "/producer/indymedia.nl/features.template",
342                           "${config.storageRoot}/${language.code}/features.inc"
343                       )
344                   )
345                 )
346               )
347             )
348           )
349         );
350       aFactoriesMap.put("features", new NodedProducerFactory( node ) );
351     }
352     catch (Throwable t) {
353       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
354     }
355 */
356
357 /*
358     try {
359       node =
360           new EntityListProducerNode("features", model, "content",
361                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 15, 0,
362             new EntityListProducerNode("breaking", model, "breakingNews",
363                       "", "webdb_create desc", 5, 0,
364               new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
365                 new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
366                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
367                       new GeneratingProducerNode(
368                           "/producer/indymedia.nl/features.template",
369                           "${config.storageRoot}/try/${language.code}/features.inc"
370                       )
371                   )
372                 )
373               )
374             )
375           );
376       aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
377     }
378     catch (Throwable t) {
379       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
380     }
381 */
382
383     try {
384       batchingNode =
385           new EntityBatchingProducerNode( "comments", "batch", model, "comments",
386
387                 "", "id asc", 25, 15, 0,
388             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
389               new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
390                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
391                   new GeneratingProducerNode(
392                       "/producer/indymedia.nl/commentsindex.template",
393                       "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
394                   )
395                 )
396               )
397             ),
398             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
399               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
400                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
401                   new GeneratingProducerNode(
402                       "/producer/indymedia.nl/commentsindexnavigation.template",
403                       "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
404                   )
405                 )
406               )
407             )
408           );
409       batchingNode.addVerb("new", 3);
410       batchingNode.addVerb("all", -1);
411
412       aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
413     }
414     catch (Throwable t) {
415       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
416     }
417
418     try {
419       enumeratingNode =
420               new EntityEnumeratingProducerNode( "content", model, "content",
421                   new GeneratingProducerNode(
422                       "/producer/indymedia.nl/static.template",
423                       "${config.storageRoot}/${language.code}/static/${content.edittitle}.shtml"
424                   )
425                 );
426
427       enumeratingNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
428       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", "" );
429
430       aFactoriesMap.put("staticarticles", new NodedProducerFactory(
431           new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
432             new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
433               enumeratingNode
434             )
435           )
436       ));
437     }
438     catch (Throwable t) {
439       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
440     }
441
442
443     try {
444       batchingNode =
445           new EntityBatchingProducerNode( "articles", "batch", model, "content",
446                 "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,
447             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
448               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
449                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
450                   new GeneratingProducerNode(
451                       "/producer/indymedia.nl/trashbin.template",
452                       "${config.storageRoot}/trashbin/${language.code}/trashbin${batch.current.identifier}.shtml"
453                   )
454                 )
455               )
456             ),
457             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
458               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
459                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
460                   new GeneratingProducerNode(
461                       "/producer/indymedia.nl/trashbinnavigation.template",
462                       "${config.storageRoot}/trashbin/${language.code}/trashbinnavigation.inc"
463                   )
464                 )
465               )
466             )
467           );
468       batchingNode.addVerb("new", 3);
469       batchingNode.addVerb("all", -1);
470
471       aFactoriesMap.put("trashbin", new NodedProducerFactory( batchingNode ));
472     }
473     catch (Throwable t) {
474       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
475     }
476
477 // archives
478
479     try {
480       batchingNode =
481         new EntityBatchingProducerNode( "articles", "batch", model, "content",
482               "is_published='1' and to_article_type = ${articletype.feature}", "webdb_create asc, date asc", 20, 10, 0,
483           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
484             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
485               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
486                 new GeneratingProducerNode(
487                     "/producer/indymedia.nl/feature.archive.template",
488                     "${config.storageRoot}/${language.code}/feature/feature${batch.current.identifier}.shtml"
489                 )
490               )
491             )
492           ),
493           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
494             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
495               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
496                 new GeneratingProducerNode(
497                     "/producer/indymedia.nl/feature.archive.navigation.template",
498                     "${config.storageRoot}/${language.code}/feature/featurenavigation.inc"
499                 )
500               )
501             )
502           )
503         );
504       batchingNode.addVerb("all", -1);
505       batchingNode.addVerb("new", 3);
506
507       aFactoriesMap.put("featurearchive", new NodedProducerFactory( batchingNode ));
508     }
509     catch (Throwable t) {
510       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
511     }
512
513     try {
514       batchingNode =
515         new EntityBatchingProducerNode( "articles", "batch", model, "content",
516               "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
517           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
518             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
519               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
520                 new GeneratingProducerNode(
521                     "/producer/indymedia.nl/newswire.archive.template",
522                     "${config.storageRoot}/${language.code}/newswire/newswire${batch.current.identifier}.shtml"
523                 )
524               )
525             )
526           ),
527           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
528             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
529               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
530                 new GeneratingProducerNode(
531                     "/producer/indymedia.nl/newswire.archive.navigation.template",
532                     "${config.storageRoot}/${language.code}/newswire/newswirenavigation.inc"
533                 )
534               )
535             )
536           )
537         );
538       batchingNode.addVerb("all", -1);
539       batchingNode.addVerb("new", 3);
540
541       aFactoriesMap.put("newswirearchive", new NodedProducerFactory( batchingNode ));
542     }
543     catch (Throwable t) {
544       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
545     }
546
547     try {
548       batchingNode =
549         new EntityBatchingProducerNode( "articles", "batch", model, "content",
550               "is_published='1' and to_article_type in (${articletype.openposting}, ${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
551           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
552             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
553               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
554                 new GeneratingProducerNode(
555                     "/producer/indymedia.nl/openposting.archive.template",
556                     "${config.storageRoot}/${language.code}/openposting/openposting${batch.current.identifier}.shtml"
557                 )
558               )
559             )
560           ),
561           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
562             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
563               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
564                 new GeneratingProducerNode(
565                     "/producer/indymedia.nl/openposting.archive.navigation.template",
566                     "${config.storageRoot}/${language.code}/openposting/openpostingnavigation.inc"
567                 )
568               )
569             )
570           )
571         );
572       batchingNode.addVerb("all", -1);
573       batchingNode.addVerb("new", 3);
574
575       aFactoriesMap.put("openpostingarchive", new NodedProducerFactory( batchingNode ));
576     }
577     catch (Throwable t) {
578       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
579     }
580
581     try {
582       node =
583         new EntityListProducerNode( "articles", model, "content",
584               "is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
585               "(select max(webdb_create) from comment where to_media=content.id and is_published='t') desc", 30, 0,
586           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
587             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
588               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
589                 new GeneratingProducerNode(
590                     "/producer/indymedia.nl/commentedarticles.template",
591                     "${config.storageRoot}/${language.code}/commentedarticles.shtml"
592                 )
593               )
594             )
595           )
596         );
597       aFactoriesMap.put("commentedarticles", new NodedProducerFactory( node ));
598     }
599     catch (Throwable t) {
600       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
601     }
602
603     try {
604       node =
605         new EntityListProducerNode( "articles", model, "content",
606               "is_published='1' and to_article_type = ${articletype.opentrashed}", "webdb_create desc, date desc", 30, 0,
607           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
608             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
609               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
610                 new GeneratingProducerNode(
611                     "/producer/indymedia.nl/opentrashbin.template",
612                     "${config.storageRoot}/${language.code}/opentrashbin.shtml"
613                 )
614               )
615             )
616           )
617         );
618       aFactoriesMap.put("opentrashbin", new NodedProducerFactory( node ));
619     }
620     catch (Throwable t) {
621       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
622     }
623
624     try {
625       node =
626         new EntityListProducerNode( "articles", model, "content",
627               "is_published='1' and length(source)>10 and id>5000 and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
628               "webdb_create desc, date desc", 10, 0,
629           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
630             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('en')", "",
631               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
632                 new GeneratingProducerNode(
633                     "/producer/indymedia.nl/featuressyndication.template",
634                     "${config.storageRoot}/features.1-0.rdf",
635                     "UTF-8"
636                 )
637               )
638             )
639           )
640         );
641       aFactoriesMap.put("syndication", new NodedProducerFactory( node ));
642     }
643     catch (Throwable t) {
644       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
645     }
646
647     try {
648       node =
649           new EntityEnumeratingProducerNode( "content", model, "content", "to_article_type = ${articletype.opentrashed} and webdb_create<now()-interval '5 days'", "",
650             new ContentModifyingProducerNode(
651               "content",
652               "to_article_type",
653               "${articletype.trashed}"
654             )
655           );
656       aFactoriesMap.put("trashbinmover", new NodedProducerFactory( node ));
657     }
658     catch (Throwable t) {
659       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
660     }
661   }
662 }