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