From: Mathieu Baudier Date: Thu, 5 Nov 2020 12:29:04 +0000 (+0100) Subject: Support JCR node types as entity types. X-Git-Tag: argeo-suite-2.1.16~37 X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=commitdiff_plain;h=306805ed46d62207c966c254c013a00ca10acee4;hp=a670d54c9e6f4ccec86c6b29742d0b0530686290 Support JCR node types as entity types. --- 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); + } } }