1 8 package org.jahia.sqlprofiler; 9 10 import java.util.*; 11 12 21 22 public class QueryStatEntry implements Comparable { 23 private ArrayList tableNames = new ArrayList(); 24 private ArrayList columnNames = new ArrayList(); 25 private Set queries = new TreeSet(); 26 private int occurences = 0; 27 private long totalElapsedTime = 0; 28 29 public QueryStatEntry() { 30 } 31 32 public QueryStatEntry(ArrayList tableNames, ArrayList columnNames) { 33 Iterator tableNameIter = tableNames.iterator(); 37 while (tableNameIter.hasNext()) { 38 String curTableName = (String ) tableNameIter.next(); 39 if (!this.tableNames.contains(curTableName)) { 40 this.tableNames.add(curTableName); 41 } 42 } 43 Iterator columnNameIter = columnNames.iterator(); 44 while (columnNameIter.hasNext()) { 45 String curColumnName = (String ) columnNameIter.next(); 46 if (!this.columnNames.contains(curColumnName)) { 47 this.columnNames.add(curColumnName); 48 } 49 } 50 } 51 public java.util.ArrayList getTableNames() { 52 return tableNames; 53 } 54 public java.util.ArrayList getColumnNames() { 55 return columnNames; 56 } 57 public int getOccurences() { 58 return occurences; 59 } 60 61 public long getTotalElapsedTime() { 62 return totalElapsedTime; 63 } 64 65 public void incOccurences() { 66 occurences++; 67 } 68 69 public void incTotalElapseTime(long elapsedTime) { 70 totalElapsedTime += elapsedTime; 71 } 72 73 public void addQuery(QueryEntry query) { 74 queries.add(query); 75 } 76 77 public Set getQueries() { 78 return queries; 79 } 80 81 public String getKey() { 82 String hashCodeStr = tableNames.toString() + "_" + columnNames.toString(); 83 return hashCodeStr; 84 } 85 86 public int hashCode() { 87 return getKey().hashCode(); 88 } 89 90 public boolean equals(Object o) { 91 if (o instanceof QueryStatEntry) { 92 QueryStatEntry right = (QueryStatEntry) o; 93 return getKey().equals(right.getKey()); 94 } else { 95 return false; 96 } 97 } 98 99 public int compareTo(Object o) throws ClassCastException { 100 QueryStatEntry right = (QueryStatEntry) o; 101 102 Long leftElapsedTime = new Long (getTotalElapsedTime()); 104 Long rightElapsedTime = new Long (right.getTotalElapsedTime()); 105 int compareElapsed = -leftElapsedTime.compareTo(rightElapsedTime); 106 if (compareElapsed != 0) { 107 return compareElapsed; 108 } 109 110 Integer left = new Integer (occurences); 111 return -left.compareTo(new Integer (right.getOccurences())); 112 } 113 114 } | Popular Tags |