0b513b023835281319948ef1b977c2ea32702edc
[mir.git] / source / mirlocal / euskalherria.indymedia.org / EHProducerLocalizer.java
1 package mirlocal.euskalherria.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 EHProducerLocalizer extends MirBasicProducerLocalizer {
13
14   protected void setupContentFactory(CompositeProducerFactory aContentFactory) {
15     EntityEnumeratingProducerNode contentNode = null;
16
17     try {
18       contentNode =
19           new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
20             new CompositeProducerNode( new ProducerNode[] {
21               new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
22                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
23                     new CompositeProducerNode( new ProducerNode[] {
24                       new GeneratingProducerNode(
25                           "/producer/euskalherria.indymedia.org/article.template",
26                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
27                       ),
28                       new FileDateSettingProducerNode(
29                           "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
30                           "content.date.date"
31                       )
32                     } )
33                 )
34               ),
35               new ContentMarkingProducerNode( "content")
36             } )
37           );
38     }
39     catch (Throwable t) {
40     }
41
42     contentNode.addVerb( "all", "is_published='1'", "" );
43     contentNode.addVerb( "new", "is_published='1' and is_produced='f'", "" );
44
45     aContentFactory.addFactory( new NodedProducerFactory( contentNode ) );
46
47   }
48
49   protected void setupStartPageFactory(CompositeProducerFactory aStartPageFactory) {
50     ProducerNode startPageNode = null;
51
52     try {
53       startPageNode =
54             new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
55                     "is_published='1' and to_article_type = ${articletype.newswire}", "date desc, webdb_create desc", 40, 0,
56               new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
57                             "", "code", 10, 0,
58                 new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
59                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
60                     new EntityListProducerNode("startspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
61                               "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 1, 0,
62                       new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
63                               "is_published='1' and to_article_type = ${articletype.feature}", "date desc, webdb_create desc", 10, 0,
64                         new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
65                                   "", "webdb_create desc", 5, 0,
66                           new GeneratingProducerNode(
67                               "/producer/euskalherria.indymedia.org/startpage.template",
68                               "${config.storageRoot}/${language.code}/index.shtml"
69                           )
70                         )
71                       )
72                     )
73                   )
74                 )
75               )
76             );
77     }
78     catch (Throwable t) {
79     }
80
81     aStartPageFactory.addFactory( new NodedProducerFactory( startPageNode ) );
82   }
83
84   protected void setupSynchronizationFactory(CompositeProducerFactory aSynchronizationFactory) {
85     if(MirGlobal.getConfigBooleanProperty("Rsync")){
86       aSynchronizationFactory.addFactory(
87         new ScriptCallProducerFactory(MirGlobal.getConfigProperty("Rsync.Script.Path")));
88     }
89     else {
90       NullProducerFactory nullFactory = new NullProducerFactory();
91       nullFactory.addVerb("run");
92       aSynchronizationFactory.addFactory(nullFactory);
93     }
94   }
95
96   protected void setupStaticFactory(CompositeProducerFactory aStaticFactory) {
97     ProducerNode staticNode = null;
98
99     try {
100       staticNode =
101           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
102                   "", "code", 10, 0,
103             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
104               new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
105                 new GeneratingProducerNode(
106                     "/producer/euskalherria.indymedia.org/navigation.template",
107                     "${config.storageRoot}/${language.code}/navigation.inc"
108                 )
109               )
110             )
111           );
112     }
113     catch (Throwable t) {
114     }
115
116     aStaticFactory.addFactory( new NodedProducerFactory( staticNode ) );
117   }
118
119   protected void setupFactories(Map aFactoriesMap ) {
120     EntityBatchingProducerNode topicPageNode = null;
121
122     super.setupFactories(aFactoriesMap);
123
124     try {
125       topicPageNode =
126         new EntityBatchingProducerNode( "articles", "batch", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
127               "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,
128           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
129                   "", "code", 10, 0,
130             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
131               new ResourceBundleProducerNode("lang", "producer_${language.code}",
132                 new GeneratingProducerNode(
133                     "/producer/euskalherria.indymedia.org/topic.template",
134                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
135                 )
136               )
137             )
138           ),
139           new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
140                   "", "code", 10, 0,
141             new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
142               new ResourceBundleProducerNode("lang", "producer_${language.code}",
143                 new GeneratingProducerNode(
144                     "/producer/euskalherria.indymedia.org/topicnavigation.template",
145                     "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
146                 )
147               )
148             )
149           )
150         );
151       topicPageNode.addVerb("all", -1);
152       topicPageNode.addVerb("new", 3);
153
154       aFactoriesMap.put("topics",
155         new NodedProducerFactory(
156           new EntityEnumeratingProducerNode( "topic", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "", "",
157             new EntityListProducerNode("topicspecial", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
158                   "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,
159               new EntityListProducerNode("topicfeatures", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
160                     "is_published='1' and to_article_type = ${articletype.feature} and id in (select content_id from content_x_topic where topic_id = ${topic.id})", "date, webdb_create", 10, 0,
161                 topicPageNode
162               )
163             )
164           )
165         )
166       );
167     }
168     catch (Throwable t) {
169     }
170
171   }
172 }