firstImage etc
authorzapata <zapata>
Sun, 8 Feb 2004 22:40:22 +0000 (22:40 +0000)
committerzapata <zapata>
Sun, 8 Feb 2004 22:40:22 +0000 (22:40 +0000)
source/mir/entity/adapter/EntityAdapter.java
source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java

index e223981..f42bca8 100755 (executable)
@@ -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
index e3d2d17..e48c04a 100755 (executable)
@@ -114,6 +114,12 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
       anEntityAdapterDefinition.addCalculatedField("to_media_audio", new ContentToMediaField( "audio" ));\r
       anEntityAdapterDefinition.addCalculatedField("to_media_video", new ContentToMediaField( "video" ));\r
       anEntityAdapterDefinition.addCalculatedField("to_media_other", new ContentToMediaField( "otherMedia" ));\r
+\r
+      anEntityAdapterDefinition.addCalculatedField("firstImage",  new ContentToFirstMediaField( "image" ));\r
+      anEntityAdapterDefinition.addCalculatedField("firstAudio", new ContentToFirstMediaField( "audio" ));\r
+      anEntityAdapterDefinition.addCalculatedField("firstVideo", new ContentToFirstMediaField( "video" ));\r
+      anEntityAdapterDefinition.addCalculatedField("firstOther", new ContentToFirstMediaField( "otherMedia" ));\r
+\r
       anEntityAdapterDefinition.addCalculatedField("to_all_uploaded_media", new ContentToMediaField( "uploadedMedia", false));\r
       anEntityAdapterDefinition.addCalculatedField("to_all_media_images",  new ContentToMediaField( "image", false));\r
       anEntityAdapterDefinition.addCalculatedField("to_all_media_audio", new ContentToMediaField( "audio", false));\r
@@ -599,6 +605,37 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
     }\r
   }\r
 \r
+  protected class ContentToFirstMediaField implements EntityAdapterDefinition.CalculatedField {\r
+    private String definition;\r
+    private boolean published;\r
+\r
+    public ContentToFirstMediaField(String aDefinition, boolean anOnlyPublished) {\r
+      definition = aDefinition;\r
+      published = anOnlyPublished;\r
+    }\r
+\r
+    public ContentToFirstMediaField(String aDefinition) {\r
+      this(aDefinition, true);\r
+    }\r
+\r
+    public Object getValue(EntityAdapter anEntityAdapter) {\r
+      try {\r
+        String condition = "cxm.content_id="+ anEntityAdapter.get("id") +\r
+          " and cxm.media_id = m.id";\r
+        if (published)\r
+          condition = "is_published='t' and " + condition;\r
+\r
+        List extraTables = new Vector();\r
+        extraTables.add("content_x_media cxm");\r
+\r
+        return anEntityAdapter.getComplexToOneRelation("m", extraTables, condition, "id", definition)\r
+      }\r
+      catch (Throwable t) {\r
+        throw new RuntimeException(t.getMessage());\r
+      }\r
+    }\r
+  }\r
+\r
   protected class CommentToMediaField implements EntityAdapterDefinition.CalculatedField {\r
     private String definition;\r
     private boolean published;\r