X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.client.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fviews%2FJcrResultListView.java;fp=org.argeo.slc.client.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fviews%2FJcrResultListView.java;h=0000000000000000000000000000000000000000;hb=2db415932b071525adb52c6374e021174512a924;hp=4bfb57c194a00f4a8d3fdc07a7d4fbcd8813fe2d;hpb=7e2f6c6ae08e97925955184aaa29035ac05de149;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultListView.java b/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultListView.java deleted file mode 100644 index 4bfb57c19..000000000 --- a/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultListView.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.slc.client.ui.views; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.observation.Event; -import javax.jcr.observation.EventListener; -import javax.jcr.observation.ObservationManager; -import javax.jcr.query.Query; - -import org.argeo.eclipse.ui.jcr.AsyncUiEventListener; -import org.argeo.eclipse.ui.jcr.NodeElementComparer; -import org.argeo.jcr.JcrUtils; -import org.argeo.slc.SlcException; -import org.argeo.slc.client.ui.ClientUiPlugin; -import org.argeo.slc.client.ui.editors.ProcessEditor; -import org.argeo.slc.client.ui.editors.ProcessEditorInput; -import org.argeo.slc.jcr.SlcJcrResultUtils; -import org.argeo.slc.jcr.SlcNames; -import org.argeo.slc.jcr.SlcTypes; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.part.ViewPart; - -/** Displays results. */ -public class JcrResultListView extends ViewPart implements SlcNames { - public static final String ID = ClientUiPlugin.ID + ".jcrResultListView"; - - private TableViewer viewer; - - private Session session; - - private EventListener resultsObserver; - - private DateFormat dateFormat = new SimpleDateFormat( - "EEE, dd MMM yyyy HH:mm:ss"); - private Integer queryLimit = 2000; - - public void createPartControl(Composite parent) { - - Table table = createTable(parent); - viewer = new TableViewer(table); - viewer.setLabelProvider(createLabelProvider()); - viewer.setContentProvider(new ViewContentProvider()); - viewer.setInput(getViewSite()); - viewer.addDoubleClickListener(new ViewDoubleClickListener()); - viewer.setComparer(new NodeElementComparer()); - - getViewSite().setSelectionProvider(viewer); - - resultsObserver = new ResultObserver(viewer.getTable().getDisplay()); - try { - ObservationManager observationManager = session.getWorkspace() - .getObservationManager(); - String[] nodeTypes = { SlcTypes.SLC_TEST_RESULT }; - // FIXME Will not be notified if empty result is deleted - observationManager.addEventListener(resultsObserver, - Event.PROPERTY_ADDED | Event.NODE_REMOVED, - SlcJcrResultUtils.getSlcResultsBasePath(session), true, - null, nodeTypes, false); - } catch (RepositoryException e) { - throw new SlcException("Cannot register listeners", e); - } - - } - - protected Table createTable(Composite parent) { - int style = SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL - | SWT.FULL_SELECTION | SWT.MULTI; - // does not work with RAP, commented for the time being - // | SWT.HIDE_SELECTION; - - Table table = new Table(parent, style); - - table.setLinesVisible(true); - table.setHeaderVisible(true); - - TableColumn column = new TableColumn(table, SWT.LEFT, 0); - column.setText("Date"); - column.setWidth(200); - - column = new TableColumn(table, SWT.LEFT, 1); - column.setText("Id"); - column.setWidth(300); - - return table; - } - - // public void refresh() { - // viewer.refresh(); - // } - - /* - * METHODS TO BE OVERRIDDEN - */ - protected IBaseLabelProvider createLabelProvider() { - return new ViewLabelProvider(); - } - - protected void processDoubleClick(DoubleClickEvent evt) { - Object obj = ((IStructuredSelection) evt.getSelection()) - .getFirstElement(); - try { - if (obj instanceof Node) { - Node node = (Node) obj; - // FIXME: open a default result editor - if (node.isNodeType(SlcTypes.SLC_PROCESS)) { - IWorkbenchPage activePage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - activePage.openEditor( - new ProcessEditorInput(node.getPath()), - ProcessEditor.ID); - } - } - } catch (Exception e) { - throw new SlcException("Cannot open " + obj, e); - } - } - - public void setFocus() { - viewer.getControl().setFocus(); - } - - class ViewContentProvider implements IStructuredContentProvider { - - public Object[] getElements(Object inputElement) { - try { - // TODO filter, optimize with virtual table, ... - String sql = "SELECT * from [" + SlcTypes.SLC_TEST_RESULT - + "] ORDER BY [jcr:lastModified] DESC"; - Query query = session.getWorkspace().getQueryManager() - .createQuery(sql, Query.JCR_SQL2); - // TODO paging - query.setLimit(queryLimit); - List nodes = new ArrayList(); - for (NodeIterator nit = query.execute().getNodes(); nit - .hasNext();) { - nodes.add(nit.nextNode()); - } - return nodes.toArray(); - } catch (RepositoryException e) { - throw new SlcException("Cannot retrieve processes", e); - } - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - - } - - class ViewLabelProvider extends ColumnLabelProvider implements - ITableLabelProvider { - - public Image getColumnImage(Object obj, int columnIndex) { - if (columnIndex != 0) - return null; - try { - Node node = (Node) obj; - if (node.hasProperty(SLC_COMPLETED)) { - // TODO - } - return null; - } catch (RepositoryException e) { - throw new SlcException("Cannot get column text", e); - } - } - - public String getColumnText(Object obj, int index) { - try { - Node node = (Node) obj; - switch (index) { - - case 0: - if (node.hasProperty(SLC_COMPLETED)) { - return dateFormat - .format(node.getProperty(SLC_COMPLETED) - .getDate().getTime()); - } else { - return "OPEN"; - } - case 1: - return node.getProperty(SlcNames.SLC_UUID).getString(); - } - return getText(obj); - } catch (RepositoryException e) { - throw new SlcException("Cannot get column text", e); - } - } - - } - - class ViewDoubleClickListener implements IDoubleClickListener { - public void doubleClick(DoubleClickEvent evt) { - processDoubleClick(evt); - } - - } - - class ResultObserver extends AsyncUiEventListener { - - public ResultObserver(Display display) { - super(display); - } - - @Override - protected Boolean willProcessInUiThread(List events) - throws RepositoryException { - for (Event event : events) { - // getLog().debug("Received event " + event); - int eventType = event.getType(); - if (eventType == Event.NODE_REMOVED) - return true; - String path = event.getPath(); - int index = path.lastIndexOf('/'); - String propertyName = path.substring(index + 1); - if (propertyName.equals(SLC_COMPLETED) - || propertyName.equals(SLC_UUID)) { - return true; - } - } - return false; - } - - protected void onEventInUiThread(List events) - throws RepositoryException { - if (getLog().isTraceEnabled()) - getLog().trace("Refresh result list"); - viewer.refresh(); - } - } - - @Deprecated - public void setSession(Session session) { - this.session = session; - } - - public void dispose() { - JcrUtils.unregisterQuietly(session.getWorkspace(), resultsObserver); - JcrUtils.logoutQuietly(session); - super.dispose(); - } - - public void setRepository(Repository repository) { - try { - session = repository.login(); - } catch (RepositoryException re) { - throw new SlcException("Unable to log in Repository " + repository, - re); - } - } -} \ No newline at end of file