import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.GenericTableComparator;
import org.eclipse.core.runtime.IProgressMonitor;
/** Executes any JCR query. */
public abstract class AbstractJcrQueryEditor extends EditorPart {
+ private final static Log log = LogFactory
+ .getLog(AbstractJcrQueryEditor.class);
protected String initialQuery;
protected String initialQueryType;
/** DEPENDENCY INJECTION */
private Session session;
+ // Widgets
private TableViewer viewer;
private List<TableViewerColumn> tableViewerColumns = new ArrayList<TableViewerColumn>();
private GenericTableComparator comparator;
+ /** Override to layout a form enabling the end user to build his query */
protected abstract void createQueryForm(Composite parent);
@Override
protected void executeQuery(String statement) {
try {
+ if (log.isDebugEnabled())
+ log.debug("Query : " + statement);
+
QueryResult qr = session.getWorkspace().getQueryManager()
.createQuery(statement, initialQueryType).execute();
i++;
}
- // We must create a local list because query result can be read only
- // once.
- // viewer.setInput(qr);
-
+ // Must create a local list: QueryResults can only be read once.
try {
List<Row> rows = new ArrayList<Row>();
RowIterator rit = qr.getRows();
ErrorDialog.openError(null, "Error", "Cannot execute JCR query: "
+ statement, new Status(IStatus.ERROR,
"org.argeo.eclipse.ui.jcr", e.getMessage()));
- // throw new ArgeoException("Cannot execute JCR query " + statement,
- // e);
}
}
}
/**
- * To be overriden to enable sorting.
- *
- * @author bsinou
- *
+ * To be overridden to enable sorting.
*/
protected GenericTableComparator getComparator() {
return null;
@Override
public void doSave(IProgressMonitor monitor) {
// TODO save the query in JCR?
-
}
@Override
return false;
}
- // IoC
+ /** Returns the injected current session */
+ protected Session getSession() {
+ return session;
+ }
+
+ /** DEPENDENCY INJECTION */
public void setSession(Session session) {
this.session = session;
}