indy.nl updates
authorzapata <zapata>
Sun, 23 Jun 2002 22:14:56 +0000 (22:14 +0000)
committerzapata <zapata>
Sun, 23 Jun 2002 22:14:56 +0000 (22:14 +0000)
source/mir/generator/FreemarkerGenerator.java
source/mir/util/DateToMapAdapter.java
source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java
source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java [new file with mode: 0755]
source/mirlocal/indymedia.nl/IndyNLLocalizer.java
source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java

index 4ef040f..15147c8 100755 (executable)
@@ -42,8 +42,6 @@ public class FreemarkerGenerator implements Generator {
            return null;
          if (anObject instanceof TemplateModel)
            return (TemplateModel) anObject;
-//       if (anObject instanceof Date)
-//         return new DateAdapter((Date) anObject);
          else if (anObject instanceof MessageResources)
            return new MessageMethodModel((MessageResources) anObject);
          else if (anObject instanceof String)
@@ -80,16 +78,24 @@ public class FreemarkerGenerator implements Generator {
          }
 
          public TemplateModel get(String aKey) throws TemplateModelException {
-           if (!valuesCache.containsKey(aKey)) {
-             Object value = map.get(aKey);
-
-      if (value == null && !map.containsKey(aKey))
-          throw new TemplateModelException("MapAdapter: no key "+aKey+" available");
-
-             valuesCache.put(aKey, makeAdapter(value));
-           }
-
-           return (TemplateModel) valuesCache.get(aKey);
+           try {
+           if (!valuesCache.containsKey(aKey)) {
+             Object value = map.get(aKey);
+
+        if (value == null && !map.containsKey(aKey))
+            throw new TemplateModelException("MapAdapter: no key "+aKey+" available");
+
+             valuesCache.put(aKey, makeAdapter(value));
+           }
+
+           return (TemplateModel) valuesCache.get(aKey);
+         }
+         catch (TemplateModelException e) {
+           throw e;
+         }
+         catch (Throwable t) {
+           throw new TemplateModelException(t.getMessage());
+         }
          }
        }
 
index 425465e..fd8c2c1 100755 (executable)
@@ -12,7 +12,12 @@ public class DateToMapAdapter extends AbstractMap {
 
   public Object get(Object aKey) {
     if (aKey instanceof String) {
-      return new SimpleDateFormat((String) aKey).format(date);
+      try {
+        return new SimpleDateFormat((String) aKey).format(date);
+      }
+      catch (Throwable t) {
+        throw new RuntimeException( "Can't format date with format " + (String) aKey + ": " + t.getMessage());
+      }
     }
     else return null;
   }
index 0e6d60e..91488c2 100755 (executable)
@@ -134,7 +134,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
     public Object getValue(EntityAdapter anEntityAdapter) {\r
       try {\r
         return anEntityAdapter.getRelation(\r
-                    "to_media="+anEntityAdapter.get("id"),\r
+                    "to_media="+anEntityAdapter.get("id")+" and is_published='1'",\r
                     "webdb_create",\r
                     "comment" );\r
       }\r
diff --git a/source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java b/source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java
new file mode 100755 (executable)
index 0000000..9bb3e3c
--- /dev/null
@@ -0,0 +1,46 @@
+package mirlocal.indymedia.nl;
+
+import mir.entity.adapter.*;
+import mircoders.localizer.*;
+import mircoders.localizer.basic.*;
+import mircoders.storage.*;
+
+public class IndyNLDataModelLocalizer extends MirBasicDataModelLocalizer {
+  protected void constructContentAdapterDefinition(EntityAdapterDefinition anEntityAdapterDefinition) throws MirLocalizerFailure {
+    try {
+      anEntityAdapterDefinition.addCalculatedField("to_hiddencomments", new ContentToHiddenCommentsField());
+      anEntityAdapterDefinition.addCalculatedField("commentcount", new ContentCommentCountField());
+    }
+    catch (Throwable t) {
+      throw new MirLocalizerFailure(t.getMessage(), t);
+    }
+  }
+
+
+  protected class ContentToHiddenCommentsField implements EntityAdapterDefinition.CalculatedField {
+    public Object getValue(EntityAdapter anEntityAdapter) {
+      try {
+        return anEntityAdapter.getRelation(
+                    "to_media="+anEntityAdapter.get("id")+" and is_published='1'",
+                    "webdb_create",
+                    "comment" );
+      }
+      catch (Throwable t) {
+        throw new RuntimeException(t.getMessage());
+      }
+    }
+  }
+
+  protected class ContentCommentCountField implements EntityAdapterDefinition.CalculatedField {
+    public Object getValue(EntityAdapter anEntityAdapter) {
+      try {
+        return Integer.toString(
+            DatabaseComment.getInstance().getSize(
+                  "to_media="+anEntityAdapter.get("id")+" and is_published='1'"));
+      }
+      catch (Throwable t) {
+        throw new RuntimeException(t.getMessage());
+      }
+    }
+  }
+}
index b43dc78..c3c9f6f 100755 (executable)
@@ -18,4 +18,8 @@ public class IndyNLLocalizer extends MirBasicLocalizer {
     return new IndyNLProducerAssistantLocalizer();
   }
 
+  public MirDataModelLocalizer dataModel() {
+    return new IndyNLDataModelLocalizer();
+  };
+
 }
\ No newline at end of file
index cb99075..5721e4e 100755 (executable)
@@ -367,5 +367,44 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
     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')", "date desc, webdb_create desc", 25, 15, 0,
+            new EntityListProducerNode("languages", model, "language",
+                    "", "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", 10, 0,
+              new EntityEnumeratingProducerNode( "language", model, "language", "code='nl'", "",
+                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("trashbin", new NodedProducerFactory( batchingNode ));
+    }
+    catch (Throwable t) {
+      logger.printError("IndyNLProducerLocalizer.setupFactories: Exception "+t.getMessage());
+    }
+
+//${articletype.trashed}
   }
 }