package org.argeo.slc.client.ui.views;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.argeo.eclipse.ui.jcr.AsyncUiEventListener;
import org.argeo.jcr.JcrUtils;
import org.argeo.slc.SlcException;
+import org.argeo.slc.client.ui.SlcImages;
import org.argeo.slc.client.ui.editors.ProcessEditor;
import org.argeo.slc.client.ui.editors.ProcessEditorInput;
+import org.argeo.slc.execution.ExecutionProcess;
import org.argeo.slc.jcr.SlcJcrConstants;
import org.argeo.slc.jcr.SlcNames;
import org.argeo.slc.jcr.SlcTypes;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
-/**
- * This class display the list of all processes that have run in the
- * corresponding agent. Currently, the local agent.
- */
+/** Displays processes. */
public class JcrProcessListView extends ViewPart {
public static final String ID = "org.argeo.slc.client.ui.jcrProcessListView";
private EventListener processesObserver;
+ private DateFormat dateFormat = new SimpleDateFormat(
+ "EEE, dd MMM yyyy HH:mm:ss");
+ private Integer queryLimit = 100;
+
public void createPartControl(Composite parent) {
Table table = createTable(parent);
viewer = new TableViewer(table);
processesObserver = new AsyncUiEventListener() {
protected void onEventInUiThread(EventIterator events) {
+ // TODO optimize by updating only the changed process
viewer.refresh();
}
};
String sql = "SELECT * from [slc:process] ORDER BY [jcr:lastModified] DESC";
Query query = session.getWorkspace().getQueryManager()
.createQuery(sql, Query.JCR_SQL2);
+ // TODO paging
+ query.setLimit(queryLimit);
List<Node> nodes = new ArrayList<Node>();
for (NodeIterator nit = query.execute().getNodes(); nit
.hasNext();) {
class LabelProvider extends ColumnLabelProvider implements
ITableLabelProvider {
- public Image getColumnImage(Object element, int columnIndex) {
- // TODO Auto-generated method stub
- return null;
+ public Image getColumnImage(Object obj, int columnIndex) {
+ if (columnIndex != 0)
+ return null;
+ try {
+ Node node = (Node) obj;
+ String status = node.getProperty(SlcNames.SLC_STATUS)
+ .getString();
+ if (status.equals(ExecutionProcess.NEW)
+ || status.equals(ExecutionProcess.INITIALIZED)
+ || status.equals(ExecutionProcess.SCHEDULED))
+ return SlcImages.PROCESS_SCHEDULED;
+ else if (status.equals(ExecutionProcess.ERROR)
+ || status.equals(ExecutionProcess.UNKOWN))
+ return SlcImages.PROCESS_ERROR;
+ else if (status.equals(ExecutionProcess.COMPLETED))
+ return SlcImages.PROCESS_COMPLETED;
+ else if (status.equals(ExecutionProcess.RUNNING))
+ return SlcImages.PROCESS_RUNNING;
+ else
+ throw new SlcException("Unkown status " + status);
+ } catch (RepositoryException e) {
+ throw new SlcException("Cannot get column text", e);
+ }
}
public String getColumnText(Object obj, int index) {
switch (index) {
case 0:
- return node.getProperty(Property.JCR_CREATED).getString();
+ return dateFormat.format(node
+ .getProperty(Property.JCR_LAST_MODIFIED).getDate()
+ .getTime());
case 1:
return "local";
case 2: