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