e9b391c29d8fc46dfac6e36f3e23b3432a3b455f
[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 }