indynl updates
[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 import mircoders.entity.adapter.*;
11
12 public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
13
14   protected void setupContentFactory(CompositeProducerNode aProducerNode) {
15     EntityEnumeratingProducerNode contentNode = null;
16
17     try {
18       contentNode =
19           new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
20             new CompositeProducerNode( new ProducerNode[] {
21               new GeneratingProducerNode(
22                   "/producer/indymedia.nl/content.template",
23                   "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
24               ),
25               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
26                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
27                     new CompositeProducerNode( new ProducerNode[] {
28                       new GeneratingProducerNode(
29                           "/producer/indymedia.nl/article.template",
30                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
31                       ),
32                       new FileDateSettingProducerNode(
33                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
34                           "content.date.date"
35                       )
36                     } )
37                 )
38               )
39             } )
40           );
41
42       contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.static}", "" );
43       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.static}", "" );
44
45       aProducerNode.addSubNode( contentNode );
46
47
48       contentNode =
49           new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
50             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
51               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
52                   new CompositeProducerNode( new ProducerNode[] {
53                     new GeneratingProducerNode(
54                         "/producer/indymedia.nl/trashed.template",
55                         "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
56                     ),
57                     new FileDateSettingProducerNode(
58                         "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
59                         "content.date.date"
60                     )
61                   } )
62               )
63             )
64           );
65       contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.trashed}", "" );
66       contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.trashed}", "" );
67
68       aProducerNode.addSubNode( contentNode );
69     }
70     catch (Throwable t) {
71       logger.printError("IndyNLProducerLocalizer.setupContentFactory: Exception "+t.getMessage());
72     }
73
74   }
75
76   protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
77     try {
78       aProducerNode.addSubNode(
79             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
80                     "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 40, 0,
81               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
82                             "", "code", 10, 0,
83                     new CompositeProducerNode( new ProducerNode[] {
84                         new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
85                           new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
86                               new GeneratingProducerNode(
87                                   "/producer/indymedia.nl/newswire.template",
88                                   "${config.storageRoot}/${language.code}/newswire.inc"
89                               )
90                           )
91                         ),
92                         new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
93                                 "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 10, 0,
94                           new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
95                                     "", "webdb_create desc", 5, 0,
96                             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
97                               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
98                                 new AssignmentProducerNode( "staticinclude", "1",
99                                   new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
100                                   new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
101                                   new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
102                                   new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
103                                   new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
104                                     new GeneratingProducerNode(
105                                         "/producer/indymedia.nl/start.template",
106                                         "${config.storageRoot}/index.shtml"
107                                     )
108                                   )))))
109                                 )
110                               )
111                             )
112                           )
113                         )
114                     })
115               )
116             )
117       );
118     }
119     catch (Throwable t) {
120       logger.printError("IndyNLProducerLocalizer.setupStartPageFactory: Exception "+t.getMessage());
121     }
122   }
123
124   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
125     EntityBatchingProducerNode topicPageNode = null;
126
127     try {
128       topicPageNode =
129         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
130               "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})", "date asc, webdb_create asc", 6, 5, 0,
131           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
132                   "", "code", 10, 0,
133             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
134               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
135                 new GeneratingProducerNode(
136                     "/producer/indymedia.nl/topic.template",
137                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
138                 )
139               )
140             )
141           ),
142           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
143                   "", "code", 10, 0,
144             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
145               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
146                 new GeneratingProducerNode(
147                     "/producer/indymedia.nl/topicnavigation.template",
148                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
149                 )
150               )
151             )
152           )
153         );
154       topicPageNode.addVerb("all", -1);
155       topicPageNode.addVerb("new", 3);
156
157       aProducerNode.addSubNode(
158           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "", "",
159             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
160                   "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,
161               topicPageNode
162             )
163           )
164       );
165     }
166     catch (Throwable t) {
167       logger.printError("IndyNLProducerLocalizer.setupTopicsFactory Exception "+t.getMessage());
168     }
169   }
170
171
172   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
173     try {
174       aProducerNode.addSubNode(
175           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
176                   "", "code", 10, 0,
177               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
178                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
179                   new CompositeProducerNode( new ProducerNode[] {
180                     new GeneratingProducerNode(
181                         "/producer/indymedia.nl/nav.template",
182                         "${config.storageRoot}/${language.code}/nav.inc"
183                     ),
184                     new GeneratingProducerNode(
185                         "/producer/indymedia.nl/top.template",
186                         "${config.storageRoot}/${language.code}/top.inc"
187                     ),
188                     new GeneratingProducerNode(
189                         "/producer/indymedia.nl/bottom.template",
190                         "${config.storageRoot}/${language.code}/bottom.inc"
191                     ),
192                     new GeneratingProducerNode(
193                         "/producer/indymedia.nl/style.template",
194                         "${config.storageRoot}/${language.code}/style.css"
195                     ),
196                     new GeneratingProducerNode(
197                         "/producer/indymedia.nl/style2.template",
198                         "${config.storageRoot}/${language.code}/style2.css"
199                     ),
200                     new GeneratingProducerNode(
201                         "/producer/indymedia.nl/top.template",
202                         "${config.storageRoot}/${language.code}/top.inc"
203                     ),
204                     new GeneratingProducerNode(
205                         "/producer/indymedia.nl/articlepre.template",
206                         "${config.storageRoot}/${language.code}/articlepre.shtml"
207                     ),
208                     new GeneratingProducerNode(
209                         "/producer/indymedia.nl/articlepost.template",
210                         "${config.storageRoot}/${language.code}/articlepost.shtml"
211                     ),
212                     new AssignmentProducerNode( "staticinclude", "0",
213                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
214                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
215                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
216                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
217                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/${language.code}/features.inc",
218                         new GeneratingProducerNode(
219                             "/producer/indymedia.nl/start.template",
220                             "${config.storageRoot}/${language.code}/start.shtml"
221                         )
222                       )))))
223                     ),
224                     new AssignmentProducerNode( "staticinclude", "0",
225                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
226                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
227                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
228                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
229                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/try/${language.code}/features.inc",
230                         new GeneratingProducerNode(
231                             "/producer/indymedia.nl/start.template",
232                             "${config.storageRoot}/try/${language.code}/start.shtml"
233                         )
234                       )))))
235                     )
236                   } )
237                 )
238               )
239           )
240       );
241     }
242     catch (Throwable t) {
243       logger.printError("IndyNLProducerLocalizer.setupStaticFactory Exception "+t.getMessage());
244     }
245   }
246
247   protected void setupFactories(Map aFactoriesMap ) {
248     super.setupFactories(aFactoriesMap);
249
250     ProducerNode node = null;
251     EntityBatchingProducerNode batchingNode = null;
252     EntityEnumeratingProducerNode enumeratingNode = null;
253
254     try {
255       node =
256           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
257                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
258             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
259                       "", "webdb_create desc", 5, 0,
260               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
261                         "", "code", 10, 0,
262                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
263                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
264                       new GeneratingProducerNode(
265                           "/producer/indymedia.nl/features.template",
266                           "${config.storageRoot}/${language.code}/features.inc"
267                       )
268                   )
269                 )
270               )
271             )
272           );
273       aFactoriesMap.put("features", new NodedProducerFactory( node ) );
274     }
275     catch (Throwable t) {
276       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
277     }
278
279
280     try {
281       node =
282           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
283                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
284             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
285                       "", "webdb_create desc", 5, 0,
286               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
287                         "", "code", 10, 0,
288                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
289                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
290                       new GeneratingProducerNode(
291                           "/producer/indymedia.nl/features.template",
292                           "${config.storageRoot}/try/${language.code}/features.inc"
293                       )
294                   )
295                 )
296               )
297             )
298           );
299       aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
300     }
301     catch (Throwable t) {
302       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
303     }
304
305     try {
306       batchingNode =
307           new EntityBatchingProducerNode( "comments", "batch", DatabaseComment.getInstance(), CommentAdapterDefinition.getInstance(),
308                 "", "id asc", 25, 15, 0,
309             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
310                     "", "code", 10, 0,
311               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
312                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
313                   new GeneratingProducerNode(
314                       "/producer/indymedia.nl/commentsindex.template",
315                       "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
316                   )
317                 )
318               )
319             ),
320             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
321                     "", "code", 10, 0,
322               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
323                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
324                   new GeneratingProducerNode(
325                       "/producer/indymedia.nl/commentsindexnavigation.template",
326                       "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
327                   )
328                 )
329               )
330             )
331           );
332       batchingNode.addVerb("new", 3);
333       batchingNode.addVerb("all", -1);
334
335       aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
336     }
337     catch (Throwable t) {
338       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
339     }
340
341     try {
342       enumeratingNode =
343               new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
344                   new GeneratingProducerNode(
345                       "/producer/indymedia.nl/static.template",
346                       "${config.storageRoot}/${language.code}/static/${content.edittitle}.shtml"
347                   )
348                 );
349
350       enumeratingNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
351       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", "" );
352
353       aFactoriesMap.put("staticarticles", new NodedProducerFactory(
354           new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
355             new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
356               enumeratingNode
357             )
358           )
359       ));
360     }
361     catch (Throwable t) {
362       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
363     }
364   }
365 }