From d58ef68ac546bc3d9874834f5345e67dbe9b6835 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 11 Sep 2023 07:04:15 +0200 Subject: [PATCH] Support descendant node by search --- .../src/org/argeo/cms/jcr/acr/BasicSearchToQom.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/BasicSearchToQom.java b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/BasicSearchToQom.java index 7e61acf..7294070 100644 --- a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/BasicSearchToQom.java +++ b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/BasicSearchToQom.java @@ -31,16 +31,19 @@ class BasicSearchToQom { private Session session; private QueryManager queryManager; private BasicSearch basicSearch; - QueryObjectModelFactory factory; + private QueryObjectModelFactory factory; - QName contentClass = null; + private String relPath; - String selectorName = "content"; + private QName contentClass = null; + + private String selectorName = "content"; public BasicSearchToQom(Session session, BasicSearch basicSearch, String relPath) throws RepositoryException { this.session = session; this.queryManager = session.getWorkspace().getQueryManager(); this.basicSearch = basicSearch; + this.relPath = relPath; factory = queryManager.getQOMFactory(); } @@ -53,6 +56,10 @@ class BasicSearchToQom { if (contentClass == null) throw new IllegalArgumentException("No content class specified"); + if (relPath != null) { + qomConstraint = factory.and(qomConstraint, factory.descendantNode(selectorName, "/" + relPath)); + } + Selector source = factory.selector(NamespaceUtils.toPrefixedName(contentClass), selectorName); QueryObjectModel qom = factory.createQuery(source, qomConstraint, null, null); -- 2.30.2