support for translations + lots of misc. fixes
[mir.git] / source / mircoders / localizer / basic / MirBasicDataModelLocalizer.java
index 92a5a0a..fcdda5a 100755 (executable)
@@ -44,6 +44,7 @@ import mir.entity.adapter.EntityAdapterModel;
 import mir.media.MediaHelper;\r
 import mir.media.MirMedia;\r
 import mir.util.RewindableIterator;\r
+import mir.log.LoggerWrapper;\r
 import mircoders.entity.EntityUploadedMedia;\r
 import mircoders.global.MirGlobal;\r
 import mircoders.localizer.MirAdminInterfaceLocalizer;\r
@@ -71,11 +72,14 @@ import mircoders.storage.DatabaseVideo;
 \r
 public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {\r
   private EntityAdapterModel model;\r
+  protected LoggerWrapper logger;\r
 \r
   public MirBasicDataModelLocalizer() {\r
   }\r
 \r
   public EntityAdapterModel adapterModel() throws MirLocalizerFailure {\r
+    logger = new LoggerWrapper("Localizer.Basic");\r
+\r
     if (model==null)\r
       model = buildModel();\r
 \r
@@ -106,6 +110,9 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
       anEntityAdapterDefinition.addCalculatedField("description_parsed", new FilteredField("description"));\r
       anEntityAdapterDefinition.addCalculatedField("content_data_parsed", new FilteredField("content_data"));\r
 \r
+      anEntityAdapterDefinition.addCalculatedField("children", new ContentToChildrenField());\r
+      anEntityAdapterDefinition.addCalculatedField("parent", new ContentToParentField());\r
+\r
       anEntityAdapterDefinition.addCalculatedField("operations",\r
           new EntityToSimpleOperationsField(MirGlobal.localizer().adminInterface().simpleArticleOperations()));\r
     }\r
@@ -251,6 +258,35 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
     }\r
   }\r
 \r
+  protected class ContentToParentField implements EntityAdapterDefinition.CalculatedField {\r
+    public Object getValue(EntityAdapter anEntityAdapter) {\r
+      try {\r
+        logger.debug("ContentToParentField.getValue");\r
+        return anEntityAdapter.getToOneRelation(\r
+                    "id="+anEntityAdapter.get("to_content"),\r
+                    "id",\r
+                    "content" );\r
+      }\r
+      catch (Throwable t) {\r
+        throw new RuntimeException(t.getMessage());\r
+      }\r
+    }\r
+  }\r
+\r
+  protected class ContentToChildrenField implements EntityAdapterDefinition.CalculatedField {\r
+    public Object getValue(EntityAdapter anEntityAdapter) {\r
+      try {\r
+        return anEntityAdapter.getRelation(\r
+                    "to_content="+anEntityAdapter.get("id"),\r
+                    "id",\r
+                    "content" );\r
+      }\r
+      catch (Throwable t) {\r
+        throw new RuntimeException(t.getMessage());\r
+      }\r
+    }\r
+  }\r
+\r
   protected class ContentToLanguageField implements EntityAdapterDefinition.CalculatedField {\r
     public Object getValue(EntityAdapter anEntityAdapter) {\r
       try {\r