You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by jo...@apache.org on 2023/02/25 12:47:25 UTC

[causeway] branch ISIS-3171 updated: ISIS-3171 Object* simplified

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/causeway.git


The following commit(s) were added to refs/heads/ISIS-3171 by this push:
     new f41796cb47 ISIS-3171 Object* simplified
f41796cb47 is described below

commit f41796cb478b9ff906b0b801c40b37fa71dd1ad8
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Sat Feb 25 13:47:05 2023 +0100

    ISIS-3171 Object* simplified
---
 .../kroviz/core/aggregator/ObjectAggregator.kt     | 19 ++++----------
 .../kroviz/core/model/DisplayModelWithLayout.kt    |  5 ++--
 .../causeway/client/kroviz/core/model/ObjectDM.kt  | 14 ++++------
 .../client/kroviz/core/model/ObjectLayout.kt       | 30 ++++++++++------------
 4 files changed, 26 insertions(+), 42 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt
index 202b634238..9f289787f8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt
@@ -20,7 +20,6 @@ package org.apache.causeway.client.kroviz.core.aggregator
 
 import org.apache.causeway.client.kroviz.core.event.LogEntry
 import org.apache.causeway.client.kroviz.core.model.ObjectDM
-import org.apache.causeway.client.kroviz.core.model.ObjectLayout
 import org.apache.causeway.client.kroviz.to.*
 import org.apache.causeway.client.kroviz.to.bs.GridBs
 import org.apache.causeway.client.kroviz.ui.core.Constants
@@ -86,10 +85,6 @@ class ObjectAggregator(private val actionTitle: String) : AggregatorWithLayout()
         return displayModel as ObjectDM
     }
 
-    private fun getLayout(): ObjectLayout {
-        return getDisplayModel().layout as ObjectLayout
-    }
-
     private fun handleResultObject(resultObject: ResultObject) {
         getDisplayModel().addResult(resultObject)
     }
@@ -114,14 +109,10 @@ class ObjectAggregator(private val actionTitle: String) : AggregatorWithLayout()
     }
 
     private fun handleGrid(grid: GridBs, referrer: String) {
-        val ol = getLayout()
-        // for a yet unknown reason, handleGrid may be called twice, therefore we check if it's already set
-        if (ol.grid == null) {
-            ol.addGrid(grid, this, referrer = referrer)
-            grid.getPropertyList().forEach {
-                val link = it.link!!
-                invoke(link, this, subType = Constants.subTypeJson, referrer = referrer)
-            }
+        getDisplayModel().addLayout(grid, this, referrer)
+        grid.getPropertyList().forEach {
+            val link = it.link!!
+            invoke(link, this, subType = Constants.subTypeJson, referrer = referrer)
         }
     }
 
@@ -145,4 +136,4 @@ class ObjectAggregator(private val actionTitle: String) : AggregatorWithLayout()
         return this.url == ""
     }
 
-}
+}
\ No newline at end of file
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelWithLayout.kt
index 2b9921608a..c9b1829acf 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelWithLayout.kt
@@ -18,9 +18,10 @@
  */
 package org.apache.causeway.client.kroviz.core.model
 
-import org.apache.causeway.client.kroviz.layout.Layout
+import org.apache.causeway.client.kroviz.core.aggregator.ObjectAggregator
 import org.apache.causeway.client.kroviz.to.Icon
 import org.apache.causeway.client.kroviz.to.TransferObject
+import org.apache.causeway.client.kroviz.to.bs.GridBs
 
 abstract class DisplayModelWithLayout : BaseDisplayModel() {
 
@@ -31,6 +32,6 @@ abstract class DisplayModelWithLayout : BaseDisplayModel() {
         icon = obj as Icon
     }
 
-    open fun addLayout(lt: Layout) {}
+    open fun addLayout(grid: GridBs, aggregator: ObjectAggregator?, referrer: String?) {}
 
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt
index e164ccae38..86d9f14cf8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt
@@ -18,18 +18,15 @@
  */
 package org.apache.causeway.client.kroviz.core.model
 
+import org.apache.causeway.client.kroviz.core.aggregator.ObjectAggregator
 import org.apache.causeway.client.kroviz.core.event.ResourceProxy
 import org.apache.causeway.client.kroviz.core.event.ResourceSpecification
-import org.apache.causeway.client.kroviz.layout.Layout
 import org.apache.causeway.client.kroviz.to.*
+import org.apache.causeway.client.kroviz.to.bs.GridBs
 import org.apache.causeway.client.kroviz.ui.core.SessionManager
 
 class ObjectDM(override val title: String) : DisplayModelWithLayout() {
     val properties = ObjectSpecificationHolder()
-    init {
-        layout = ObjectLayout()
-    }
-
     private val collectionModelList = mutableListOf<CollectionDM>()
     var data: Exposer? = null
     private var dirty: Boolean = false
@@ -48,8 +45,8 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
         }
     }
 
-    override fun addLayout(lt: Layout) {
-        TODO("Not yet implemented")
+    override fun addLayout(grid: GridBs, aggregator: ObjectAggregator?, referrer: String?) {
+        layout = ObjectLayout(grid, aggregator!!, referrer!!)
     }
 
     fun getCollectionDisplayModelFor(id: String): CollectionDM {
@@ -63,11 +60,10 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
             data == null -> false
             isRendered -> false
             layout == null -> false
-            else -> layout!!.readyToRender() && areCollectionsReadyToRender()
+            else -> areCollectionsReadyToRender()
         }
     }
 
-
     private fun areCollectionsReadyToRender(): Boolean {
         collectionModelList.forEach {
             if (!it.readyToRender())
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt
index 400db17e3b..5c0ca4d4d4 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt
@@ -26,45 +26,41 @@ import org.apache.causeway.client.kroviz.to.bs.CollectionBs
 import org.apache.causeway.client.kroviz.to.bs.GridBs
 import org.apache.causeway.client.kroviz.to.bs.RowBs
 
-class ObjectLayout : BaseLayout() {
-
-    var grid: GridBs? = null
-
-    override fun readyToRender(): Boolean {
-        return grid != null
-    }
-
-    fun addGrid(grid: GridBs, aggregator: ObjectAggregator, referrer: String?) {
-        this.grid = grid
+class ObjectLayout(val grid: GridBs, val aggregator: ObjectAggregator, val referrer: String) : BaseLayout() {
+    init {
         grid.rows.forEach { r ->
-            initRow(r, aggregator, referrer = referrer!!)
+            initRow(r)
         }
     }
 
-    private fun initRow(r: RowBs, aggregator: ObjectAggregator, referrer: String) {
+    override fun readyToRender(): Boolean {
+        return true //TODO remove from protocol ?
+    }
+
+    private fun initRow(r: RowBs) {
         r.colList.forEach { c ->
             c.rowList.forEach { r2 ->
                 r2.colList.forEach { c2 ->
                     c2.collectionList.forEach { col ->
-                        initCollection(col, aggregator, referrer)
+                        initCollection(col)
                     }
                 }
             }
             c.tabGroupList.forEach { tg ->
                 tg.tabList.forEach { t ->
                     t.rowList.forEach { r3 ->
-                        initRow(r3, aggregator, referrer)
+                        initRow(r3)
                     }
                 }
             }
         }
     }
 
-    private fun initCollection(collection: CollectionBs, parent: ObjectAggregator, referrer: String) {
+    private fun initCollection(collection: CollectionBs) {
         val href = collection.linkList.first().href // we assume, linklist has always one element
         val l = Link(href = href)
-        val aggt = CollectionAggregator("", parent)
-        ResourceProxy().fetch(l, aggt, referrer = referrer)
+        val childAggt = CollectionAggregator("", aggregator)
+        ResourceProxy().fetch(l, childAggt, referrer = referrer)
     }
 
 }
\ No newline at end of file