From: zapata Date: Sun, 23 Jun 2002 22:14:56 +0000 (+0000) Subject: indy.nl updates X-Git-Tag: prexmlproducerconfig~36 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;ds=sidebyside;h=560bf6e79bf68105fecf6ab85058b6a8ee8fdc08;p=mir.git indy.nl updates --- diff --git a/source/mir/generator/FreemarkerGenerator.java b/source/mir/generator/FreemarkerGenerator.java index 4ef040f9..15147c86 100755 --- a/source/mir/generator/FreemarkerGenerator.java +++ b/source/mir/generator/FreemarkerGenerator.java @@ -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()); + } } } diff --git a/source/mir/util/DateToMapAdapter.java b/source/mir/util/DateToMapAdapter.java index 425465ed..fd8c2c1d 100755 --- a/source/mir/util/DateToMapAdapter.java +++ b/source/mir/util/DateToMapAdapter.java @@ -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; } diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java index 0e6d60eb..91488c2b 100755 --- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java @@ -134,7 +134,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { public Object getValue(EntityAdapter anEntityAdapter) { try { return anEntityAdapter.getRelation( - "to_media="+anEntityAdapter.get("id"), + "to_media="+anEntityAdapter.get("id")+" and is_published='1'", "webdb_create", "comment" ); } diff --git a/source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java b/source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java new file mode 100755 index 00000000..9bb3e3c8 --- /dev/null +++ b/source/mirlocal/indymedia.nl/IndyNLDataModelLocalizer.java @@ -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()); + } + } + } +} diff --git a/source/mirlocal/indymedia.nl/IndyNLLocalizer.java b/source/mirlocal/indymedia.nl/IndyNLLocalizer.java index b43dc781..c3c9f6fc 100755 --- a/source/mirlocal/indymedia.nl/IndyNLLocalizer.java +++ b/source/mirlocal/indymedia.nl/IndyNLLocalizer.java @@ -18,4 +18,8 @@ public class IndyNLLocalizer extends MirBasicLocalizer { return new IndyNLProducerAssistantLocalizer(); } + public MirDataModelLocalizer dataModel() { + return new IndyNLDataModelLocalizer(); + }; + } \ No newline at end of file diff --git a/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java b/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java index cb990754..5721e4ed 100755 --- a/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java +++ b/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java @@ -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} } }