2d03d2e46951cea02936a5a3e5d31431a1bd8f09
[mir.git] / source / mirlocal / bolivia.indymedia.org / BoliviaProducerLocalizer.java
1 package mirlocal.bolivia.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 import mircoders.entity.adapter.*;
11
12 public class BoliviaProducerLocalizer extends MirBasicProducerLocalizer {
13
14   protected void setupContentFactory(CompositeProducerNode aProducerNode) {
15     EntityEnumeratingProducerNode contentNode = null;
16     aProducerNode.clear();
17
18     try {
19       contentNode =
20           new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
21             new CompositeProducerNode( new ProducerNode[] {
22               new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c' and exists(select * from content_x_topic where content_id=${content.id} and topic_id=id)", "",
23                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
24                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
25                       new CompositeProducerNode( new ProducerNode[] {
26                         new GeneratingProducerNode(
27                             "/producer/bolivia.indymedia.org/${city.filename}/article.template",
28                             "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
29                         ),
30                         new ContentMarkingProducerNode( "content" )
31                       } )
32                   )
33                 )
34               ),
35               new ContentMarkingProducerNode( "content")
36             } )
37           );
38     }
39     catch (Throwable t) {
40       logger.printError("BoliviaProducerLocalizer.setupContentFactory: Exception "+t.getMessage());
41     }
42
43     contentNode.addVerb( "new", "is_published='1' and is_produced='f'", "" );
44     contentNode.addVerb( "all", "is_published='1'", "" );
45
46     aProducerNode.addSubNode( contentNode );
47   }
48
49   protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
50     aProducerNode.clear();
51     try {
52       aProducerNode.addSubNode(
53             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
54                     "is_published='1' and to_article_type = ${articletype.newswire}", "date desc, webdb_create desc", 40, 0,
55               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
56                             "", "code", 10, 0,
57                 new EntityListProducerNode("startspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
58                           "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 1, 0,
59                   new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
60                           "is_published='1' and to_article_type = ${articletype.feature} and id in (select max(content_id) from content_x_topic, topic t where topic_id=t.id and t.archiv_url='c' group by t.id)", "date desc, webdb_create desc", 10, 0,
61                     new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
62                               "", "webdb_create desc", 5, 0,
63                       new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
64                         new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
65                           new GeneratingProducerNode(
66                               "/producer/bolivia.indymedia.org/startpage.template",
67                               "${config.storageRoot}/${language.code}/index.shtml"
68                           )
69                         )
70                       )
71                     )
72                   )
73                 )
74               )
75             )
76       );
77
78       aProducerNode.addSubNode(
79           new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c'", "",
80             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
81                     "is_published='1' and to_article_type = ${articletype.newswire} and exists(select * from content_x_topic where content_id=id and topic_id=${city.id})", "date desc, webdb_create desc", 40, 0,
82               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
83                             "", "code", 10, 0,
84                 new EntityListProducerNode("startspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
85                           "is_published='1' and to_article_type = ${articletype.startspecial} and "+
86                           "exists(select * from content_x_topic where content_id=id and topic_id=${city.id})", "date desc, webdb_create desc", 1, 0,
87                   new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
88                           "is_published='1' and to_article_type = ${articletype.feature} and exists(select * from content_x_topic where content_id=id and topic_id=${city.id})", "date desc, webdb_create desc", 10, 0,
89                     new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
90                               "", "webdb_create desc", 5, 0,
91                       new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
92                         new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
93                           new GeneratingProducerNode(
94                               "/producer/bolivia.indymedia.org/${city.filename}/startpage.template",
95                               "${config.storageRoot}/${city.filename}/${language.code}/index.shtml"
96                           )
97                         )
98                       )
99                     )
100                   )
101                 )
102               )
103             )
104           )
105       );
106     }
107     catch (Throwable t) {
108       logger.printError("BoliviaProducerLocalizer.setupStartPageFactory: Exception "+t.getMessage());
109     }
110   }
111
112   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
113     aProducerNode.clear();
114
115     try {
116       aProducerNode.addSubNode(
117           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
118                   "", "code", 10, 0,
119             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
120               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
121                 new GeneratingProducerNode(
122                     "/producer/bolivia.indymedia.org/navigation.template",
123                     "${config.storageRoot}/${language.code}/navigation.inc"
124                 )
125               )
126             )
127           )
128       );
129       aProducerNode.addSubNode(
130         new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c'", "",
131           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
132                   "", "code", 10, 0,
133             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
134               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
135                 new GeneratingProducerNode(
136                     "/producer/bolivia.indymedia.org/${city.filename}/navigation.template",
137                     "${config.storageRoot}/${city.filename}/${language.code}/navigation.inc"
138                 )
139               )
140             )
141           )
142         )
143       );
144     }
145     catch (Throwable t) {
146       logger.printError("BoliviaProducerLocalizer.setupStaticFactory: Exception "+t.getMessage());
147     }
148   }
149
150   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
151     aProducerNode.clear();
152
153     EntityBatchingProducerNode topicPageNode = null;
154
155     try {
156 // topic pages:
157       topicPageNode =
158         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
159               "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,
160           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
161                   "", "code", 10, 0,
162             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
163               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
164                 new GeneratingProducerNode(
165                     "/producer/bolivia.indymedia.org/topic.template",
166                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
167                 )
168               )
169             )
170           ),
171           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
172                   "", "code", 10, 0,
173             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
174               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
175                 new GeneratingProducerNode(
176                     "/producer/bolivia.indymedia.org/topicnavigation.template",
177                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
178                 )
179               )
180             )
181           )
182         );
183       topicPageNode.addVerb("new", 3);
184       topicPageNode.addVerb("all", -1);
185
186       aProducerNode.addSubNode(
187           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "((main_url is null) or main_url<>'c')", "",
188             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
189                   "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,
190               topicPageNode
191             )
192           )
193       );
194
195 // topic pages per city:
196       topicPageNode =
197         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
198               "is_published='1' and to_article_type = ${articletype.newswire} and " +
199               "id in (select content_id from content_x_topic where topic_id = ${topic.id}) and " +
200               "id in (select content_id from content_x_topic where topic_id = ${city.id})", "date asc, webdb_create asc", 6, 5, 0,
201           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
202                   "", "code", 10, 0,
203             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
204               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
205                 new GeneratingProducerNode(
206                     "/producer/bolivia.indymedia.org/${city.filename}/topic.template",
207                     "${config.storageRoot}/${city.filename}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
208                 )
209               )
210             )
211           ),
212           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
213                   "", "code", 10, 0,
214             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
215               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
216                 new GeneratingProducerNode(
217                     "/producer/bolivia.indymedia.org/${city.filename}/topicnavigation.template",
218                     "${config.storageRoot}/${city.filename}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
219                 )
220               )
221             )
222           )
223         );
224       topicPageNode.addVerb("new", 3);
225       topicPageNode.addVerb("all", -1);
226
227       aProducerNode.addSubNode(
228           new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c'", "",
229             new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "((main_url is null) or main_url<>'c')", "",
230               new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
231                     "is_published='1' and to_article_type = ${articletype.topicspecial} and "+
232                     "id in (select content_id from content_x_topic where topic_id = ${topic.id}) and "+
233                     "id in (select content_id from content_x_topic where topic_id = ${city.id})", "date, webdb_create", 1, 0,
234                 topicPageNode
235               )
236             )
237           )
238       );
239     }
240     catch (Throwable t) {
241       logger.printError("BoliviaProducerLocalizer.setupTopicsFactory: Exception "+t.getMessage());
242     }
243   }
244
245   protected void setupFactories(Map aFactoriesMap ) {
246     super.setupFactories(aFactoriesMap);
247     try {
248
249       ProducerNode node = null;
250       EntityBatchingProducerNode batchingNode =
251           new EntityBatchingProducerNode( "comments", "batch", DatabaseComment.getInstance(), CommentAdapterDefinition.getInstance(),
252                 "", "id desc", 25, 15, 0,
253             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
254                     "", "code", 10, 0,
255               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
256                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
257                   new GeneratingProducerNode(
258                       "/producer/indymedia.nl/commentsindex.template",
259                       "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
260                   )
261                 )
262               )
263             ),
264             new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
265                     "", "code", 10, 0,
266               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
267                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
268                   new GeneratingProducerNode(
269                       "/producer/indymedia.nl/commentsindexnavigation.template",
270                       "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
271                   )
272                 )
273               )
274             )
275           );
276       batchingNode.addVerb("new", 3);
277       batchingNode.addVerb("all", -1);
278
279       aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
280     }
281     catch (Throwable t) {
282       logger.printError("BoliviaProducerLocalizer.setupFactories: Exception "+t.getMessage());
283     }
284
285   }
286 }