You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2014/06/30 15:01:04 UTC

svn commit: r1606718 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws: server/DuccHandler.java sort/ sort/JobDetailsProcesses.java

Author: degenaro
Date: Mon Jun 30 13:01:03 2014
New Revision: 1606718

URL: http://svn.apache.org/r1606718
Log:
UIMA-3912 DUCC WebServer (WS) sort on Job Details page

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/JobDetailsProcesses.java   (with props)
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1606718&r1=1606717&r2=1606718&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Mon Jun 30 13:01:03 2014
@@ -98,6 +98,7 @@ import org.apache.uima.ducc.ws.authentic
 import org.apache.uima.ducc.ws.registry.IServicesRegistry;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
 import org.apache.uima.ducc.ws.registry.ServicesRegistryMapPayload;
+import org.apache.uima.ducc.ws.sort.JobDetailsProcesses;
 import org.apache.uima.ducc.ws.utils.FormatHelper;
 import org.apache.uima.ducc.ws.utils.FormatHelper.Precision;
 import org.apache.uima.ducc.ws.utils.HandlersHelper;
@@ -1181,10 +1182,18 @@ public class DuccHandler extends DuccAbs
 					counter++;
 				}
 			}
+			TreeMap<JobDetailsProcesses,JobDetailsProcesses> map = new TreeMap<JobDetailsProcesses,JobDetailsProcesses>();
 			iterator = job.getProcessMap().keySet().iterator();
 			while(iterator.hasNext()) {
 				DuccId processId = iterator.next();
 				IDuccProcess process = job.getProcessMap().get(processId);
+				JobDetailsProcesses jdp = new JobDetailsProcesses(process);
+				map.put(jdp, jdp);
+			}
+			Iterator<JobDetailsProcesses> sortedIterator = map.keySet().iterator();
+			while(sortedIterator.hasNext()) {
+				JobDetailsProcesses jdp = sortedIterator.next();
+				IDuccProcess process = jdp.getProcess();
 				StringBuffer bb = new StringBuffer();
 				buildJobProcessListEntry(bb, job, process, DetailsType.Job, ShareType.UIMA, counter);
 				if(bb.length() > 0) {

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/JobDetailsProcesses.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/JobDetailsProcesses.java?rev=1606718&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/JobDetailsProcesses.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/JobDetailsProcesses.java Mon Jun 30 13:01:03 2014
@@ -0,0 +1,167 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.uima.ducc.ws.sort;
+
+import org.apache.uima.ducc.transport.event.common.IDuccProcess;
+import org.apache.uima.ducc.transport.event.common.IDuccProcess.ReasonForStoppingProcess;
+import org.apache.uima.ducc.transport.event.common.IProcessState.ProcessState;
+
+public class JobDetailsProcesses implements Comparable<JobDetailsProcesses> {
+	
+	private IDuccProcess _process = null;
+
+	public JobDetailsProcesses(IDuccProcess process) {
+		_process = process;
+	}
+
+	public IDuccProcess getProcess() {
+		return _process;
+	}
+	
+	private boolean isOperational() {
+		boolean retVal = false;
+		try {
+			ProcessState processState = getProcess().getProcessState();
+			switch(processState) {
+			case Initializing:
+			case Running:
+			case Starting:
+			case Stopping:
+				retVal = true;
+				break;
+			default:
+				//retVal = false;
+				break;
+			}
+		}
+		catch(Exception e) {
+		}
+		return retVal;
+	}
+	
+	private boolean isFailed() {
+		boolean retVal = true;
+		try {
+			IDuccProcess process = getProcess();
+			String agentReason = process.getReasonForStoppingProcess();
+			if(agentReason.equalsIgnoreCase(ReasonForStoppingProcess.KilledByDucc.toString())) {
+				retVal = false;
+			}
+			else if(agentReason.equalsIgnoreCase(ReasonForStoppingProcess.Other.toString())) {
+				retVal = false;
+			}
+		}
+		catch(Exception e) {
+		}
+		return retVal;
+	}
+	
+	private long workItemErrors() {
+		long retVal = 0;
+		try {
+			retVal = getProcess().getProcessWorkItems().getCountError();
+		}
+		catch(Exception e) {
+		}
+		return retVal;
+	}
+	
+	private long workItemDone() {
+		long retVal = 0;
+		try {
+			retVal = getProcess().getProcessWorkItems().getCountDone();
+		}
+		catch(Exception e) {
+		}
+		return retVal;
+	}
+	
+	@Override
+	public int compareTo(JobDetailsProcesses jdp) {
+		int retVal = 0;
+		try {
+			JobDetailsProcesses j1 = this;
+			JobDetailsProcesses j2 = jdp;
+			IDuccProcess p1 = j1.getProcess();
+			IDuccProcess p2 = j2.getProcess();
+			long f1 = p1.getDuccId().getFriendly();
+			long f2 = p2.getDuccId().getFriendly();
+			if(f1 != f2) {
+				if(!j1.isOperational() && j2.isOperational()) {
+					retVal = 1;
+				}
+				else if(j1.isOperational() && !j2.isOperational()) {
+					retVal = -1;
+				}
+				else if(!j1.isFailed() && j2.isFailed()) {
+					retVal = 1;
+				}
+				else if(j1.isFailed() && !j2.isFailed()) {
+					retVal = -1;
+				}
+				else if(j1.workItemErrors() < j2.workItemErrors()) {
+					retVal = 1;
+				}
+				else if(j1.workItemErrors() > j2.workItemErrors()) {
+					retVal = -1;
+				}
+				else if(j1.workItemDone() < j2.workItemDone()) {
+					retVal = 1;
+				}
+				else if(j1.workItemDone() > j2.workItemDone()) {
+					retVal = -1;
+				}
+				else if(f1 > f2) {
+					retVal = -1;
+				}
+				else if(f1 < f2) {
+					retVal = 1;
+				}
+			}
+		}
+		catch(Exception e) {
+		}
+		return retVal;
+	}
+	
+	@Override
+	public boolean equals(Object object) {
+		boolean retVal = false;
+		try {
+			JobDetailsProcesses j1 = this;
+			JobDetailsProcesses j2 = (JobDetailsProcesses)object;
+			IDuccProcess p1 = j1.getProcess();
+			IDuccProcess p2 = j2.getProcess();
+			String s1 = p1.getDuccId().toString();
+			String s2 = p2.getDuccId().toString();
+			retVal = s1.equals(s2);
+		}
+		catch(Throwable t) {	
+		}
+		return retVal;
+	}
+
+	@Override
+	public int hashCode() {
+		JobDetailsProcesses j1 = this;
+		IDuccProcess p1 = j1.getProcess();
+		String s1 = p1.getDuccId().toString();
+		return s1.hashCode();
+	}
+}

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/sort/JobDetailsProcesses.java
------------------------------------------------------------------------------
    svn:eol-style = native