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