From 306805ed46d62207c966c254c013a00ca10acee4 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 5 Nov 2020 13:29:04 +0100 Subject: [PATCH] Support JCR node types as entity types. --- .../src/org/argeo/entity/EntityType.java | 2 +- .../src/org/argeo/suite/ui/RecentItems.java | 18 ++++++++++++------ .../src/org/argeo/suite/ui/SuiteApp.java | 17 ++++++++++++----- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/org.argeo.entity.api/src/org/argeo/entity/EntityType.java b/org.argeo.entity.api/src/org/argeo/entity/EntityType.java index 6548d75..7b470bb 100644 --- a/org.argeo.entity.api/src/org/argeo/entity/EntityType.java +++ b/org.argeo.entity.api/src/org/argeo/entity/EntityType.java @@ -7,7 +7,7 @@ public enum EntityType implements JcrName { // typology typologies, terms, term, // form - form, formSet, + form, formSet, formSubmission, // ldap person; diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java index e0415a0..5c6fa0d 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java @@ -20,7 +20,7 @@ import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.entity.EntityTypes; +import org.argeo.entity.EntityType; import org.argeo.jcr.Jcr; import org.argeo.jcr.JcrUtils; import org.argeo.suite.ui.widgets.DelayedText; @@ -294,11 +294,17 @@ public class RecentItems implements CmsUiProvider { // XPATH Query String xpathQueryStr; - if (entityType != null) - xpathQueryStr = entityType.contains(":") ? "//element(*, " + entityType + ")" - : "//element(*, " + EntityTypes.ENTITY_ENTITY + ")[@entity:type='" + entityType + "']"; - else - xpathQueryStr = "//element(*, " + EntityTypes.ENTITY_ENTITY + ")"; + if (entityType != null) { + int indexColumn = entityType.indexOf(':'); + if (indexColumn > 0) {// JCR node type + xpathQueryStr = "//element(*, " + entityType + ") order by @jcr:created descending"; + } else { + xpathQueryStr = entityType.contains(":") ? "//element(*, " + entityType + ")" + : "//element(*, " + EntityType.entity.get() + ")[@entity:type='" + entityType + "']"; + } + } else { + xpathQueryStr = "//element(*, " + EntityType.entity.get() + ")"; + } // String xpathQueryStr = "//element(*, " + ConnectTypes.CONNECT_ENTITY + ")"; String xpathFilter = XPathUtils.getFreeTextConstraint(filter); if (notEmpty(xpathFilter)) diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java index 7bb9991..ecb9ff7 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java @@ -27,7 +27,7 @@ import org.argeo.cms.ui.util.CmsEvent; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.entity.EntityConstants; import org.argeo.entity.EntityNames; -import org.argeo.entity.EntityTypes; +import org.argeo.entity.EntityType; import org.argeo.jcr.Jcr; import org.argeo.jcr.JcrUtils; import org.argeo.suite.RankedObject; @@ -180,12 +180,19 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { if (uiProvidersByType.containsKey(typeName)) { types.add(typeName); } + for (NodeType mixin : nodeType.getDeclaredSupertypes()) { + if (uiProvidersByType.containsKey(mixin.getName())) { + types.add(mixin.getName()); + } + } } // entity type - if (context.isNodeType(EntityTypes.ENTITY_ENTITY)) { - String typeName =context.getProperty(EntityNames.ENTITY_TYPE).getString(); - if (uiProvidersByType.containsKey(typeName)) { - types.add(typeName); + if (context.isNodeType(EntityType.entity.get())) { + if (context.hasProperty(EntityNames.ENTITY_TYPE)) { + String typeName = context.getProperty(EntityNames.ENTITY_TYPE).getString(); + if (uiProvidersByType.containsKey(typeName)) { + types.add(typeName); + } } } -- 2.30.2