45e291159171b041b856088464035edf6f859583
[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("startspecials", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
93                                 "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
94                           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
95                                   "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
96                             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
97                                       "", "webdb_create desc", 5, 0,
98                               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
99                                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
100                                   new AssignmentProducerNode( "staticinclude", "1",
101                                     new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
102                                     new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
103                                     new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
104                                     new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
105                                     new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
106                                       new GeneratingProducerNode(
107                                           "/producer/indymedia.nl/start.template",
108                                           "${config.storageRoot}/index.shtml"
109                                       )
110                                     )))))
111                                   )
112                                 )
113                               )
114                             )
115                           )
116                         )
117                     })
118               )
119             )
120       );
121     }
122     catch (Throwable t) {
123       logger.printError("IndyNLProducerLocalizer.setupStartPageFactory: Exception "+t.getMessage());
124     }
125   }
126
127   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
128     EntityBatchingProducerNode topicPageNode = null;
129
130     try {
131       topicPageNode =
132         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
133               "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,
134           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
135                   "", "code", 10, 0,
136             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
137               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
138                 new GeneratingProducerNode(
139                     "/producer/indymedia.nl/topic.template",
140                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
141                 )
142               )
143             )
144           ),
145           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
146                   "", "code", 10, 0,
147             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
148               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
149                 new GeneratingProducerNode(
150                     "/producer/indymedia.nl/topicnavigation.template",
151                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
152                 )
153               )
154             )
155           )
156         );
157       topicPageNode.addVerb("all", -1);
158       topicPageNode.addVerb("new", 3);
159
160       aProducerNode.addSubNode(
161           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "", "",
162             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
163                   "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,
164               topicPageNode
165             )
166           )
167       );
168     }
169     catch (Throwable t) {
170       logger.printError("IndyNLProducerLocalizer.setupTopicsFactory Exception "+t.getMessage());
171     }
172   }
173
174
175   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
176     try {
177       aProducerNode.addSubNode(
178           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
179                   "", "code", 10, 0,
180               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
181                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
182                   new CompositeProducerNode( new ProducerNode[] {
183                     new GeneratingProducerNode(
184                         "/producer/indymedia.nl/nav.template",
185                         "${config.storageRoot}/${language.code}/nav.inc"
186                     ),
187                     new GeneratingProducerNode(
188                         "/producer/indymedia.nl/top.template",
189                         "${config.storageRoot}/${language.code}/top.inc"
190                     ),
191                     new GeneratingProducerNode(
192                         "/producer/indymedia.nl/bottom.template",
193                         "${config.storageRoot}/${language.code}/bottom.inc"
194                     ),
195                     new GeneratingProducerNode(
196                         "/producer/indymedia.nl/style.template",
197                         "${config.storageRoot}/${language.code}/style.css"
198                     ),
199                     new GeneratingProducerNode(
200                         "/producer/indymedia.nl/style2.template",
201                         "${config.storageRoot}/${language.code}/style2.css"
202                     ),
203                     new GeneratingProducerNode(
204                         "/producer/indymedia.nl/top.template",
205                         "${config.storageRoot}/${language.code}/top.inc"
206                     ),
207                     new GeneratingProducerNode(
208                         "/producer/indymedia.nl/articlepre.template",
209                         "${config.storageRoot}/${language.code}/articlepre.shtml"
210                     ),
211                     new GeneratingProducerNode(
212                         "/producer/indymedia.nl/articlepost.template",
213                         "${config.storageRoot}/${language.code}/articlepost.shtml"
214                     ),
215                     new AssignmentProducerNode( "staticinclude", "0",
216                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
217                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
218                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
219                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
220                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/${language.code}/features.inc",
221                         new GeneratingProducerNode(
222                             "/producer/indymedia.nl/start.template",
223                             "${config.storageRoot}/${language.code}/start.shtml"
224                         )
225                       )))))
226                     ),
227                     new AssignmentProducerNode( "staticinclude", "0",
228                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
229                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
230                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
231                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
232                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/try/${language.code}/features.inc",
233                         new GeneratingProducerNode(
234                             "/producer/indymedia.nl/start.template",
235                             "${config.storageRoot}/try/${language.code}/start.shtml"
236                         )
237                       )))))
238                     )
239                   } )
240                 )
241               )
242           )
243       );
244     }
245     catch (Throwable t) {
246       logger.printError("IndyNLProducerLocalizer.setupStaticFactory Exception "+t.getMessage());
247     }
248   }
249
250   protected void setupFactories(Map aFactoriesMap ) {
251     super.setupFactories(aFactoriesMap);
252
253     ProducerNode node = null;
254     EntityBatchingProducerNode batchingNode = null;
255     EntityEnumeratingProducerNode enumeratingNode = null;
256
257     try {
258       node =
259         new EntityListProducerNode("startspecials", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
260                 "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
261           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
262                   "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
263             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
264                       "", "webdb_create desc", 5, 0,
265               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
266                         "", "code", 10, 0,
267                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
268                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
269                       new GeneratingProducerNode(
270                           "/producer/indymedia.nl/features.template",
271                           "${config.storageRoot}/${language.code}/features.inc"
272                       )
273                   )
274                 )
275               )
276             )
277           )
278         );
279       aFactoriesMap.put("features", new NodedProducerFactory( node ) );
280     }
281     catch (Throwable t) {
282       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
283     }
284
285
286     try {
287       node =
288           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
289                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
290             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
291                       "", "webdb_create desc", 5, 0,
292               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
293                         "", "code", 10, 0,
294                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
295                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
296                       new GeneratingProducerNode(
297                           "/producer/indymedia.nl/features.template",
298                           "${config.storageRoot}/try/${language.code}/features.inc"
299                       )
300                   )
301                 )
302               )
303             )
304           );
305       aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
306     }
307     catch (Throwable t) {
308       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
309     }
310
311     try {
312       batchingNode =
313           new EntityBatchingProducerNode( "comments", "batch", DatabaseComment.getInstance(), CommentAdapterDefinition.getInstance(),
314                 "", "id asc", 25, 15, 0,
315             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
316                     "", "code", 10, 0,
317               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
318                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
319                   new GeneratingProducerNode(
320                       "/producer/indymedia.nl/commentsindex.template",
321                       "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
322                   )
323                 )
324               )
325             ),
326             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
327                     "", "code", 10, 0,
328               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
329                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
330                   new GeneratingProducerNode(
331                       "/producer/indymedia.nl/commentsindexnavigation.template",
332                       "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
333                   )
334                 )
335               )
336             )
337           );
338       batchingNode.addVerb("new", 3);
339       batchingNode.addVerb("all", -1);
340
341       aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
342     }
343     catch (Throwable t) {
344       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
345     }
346
347     try {
348       enumeratingNode =
349               new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
350                   new GeneratingProducerNode(
351                       "/producer/indymedia.nl/static.template",
352                       "${config.storageRoot}/${language.code}/static/${content.edittitle}.shtml"
353                   )
354                 );
355
356       enumeratingNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
357       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", "" );
358
359       aFactoriesMap.put("staticarticles", new NodedProducerFactory(
360           new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
361             new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
362               enumeratingNode
363             )
364           )
365       ));
366     }
367     catch (Throwable t) {
368       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
369     }
370   }
371 }