first attempt at a rewrite of the media producer + some bugfixes here and there
[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/article.template",
28                             "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
29                         ),
30                         new FileDateSettingProducerNode(
31                             "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
32                             "content.webdb_create.raw"
33                         )
34                       } )
35                   )
36                 )
37               ),
38               new ContentMarkingProducerNode( "content")
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     aProducerNode.clear();
53     try {
54       aProducerNode.addSubNode(
55             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
56                     "is_published='1' and to_article_type = ${articletype.newswire}", "date desc, webdb_create desc", 40, 0,
57               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
58                             "", "code", 10, 0,
59                 new EntityListProducerNode("startspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
60                           "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 1, 0,
61                   new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
62                           "is_published='1' and to_article_type = ${articletype.feature}", "date desc, webdb_create desc", 10, 0,
63                     new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
64                               "", "webdb_create desc", 5, 0,
65                       new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
66                         new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
67                           new GeneratingProducerNode(
68                               "/producer/bolivia.indymedia.org/startpage.template",
69                               "${config.storageRoot}/${language.code}/index.shtml"
70                           )
71                         )
72                       )
73                     )
74                   )
75                 )
76               )
77             )
78       );
79
80       aProducerNode.addSubNode(
81           new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c'", "",
82             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
83                     "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,
84               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
85                             "", "code", 10, 0,
86                 new EntityListProducerNode("startspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
87                           "is_published='1' and to_article_type = ${articletype.startspecial} and "+
88                           "exists(select * from content_x_topic where content_id=id and topic_id=${city.id})", "date desc, webdb_create desc", 1, 0,
89                   new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
90                           "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,
91                     new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
92                               "", "webdb_create desc", 5, 0,
93                       new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
94                         new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
95                           new GeneratingProducerNode(
96                               "/producer/bolivia.indymedia.org/startpage.template",
97                               "${config.storageRoot}/${city.filename}/${language.code}/index.shtml"
98                           )
99                         )
100                       )
101                     )
102                   )
103                 )
104               )
105             )
106           )
107       );
108     }
109     catch (Throwable t) {
110     }
111   }
112
113   protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
114     aProducerNode.clear();
115
116     try {
117       aProducerNode.addSubNode(
118           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
119                   "", "code", 10, 0,
120             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
121               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
122                 new GeneratingProducerNode(
123                     "/producer/bolivia.indymedia.org/navigation.template",
124                     "${config.storageRoot}/${language.code}/navigation.inc"
125                 )
126               )
127             )
128           )
129       );
130     }
131     catch (Throwable t) {
132     }
133   }
134
135   protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
136     aProducerNode.clear();
137
138     EntityBatchingProducerNode topicPageNode = null;
139
140     try {
141 // topic pages:
142       topicPageNode =
143         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
144               "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,
145           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
146                   "", "code", 10, 0,
147             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
148               new ResourceBundleProducerNode("lang", "producer_${language.code}",
149                 new GeneratingProducerNode(
150                     "/producer/bolivia.indymedia.org/topic.template",
151                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
152                 )
153               )
154             )
155           ),
156           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
157                   "", "code", 10, 0,
158             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
159               new ResourceBundleProducerNode("lang", "producer_${language.code}",
160                 new GeneratingProducerNode(
161                     "/producer/bolivia.indymedia.org/topicnavigation.template",
162                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
163                 )
164               )
165             )
166           )
167         );
168       topicPageNode.addVerb("all", -1);
169       topicPageNode.addVerb("new", 3);
170
171       aProducerNode.addSubNode(
172           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "", "",
173             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
174                   "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,
175               topicPageNode
176             )
177           )
178       );
179
180 // topic pages per city:
181       topicPageNode =
182         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
183               "is_published='1' and to_article_type = ${articletype.newswire} and " +
184               "id in (select content_id from content_x_topic where topic_id = ${topic.id}) and " +
185               "id in (select content_id from content_x_topic where topic_id = ${city.id})", "date asc, webdb_create asc", 6, 5, 0,
186           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
187                   "", "code", 10, 0,
188             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
189               new ResourceBundleProducerNode("lang", "producer_${language.code}",
190                 new GeneratingProducerNode(
191                     "/producer/bolivia.indymedia.org/topic.template",
192                     "${config.storageRoot}/${language.code}/${city.filename}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
193                 )
194               )
195             )
196           ),
197           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
198                   "", "code", 10, 0,
199             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
200               new ResourceBundleProducerNode("lang", "producer_${language.code}",
201                 new GeneratingProducerNode(
202                     "/producer/bolivia.indymedia.org/topicnavigation.template",
203                     "${config.storageRoot}/${language.code}/${city.filename}/${topic.filename}/${topic.filename}navigation.inc"
204                 )
205               )
206             )
207           )
208         );
209       topicPageNode.addVerb("all", -1);
210       topicPageNode.addVerb("new", 3);
211
212       aProducerNode.addSubNode(
213           new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c'", "",
214             new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "((main_url is null) or main_url<>'c')", "",
215               new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
216                     "is_published='1' and to_article_type = ${articletype.topicspecial} and "+
217                     "id in (select content_id from content_x_topic where topic_id = ${topic.id}) and"+
218                     "id in (select content_id from content_x_topic where topic_id = ${city.id})", "date, webdb_create", 1, 0,
219                 topicPageNode
220               )
221             )
222           )
223       );
224     }
225     catch (Throwable t) {
226     }
227
228   }
229 }