small updates for indy.nl
[mir.git] / source / mirlocal / indymedia.nl / IndyNLProducerLocalizer.java
index 0bc12e3..aad97c4 100755 (executable)
@@ -7,75 +7,151 @@ import mircoders.localizer.*;
 import mircoders.localizer.basic.*;
 import mircoders.producer.*;
 import mircoders.storage.*;
-import mircoders.entity.adapter.*;
 
 public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
 
-  protected void setupContentFactory(CompositeProducerFactory aContentFactory) {
+  protected void setupContentFactory(CompositeProducerNode aProducerNode) {
     EntityEnumeratingProducerNode contentNode = null;
 
     try {
+      // trashed comments
       contentNode =
-          new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+          new EntityEnumeratingProducerNode( "content", model, "content",
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/trashedcomments.template",
+                    "${config.storageRoot}/trashbin/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.trashed.shtml"
+                )
+              )
+            )
+          );
+
+      contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "" );
+
+      aProducerNode.addSubNode( contentNode );
+
+
+      // ordinary articles
+      contentNode =
+          new EntityEnumeratingProducerNode( "content", model, "content",
             new CompositeProducerNode( new ProducerNode[] {
               new GeneratingProducerNode(
                   "/producer/indymedia.nl/content.template",
-                  "${config.storageRoot}/content/${content.date.year}/${content.date.month}/${content.id}.inc"
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
+              ),
+              new GeneratingProducerNode(
+                  "/producer/indymedia.nl/comments.template",
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.comments.inc"
               ),
-              new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                     new CompositeProducerNode( new ProducerNode[] {
                       new GeneratingProducerNode(
                           "/producer/indymedia.nl/article.template",
-                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date..formatted.MM}/${content.id}.shtml"
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
                       ),
                       new FileDateSettingProducerNode(
-                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date..formatted.MM}/${content.id}.shtml",
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
                           "content.date.date"
                       )
                     } )
                 )
-              )
+              ),
+              new ContentMarkingProducerNode( "content" )
             } )
           );
-    }
-    catch (Throwable t) {
-    }
 
-    contentNode.addVerb( "all", "is_published='1'", "" );
-    contentNode.addVerb( "all", "is_published='1' and is_produced='f'", "" );
+      contentNode.addVerb( "all", "is_published='1' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and to_article_type<>${articletype.static}", "webdb_create desc, date desc" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type<>${articletype.trashed} and to_article_type<>${articletype.opentrashed} and to_article_type<>${articletype.static}", "webdb_create desc, date desc" );
 
-    aContentFactory.addFactory( new NodedProducerFactory( contentNode ) );
+      aProducerNode.addSubNode( contentNode );
 
+      // openly trashed articles
+      contentNode =
+          new EntityEnumeratingProducerNode( "content", model, "content",
+            new CompositeProducerNode( new ProducerNode[] {
+              new GeneratingProducerNode(
+                  "/producer/indymedia.nl/removed.template",
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
+              ),
+              new GeneratingProducerNode(
+                  "/producer/indymedia.nl/removed.template",
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.comments.inc"
+              ),
+              new EntityEnumeratingProducerNode( "language", model, "language", "code = 'nl'", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                    new CompositeProducerNode( new ProducerNode[] {
+                      new GeneratingProducerNode(
+                          "/producer/indymedia.nl/trashed.template",
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                      ),
+                      new FileDateSettingProducerNode(
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
+                          "content.date.date"
+                      ),
+                      new ContentMarkingProducerNode( "content" )
+                    } )
+                )
+              ),
+              new ContentMarkingProducerNode( "content" )
+            })
+          );
+      contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.opentrashed}", "" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.opentrashed}", "" );
 
-/*
-    aContentFactory.addFactory(
-      new ContentProducerFactory(
-      "producer/content.template",
-      "bundles.admin",
-      MirGlobal.getConfigProperty("Producer.StorageRoot") + "/content/${contentyear}/${contentmonth}/${contentid}.inc",
-      Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
-
-    aContentFactory.addFactory(
-      new ContentProducerFactory(
-      "producer/article.template",
-      "bundles.admin",
-      MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/${contentyear}/${contentmonth}/${contentid}.shtml",
-      Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
- */
-  }
+      aProducerNode.addSubNode( contentNode );
 
-  protected void setupStartPageFactory(CompositeProducerFactory aStartPageFactory) {
-    ProducerNode startPageNode = null;
+      // closedly trashed articles
+      contentNode =
+          new EntityEnumeratingProducerNode( "content", model, "content",
+            new CompositeProducerNode( new ProducerNode[] {
+              new GeneratingProducerNode(
+                  "/producer/indymedia.nl/removed.template",
+                  "${config.storageRoot}/content/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.inc"
+              ),
+              new EntityEnumeratingProducerNode( "language", model, "language", "code = 'nl'", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                    new CompositeProducerNode( new ProducerNode[] {
+                      new GeneratingProducerNode(
+                          "/producer/indymedia.nl/removed.template",
+                          "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                      ),
+                      new GeneratingProducerNode(
+                          "/producer/indymedia.nl/trashed.template",
+                          "${config.storageRoot}/trashbin/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml"
+                      ),
+                      new FileDateSettingProducerNode(
+                          "${config.storageRoot}/trashbin/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml",
+                          "content.date.date"
+                      ),
+                      new ContentMarkingProducerNode( "content" )
+                    } )
+                )
+              ),
+              new ContentMarkingProducerNode( "content" )
+            })
+          );
+      contentNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.trashed}", "" );
+      contentNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.trashed}", "" );
 
+      aProducerNode.addSubNode( contentNode );
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupContentFactory: Exception "+t.getMessage());
+    }
+
+  }
+
+  protected void setupStartPageFactory(CompositeProducerNode aProducerNode) {
     try {
-      startPageNode =
-            new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
-                    "is_published='1' and to_article_type = 1", "date desc, webdb_create desc", 40,
-              new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
-                            "", "code", 10,
+      aProducerNode.addSubNode(
+            new EntityListProducerNode("newswire", model, "content",
+                    "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 40, 0,
+              new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
                     new CompositeProducerNode( new ProducerNode[] {
-                        new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+                        new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                           new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                               new GeneratingProducerNode(
                                   "/producer/indymedia.nl/newswire.template",
@@ -83,73 +159,102 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                               )
                           )
                         ),
-                        new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
-                                "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10,
-                          new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
-                                    "", "webdb_create desc", 5,
-                            new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "code='nl'", "",
-                                new AssignmentProducerNode( "staticinclude", "1",
-                                  new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
-                                  new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
-                                  new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
-                                  new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
-                                  new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
+                        new EntityListProducerNode("startspecials", model, "content",
+                                "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
+                          new EntityListProducerNode("features", model, "content",
+                                  "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
+                            new EntityListProducerNode("breaking", model, "breakingNews",
+                                      "", "webdb_create desc", 5, 0,
+                              new CompositeProducerNode( new ProducerNode[] {
+                                new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+                                  new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                                     new GeneratingProducerNode(
-                                        "/producer/indymedia.nl/start.template",
-                                        "${config.storageRoot}/index.shtml"
+                                        "/producer/indymedia.nl/features.template",
+                                        "${config.storageRoot}/${language.code}/features.inc"
+                                    )
+                                  )
+                                ),
+                                new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+                                  new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                                    new AssignmentProducerNode( "staticinclude", "1",
+                                      new EvaluatedAssignmentProducerNode( "topinclude", "/producer/indymedia.nl/top.template",
+                                      new EvaluatedAssignmentProducerNode( "bottominclude", "/producer/indymedia.nl/bottom.template",
+                                      new EvaluatedAssignmentProducerNode( "navinclude", "/producer/indymedia.nl/nav.template",
+                                      new EvaluatedAssignmentProducerNode( "newswireinclude", "/producer/indymedia.nl/newswire.template",
+                                      new EvaluatedAssignmentProducerNode( "featuresinclude", "/producer/indymedia.nl/features.template",
+                                        new GeneratingProducerNode(
+                                            "/producer/indymedia.nl/start.template",
+                                            "${config.storageRoot}/index.html"
+                                        )
+                                      )))))
                                     )
-                                  )))))
+                                  )
                                 )
+                              } )
                             )
                           )
                         )
                     })
               )
-            );
+            )
+      );
     }
     catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupStartPageFactory: Exception "+t.getMessage());
     }
-
-    aStartPageFactory.addFactory( new NodedProducerFactory( startPageNode ) );
-/*
-    aStartPageFactory.addFactory(
-      new StartPageProducerFactory(
-          "producer/start.template",
-          "bundles.admin",
-          MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start.shtml",
-          MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
-          0));
-
-    aStartPageFactory.addFactory(
-      new StartPageProducerFactory(
-          "producer/newswire.template",
-          "bundles.admin",
-          MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire.inc",
-          0,
-          MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
-*/
   }
 
-  protected void setupSynchronizationFactory(CompositeProducerFactory aSynchronizationFactory) {
-    if(MirGlobal.getConfigBooleanProperty("Rsync")){
-      aSynchronizationFactory.addFactory(
-        new ScriptCallProducerFactory(MirGlobal.getConfigProperty("Rsync.Script.Path")));
+  protected void setupTopicsFactory(CompositeProducerNode aProducerNode) {
+    EntityBatchingProducerNode topicPageNode = null;
+
+    try {
+      topicPageNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire}) and id in (select content_id from content_x_topic where topic_id = ${topic.id})", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/topic.template",
+                    "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/topicnavigation.template",
+                    "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"
+                )
+              )
+            )
+          )
+        );
+      topicPageNode.addVerb("all", -1);
+      topicPageNode.addVerb("new", 3);
+
+      aProducerNode.addSubNode(
+          new EntityEnumeratingProducerNode( "topic", model, "topic","", "",
+            new EntityListProducerNode("topicspecial", model, "content",
+                  "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,
+              topicPageNode
+            )
+          )
+      );
     }
-    else {
-      NullProducerFactory nullFactory = new NullProducerFactory();
-      nullFactory.addVerb("run");
-      aSynchronizationFactory.addFactory(nullFactory);
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupTopicsFactory Exception "+t.getMessage());
     }
   }
 
-  protected void setupStaticFactory(CompositeProducerFactory aStaticFactory) {
-    ProducerNode staticNode = null;
 
+  protected void setupStaticFactory(CompositeProducerNode aProducerNode) {
     try {
-      staticNode =
-          new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
-                  "", "code", 10,
-              new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+      aProducerNode.addSubNode(
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                 new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                   new CompositeProducerNode( new ProducerNode[] {
                     new GeneratingProducerNode(
@@ -169,8 +274,12 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                         "${config.storageRoot}/${language.code}/style.css"
                     ),
                     new GeneratingProducerNode(
-                        "/producer/indymedia.nl/top.template",
-                        "${config.storageRoot}/${language.code}/top.inc"
+                        "/producer/indymedia.nl/style2.template",
+                        "${config.storageRoot}/${language.code}/style2.css"
+                    ),
+                    new GeneratingProducerNode(
+                        "/producer/indymedia.nl/trashtop.template",
+                        "${config.storageRoot}/${language.code}/trashtop.inc"
                     ),
                     new GeneratingProducerNode(
                         "/producer/indymedia.nl/articlepre.template",
@@ -191,7 +300,8 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                             "${config.storageRoot}/${language.code}/start.shtml"
                         )
                       )))))
-                    ),
+                    )
+/*                    ,
                     new AssignmentProducerNode( "staticinclude", "0",
                       new EvaluatedAssignmentProducerNode( "topinclude", "/${language.code}/top.inc",
                       new EvaluatedAssignmentProducerNode( "bottominclude", "/${language.code}/bottom.inc",
@@ -204,31 +314,36 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                         )
                       )))))
                     )
+*/
                   } )
                 )
               )
-          );
+          )
+      );
     }
     catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupStaticFactory Exception "+t.getMessage());
     }
-
-    aStaticFactory.addFactory( new NodedProducerFactory( staticNode ) );
   }
 
   protected void setupFactories(Map aFactoriesMap ) {
     super.setupFactories(aFactoriesMap);
 
     ProducerNode node = null;
+    EntityBatchingProducerNode batchingNode = null;
+    EntityEnumeratingProducerNode enumeratingNode = null;
 
+/*
     try {
       node =
-          new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
-                  "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10,
-            new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
-                      "", "webdb_create desc", 5,
-              new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
-                        "", "code", 10,
-                new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+        new EntityListProducerNode("startspecials", model, "content",
+                "is_published='1' and to_article_type = ${articletype.startspecial}", "date desc, webdb_create desc", 10, 0,
+          new EntityListProducerNode("features", model, "content",
+                  "is_published='1' and to_article_type in ( ${articletype.feature}, ${articletype.promotednewswire})", "date desc, webdb_create desc", 20, 0,
+            new EntityListProducerNode("breaking", model, "breakingNews",
+                      "", "webdb_create desc", 5, 0,
+              new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+                new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                       new GeneratingProducerNode(
                           "/producer/indymedia.nl/features.template",
@@ -238,22 +353,24 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
                 )
               )
             )
-          );
+          )
+        );
+      aFactoriesMap.put("features", new NodedProducerFactory( node ) );
     }
     catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
     }
+*/
 
-    aFactoriesMap.put("features", new NodedProducerFactory( node ) );
-
+/*
     try {
       node =
-          new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
-                  "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10,
-            new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
-                      "", "webdb_create desc", 5,
-              new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
-                        "", "code", 10,
-                new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+          new EntityListProducerNode("features", model, "content",
+                  "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 20, 0,
+            new EntityListProducerNode("breaking", model, "breakingNews",
+                      "", "webdb_create desc", 5, 0,
+              new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+                new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
                   new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
                       new GeneratingProducerNode(
                           "/producer/indymedia.nl/features.template",
@@ -264,27 +381,292 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
               )
             )
           );
+      aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
     }
     catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories Exception "+t.getMessage());
     }
-    aFactoriesMap.put("featurestest", new NodedProducerFactory( node ) );
-
+*/
 /*
-    aStartPageFactory.addFactory(
-      new StartPageProducerFactory(
-          "producer/start.template",
-          "bundles.admin",
-          MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start.shtml",
-          MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
-          0));
-
-    aStartPageFactory.addFactory(
-      new StartPageProducerFactory(
-          "producer/newswire.template",
-          "bundles.admin",
-          MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire.inc",
-          0,
-          MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
+    try {
+      batchingNode =
+          new EntityBatchingProducerNode( "comments", "batch", model, "comments",
+
+                "", "id asc", 25, 15, 0,
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                  new GeneratingProducerNode(
+                      "/producer/indymedia.nl/commentsindex.template",
+                      "${config.storageRoot}/${language.code}/comments/comments${batch.current.identifier}.shtml"
+                  )
+                )
+              )
+            ),
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                  new GeneratingProducerNode(
+                      "/producer/indymedia.nl/commentsindexnavigation.template",
+                      "${config.storageRoot}/${language.code}/comments/commentsnavigation.inc"
+                  )
+                )
+              )
+            )
+          );
+      batchingNode.addVerb("new", 3);
+      batchingNode.addVerb("all", -1);
+
+      aFactoriesMap.put("commentsindex", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
 */
+
+    try {
+      enumeratingNode =
+              new EntityEnumeratingProducerNode( "content", model, "content",
+                  new GeneratingProducerNode(
+                      "/producer/indymedia.nl/static.template",
+                      "${config.storageRoot}/${language.code}/static/${content.edittitle}.shtml"
+                  )
+                );
+
+      enumeratingNode.addVerb( "all", "is_published='1' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
+      enumeratingNode.addVerb( "new", "is_published='1' and is_produced='f' and to_article_type=${articletype.static} and to_language=${language.id} and edittitle<>'' and not edittitle is null", "" );
+
+      aFactoriesMap.put("staticarticles", new NodedProducerFactory(
+          new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+            new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+              enumeratingNode
+            )
+          )
+      ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+
+    try {
+      batchingNode =
+          new EntityBatchingProducerNode( "articles", "batch", model, "content",
+                "to_article_type=${articletype.trashed} or exists(select * from comment where comment.to_media=content.id and comment.is_published='f')", "webdb_create asc, date asc", 25, 15, 0,
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                  new GeneratingProducerNode(
+                      "/producer/indymedia.nl/trashbin.template",
+                      "${config.storageRoot}/trashbin/${language.code}/trashbin${batch.current.identifier}.shtml"
+                  )
+                )
+              )
+            ),
+            new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+                new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                  new GeneratingProducerNode(
+                      "/producer/indymedia.nl/trashbinnavigation.template",
+                      "${config.storageRoot}/trashbin/${language.code}/trashbinnavigation.inc"
+                  )
+                )
+              )
+            )
+          );
+      batchingNode.addVerb("new", 3);
+      batchingNode.addVerb("all", -1);
+
+      aFactoriesMap.put("trashbin", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+// archives
+
+    try {
+      batchingNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type = ${articletype.feature}", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/feature.archive.template",
+                    "${config.storageRoot}/${language.code}/feature/feature${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/feature.archive.navigation.template",
+                    "${config.storageRoot}/${language.code}/feature/featurenavigation.inc"
+                )
+              )
+            )
+          )
+        );
+      batchingNode.addVerb("all", -1);
+      batchingNode.addVerb("new", 3);
+
+      aFactoriesMap.put("featurearchive", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      batchingNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/newswire.archive.template",
+                    "${config.storageRoot}/${language.code}/newswire/newswire${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/newswire.archive.navigation.template",
+                    "${config.storageRoot}/${language.code}/newswire/newswirenavigation.inc"
+                )
+              )
+            )
+          )
+        );
+      batchingNode.addVerb("all", -1);
+      batchingNode.addVerb("new", 3);
+
+      aFactoriesMap.put("newswirearchive", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      batchingNode =
+        new EntityBatchingProducerNode( "articles", "batch", model, "content",
+              "is_published='1' and to_article_type in (${articletype.openposting}, ${articletype.newswire}, ${articletype.promotednewswire})", "webdb_create asc, date asc", 20, 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/openposting.archive.template",
+                    "${config.storageRoot}/${language.code}/openposting/openposting${batch.current.identifier}.shtml"
+                )
+              )
+            )
+          ),
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/openposting.archive.navigation.template",
+                    "${config.storageRoot}/${language.code}/openposting/openpostingnavigation.inc"
+                )
+              )
+            )
+          )
+        );
+      batchingNode.addVerb("all", -1);
+      batchingNode.addVerb("new", 3);
+
+      aFactoriesMap.put("openpostingarchive", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+        new EntityListProducerNode( "articles", model, "content",
+              "is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
+              "(select max(webdb_create) from comment where to_media=content.id and is_published='t') desc", 30, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/commentedarticles.template",
+                    "${config.storageRoot}/${language.code}/commentedarticles.shtml"
+                )
+              )
+            )
+          )
+        );
+      aFactoriesMap.put("commentedarticles", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+        new EntityListProducerNode( "articles", model, "content",
+              "is_published='1' and to_article_type = ${articletype.opentrashed}", "webdb_create desc, date desc", 30, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('nl', 'en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/opentrashbin.template",
+                    "${config.storageRoot}/${language.code}/opentrashbin.shtml"
+                )
+              )
+            )
+          )
+        );
+      aFactoriesMap.put("opentrashbin", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+        new EntityListProducerNode( "articles", model, "content",
+              "is_published='1' and length(source)>10 and id>5000 and to_article_type in (${articletype.feature}, ${articletype.startspecial}, ${articletype.newswire}, ${articletype.promotednewswire})",
+              "webdb_create desc, date desc", 10, 0,
+          new EntityListProducerNode("languages", model, "language", "code in ('nl', 'en')", "code", 10, 0,
+            new EntityEnumeratingProducerNode( "language", model, "language", "code in ('en')", "",
+              new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}",
+                new GeneratingProducerNode(
+                    "/producer/indymedia.nl/featuressyndication.template",
+                    "${config.storageRoot}/features.1-0.rdf",
+                    "UTF-8"
+                )
+              )
+            )
+          )
+        );
+      aFactoriesMap.put("syndication", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+    try {
+      node =
+          new EntityEnumeratingProducerNode( "content", model, "content", "to_article_type = ${articletype.opentrashed} and webdb_create<now()-interval '5 days'", "",
+            new ContentModifyingProducerNode(
+              "content",
+              "to_article_type",
+              "${articletype.trashed}"
+            )
+          );
+      aFactoriesMap.put("trashbinmover", new NodedProducerFactory( node ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
   }
 }