3d3774dd3b44df4ec94607f6f7e93ddccffc09b4
[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( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
23                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
24                     new CompositeProducerNode( new ProducerNode[] {
25                       new GeneratingProducerNode(
26                           "/producer/bolivia.indymedia.org/article.template",
27                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
28                       ),
29                       new FileDateSettingProducerNode(
30                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
31                           "content.date.date"
32                       )
33                     } )
34                 )
35               ),
36               new ContentMarkingProducerNode( "content")
37             } )
38           );
39     }
40     catch (Throwable t) {
41     }
42
43     contentNode.addVerb( "all", "is_published='1'", "" );
44     contentNode.addVerb( "new", "is_published='1' and is_produced='f'", "" );
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}", "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/startpage.template",
95                               "${config.storageRoot}/${language.code}/${city.filename}/index.shtml"
96                           )
97                         )
98                       )
99                     )
100                   )
101                 )
102               )
103             )
104           )
105       );
106     }
107     catch (Throwable t) {
108     }
109   }
110
111   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
112     aProducerNode.clear();
113
114     try {
115       aProducerNode.addSubNode(
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/bolivia.indymedia.org/navigation.template",
122                     "${config.storageRoot}/${language.code}/navigation.inc"
123                 )
124               )
125             )
126           )
127       );
128     }
129     catch (Throwable t) {
130     }
131   }
132
133   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
134     aProducerNode.clear();
135
136     EntityBatchingProducerNode topicPageNode = null;
137
138     try {
139 // topic pages:
140       topicPageNode =
141         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
142               "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,
143           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
144                   "", "code", 10, 0,
145             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
146               new ResourceBundleProducerNode("lang", "producer_${language.code}",
147                 new GeneratingProducerNode(
148                     "/producer/bolivia.indymedia.org/topic.template",
149                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
150                 )
151               )
152             )
153           ),
154           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
155                   "", "code", 10, 0,
156             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
157               new ResourceBundleProducerNode("lang", "producer_${language.code}",
158                 new GeneratingProducerNode(
159                     "/producer/bolivia.indymedia.org/topicnavigation.template",
160                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
161                 )
162               )
163             )
164           )
165         );
166       topicPageNode.addVerb("all", -1);
167       topicPageNode.addVerb("new", 3);
168
169       aProducerNode.addSubNode(
170           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "", "",
171             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
172                   "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,
173               topicPageNode
174             )
175           )
176       );
177
178 // topic pages per city:
179       topicPageNode =
180         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
181               "is_published='1' and to_article_type = ${articletype.newswire} and " +
182               "id in (select content_id from content_x_topic where topic_id = ${topic.id}) and " +
183               "id in (select content_id from content_x_topic where topic_id = ${city.id})", "date asc, webdb_create asc", 6, 5, 0,
184           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
185                   "", "code", 10, 0,
186             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
187               new ResourceBundleProducerNode("lang", "producer_${language.code}",
188                 new GeneratingProducerNode(
189                     "/producer/bolivia.indymedia.org/topic.template",
190                     "${config.storageRoot}/${language.code}/${city.filename}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
191                 )
192               )
193             )
194           ),
195           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
196                   "", "code", 10, 0,
197             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
198               new ResourceBundleProducerNode("lang", "producer_${language.code}",
199                 new GeneratingProducerNode(
200                     "/producer/bolivia.indymedia.org/topicnavigation.template",
201                     "${config.storageRoot}/${language.code}/${city.filename}/${topic.filename}/${topic.filename}navigation.inc"
202                 )
203               )
204             )
205           )
206         );
207       topicPageNode.addVerb("all", -1);
208       topicPageNode.addVerb("new", 3);
209
210       aProducerNode.addSubNode(
211           new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c'", "",
212             new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "((main_url is null) or main_url<>'c')", "",
213               new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
214                     "is_published='1' and to_article_type = ${articletype.topicspecial} and "+
215                     "id in (select content_id from content_x_topic where topic_id = ${topic.id}) and"+
216                     "id in (select content_id from content_x_topic where topic_id = ${city.id})", "date, webdb_create", 1, 0,
217                 topicPageNode
218               )
219             )
220           )
221       );
222     }
223     catch (Throwable t) {
224     }
225
226   }
227 }