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