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