80f6d0f401802b48f210e3701d1e7a9b211ba523
[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'", "" );
47     contentNode.addVerb( "new", "is_published='1' and is_produced='f'", "" );
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 = 1", "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 = 2", "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 = ${articletype.newswire} 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
225     try {
226       node =
227           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
228                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
229             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
230                       "", "webdb_create desc", 5, 0,
231               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
232                         "", "code", 10, 0,
233                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
234                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
235                       new GeneratingProducerNode(
236                           "/producer/indymedia.nl/features.template",
237                           "${config.storageRoot}/${language.code}/features.inc"
238                       )
239                   )
240                 )
241               )
242             )
243           );
244     }
245     catch (Throwable t) {
246       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
247     }
248
249     aFactoriesMap.put("features", new NodedProducerFactory( node ) );
250
251     try {
252       node =
253           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
254                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
255             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
256                       "", "webdb_create desc", 5, 0,
257               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
258                         "", "code", 10, 0,
259                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
260                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
261                       new GeneratingProducerNode(
262                           "/producer/indymedia.nl/features.template",
263                           "${config.storageRoot}/try/${language.code}/features.inc"
264                       )
265                   )
266                 )
267               )
268             )
269           );
270     }
271     catch (Throwable t) {
272       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
273     }
274
275     aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
276     try {
277       batchingNode =
278           new EntityBatchingProducerNode( "comments", "batch", DatabaseComment.getInstance(), CommentAdapterDefinition.getInstance(),
279                 "", "id asc", 25, 15, 0,
280             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
281                     "", "code", 10, 0,
282               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
283                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
284                   new GeneratingProducerNode(
285                       "/producer/indymedia.nl/commentsindex.template",
286                       "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
287                   )
288                 )
289               )
290             ),
291             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
292                     "", "code", 10, 0,
293               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
294                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
295                   new GeneratingProducerNode(
296                       "/producer/indymedia.nl/commentsindexnavigation.template",
297                       "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
298                   )
299                 )
300               )
301             )
302           );
303       batchingNode.addVerb("new", 3);
304       batchingNode.addVerb("all", -1);
305
306       aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
307     }
308     catch (Throwable t) {
309       logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
310     }
311
312   }
313 }