KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > test > synth > Result


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.test.synth;
6
7 import java.io.PrintWriter JavaDoc;
8 import java.io.StringWriter JavaDoc;
9 import java.sql.*;
10 import java.util.*;
11
12 import org.h2.test.TestBase;
13
14 class Result implements Comparable JavaDoc {
15     static final int SUCCESS=0, BOOLEAN=1, INT=2, EXCEPTION=3, RESULTSET=4;
16     private int type;
17     private boolean bool;
18     private int intValue;
19     private SQLException exception;
20     private ArrayList rows;
21     private ArrayList header;
22     String JavaDoc sql;
23     
24     Result(String JavaDoc sql) {
25         this.sql = sql;
26         type = SUCCESS;
27     }
28     
29     Result(String JavaDoc sql, SQLException e) {
30         this.sql = sql;
31         type = EXCEPTION;
32         exception = e;
33     }
34     
35     Result(String JavaDoc sql, boolean b) {
36         this.sql = sql;
37         type = BOOLEAN;
38         this.bool = b;
39     }
40     
41     Result(String JavaDoc sql, int i) {
42         this.sql = sql;
43         type = INT;
44         this.intValue = i;
45     }
46     
47     Result(TestSynth config, String JavaDoc sql, ResultSet rs) {
48         this.sql = sql;
49         type = RESULTSET;
50         try {
51             rows = new ArrayList();
52             header = new ArrayList();
53             ResultSetMetaData meta = rs.getMetaData();
54             int len = meta.getColumnCount();
55             Column[] cols = new Column[len];
56             for(int i=0; i<len; i++) {
57                 cols[i] = new Column(meta, i+1);
58             }
59             while(rs.next()) {
60                 Row row = new Row(config, rs, len);
61                 rows.add(row);
62             }
63             Collections.sort(rows);
64         } catch(SQLException e) {
65 // type = EXCEPTION;
66
// exception = e;
67
TestBase.logError("error reading result set", e);
68         }
69     }
70
71     public String JavaDoc toString() {
72         switch(type) {
73         case SUCCESS:
74             return "success";
75         case BOOLEAN:
76             return "boolean: " + this.bool;
77         case INT:
78             return "int: " + this.intValue;
79         case EXCEPTION: {
80             StringWriter JavaDoc w = new StringWriter JavaDoc();
81             exception.printStackTrace(new PrintWriter JavaDoc(w));
82             return "exception: "+exception.getSQLState()+": "+exception.getMessage() + "\r\n"+w.toString();
83         }
84         case RESULTSET:
85             String JavaDoc result = "ResultSet { // size=" + rows.size() + "\r\n ";
86             for(int i=0; i<header.size(); i++) {
87                 Column column = (Column)header.get(i);
88                 result += column.toString() + "; ";
89             }
90             result += "} = {\r\n";
91             for(int i=0; i<rows.size(); i++) {
92                 Row row = (Row)rows.get(i);
93                 result += " { " + row.toString() + "};\r\n";
94             }
95             return result + "}";
96         default:
97             throw new Error JavaDoc("internal");
98         }
99     }
100     
101     public int compareTo(Object JavaDoc o) {
102         Result r = (Result)o;
103         switch(type) {
104         case EXCEPTION:
105             if(r.type != EXCEPTION) {
106                 return 1;
107             }
108             return 0;
109 // return exception.getSQLState().compareTo(r.exception.getSQLState());
110
case BOOLEAN:
111         case INT:
112         case SUCCESS:
113         case RESULTSET:
114             return toString().compareTo(r.toString());
115         default:
116             throw new Error JavaDoc("internal");
117         }
118     }
119     
120     public void log() {
121         switch(type) {
122         case SUCCESS:
123             System.out.println("> ok");
124             break;
125         case EXCEPTION:
126             System.out.println("> exception");
127             break;
128         case INT:
129             if(intValue==0) {
130                 System.out.println("> ok");
131             } else {
132                 System.out.println("> update count: "+intValue);
133             }
134             break;
135         case RESULTSET:
136             System.out.println("> rs "+rows.size());
137             break;
138         }
139         System.out.println();
140     }
141
142 }
143
Popular Tags