4bc33ad1209fa78fab384ecd727b467b64011e6a
[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     }
44
45     contentNode.addVerb( "all", "is_published='1'", "" );
46     contentNode.addVerb( "new", "is_published='1' and is_produced='f'", "" );
47
48     aProducerNode.addSubNode( contentNode );
49   }
50
51   protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
52     try {
53       aProducerNode.addSubNode(
54             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
55                     "is_published='1' and to_article_type = 1", "date desc, webdb_create desc", 40, 0,
56               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
57                             "", "code", 10, 0,
58                     new CompositeProducerNode( new ProducerNode[] {
59                         new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
60                           new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
61                               new GeneratingProducerNode(
62                                   "/producer/indymedia.nl/newswire.template",
63                                   "${config.storageRoot}/${language.code}/newswire.inc"
64                               )
65                           )
66                         ),
67                         new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
68                                 "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
69                           new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
70                                     "", "webdb_create desc", 5, 0,
71                             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
72                                 new AssignmentProducerNode( "staticinclude", "1",
73                                   new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
74                                   new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
75                                   new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
76                                   new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
77                                   new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
78                                     new GeneratingProducerNode(
79                                         "/producer/indymedia.nl/start.template",
80                                         "${config.storageRoot}/index.shtml"
81                                     )
82                                   )))))
83                                 )
84                             )
85                           )
86                         )
87                     })
88               )
89             )
90       );
91     }
92     catch (Throwable t) {
93     }
94   }
95
96   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
97     EntityBatchingProducerNode topicPageNode = null;
98
99     try {
100       topicPageNode =
101         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
102               "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,
103           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
104                   "", "code", 10, 0,
105             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
106               new ResourceBundleProducerNode("lang", "producer_${language.code}",
107                 new GeneratingProducerNode(
108                     "/producer/indymedia.nl/topic.template",
109                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
110                 )
111               )
112             )
113           ),
114           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
115                   "", "code", 10, 0,
116             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
117               new ResourceBundleProducerNode("lang", "producer_${language.code}",
118                 new GeneratingProducerNode(
119                     "/producer/indymedia.nl/topicnavigation.template",
120                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
121                 )
122               )
123             )
124           )
125         );
126       topicPageNode.addVerb("all", -1);
127       topicPageNode.addVerb("new", 3);
128
129       aProducerNode.addSubNode(
130           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "", "",
131             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
132                   "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,
133               topicPageNode
134             )
135           )
136       );
137     }
138     catch (Throwable t) {
139     }
140   }
141
142
143   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
144     try {
145       aProducerNode.addSubNode(
146           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
147                   "", "code", 10, 0,
148               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
149                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
150                   new CompositeProducerNode( new ProducerNode[] {
151                     new GeneratingProducerNode(
152                         "/producer/indymedia.nl/nav.template",
153                         "${config.storageRoot}/${language.code}/nav.inc"
154                     ),
155                     new GeneratingProducerNode(
156                         "/producer/indymedia.nl/top.template",
157                         "${config.storageRoot}/${language.code}/top.inc"
158                     ),
159                     new GeneratingProducerNode(
160                         "/producer/indymedia.nl/bottom.template",
161                         "${config.storageRoot}/${language.code}/bottom.inc"
162                     ),
163                     new GeneratingProducerNode(
164                         "/producer/indymedia.nl/style.template",
165                         "${config.storageRoot}/${language.code}/style.css"
166                     ),
167                     new GeneratingProducerNode(
168                         "/producer/indymedia.nl/top.template",
169                         "${config.storageRoot}/${language.code}/top.inc"
170                     ),
171                     new GeneratingProducerNode(
172                         "/producer/indymedia.nl/articlepre.template",
173                         "${config.storageRoot}/${language.code}/articlepre.shtml"
174                     ),
175                     new GeneratingProducerNode(
176                         "/producer/indymedia.nl/articlepost.template",
177                         "${config.storageRoot}/${language.code}/articlepost.shtml"
178                     ),
179                     new AssignmentProducerNode( "staticinclude", "0",
180                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
181                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
182                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
183                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
184                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/${language.code}/features.inc",
185                         new GeneratingProducerNode(
186                             "/producer/indymedia.nl/start.template",
187                             "${config.storageRoot}/${language.code}/start.shtml"
188                         )
189                       )))))
190                     ),
191                     new AssignmentProducerNode( "staticinclude", "0",
192                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
193                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
194                       new EvaluatedAssignmentProducerNode( "navinclude", "/${language.code}/nav.inc",
195                       new EvaluatedAssignmentProducerNode( "newswireinclude", "/${language.code}/newswire.inc",
196                       new EvaluatedAssignmentProducerNode( "featuresinclude", "/try/${language.code}/features.inc",
197                         new GeneratingProducerNode(
198                             "/producer/indymedia.nl/start.template",
199                             "${config.storageRoot}/try/${language.code}/start.shtml"
200                         )
201                       )))))
202                     )
203                   } )
204                 )
205               )
206           )
207       );
208     }
209     catch (Throwable t) {
210     }
211   }
212
213   protected void setupFactories(Map aFactoriesMap ) {
214     super.setupFactories(aFactoriesMap);
215
216     ProducerNode node = null;
217
218     try {
219       node =
220           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
221                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
222             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
223                       "", "webdb_create desc", 5, 0,
224               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
225                         "", "code", 10, 0,
226                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
227                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
228                       new GeneratingProducerNode(
229                           "/producer/indymedia.nl/features.template",
230                           "${config.storageRoot}/${language.code}/features.inc"
231                       )
232                   )
233                 )
234               )
235             )
236           );
237     }
238     catch (Throwable t) {
239     }
240
241     aFactoriesMap.put("features", new NodedProducerFactory( node ) );
242
243     try {
244       node =
245           new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
246                   "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10, 0,
247             new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
248                       "", "webdb_create desc", 5, 0,
249               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
250                         "", "code", 10, 0,
251                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
252                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
253                       new GeneratingProducerNode(
254                           "/producer/indymedia.nl/features.template",
255                           "${config.storageRoot}/try/${language.code}/features.inc"
256                       )
257                   )
258                 )
259               )
260             )
261           );
262     }
263     catch (Throwable t) {
264     }
265     aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
266   }
267 }