Support descendant node by search
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 11 Sep 2023 05:04:15 +0000 (07:04 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 11 Sep 2023 05:04:15 +0000 (07:04 +0200)
org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/BasicSearchToQom.java

index 7e61acf5b51bbbabc6dadded16bf919c93ff650a..72940705a0f07aa2f1ce0bcb828cfa025375a50d 100644 (file)
@@ -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);