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/23 20:09:06 UTC

[causeway] 06/10: ISIS-3171 'sources' explicitly hidden

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

commit 55f7e1397cef92728ce4ff5913ded14dacabe66a
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Feb 16 18:47:13 2023 +0100

    ISIS-3171 'sources' explicitly hidden
---
 .../kroviz/core/aggregator/AggregatorWithLayout.kt | 18 ------------------
 .../kroviz/core/aggregator/CollectionAggregator.kt | 22 +++++++++++++++++++++-
 .../kroviz/core/aggregator/ObjectAggregator.kt     |  2 +-
 .../client/kroviz/core/model/CollectionLayout.kt   | 15 +++++++++++----
 .../kroviz/core/model/PropertySpecification.kt     | 18 +++++++++++++++++-
 .../causeway/client/kroviz/to/bs/PropertyBs.kt     |  1 +
 6 files changed, 51 insertions(+), 25 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/AggregatorWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/AggregatorWithLayout.kt
index b114488c4f..66bcd434e3 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/AggregatorWithLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/AggregatorWithLayout.kt
@@ -51,22 +51,4 @@ abstract class AggregatorWithLayout : BaseAggregator() {
         invoke(l, aggregator, referrer = referrer)
     }
 
-    protected fun handleProperty(property: Property, referrer: String, layout: BaseLayout) {
-        when {
-            property.isObjectProperty() -> {
-                val op = ObjectProperty(property)
-                val pdLink = op.getDescriptionLink()!!
-                ResourceProxy().fetch(pdLink, this, referrer = referrer)
-            }
-
-            property.isPropertyDescription() -> {
-                console.log("[AWL_handleProperty] PropertyDescription obsolete?")
-            }
-
-            else -> {
-                TODO("handle 3rd type of property")
-            }
-        }
-    }
-
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt
index 07ea8ebc5f..3a36d46fd1 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt
@@ -22,11 +22,11 @@ import org.apache.causeway.client.kroviz.core.event.EventState
 import org.apache.causeway.client.kroviz.core.event.LogEntry
 import org.apache.causeway.client.kroviz.core.event.ResourceProxy
 import org.apache.causeway.client.kroviz.core.event.ResourceSpecification
+import org.apache.causeway.client.kroviz.core.model.BaseLayout
 import org.apache.causeway.client.kroviz.core.model.CollectionDM
 import org.apache.causeway.client.kroviz.core.model.CollectionLayout
 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
 import org.apache.causeway.client.kroviz.ui.core.ViewManager
 
 /** sequence of operations:
@@ -148,6 +148,26 @@ class CollectionAggregator(actionTitle: String, private val parent: ObjectAggreg
         handleProperty(property, referrer, getLayout())
     }
 
+    protected fun handleProperty(property: Property, referrer: String, layout: BaseLayout) {
+        when {
+            property.isObjectProperty() -> {
+                val op = ObjectProperty(property)
+                val pdLink = op.getDescriptionLink()!!
+                ResourceProxy().fetch(pdLink, this, referrer = referrer)
+            }
+
+            property.isPropertyDescription() -> {
+                val pd = PropertyDescription(property)
+                getLayout().addPropertyDescription(pd, this, referrer)
+            }
+
+            else -> {
+                TODO("handle 3rd type of property")
+            }
+        }
+    }
+
+
     private fun handleCollection(collection: Collection) {
         if (isParentedCollection()) {
             //TODO is _id_ required in both CollectionDM and CollectionLayout?
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 7f85e6f74a..17b85d0581 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
@@ -103,7 +103,7 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
     }
 
     private fun handleProperty(property: Property, referrer: String) {
-        handleProperty(property, referrer, getLayout()) //FIXME
+        handleProperty(property, referrer) //FIXME
     }
 
     private fun handleGrid(grid: GridBs, referrer: String) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionLayout.kt
index 92f1a48ef1..71b97e68ed 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionLayout.kt
@@ -18,8 +18,10 @@
  */
 package org.apache.causeway.client.kroviz.core.model
 
+import org.apache.causeway.client.kroviz.core.aggregator.AggregatorWithLayout
 import org.apache.causeway.client.kroviz.core.aggregator.CollectionAggregator
 import org.apache.causeway.client.kroviz.core.event.ResourceProxy
+import org.apache.causeway.client.kroviz.to.PropertyDescription
 import org.apache.causeway.client.kroviz.to.TObject
 import org.apache.causeway.client.kroviz.to.bs.PropertyBs
 
@@ -75,9 +77,14 @@ class CollectionLayout : BaseLayout() {
         ps.amendWith(propertyBs)
     }
 
-    // FIXME NPE -> ISIS-2846 ?
-    //FIXME hidden etc is not contained in ObjectProperty, see GidBs for the collection.protoType
-    // e.g. http://localhost:9090/restful/objects/demo.JavaLangStringEntity/356/object-layout
-    // furthermore, the column header can be taken from there as well
+    fun addPropertyDescription(
+        propertyDescription: PropertyDescription,
+        aggregator: AggregatorWithLayout,
+        referrer: String
+    ) {
+        val id = propertyDescription.id
+        val ps: PropertySpecification = propertySpecificationList.firstOrNull { it.id == id }!!
+        ps.amendWith(propertyDescription)
+    }
 
 }
\ No newline at end of file
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt
index 187d464294..d70a72b0f3 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt
@@ -19,6 +19,7 @@
 package org.apache.causeway.client.kroviz.core.model
 
 import org.apache.causeway.client.kroviz.to.Member
+import org.apache.causeway.client.kroviz.to.PropertyDescription
 import org.apache.causeway.client.kroviz.to.bs.PropertyBs
 
 /**
@@ -37,13 +38,19 @@ class PropertySpecification(member: Member) {
     var hidden = true
     var disabled = member.disabledReason.isNotEmpty()
     var isAmendedFromBs = false
+    var isAmendedFromPropertyDescription = false
     var typicalLength: Int = 10
 
 
     fun amendWith(pbs: PropertyBs) {
         console.log("[PS_amendWith] PropertyBs")
+        console.log(pbs)
         name = pbs.named
         hidden = !(pbs.hidden != null && pbs.hidden.isNotEmpty())
+        //This is hacky
+        if (id == "sources") {
+            hidden = true
+        }
         if (pbs.typicalLength != null && pbs.typicalLength > 0) {
             typicalLength = pbs.typicalLength.toInt()
         }
@@ -51,11 +58,20 @@ class PropertySpecification(member: Member) {
         console.log(this)
     }
 
+    fun amendWith(pd: PropertyDescription) {
+        val ex = pd.extensions!!
+        val fn = ex.getFriendlyName()
+        if (fn.isNotEmpty()) {
+            name = fn
+        }
+        isAmendedFromPropertyDescription = true
+    }
+
     fun readyToRender(): Boolean {
         return when (id) {
             "logicalTypeName" -> true
             "objectIdentifier" -> true
-            else -> isAmendedFromBs
+            else -> isAmendedFromBs && isAmendedFromPropertyDescription
         }
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt
index 7e76306754..4c93d3e460 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt
@@ -34,6 +34,7 @@ class PropertyBs(node: Node) : XmlLayout() {
     lateinit var action: ActionBs
 
     init {
+        // TODO improve casting
         val dn = node.asDynamic()
         hidden = dn.getAttribute("hidden") //as String
         id = dn.getAttribute("id") //as String