590422e5da12fc7ffa3e2f0eee9b2cc337fa8eaf
[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 GeneratingProducerNode(
436                       "/producer/indymedia.nl/static.template",
437                       "${config.storageRoot}/${language.code}/static/${content.edittitle}.shtml"
438                   )
439                 );
440
441       enumeratingNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
442       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", "" );
443
444       aFactoriesMap.put("staticarticles", new NodedProducerFactory(
445           new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
446             new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
447               enumeratingNode
448             )
449           )
450       ));
451     }
452     catch (Throwable t) {
453       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
454     }
455
456
457     try {
458       batchingNode =
459           new EntityBatchingProducerNode( "articles", "batch", model, "content",
460                 "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,
461             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
462               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
463                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
464                   new GeneratingProducerNode(
465                       "/producer/indymedia.nl/trashbin.template",
466                       "${config.storageRoot}/trashbin/${language.code}/trashbin${batch.current.identifier}.shtml"
467                   )
468                 )
469               )
470             ),
471             new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
472               new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
473                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
474                   new GeneratingProducerNode(
475                       "/producer/indymedia.nl/trashbinnavigation.template",
476                       "${config.storageRoot}/trashbin/${language.code}/trashbinnavigation.inc"
477                   )
478                 )
479               )
480             )
481           );
482       batchingNode.addVerb("new", 3);
483       batchingNode.addVerb("all", -1);
484
485       aFactoriesMap.put("trashbin", new NodedProducerFactory( batchingNode ));
486     }
487     catch (Throwable t) {
488       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
489     }
490
491 // archives
492
493     try {
494       batchingNode =
495         new EntityBatchingProducerNode( "articles", "batch", model, "content",
496               "is_published='1' and to_article_type = ${articletype.feature}", "webdb_create asc, date asc", 20, 10, 0,
497           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
498             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
499               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
500                 new GeneratingProducerNode(
501                     "/producer/indymedia.nl/feature.archive.template",
502                     "${config.storageRoot}/${language.code}/feature/feature${batch.current.identifier}.shtml"
503                 )
504               )
505             )
506           ),
507           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
508             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
509               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
510                 new GeneratingProducerNode(
511                     "/producer/indymedia.nl/feature.archive.navigation.template",
512                     "${config.storageRoot}/${language.code}/feature/featurenavigation.inc"
513                 )
514               )
515             )
516           )
517         );
518       batchingNode.addVerb("all", -1);
519       batchingNode.addVerb("new", 3);
520
521       aFactoriesMap.put("featurearchive", new NodedProducerFactory( batchingNode ));
522     }
523     catch (Throwable t) {
524       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
525     }
526
527     try {
528       batchingNode =
529         new EntityBatchingProducerNode( "articles", "batch", model, "content",
530               "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
531           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
532             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
533               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
534                 new GeneratingProducerNode(
535                     "/producer/indymedia.nl/newswire.archive.template",
536                     "${config.storageRoot}/${language.code}/newswire/newswire${batch.current.identifier}.shtml"
537                 )
538               )
539             )
540           ),
541           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
542             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
543               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
544                 new GeneratingProducerNode(
545                     "/producer/indymedia.nl/newswire.archive.navigation.template",
546                     "${config.storageRoot}/${language.code}/newswire/newswirenavigation.inc"
547                 )
548               )
549             )
550           )
551         );
552       batchingNode.addVerb("all", -1);
553       batchingNode.addVerb("new", 3);
554
555       aFactoriesMap.put("newswirearchive", new NodedProducerFactory( batchingNode ));
556     }
557     catch (Throwable t) {
558       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
559     }
560
561     try {
562       batchingNode =
563         new EntityBatchingProducerNode( "articles", "batch", model, "content",
564               "is_published='1' and to_article_type in (${articletype.openposting}, ${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
565           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
566             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
567               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
568                 new GeneratingProducerNode(
569                     "/producer/indymedia.nl/openposting.archive.template",
570                     "${config.storageRoot}/${language.code}/openposting/openposting${batch.current.identifier}.shtml"
571                 )
572               )
573             )
574           ),
575           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
576             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
577               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
578                 new GeneratingProducerNode(
579                     "/producer/indymedia.nl/openposting.archive.navigation.template",
580                     "${config.storageRoot}/${language.code}/openposting/openpostingnavigation.inc"
581                 )
582               )
583             )
584           )
585         );
586       batchingNode.addVerb("all", -1);
587       batchingNode.addVerb("new", 3);
588
589       aFactoriesMap.put("openpostingarchive", new NodedProducerFactory( batchingNode ));
590     }
591     catch (Throwable t) {
592       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
593     }
594
595     try {
596       node =
597         new EntityListProducerNode( "articles", model, "content",
598               "is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
599               "(select max(webdb_create) from comment where to_media=content.id and is_published='t') desc", 30, 0,
600           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
601             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
602               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
603                 new GeneratingProducerNode(
604                     "/producer/indymedia.nl/commentedarticles.template",
605                     "${config.storageRoot}/${language.code}/commentedarticles.shtml"
606                 )
607               )
608             )
609           )
610         );
611       aFactoriesMap.put("commentedarticles", new NodedProducerFactory( node ));
612     }
613     catch (Throwable t) {
614       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
615     }
616
617     try {
618       node =
619         new EntityListProducerNode( "articles", model, "content",
620               "is_published='1' and to_article_type = ${articletype.opentrashed}", "webdb_create desc, date desc", 30, 0,
621           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
622             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
623               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
624                 new GeneratingProducerNode(
625                     "/producer/indymedia.nl/opentrashbin.template",
626                     "${config.storageRoot}/${language.code}/opentrashbin.shtml"
627                 )
628               )
629             )
630           )
631         );
632       aFactoriesMap.put("opentrashbin", new NodedProducerFactory( node ));
633     }
634     catch (Throwable t) {
635       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
636     }
637
638     try {
639       node =
640         new EntityListProducerNode( "articles", model, "content",
641               "is_published='1' and length(source)>10 and id>5000 and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
642               "webdb_create desc, date desc", 10, 0,
643           new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
644             new EntityEnumeratingProducerNode( "language", model, "language", "code in ('en')", "",
645               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
646                 new GeneratingProducerNode(
647                     "/producer/indymedia.nl/featuressyndication.template",
648                     "${config.storageRoot}/features.1-0.rdf",
649                     "UTF-8"
650                 )
651               )
652             )
653           )
654         );
655       aFactoriesMap.put("syndication", new NodedProducerFactory( node ));
656     }
657     catch (Throwable t) {
658       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
659     }
660
661     try {
662       node =
663           new EntityEnumeratingProducerNode( "content", model, "content", "to_article_type = ${articletype.opentrashed} and webdb_create<now()-interval '5 days'", "",
664             new ContentModifyingProducerNode(
665               "content",
666               "to_article_type",
667               "${articletype.trashed}"
668             )
669           );
670       aFactoriesMap.put("trashbinmover", new NodedProducerFactory( node ));
671     }
672     catch (Throwable t) {
673       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
674     }
675   }
676 }