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