From cd256c3a23a140681581986bd2d4fa86956ccb72 Mon Sep 17 00:00:00 2001 From: zapata Date: Sun, 8 Feb 2004 22:40:22 +0000 Subject: [PATCH] firstImage etc --- source/mir/entity/adapter/EntityAdapter.java | 17 ++++++++++ .../basic/MirBasicDataModelLocalizer.java | 37 ++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/source/mir/entity/adapter/EntityAdapter.java b/source/mir/entity/adapter/EntityAdapter.java index e2239816..f42bca85 100755 --- a/source/mir/entity/adapter/EntityAdapter.java +++ b/source/mir/entity/adapter/EntityAdapter.java @@ -182,4 +182,21 @@ public class EntityAdapter implements Map { throw new RuntimeException(t.getMessage()); } } + + public EntityAdapter getComplexToOneRelation(String aMainTablePrefix, List someExtraTables, + String aWhereClause, String anOrderByClause, String aDefinition) { + try { + Iterator i = new EntityIteratorAdapter(aMainTablePrefix, someExtraTables, aWhereClause, anOrderByClause, -1, + getModel(), aDefinition, -1, 0); + + if (i.hasNext()) + return (EntityAdapter) i.next(); + else + return null; + } + catch (Throwable t) { + throw new RuntimeException(t.getMessage()); + } + } + } \ No newline at end of file diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java index e3d2d172..e48c04a6 100755 --- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java @@ -114,6 +114,12 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { anEntityAdapterDefinition.addCalculatedField("to_media_audio", new ContentToMediaField( "audio" )); anEntityAdapterDefinition.addCalculatedField("to_media_video", new ContentToMediaField( "video" )); anEntityAdapterDefinition.addCalculatedField("to_media_other", new ContentToMediaField( "otherMedia" )); + + anEntityAdapterDefinition.addCalculatedField("firstImage", new ContentToFirstMediaField( "image" )); + anEntityAdapterDefinition.addCalculatedField("firstAudio", new ContentToFirstMediaField( "audio" )); + anEntityAdapterDefinition.addCalculatedField("firstVideo", new ContentToFirstMediaField( "video" )); + anEntityAdapterDefinition.addCalculatedField("firstOther", new ContentToFirstMediaField( "otherMedia" )); + anEntityAdapterDefinition.addCalculatedField("to_all_uploaded_media", new ContentToMediaField( "uploadedMedia", false)); anEntityAdapterDefinition.addCalculatedField("to_all_media_images", new ContentToMediaField( "image", false)); anEntityAdapterDefinition.addCalculatedField("to_all_media_audio", new ContentToMediaField( "audio", false)); @@ -599,6 +605,37 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } + protected class ContentToFirstMediaField implements EntityAdapterDefinition.CalculatedField { + private String definition; + private boolean published; + + public ContentToFirstMediaField(String aDefinition, boolean anOnlyPublished) { + definition = aDefinition; + published = anOnlyPublished; + } + + public ContentToFirstMediaField(String aDefinition) { + this(aDefinition, true); + } + + public Object getValue(EntityAdapter anEntityAdapter) { + try { + String condition = "cxm.content_id="+ anEntityAdapter.get("id") + + " and cxm.media_id = m.id"; + if (published) + condition = "is_published='t' and " + condition; + + List extraTables = new Vector(); + extraTables.add("content_x_media cxm"); + + return anEntityAdapter.getComplexToOneRelation("m", extraTables, condition, "id", definition) + } + catch (Throwable t) { + throw new RuntimeException(t.getMessage()); + } + } + } + protected class CommentToMediaField implements EntityAdapterDefinition.CalculatedField { private String definition; private boolean published; -- 2.11.0