KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hammurapi > inspectors > metrics > SqlExtractorHyperSonicStanaloneServer


1 /*
2  * Created on Oct 16, 2004
3  *
4  * TODO To change the template for this generated file go to
5  * Window - Preferences - Java - Code Style - Code Templates
6  */

7 package org.hammurapi.inspectors.metrics;
8
9 import java.io.FileWriter JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.io.Writer JavaDoc;
12 import java.sql.Connection JavaDoc;
13 import java.sql.DriverManager JavaDoc;
14 import java.sql.PreparedStatement JavaDoc;
15 import java.sql.ResultSet JavaDoc;
16 import java.sql.SQLException JavaDoc;
17 import java.sql.Statement JavaDoc;
18
19 import org.hammurapi.HammurapiException;
20 import org.hammurapi.HammurapiRuntimeException;
21 import org.hammurapi.InspectorContext;
22 import org.hammurapi.results.AnnotationContext;
23 import org.hammurapi.results.AnnotationContext.FileEntry;
24
25 import com.pavelvlasov.jsel.Parameter;
26 import com.pavelvlasov.jsel.VariableDefinition;
27 import com.pavelvlasov.review.SourceMarker;
28 import com.pavelvlasov.sql.Parameterizer;
29 import com.pavelvlasov.sql.RowProcessor;
30 import com.pavelvlasov.sql.SQLProcessor;
31
32 /**
33  * @author 111001082
34  *
35  * TODO To change the template for this generated type comment go to
36  * Window - Preferences - Java - Code Style - Code Templates
37  */

38 public class SqlExtractorHyperSonicStanaloneServer
39     extends SqlExtractorHyperSonicDb
40     implements SqlExtractorPersistencyService {
41     
42     private static int counter = 0;
43      private Connection JavaDoc c = null;
44     /**
45      * Unique table name
46      */

47     private String JavaDoc sqlTableName = "SQL_STRING_LITERALS";
48     protected String JavaDoc varTableName = "VAR_DEF_LITERALS";
49     protected String JavaDoc[] initSQL = {
50                     "CREATE CACHED TABLE "+sqlTableName+
51                     " (LITERAL VARCHAR(250), SOURCE VARCHAR(250), LINE INTEGER, COL INTEGER, CLASS_NAME VARCHAR(250), CLASS_FCN VARCHAR(250))",
52                     "CREATE INDEX IX_"+sqlTableName+" ON "+sqlTableName+" (LITERAL, SOURCE, LINE, COL)" ,
53                     
54                     "CREATE CACHED TABLE "+varTableName+
55                     " (VAR_NAME VARCHAR(250), VAR_VALUE VARCHAR(250), SOURCE VARCHAR(250), LINE INTEGER, COL INTEGER, CLASS_NAME VARCHAR(250), CLASS_FCN VARCHAR(250))",
56                     "CREATE INDEX IX_"+varTableName+" ON "+varTableName+" (VAR_NAME, VAR_VALUE, SOURCE, LINE, COL)"
57         
58             };
59     protected String JavaDoc[] destroySQL = {
60             "CREATE INDEX IX_"+sqlTableName,
61             "DELETE * FROM "+sqlTableName,
62             
63             "CREATE INDEX IX_"+varTableName,
64             "DELETE * FROM "+varTableName
65     };
66      
67     public SqlExtractorHyperSonicStanaloneServer(InspectorContext _context)
68     throws HammurapiException {
69         super();
70         context = _context;
71         init();
72         }
73     
74     public void init() throws HammurapiException {
75         // super.init();
76

77         try {
78             Class.forName("org.hsqldb.jdbcDriver");
79             // Connection c =
80
// DriverManager.getConnection("jdbc:hsqldb:file:D:/anwend/java/hsqldb/data/myjobdb",
81
// "sa", "");
82
c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/job",
83                     "sa", "");
84         } catch (Exception JavaDoc e) {
85             // TODO Auto-generated catch block
86
e.printStackTrace();
87             throw new HammurapiException(e);
88         }
89     }
90     /*
91      * (non-Javadoc)
92      *
93      * @see org.hammurapi.inspectors.metrics.SqlExtractorPersistencyService#saveLanguageElement(org.hammurapi.inspectors.metrics.StringVariable)
94      */

95     public void saveLanguageElement(StringVariable strVar) {
96         System.out.println("** saveLanguageElement "+ strVar.langElement.toString() );
97         
98         
99         final boolean[] ret={false};
100             try {
101                  String JavaDoc templangElementName = "<unresolved>";
102                 if( strVar.langElement instanceof VariableDefinition) {
103                     templangElementName = ((VariableDefinition) strVar.langElement).getName();
104                 } else if ( strVar.langElement instanceof Parameter ) {
105                     templangElementName = ((Parameter) strVar.langElement).getName();
106                 }
107                 final String JavaDoc langElementName = templangElementName;
108                // System.out.println(langElementName + " :- "+ currentStringValue );
109
// check for String Only !
110

111                 //-- is entry already available?
112

113                 SourceMarker sourceMarker = (SourceMarker) strVar.langElement;
114                 
115                     String JavaDoc sqlQuery=
116                         "SELECT 'variable', SOURCE, LINE, COL, VAR_NAME, VAR_VALUE , CLASS_NAME, CLASS_FCN FROM "+varTableName
117                         + " WHERE VAR_NAME = '" + langElementName +"'" +
118                                 "AND CLASS_NAME = '" + strVar.className +"'" +
119                                 "AND CLASS_FCN = '" + strVar.classFcn +"'" ;
120
121                     Statement JavaDoc stmt = c.createStatement();
122                     ResultSet JavaDoc rs = stmt.executeQuery(sqlQuery);
123                     
124                                 try {
125                                     String JavaDoc tmpStr = rs.getString( "VAR_NAME");
126                                         ret[0] = langElementName.equals(tmpStr) ;
127                                 } catch (Exception JavaDoc e1) {
128                                     // TODO Auto-generated catch block
129
// e1.printStackTrace();
130
}
131                 
132                                 rs.close();
133                                 stmt.close();
134                 //-- update entry
135

136                 stmt = c.createStatement();
137                 if( ret[0] ){
138                   sqlQuery=
139                             "UPDATE " + varTableName
140                                     + " SET "
141                                     + " VAR_VALUE = '" + strVar.varValue.toString() +"'"
142                                     + " WHERE VAR_NAME = '" + langElementName +"'" +
143                                     "AND CLASS_NAME = '" + strVar.className +"'" +
144                                     "AND CLASS_FCN = '" + strVar.classFcn +"'" ;
145                     stmt.executeQuery(sqlQuery);
146                     stmt.close();
147                 
148                 } else {
149                  // System.out.println (" KKKKKKK INSERT" );
150
//-- insert entry
151
sqlQuery=
152                 "INSERT INTO " + varTableName
153                         + " (VAR_NAME, VAR_VALUE, SOURCE, LINE, COL, CLASS_NAME, CLASS_FCN) "
154                         + "VALUES ("
155                         + "'" + langElementName +"',"
156                         + "'" + strVar.varValue.toString() +"',"
157                         
158                         + "'" + sourceMarker.getSourceURL() +"',"
159                         + "'" + sourceMarker.getLine() +"',"
160                         + "'" + sourceMarker.getColumn() +"',"
161                         + "'" + strVar.className +"',"
162                         + "'" + strVar.classFcn +"')" ;
163                     stmt.executeQuery(sqlQuery);
164                     stmt.close();
165                     
166                 } //fi
167
} catch (SQLException JavaDoc e) {
168                 context.warn((SourceMarker) strVar.langElement, e);
169             }
170         }
171
172
173     /* (non-Javadoc)
174      * @see org.hammurapi.inspectors.metrics.SqlExtractorPersistencyService#render(org.hammurapi.results.AnnotationContext, java.lang.String)
175      */

176     public void render(AnnotationContext context, String JavaDoc path)
177             throws HammurapiException {
178         try {
179             FileEntry a = context.getNextFile(".html");
180             path=a.getPath();
181
182             final Writer JavaDoc w=new FileWriter JavaDoc(a.getFile());
183             try {
184                 w.write("<HTML><BODY><TABLE border=\"1\"><TR><TH>Var Name</TH><TH>Var Value</TH><TH>File</TH><TH>Line</TH><TH>Column</TH><TH>Class</TH><TH>FCN</TH></TR>");
185                 Statement JavaDoc stmt = c.createStatement();
186                 String JavaDoc sqlString =
187                         "SELECT * FROM (" +
188                         "SELECT 'variable', SOURCE, LINE, COL, VAR_NAME, VAR_VALUE , CLASS_NAME, CLASS_FCN FROM "+varTableName
189                         + ") ORDER BY SOURCE, LINE, COL";
190                         ResultSet JavaDoc rs = stmt.executeQuery( sqlString );
191                         
192                         while( rs.next()){
193                         try {
194                                     w.write("<TR><TD>");
195                                     // w.write(rs.getString("LITERAL"));
196
w.write(rs.getString( 5 ));
197                                     w.write("</TD><TD>");
198                                     
199                                     w.write(rs.getString( 6 )); // VAR_VALUE or LITERAL
200
w.write("</TD><TD>");
201                                     // w.write(rs.getString( 1 ));
202
// w.write("</TD><TD>");
203

204                                     w.write(rs.getString("SOURCE"));
205                                     w.write("</TD><TD aligh=\"right\">");
206                                     w.write(rs.getString("LINE"));
207                                     w.write("</TD><TD aligh=\"right\">");
208                                     w.write(rs.getString("COL"));
209                                     w.write("</TD><TD>");
210                                     w.write(rs.getString("CLASS_NAME"));
211                                     w.write("</TD><TD>");
212                                     w.write(rs.getString("CLASS_FCN"));
213                                     
214                                     w.write("</TD><TR>");
215                                     
216                                 } catch (IOException JavaDoc e) {
217                                     throw new HammurapiRuntimeException(e);
218                                 }
219                         }
220                             
221             
222                         ;
223                 w.write("</TABLE></BODY></HTML>");
224             } finally {
225                 w.close();
226             }
227         } catch (SQLException JavaDoc e) {
228             throw new HammurapiException(e);
229         } catch (HammurapiRuntimeException e) {
230             throw new HammurapiException(e.getCause());
231         } catch (IOException JavaDoc e) {
232             throw new HammurapiException(e);
233         
234         } catch (HammurapiException e) {
235             throw new HammurapiException(e);
236         }
237
238
239     }
240
241     public void destroy() {
242         try {
243         Statement JavaDoc stmt = c.createStatement();
244         for (int i=0; i<destroySQL.length; i++) {
245             try {
246                 ResultSet JavaDoc rs = stmt.executeQuery(destroySQL[i]);
247                 
248             } catch (SQLException JavaDoc e) {
249                 System.err.println("Could not delete tables");
250                 e.printStackTrace();
251             }
252         }
253         } catch (SQLException JavaDoc e) {
254             System.err.println("Could not delete tables");
255             e.printStackTrace();
256         }
257         
258     }
259
260 }
261
Popular Tags