KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jahia > sqlprofiler > QueryStatEntry


1 /*
2  * Copyright (C) Jahia Ltd. All rights reserved.
3  *
4  * This software is published under the terms of the Jahia Open Software
5  * License version 1.1, a copy of which has been included with this
6  * distribution in the LICENSE.txt file.
7  */

8 package org.jahia.sqlprofiler;
9
10 import java.util.*;
11
12 /**
13  * <p>Title: Stores the result of a parsed SQL Select statement, storing the
14  * table and columns names associated with the query.</p>
15  * <p>Description: </p>
16  * <p>Copyright: Copyright (c) 2003</p>
17  * <p>Company: Jahia Ltd</p>
18  * @author Serge Huber
19  * @version 1.0
20  */

21
22 public class QueryStatEntry implements Comparable JavaDoc {
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         // we copy here to make sure we have only one value for each table and
34
// column name, which is not guaranteed since we are using ArrayList
35
// to preserve order of the detected identifiers.
36
Iterator tableNameIter = tableNames.iterator();
37         while (tableNameIter.hasNext()) {
38             String JavaDoc curTableName = (String JavaDoc) 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 JavaDoc curColumnName = (String JavaDoc) columnNameIter.next();
46             if (!this.columnNames.contains(curColumnName)) {
47                 this.columnNames.add(curColumnName);
48             }
49         }
50     }
51     public java.util.ArrayList JavaDoc getTableNames() {
52         return tableNames;
53     }
54     public java.util.ArrayList JavaDoc 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 JavaDoc getKey() {
82         String JavaDoc 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 JavaDoc 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 JavaDoc o) throws ClassCastException JavaDoc {
100         QueryStatEntry right = (QueryStatEntry) o;
101
102         // first let's compare total time.
103
Long JavaDoc leftElapsedTime = new Long JavaDoc(getTotalElapsedTime());
104         Long JavaDoc rightElapsedTime = new Long JavaDoc(right.getTotalElapsedTime());
105         int compareElapsed = -leftElapsedTime.compareTo(rightElapsedTime);
106         if (compareElapsed != 0) {
107             return compareElapsed;
108         }
109
110         Integer JavaDoc left = new Integer JavaDoc(occurences);
111         return -left.compareTo(new Integer JavaDoc(right.getOccurences()));
112     }
113
114 }
Popular Tags