From 4573968ecd0f824ab2600c49f1c085f83379b8b6 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 6 Dec 2020 07:53:31 +0100 Subject: [PATCH] Introduce query table content provider. --- .../ui/jcr/QueryTableContentProvider.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/jcr/QueryTableContentProvider.java diff --git a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/jcr/QueryTableContentProvider.java b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/jcr/QueryTableContentProvider.java new file mode 100644 index 000000000..934fa6781 --- /dev/null +++ b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/jcr/QueryTableContentProvider.java @@ -0,0 +1,35 @@ +package org.argeo.eclipse.ui.jcr; + +import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; +import javax.jcr.query.Query; + +import org.argeo.jcr.JcrException; +import org.argeo.jcr.JcrUtils; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.Viewer; + +/** Content provider based on a JCR {@link Query}. */ +public class QueryTableContentProvider implements IStructuredContentProvider { + private static final long serialVersionUID = 760371460907204722L; + + @Override + public void dispose() { + } + + @Override + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + + @Override + public Object[] getElements(Object inputElement) { + Query query = (Query) inputElement; + try { + NodeIterator nit = query.execute().getNodes(); + return JcrUtils.nodeIteratorToList(nit).toArray(); + } catch (RepositoryException e) { + throw new JcrException(e); + } + } + +} -- 2.30.2