ecuadorian producer localizer updates
[mir.git] / source / mirlocal / ecuador.indymedia.org / EcuadorProducerLocalizer.java
1 package mirlocal.ecuador.indymedia.org;
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 EcuadorProducerLocalizer extends MirBasicProducerLocalizer {
12
13   protected void setupContentFactory(CompositeProducerNode aProducerNode) {
14     EntityEnumeratingProducerNode contentNode = null;
15     aProducerNode.clear();
16
17     try {
18       contentNode =
19           new EntityEnumeratingProducerNode( "content", model, "content",
20             new CompositeProducerNode( new ProducerNode[] {
21               new EntityEnumeratingProducerNode( "language", model, "language", "", "",
22                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
23                     new CompositeProducerNode( new ProducerNode[] {
24                       new GeneratingProducerNode(
25                           "/producer/ecuador.indymedia.org/article.template",
26                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
27                       ),
28                       new ContentMarkingProducerNode( "content" )
29                     } )
30                 )
31               )
32               ,
33               new ContentMarkingProducerNode( "content")
34             } )
35           );
36     }
37     catch (Throwable t) {
38       logger.printError("EcuadorProducerLocalizer.setupContentFactory: Exception "+t.getMessage());
39     }
40
41     contentNode.addVerb( "new", "is_published='1' and is_produced='f'", "" );
42     contentNode.addVerb( "all", "is_published='1'", "" );
43
44     aProducerNode.addSubNode( contentNode );
45   }
46
47   protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
48     aProducerNode.clear();
49     try {
50       aProducerNode.addSubNode(
51             new EntityListProducerNode("newswire", model, "content",
52                     "is_published='1' and to_article_type = ${articletype.newswire}", "date desc, webdb_create desc", 40, 0,
53               new EntityListProducerNode("languages", model, "language",
54                             "", "code", 10, 0,
55                 new EntityListProducerNode("startspecial", model, "content",
56                           "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 1, 0,
57                   new EntityListProducerNode("features", model, "content",
58                           "is_published='1' and to_article_type = ${articletype.feature}", "date desc, webdb_create desc", 10, 0,
59                     new EntityListProducerNode("breaking", model, "breakingNews",
60                               "", "webdb_create desc", 5, 0,
61                       new EntityEnumeratingProducerNode( "language", model, "language", "", "",
62                         new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
63                           new GeneratingProducerNode(
64                               "/producer/ecuador.indymedia.org/startpage.template",
65                               "${config.storageRoot}/${language.code}/index.shtml"
66                           )
67                         )
68                       )
69                     )
70                   )
71                 )
72               )
73             )
74       );
75     }
76     catch (Throwable t) {
77       logger.printError("EcuadorProducerLocalizer.setupStartPageFactory: Exception "+t.getMessage());
78     }
79   }
80
81   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
82     aProducerNode.clear();
83
84     try {
85       aProducerNode.addSubNode(
86           new EntityListProducerNode("languages", model, "language",
87                   "", "code", 10, 0,
88             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
89               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
90                 new GeneratingProducerNode(
91                     "/producer/ecuador.indymedia.org/navigation.template",
92                     "${config.storageRoot}/${language.code}/navigation.inc"
93                 )
94               )
95             )
96           )
97       );
98     }
99     catch (Throwable t) {
100       logger.printError("EcuadorProducerLocalizer.setupStaticFactory: Exception "+t.getMessage());
101     }
102   }
103
104   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
105     aProducerNode.clear();
106
107     EntityBatchingProducerNode topicArchiveNode = null;
108
109     try {
110 // topic pages:
111       topicArchiveNode =
112         new EntityBatchingProducerNode( "articles", "batch", model, "content",
113               "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", 20, 10, 0,
114           new EntityListProducerNode("languages", model, "language",
115                   "", "code", 10, 0,
116             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
117               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
118                 new GeneratingProducerNode(
119                     "/producer/ecuador.indymedia.org/topic.template",
120                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
121                 )
122               )
123             )
124           ),
125           new EntityListProducerNode("languages", model, "language",
126                   "", "code", 10, 0,
127             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
128               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
129                 new GeneratingProducerNode(
130                     "/producer/ecuador.indymedia.org/topicnavigation.template",
131                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
132                 )
133               )
134             )
135           )
136         );
137       topicArchiveNode.addVerb("new", 3);
138       topicArchiveNode.addVerb("all", -1);
139
140       aProducerNode.addSubNode(
141           new EntityEnumeratingProducerNode( "topic", model, "topic","", "",
142             new EntityListProducerNode("topicspecial", model, "content",
143                   "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,
144               topicArchiveNode
145             )
146           )
147       );
148
149     }
150     catch (Throwable t) {
151       logger.printError("EcuadorProducerLocalizer.setupTopicsFactory: Exception "+t.getMessage());
152     }
153   }
154
155   protected void setupFactories(Map aFactoriesMap ) {
156     EntityBatchingProducerNode archiveNode = null;
157     EntityEnumeratingProducerNode enumeratingNode = null;
158
159     try {
160       super.setupFactories(aFactoriesMap);
161
162 // newswire archive:
163       archiveNode =
164         new EntityBatchingProducerNode( "articles", "batch", model, "content",
165               "is_published='1' and to_article_type = ${articletype.newswire}", "date asc, webdb_create asc", 20, 10, 0,
166           new EntityListProducerNode("languages", model, "language",
167                   "", "code", 10, 0,
168             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
169               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
170                 new GeneratingProducerNode(
171                     "/producer/ecuador.indymedia.org/newswire.template",
172                     "${config.storageRoot}/${language.code}/newswire/newswire${batch.current.identifier}.shtml"
173                 )
174               )
175             )
176           ),
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 GeneratingProducerNode(
182                     "/producer/ecuador.indymedia.org/newswirenavigation.template",
183                     "${config.storageRoot}/${language.code}/newswire/newswirenavigation.inc"
184                 )
185               )
186             )
187           )
188         );
189       archiveNode.addVerb("new", 3);
190       archiveNode.addVerb("all", -1);
191
192       aFactoriesMap.put( "newswirearchive", new NodedProducerFactory( archiveNode ) );
193
194 // feature archive:
195       archiveNode =
196         new EntityBatchingProducerNode( "articles", "batch", model, "content",
197               "is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial})", "date asc, webdb_create asc", 20, 10, 0,
198           new EntityListProducerNode("languages", model, "language",
199                   "", "code", 10, 0,
200             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
201               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
202                 new GeneratingProducerNode(
203                     "/producer/ecuador.indymedia.org/feature.template",
204                     "${config.storageRoot}/${language.code}/feature/feature${batch.current.identifier}.shtml"
205                 )
206               )
207             )
208           ),
209           new EntityListProducerNode("languages", model, "language",
210                   "", "code", 10, 0,
211             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
212               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
213                 new GeneratingProducerNode(
214                     "/producer/ecuador.indymedia.org/featurenavigation.template",
215                     "${config.storageRoot}/${language.code}/feature/featurenavigation.inc"
216                 )
217               )
218             )
219           )
220         );
221       archiveNode.addVerb("new", 3);
222       archiveNode.addVerb("all", -1);
223
224       aFactoriesMap.put( "featurearchive", new NodedProducerFactory( archiveNode ) );
225
226 // media archives:
227       archiveNode =
228         new EntityBatchingProducerNode( "articles", "batch", model, "content",
229               "is_published='1' and to_article_type = ${articletype.newswire} and "+
230                   "exists (select * from content_x_media, images where content_id=content.id and media_id=images.id)"
231               
232               , "date asc, webdb_create asc", 20, 10, 0,
233           new EntityListProducerNode("languages", model, "language",
234                   "", "code", 10, 0,
235             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
236               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
237                 new GeneratingProducerNode(
238                     "/producer/ecuador.indymedia.org/media.template",
239                     "${config.storageRoot}/${language.code}/media/images${batch.current.identifier}.shtml"
240                 )
241               )
242             )
243           ),
244           new EntityListProducerNode("languages", model, "language",
245                   "", "code", 10, 0,
246             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
247               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
248                 new GeneratingProducerNode(
249                     "/producer/ecuador.indymedia.org/medianavigation.template",
250                     "${config.storageRoot}/${language.code}/media/imagesnavigation.inc"
251                 )
252               )
253             )
254           )
255         );
256       archiveNode.addVerb("new", 3);
257       archiveNode.addVerb("all", -1);
258
259       aFactoriesMap.put( "imagearchive", new NodedProducerFactory( 
260         new EvaluatedAssignmentProducerNode( "mediatype", "images",
261           archiveNode ) ) );
262
263       archiveNode =
264         new EntityBatchingProducerNode( "articles", "batch", model, "content",
265               "is_published='1' and to_article_type = ${articletype.newswire} and "+
266                   "exists (select * from content_x_media, audio where content_id=content.id and media_id=audio.id)"
267               
268               , "date asc, webdb_create asc", 20, 10, 0,
269           new EntityListProducerNode("languages", model, "language",
270                   "", "code", 10, 0,
271             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
272               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
273                 new GeneratingProducerNode(
274                     "/producer/ecuador.indymedia.org/media.template",
275                     "${config.storageRoot}/${language.code}/media/audio${batch.current.identifier}.shtml"
276                 )
277               )
278             )
279           ),
280           new EntityListProducerNode("languages", model, "language",
281                   "", "code", 10, 0,
282             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
283               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
284                 new GeneratingProducerNode(
285                     "/producer/ecuador.indymedia.org/medianavigation.template",
286                     "${config.storageRoot}/${language.code}/media/audionavigation.inc"
287                 )
288               )
289             )
290           )
291         );
292       archiveNode.addVerb("new", 3);
293       archiveNode.addVerb("all", -1);
294
295       aFactoriesMap.put( "audioarchive", new NodedProducerFactory( 
296         new EvaluatedAssignmentProducerNode( "mediatype", "audio",
297           archiveNode ) ) );
298
299       archiveNode =
300         new EntityBatchingProducerNode( "articles", "batch", model, "content",
301               "is_published='1' and to_article_type = ${articletype.newswire} and "+
302                   "exists (select * from content_x_media, video where content_id=content.id and media_id=video.id)"
303               
304               , "date asc, webdb_create asc", 20, 10, 0,
305           new EntityListProducerNode("languages", model, "language",
306                   "", "code", 10, 0,
307             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
308               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
309                 new GeneratingProducerNode(
310                     "/producer/ecuador.indymedia.org/media.template",
311                     "${config.storageRoot}/${language.code}/media/video${batch.current.identifier}.shtml"
312                 )
313               )
314             )
315           ),
316           new EntityListProducerNode("languages", model, "language",
317                   "", "code", 10, 0,
318             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
319               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
320                 new GeneratingProducerNode(
321                     "/producer/ecuador.indymedia.org/medianavigation.template",
322                     "${config.storageRoot}/${language.code}/media/videonavigation.inc"
323                 )
324               )
325             )
326           )
327         );
328       archiveNode.addVerb("new", 3);
329       archiveNode.addVerb("all", -1);
330
331       aFactoriesMap.put( "videoarchive", new NodedProducerFactory( 
332         new EvaluatedAssignmentProducerNode( "mediatype", "video",
333           archiveNode ) ) );
334
335       archiveNode =
336         new EntityBatchingProducerNode( "articles", "batch", model, "content",
337               "is_published='1' and to_article_type = ${articletype.newswire} and "+
338                   "exists (select * from content_x_media, other_media where content_id=content.id and media_id=other_media.id)"
339               
340               , "date asc, webdb_create asc", 20, 10, 0,
341           new EntityListProducerNode("languages", model, "language",
342                   "", "code", 10, 0,
343             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
344               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
345                 new GeneratingProducerNode(
346                     "/producer/ecuador.indymedia.org/media.template",
347                     "${config.storageRoot}/${language.code}/media/other${batch.current.identifier}.shtml"
348                 )
349               )
350             )
351           ),
352           new EntityListProducerNode("languages", model, "language",
353                   "", "code", 10, 0,
354             new EntityEnumeratingProducerNode( "language", model, "language", "", "",
355               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
356                 new GeneratingProducerNode(
357                     "/producer/ecuador.indymedia.org/medianavigation.template",
358                     "${config.storageRoot}/${language.code}/media/othernavigation.inc"
359                 )
360               )
361             )
362           )
363         );
364       archiveNode.addVerb("new", 3);
365       archiveNode.addVerb("all", -1);
366
367       aFactoriesMap.put( "otherarchive", new NodedProducerFactory( 
368         new EvaluatedAssignmentProducerNode( "mediatype", "other",
369           archiveNode ) ) );
370     }
371     catch (Throwable t) {
372       logger.printError("EcuadorProducerLocalizer.setupFactories: Exception "+t.getMessage());
373     }
374   }
375 }