logging is now done more appropriately... still waiting for idefix' introduction...
[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
224     try {
225       node =
226           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
227                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
228             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
229                       "", "webdb_create desc", 5, 0,
230               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
231                         "", "code", 10, 0,
232                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
233                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
234                       new GeneratingProducerNode(
235                           "/producer/indymedia.nl/features.template",
236                           "${config.storageRoot}/${language.code}/features.inc"
237                       )
238                   )
239                 )
240               )
241             )
242           );
243     }
244     catch (Throwable t) {
245       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
246     }
247
248     aFactoriesMap.put("features", new NodedProducerFactory( node ) );
249
250     try {
251       node =
252           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
253                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
254             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
255                       "", "webdb_create desc", 5, 0,
256               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
257                         "", "code", 10, 0,
258                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
259                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
260                       new GeneratingProducerNode(
261                           "/producer/indymedia.nl/features.template",
262                           "${config.storageRoot}/try/${language.code}/features.inc"
263                       )
264                   )
265                 )
266               )
267             )
268           );
269     }
270     catch (Throwable t) {
271       logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
272     }
273     aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
274   }
275 }