Adding JABA web services usage statistics web application. Stat database is to follow
[jabaws.git] / webservices / compbio / ws / execstat / StatProcessor.java
diff --git a/webservices/compbio/ws/execstat/StatProcessor.java b/webservices/compbio/ws/execstat/StatProcessor.java
deleted file mode 100644 (file)
index 16b3234..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-package compbio.ws.execstat;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.Comparator;\r
-import java.util.Date;\r
-import java.util.List;\r
-\r
-import compbio.engine.client.ConfExecutable;\r
-import compbio.ws.client.Services;\r
-\r
-public class StatProcessor {\r
-\r
-       List<JobStat> stats;\r
-\r
-       StatProcessor(List<JobStat> stats) {\r
-               this.stats = stats;\r
-       }\r
-\r
-       /*\r
-        * TODO List<JobStat> getNewStat() throws SQLException { Set<String> jobids\r
-        * = new HashSet<String>(); for(JobStat js: stats) { jobids.add(js.jobname);\r
-        * } StatDB.removeRecordedJobs(jobids); List<String> newjobs = new\r
-        * HashSet<String>(); for(String jobid: jobids) { if(newjobs.co)\r
-        * jobids.add(js.jobname); } }\r
-        */\r
-\r
-       List<JobStat> getAbandonedJobs() {\r
-               List<JobStat> abJobs = new ArrayList<StatProcessor.JobStat>();\r
-               for (JobStat js : stats) {\r
-                       if (!js.isCollected) {\r
-                               abJobs.add(js);\r
-                       }\r
-               }\r
-               return abJobs;\r
-       }\r
-\r
-       List<JobStat> getCancelledJobs() {\r
-               List<JobStat> abJobs = new ArrayList<StatProcessor.JobStat>();\r
-               for (JobStat js : stats) {\r
-                       if (js.isCancelled) {\r
-                               abJobs.add(js);\r
-                       }\r
-               }\r
-               return abJobs;\r
-       }\r
-\r
-       List<JobStat> sortByRuntime() {\r
-               List<JobStat> abJobs = new ArrayList<StatProcessor.JobStat>(stats);\r
-               Collections.sort(abJobs, JobStat.RUNTIME);\r
-               return abJobs;\r
-       }\r
-\r
-       List<JobStat> sortByStartTime() {\r
-               List<JobStat> abJobs = new ArrayList<StatProcessor.JobStat>(stats);\r
-               Collections.sort(abJobs, JobStat.STARTTIME);\r
-               return abJobs;\r
-       }\r
-\r
-       List<JobStat> sortByResultSize() {\r
-               List<JobStat> abJobs = new ArrayList<StatProcessor.JobStat>(stats);\r
-               Collections.sort(abJobs, JobStat.RESULTSIZE);\r
-               return abJobs;\r
-       }\r
-\r
-       int getJobNumber() {\r
-               return stats.size();\r
-       }\r
-\r
-       public StatProcessor getSingleWSStat(Services webService) {\r
-               List<JobStat> wsStat = new ArrayList<StatProcessor.JobStat>();\r
-               for (JobStat js : stats) {\r
-                       if (js.webService == webService) {\r
-                               wsStat.add(js);\r
-                       }\r
-               }\r
-               return new StatProcessor(wsStat);\r
-       }\r
-\r
-       long getTotalRuntime() {\r
-               long counter = 0;\r
-               for (JobStat js : stats) {\r
-                       int jobtime = js.getRuntime();\r
-                       if (jobtime != ExecutionStatCollector.UNDEFINED) {\r
-                               counter += jobtime;\r
-                       }\r
-               }\r
-               return counter;\r
-       }\r
-\r
-       List<JobStat> getUnsuccessfulJobs() {\r
-               List<JobStat> aJobs = new ArrayList<StatProcessor.JobStat>();\r
-               for (JobStat js : stats) {\r
-                       int jobtime = js.getRuntime();\r
-                       if (js.resultSize == ExecutionStatCollector.UNDEFINED) {\r
-                               aJobs.add(js);\r
-                       }\r
-               }\r
-               return aJobs;\r
-       }\r
-\r
-       public String reportStat() {\r
-               String report = "Total Jobs: " + getJobNumber() + "\n";\r
-               report += "Abandoned Jobs: " + getAbandonedJobs().size() + "\n";\r
-               report += "Cancelled Jobs: " + getCancelledJobs().size() + "\n";\r
-               report += "Total Runtime (s): " + getTotalRuntime() + "\n";\r
-               report += "Unsuccessful Jobs: " + getUnsuccessfulJobs().size() + "\n";\r
-               if (sortByRuntime().size() > 10) {\r
-                       report += "10 longest jobs: \n\n" + sortByRuntime().subList(0, 9)\r
-                                       + "\n";\r
-               } else {\r
-                       report += "longest jobs: \n\n" + sortByRuntime() + "\n";\r
-               }\r
-               if (sortByResultSize().size() > 10)\r
-                       report += "10 biggest jobs: \n\n"\r
-                                       + sortByResultSize().subList(0, 9) + "\n";\r
-               else {\r
-                       report += "biggest jobs: \n\n" + sortByResultSize() + "\n";\r
-               }\r
-               return report;\r
-       }\r
-\r
-       static class JobStat {\r
-\r
-               static final Comparator<JobStat> RUNTIME = new Comparator<JobStat>() {\r
-                       @Override\r
-                       public int compare(JobStat o1, JobStat o2) {\r
-                               return new Integer(o2.getRuntime()).compareTo(o1.getRuntime());\r
-                       }\r
-               };\r
-\r
-               static final Comparator<JobStat> STARTTIME = new Comparator<JobStat>() {\r
-                       @Override\r
-                       public int compare(JobStat o1, JobStat o2) {\r
-                               return new Long(o1.start).compareTo(o2.start);\r
-                       }\r
-               };\r
-\r
-               static final Comparator<JobStat> RESULTSIZE = new Comparator<JobStat>() {\r
-                       @Override\r
-                       public int compare(JobStat o1, JobStat o2) {\r
-                               return new Long(o2.resultSize).compareTo(o1.resultSize);\r
-                       }\r
-               };\r
-\r
-               Services webService;\r
-               String clusterJobId;\r
-               String jobname;\r
-               long start;\r
-               long finish;\r
-               long inputSize;\r
-               long resultSize;\r
-               boolean isCollected;\r
-               boolean isCancelled;\r
-\r
-               JobStat(Services webService, String clusterJobId, String jobname,\r
-                               long start, long finish, long inputSize, long resultSize,\r
-                               boolean isCollected, boolean isCancelled) {\r
-                       super();\r
-                       this.webService = webService;\r
-                       this.clusterJobId = clusterJobId;\r
-                       this.jobname = jobname;\r
-                       this.start = start;\r
-                       this.finish = finish;\r
-                       this.inputSize = inputSize;\r
-                       this.resultSize = resultSize;\r
-                       this.isCollected = isCollected;\r
-                       this.isCancelled = isCancelled;\r
-               }\r
-\r
-               public boolean isClusterJob() {\r
-                       return jobname.startsWith(ConfExecutable.CLUSTER_TASK_ID_PREFIX);\r
-               }\r
-\r
-               @Override\r
-               public int hashCode() {\r
-                       final int prime = 31;\r
-                       int result = 1;\r
-                       result = prime * result + (int) (finish ^ (finish >>> 32));\r
-                       result = prime * result + (int) (inputSize ^ (inputSize >>> 32));\r
-                       result = prime * result + (isCancelled ? 1231 : 1237);\r
-                       result = prime * result + (isCollected ? 1231 : 1237);\r
-                       result = prime * result\r
-                                       + ((jobname == null) ? 0 : jobname.hashCode());\r
-                       result = prime * result + (int) (resultSize ^ (resultSize >>> 32));\r
-                       result = prime * result + (int) (start ^ (start >>> 32));\r
-                       return result;\r
-               }\r
-\r
-               @Override\r
-               public boolean equals(Object obj) {\r
-                       if (this == obj)\r
-                               return true;\r
-                       if (obj == null)\r
-                               return false;\r
-                       if (getClass() != obj.getClass())\r
-                               return false;\r
-                       JobStat other = (JobStat) obj;\r
-                       if (finish != other.finish)\r
-                               return false;\r
-                       if (inputSize != other.inputSize)\r
-                               return false;\r
-                       if (isCancelled != other.isCancelled)\r
-                               return false;\r
-                       if (isCollected != other.isCollected)\r
-                               return false;\r
-                       if (jobname == null) {\r
-                               if (other.jobname != null)\r
-                                       return false;\r
-                       } else if (!jobname.equals(other.jobname))\r
-                               return false;\r
-                       if (resultSize != other.resultSize)\r
-                               return false;\r
-                       if (start != other.start)\r
-                               return false;\r
-                       return true;\r
-               }\r
-\r
-               public int getRuntime() {\r
-                       if (start != ExecutionStatCollector.UNDEFINED\r
-                                       && finish != ExecutionStatCollector.UNDEFINED) {\r
-                               return (int) (finish - start) / 1000;\r
-                       }\r
-                       return ExecutionStatCollector.UNDEFINED;\r
-               }\r
-\r
-               @Override\r
-               public String toString() {\r
-                       return getJobReport();\r
-               }\r
-\r
-               String getJobReport() {\r
-                       String report = "WS: " + webService + "\n";\r
-                       report += "JOB: " + jobname + "\n";\r
-                       if (start != ExecutionStatCollector.UNDEFINED) {\r
-                               report += "Started " + new Date(start) + "\n";\r
-                       }\r
-                       if (finish != ExecutionStatCollector.UNDEFINED) {\r
-                               report += "Finished " + new Date(finish) + "\n";\r
-                       }\r
-                       if (start != ExecutionStatCollector.UNDEFINED\r
-                                       && finish != ExecutionStatCollector.UNDEFINED) {\r
-                               report += "Runtime " + getRuntime() + "\n";\r
-                       }\r
-                       report += "Input size " + inputSize + "\n";\r
-                       report += "Result size " + resultSize + "\n";\r
-                       report += "ClusterJobID " + clusterJobId + "\n";\r
-                       report += "Collected? " + isCollected + "\n";\r
-                       report += "Cancelled? " + isCancelled + "\n";\r
-                       return report;\r
-               }\r
-\r
-               /**\r
-                * Header Job Started Finished Runtime Input Result\r
-                */\r
-               String getJobReportTabulated() {\r
-                       String report = webService + "\t";\r
-                       report += jobname + "\t";\r
-                       if (start != ExecutionStatCollector.UNDEFINED) {\r
-                               report += ExecutionStatCollector.DF.format(new Date(start))\r
-                                               + "\t";\r
-                       } else {\r
-                               report += ExecutionStatCollector.UNDEFINED + "\t";\r
-                       }\r
-                       if (finish != ExecutionStatCollector.UNDEFINED) {\r
-                               report += ExecutionStatCollector.DF.format(new Date(finish))\r
-                                               + "\t";\r
-                       } else {\r
-                               report += ExecutionStatCollector.UNDEFINED + "\t";\r
-                       }\r
-                       if (start != ExecutionStatCollector.UNDEFINED\r
-                                       && finish != ExecutionStatCollector.UNDEFINED) {\r
-                               report += getRuntime() + "\t";\r
-                       } else {\r
-                               report += ExecutionStatCollector.UNDEFINED + "\t";\r
-                       }\r
-                       report += inputSize + "\t";\r
-                       report += resultSize + "\t";\r
-                       report += clusterJobId + "\t";\r
-                       report += isCollected + "\t";\r
-                       report += isCancelled + "\t";\r
-                       return report;\r
-               }\r
-\r
-       }\r
-\r
-}\r