From: Mathieu Baudier Date: Mon, 11 Sep 2023 05:04:15 +0000 (+0200) Subject: Support descendant node by search X-Git-Tag: v2.3.16~10 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=d58ef68ac546bc3d9874834f5345e67dbe9b6835;p=gpl%2Fargeo-jcr.git Support descendant node by search --- 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);