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