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