You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jo...@apache.org on 2022/10/11 13:24:44 UTC

[isis] 12/12: ISIS-3171 'Strings' show up again

This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch ISIS-3171
in repository https://gitbox.apache.org/repos/asf/isis.git

commit ddeec7ef628c9b326d6900c45ae3ab495cb2aa3e
Author: Joerg Rade <jo...@kuehne-nagel.com>
AuthorDate: Tue Oct 11 15:23:53 2022 +0200

    ISIS-3171 'Strings' show up again
---
 .../kroviz/core/aggregator/AggregatorWithLayout.kt | 18 +++++++++--
 .../kroviz/core/aggregator/CollectionAggregator.kt | 15 +--------
 .../kroviz/core/aggregator/ObjectAggregator.kt     | 29 +++++++++++------
 .../kroviz/core/model/DisplayModelWithLayout.kt    |  5 ++-
 .../isis/client/kroviz/core/model/ObjectDM.kt      | 37 ++--------------------
 5 files changed, 43 insertions(+), 61 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
index 4725f23003..19e687608b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt
@@ -23,8 +23,7 @@ import org.apache.isis.client.kroviz.core.event.ResourceProxy
 import org.apache.isis.client.kroviz.core.model.DisplayModelWithLayout
 import org.apache.isis.client.kroviz.core.model.ObjectDM
 import org.apache.isis.client.kroviz.layout.Layout
-import org.apache.isis.client.kroviz.to.Represention
-import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.to.*
 import org.apache.isis.client.kroviz.to.bs.Grid
 import org.apache.isis.client.kroviz.ui.core.Constants
 import org.apache.isis.client.kroviz.ui.diagram.Tree
@@ -66,7 +65,7 @@ abstract class AggregatorWithLayout : BaseAggregator() {
             val link = it.link!!
             ResourceProxy().fetch(link, this, subType = Constants.subTypeJson, referrer = referrer)
         }
- //FIXME
+        //FIXME
         if (dm.grid == null) {
             dm.addGrid(grid)
             dm.properties.propertyLayoutList.forEach { p ->
@@ -99,4 +98,17 @@ abstract class AggregatorWithLayout : BaseAggregator() {
         invoke(l, aggregator, referrer = referrer)
     }
 
+    protected fun Property.descriptionLink(): Link? {
+        return links.find {
+            it.relation() == Relation.ELEMENT_TYPE
+        }
+    }
+
+    protected fun Property.isPropertyDescription(): Boolean {
+        val selfLink = this.links.find {
+            it.relation() == Relation.SELF
+        }
+        return selfLink!!.representation() == Represention.PROPERTY_DESCRIPTION
+    }
+
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt
index b7b2a037e9..b1fd3c04a7 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt
@@ -124,7 +124,7 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? =
                 ResourceProxy().fetch(it, this, referrer = referrer)
             }
         }
-        collection.value!!.forEach {
+        collection.value.forEach {
             ResourceProxy().fetch(it, this, referrer = referrer)
         }
     }
@@ -134,17 +134,4 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? =
         return this
     }
 
-    private fun Property.descriptionLink(): Link? {
-        return links.find {
-            it.relation() == Relation.ELEMENT_TYPE
-        }
-    }
-
-    private fun Property.isPropertyDescription(): Boolean {
-        val selfLink = this.links.find {
-            it.relation() == Relation.SELF
-        }
-        return selfLink!!.representation() == Represention.PROPERTY_DESCRIPTION
-    }
-
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt
index 0a6f82e0a2..3f175cc339 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt
@@ -50,7 +50,7 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
                 is TObject -> handleObject(obj, referrer)
                 is ResultObject -> handleResultObject(obj)
                 is ResultValue -> handleResultValue(obj)
-                is Property -> handleProperty(obj)
+                is Property -> handleProperty(obj, referrer)
                 is Layout -> handleLayout(obj, dpm as ObjectDM, referrer)
                 is Grid -> handleGrid(obj, dpm as ObjectDM, referrer)
                 is HttpError -> ErrorDialog(logEntry).open()
@@ -74,7 +74,7 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
         }
     }
 
-    fun handleObject(obj: TObject, referrer: String) {
+    private fun handleObject(obj: TObject, referrer: String) {
         // After ~/action/invoke is called, the actual object instance (containing properties) needs to be invoked as well.
         // Note that rel.self/href is identical and both are of type TObject. logEntry.url is different, though.
         if (obj.getProperties().size == 0) {
@@ -95,11 +95,11 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
         invoke(selfLink!!, this, referrer = referrer)
     }
 
-    fun handleResultObject(resultObject: ResultObject) {
+    private fun handleResultObject(resultObject: ResultObject) {
         (dpm as ObjectDM).addResult(resultObject)
     }
 
-    fun handleResultValue(resultValue: ResultValue) {
+    private fun handleResultValue(resultValue: ResultValue) {
 // TODO       (dpm as ObjectDM).addResult(resultObject)
         console.log("[OA.handleResultValue]")
         console.log(resultValue)
@@ -113,16 +113,27 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
         obj.getCollections().forEach {
             val key = it.id
             val aggregator = CollectionAggregator(key, this)
-            collectionMap.put(key, aggregator)
+            collectionMap[key] = aggregator
             val link = it.links.first()
             ResourceProxy().fetch(link, aggregator, referrer = referrer)
         }
     }
 
-    private fun handleProperty(property: Property) {
-        console.log("[OA.handleProperty]")
-        console.log(property)
-//        throw Throwable("[ObjectAggregator.handleProperty] not implemented yet")
+    private fun handleProperty(p: Property, referrer: String) {
+        val dm = dpm as ObjectDM
+        if (p.isPropertyDescription()) {
+            console.log("[OA.handleProperty].isPropertyDescription")
+            dm.addPropertyDescription(p)
+        } else {
+            console.log("[OA.handleProperty].isNotPropertyDescription")
+            console.log(p)
+            console.log(dm)
+            dm.addProperty(p)
+            val pdl = p.descriptionLink()
+            if (pdl != null) {
+                invoke(pdl, this, referrer = referrer)
+            }
+        }
     }
 
     override fun reset(): ObjectAggregator {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt
index 1be742e138..0696ff4d71 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt
@@ -36,7 +36,8 @@ abstract class DisplayModelWithLayout : BaseDisplayModel() {
     override fun canBeDisplayed(): Boolean {
         return when {
             isRendered -> false
-            layout == null && grid == null -> false
+            layout != null -> true
+            grid != null -> true
             else -> properties.readyForDisplay()
         }
     }
@@ -47,6 +48,8 @@ abstract class DisplayModelWithLayout : BaseDisplayModel() {
     }
 
     fun addGrid(grid: Grid) {
+        console.log("[DMWL.initGrid]")
+        console.log(grid)
         this.grid = grid
         initPropertyGridList(grid)
     }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt
index 5874406673..7290d2ea62 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt
@@ -28,48 +28,17 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
     val collections = mutableMapOf<String, CollectionDM>()
     private var dirty: Boolean = false
 
-    override fun canBeDisplayed(): Boolean {
-        //       debug()
-        return when {
-            isRendered -> false
-            (layout == null) && (grid == null) -> false
-            else -> true
-        }
-    }
-
-    private fun debug() {
-        console.log("[]")
-        console.log("[ODM.debug] data / collections / layout / grid / properties / icon / aggregator / logEntries")
-        console.log(data)
-        console.log(collections)
-        console.log(layout)
-        console.log(grid)
-        console.log(properties)
-        console.log(icon)
-        if (data != null) {
-            val delegate = (data as Exposer).delegate
-            val selfLink = delegate.getSelfLink()
-            val rs = ResourceSpecification(selfLink.href)
-            val es = SessionManager.getEventStore()
-            val le = es.findBy(rs)!!
-            val aggt = le.getAggregator()
-            console.log(aggt)
-            val logEntries = es.findAllBy(aggt!!)
-            logEntries.forEach {
-                console.log(it)
-            }
-        }
-    }
-
     fun setDirty(value: Boolean) {
         dirty = value
     }
 
     fun addCollection(key: String, value: CollectionDM) {
-        collections.put(key, value)
+        collections[key] = value
     }
 
     override fun addData(obj: TransferObject) {
+        console.log("[ODM.addData]")
+        console.log(obj)
         (obj as TObject)
         val exo = Exposer(obj)
         data = exo.dynamise() as? Exposer