src/org/objectweb/cjdbc/controller/virtualdatabase/VirtualDatabaseMetaData.java

説明を見る。
00001 00025 package org.objectweb.cjdbc.controller.virtualdatabase; 00026 00027 import java.sql.SQLException; 00028 import java.sql.Types; 00029 import java.util.ArrayList; 00030 00031 import org.objectweb.cjdbc.common.log.Trace; 00032 import org.objectweb.cjdbc.common.sql.schema.DatabaseColumn; 00033 import org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure; 00034 import org.objectweb.cjdbc.common.sql.schema.DatabaseProcedureParameter; 00035 import org.objectweb.cjdbc.common.sql.schema.DatabaseSchema; 00036 import org.objectweb.cjdbc.common.sql.schema.DatabaseTable; 00037 import org.objectweb.cjdbc.common.users.VirtualDatabaseUser; 00038 import org.objectweb.cjdbc.controller.authentication.AuthenticationManager; 00039 import org.objectweb.cjdbc.controller.requestmanager.RequestManager; 00040 import org.objectweb.cjdbc.driver.DriverResultSet; 00041 import org.objectweb.cjdbc.driver.Field; 00042 00051 public class VirtualDatabaseMetaData //implements java.sql.DatabaseMetaData 00052 { 00053 00055 public static final int NULL_VALUE = -999; 00056 00057 private String vdbName; 00058 private RequestManager requestManager; 00059 00061 private Trace logger = null; 00062 00069 public VirtualDatabaseMetaData(VirtualDatabase database) 00070 { 00071 this.vdbName = database.getName(); 00072 requestManager = database.getRequestManager(); 00073 if (requestManager == null) 00074 throw new RuntimeException( 00075 "Null request manager in VirtualDatabaseMetaData"); 00076 00077 this.logger = Trace 00078 .getLogger("org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseWorkerThread." 00079 + vdbName + ".metadata"); 00080 } 00081 00082 private DatabaseSchema getDatabaseSchema() 00083 { 00084 try 00085 { // Try to get a fresh schema 00086 return requestManager.getVirtualDatabase() 00087 .getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames(); 00088 } 00089 catch (SQLException e) 00090 { // Default to what we statically have in the RequestManager 00091 return requestManager.getDatabaseSchema(); 00092 } 00093 } 00094 00101 public java.sql.ResultSet getPrimaryKeys(String catalog, String schema, 00102 String table) 00103 { 00104 if (logger.isDebugEnabled()) 00105 logger.debug("Getting getPrimaryKeys for " + vdbName); 00106 DatabaseSchema dbs = this.getDatabaseSchema(); 00107 if (dbs == null) 00108 return null; 00109 00110 if (table == null) 00111 table = "%"; // if null is passed then 00112 // select all tables 00113 00114 // Build the ResultSet 00115 ArrayList tables = dbs.getTables(); 00116 int size = tables.size(); 00117 ArrayList data = new ArrayList(); 00118 00119 for (int i = 0; i < size; i++) 00120 { 00121 DatabaseTable t = (DatabaseTable) tables.get(i); 00122 if (table.equals("%") || table.equals(t.getName())) 00123 { 00124 ArrayList columns = t.getColumns(); 00125 for (int j = 0; j < columns.size(); j++) 00126 { 00127 DatabaseColumn c = (DatabaseColumn) columns.get(j); 00128 if (c.isUnique()) 00129 { 00130 if (logger.isDebugEnabled()) 00131 logger.debug("Found primary key" + c.getName()); 00132 Object[] row = new Object[6]; 00133 row[0] = vdbName; // TABLE_CAT 00134 row[1] = null; // TABLE_SCHEM 00135 row[2] = t.getName(); // TABLE_NAME 00136 row[3] = c.getName(); // COLUMN_NAME 00137 row[4] = new Integer(c.getType()); // KEY_SEQ 00138 row[5] = c.getName(); // PK_NAME 00139 data.add(row); 00140 } 00141 else 00142 { 00143 if (logger.isDebugEnabled()) 00144 logger.debug("Key " + c.getName() + " is not unique"); 00145 } 00146 } 00147 } 00148 } 00149 DriverResultSet rs = new DriverResultSet(getPrimaryKeysFields, data); 00150 return rs; 00151 } 00152 00156 public DriverResultSet getColumns(String catalog, String schemaPattern, 00157 String tableNamePattern, String columnNamePattern) 00158 { 00159 if (logger.isDebugEnabled()) 00160 logger.debug("Getting columns for " + vdbName); 00161 DatabaseSchema dbs = this.getDatabaseSchema(); 00162 if (dbs == null) 00163 return null; 00164 00165 if (tableNamePattern == null) 00166 tableNamePattern = "%"; // if null is passed then select all tables 00167 00168 if (columnNamePattern == null) 00169 columnNamePattern = "%"; // if null is passed then 00170 00171 // Build the ResultSet 00172 ArrayList tables = dbs.getTables(); 00173 int size = tables.size(); 00174 ArrayList data = new ArrayList(); 00175 00176 for (int i = 0; i < size; i++) 00177 { 00178 DatabaseTable t = (DatabaseTable) tables.get(i); 00179 00180 if (tableNamePattern.equals("%") || tableNamePattern.equals(t.getName())) 00181 { 00182 if (logger.isDebugEnabled()) 00183 logger.debug("Found table " + t.getName()); 00184 ArrayList columns = t.getColumns(); 00185 for (int j = 0; j < columns.size(); j++) 00186 { 00187 DatabaseColumn c = (DatabaseColumn) columns.get(j); 00188 if (columnNamePattern.equals("%") 00189 || columnNamePattern.equals(c.getName())) 00190 { 00191 if (logger.isDebugEnabled()) 00192 logger.debug("Found column " + c.getName()); 00193 Object[] row = new Object[18]; 00194 row[0] = vdbName; // TABLE_CAT 00195 row[1] = null; // TABLE_SCHEM 00196 row[2] = t.getName(); // TABLE_NAME 00197 row[3] = c.getName(); // COLUMN_NAME 00198 row[4] = new Integer(c.getType()); // DATA_TYPE 00199 row[5] = null; // TYPE_NAME 00200 row[6] = null; // COLUMN_SIZE 00201 row[7] = null; // BUFFER_LENGTH 00202 row[8] = null; // DECIMAL_DIGITS 00203 row[9] = null; // NUM_PREC_RADIX 00204 row[10] = null; // NULLABLE 00205 row[11] = null; // REMARKS 00206 row[12] = null; // COLUMN_DEF 00207 row[13] = null; // SQL_DATA_TYPE 00208 row[14] = null; // SQL_DATETIME_SUB 00209 row[15] = null; // CHAR_OCTET_LENGTH 00210 row[16] = null; // ORDINAL_POSITION 00211 row[17] = ""; // IS_NULLABLE 00212 data.add(row); 00213 } 00214 } 00215 } 00216 } 00217 DriverResultSet rs = new DriverResultSet(getColumnsFields, data); 00218 return rs; 00219 } 00220 00227 public Object getSchemas() 00228 { 00229 ArrayList data = new ArrayList(); 00230 DriverResultSet rs = new DriverResultSet(getSchemasFields, data); 00231 return rs; 00232 } 00233 00238 public DriverResultSet getTables(String catalog, String schemaPattern, 00239 String tableNamePattern, String[] types) 00240 { 00241 DatabaseSchema dbs = this.getDatabaseSchema(); 00242 if (dbs == null) 00243 return null; 00244 00245 if (tableNamePattern == null) 00246 // if null is passed then select all tables 00247 tableNamePattern = "%"; 00248 00249 // Build the ResultSet 00250 ArrayList tables = dbs.getTables(); 00251 int size = tables.size(); 00252 ArrayList data = new ArrayList(); 00253 for (int i = 0; i < size; i++) 00254 { 00255 DatabaseTable t = (DatabaseTable) tables.get(i); 00256 if (tableNamePattern.equals("%") || t.getName().indexOf(tableNamePattern)!=-1) 00257 { 00258 if (logger.isDebugEnabled()) 00259 logger.debug("Found table " + t.getName()); 00260 Object[] row = new Object[10]; 00261 row[0] = vdbName; // TABLE_CAT 00262 row[1] = null; // TABLE_SCHEM 00263 row[2] = t.getName(); // TABLE_NAME 00264 row[3] = "TABLE"; // TABLE_TYPE 00265 row[4] = null; // REMARKS 00266 row[5] = null; // TYPE_CAT 00267 row[6] = null; // TYPE_SCHEM 00268 row[7] = null; // TYPE_NAME 00269 row[8] = null; // SELF_REFERENCING_COL_NAME 00270 row[9] = "SYSTEM"; // REF_GENERATION 00271 data.add(row); 00272 } 00273 } 00274 DriverResultSet rs = new DriverResultSet(getTablesFields, data); 00275 return rs; 00276 } 00277 00281 public DriverResultSet getProcedures(String catalog, String schemaPattern, 00282 String procedureNamePattern) 00283 { 00284 DatabaseSchema dbs = this.getDatabaseSchema(); 00285 if (dbs == null) 00286 return null; 00287 00288 if (procedureNamePattern == null) 00289 procedureNamePattern = "%"; // if null is passed then 00290 // select all procedures 00291 00292 // Build the ResultSet 00293 ArrayList procedures = dbs.getProcedures(); 00294 int size = procedures.size(); 00295 ArrayList data = new ArrayList(); 00296 for (int i = 0; i < size; i++) 00297 { 00298 DatabaseProcedure t = (DatabaseProcedure) procedures.get(i); 00299 if (procedureNamePattern.equals("%") 00300 || procedureNamePattern.equals(t.getName())) 00301 { 00302 if (logger.isDebugEnabled()) 00303 logger.debug("Found procedure " + t.getName()); 00304 Object[] row = new Object[8]; 00305 row[0] = vdbName; // PROCEDURE_CAT 00306 row[1] = null; // PROCEDURE_SCHEM 00307 row[2] = t.getName(); // PROCEDURE_NAME 00308 row[3] = null; // reserved for future use 00309 row[4] = null; // reserved for future use 00310 row[5] = null; // reserved for future use 00311 row[6] = t.getRemarks(); // REMARKS 00312 row[7] = new Integer(t.getProcedureType()); // PROCEDURE_TYPE 00313 data.add(row); 00314 } 00315 } 00316 DriverResultSet rs = new DriverResultSet(getProceduresFields, data); 00317 return rs; 00318 } 00319 00326 public DriverResultSet getCatalogs(ArrayList list) 00327 { 00328 int size = list.size(); 00329 ArrayList data = new ArrayList(size); 00330 for (int i = 0; i < size; i++) 00331 { 00332 Object[] row = new Object[1]; 00333 row[0] = (String) list.get(i); 00334 data.add(row); 00335 } 00336 DriverResultSet rs = new DriverResultSet(getCatalogsFields, data); 00337 return rs; 00338 } 00339 00343 public DriverResultSet getTableTypes() 00344 { 00345 ArrayList list = new ArrayList(1); 00346 Object[] row = new Object[1]; 00347 row[0] = "TABLE"; 00348 list.add(row); 00349 DriverResultSet rs = new DriverResultSet(getTableTypesFields, list); 00350 return rs; 00351 } 00352 00356 public DriverResultSet getTablePrivileges(String catalog, 00357 String schemaPattern, String tableNamePattern) 00358 { 00359 AuthenticationManager manager = requestManager.getVirtualDatabase() 00360 .getAuthenticationManager(); 00361 DatabaseSchema dbs = this.getDatabaseSchema(); 00362 if (dbs == null) 00363 return null; 00364 00365 if (tableNamePattern == null) 00366 // if null is passed then select all tables 00367 tableNamePattern = "%"; 00368 00369 ArrayList tables = dbs.getTables(); 00370 int size = tables.size(); 00371 ArrayList data = new ArrayList(); 00372 00373 ArrayList virtualLogins = manager.getVirtualLogins(); 00374 int vsize = virtualLogins.size(); 00375 VirtualDatabaseUser vu; 00376 00377 for (int i = 0; i < size; i++) 00378 { 00379 DatabaseTable t = (DatabaseTable) tables.get(i); 00380 if (tableNamePattern.equals("%") || tableNamePattern.equals(t.getName())) 00381 { 00382 for (int j = 0; j < vsize; j++) 00383 { 00384 vu = (VirtualDatabaseUser) virtualLogins.get(0); 00385 00386 if (logger.isDebugEnabled()) 00387 logger.debug("Found privilege for user:" + vu.getLogin() 00388 + " on table:" + t.getName()); 00389 Object[] row = new Object[7]; 00390 row[0] = vdbName; // table cat 00391 row[1] = null; // table schema 00392 row[2] = t.getName(); // table name 00393 row[3] = null; // grantor 00394 row[4] = vu.getLogin(); // grantee 00395 row[5] = "UPDATE"; // privilege 00396 row[6] = "NO"; //IS_GRANTABLE 00397 data.add(row); 00398 } 00399 } 00400 } 00401 00402 DriverResultSet rs = new DriverResultSet(getTablePrivilegesFields, data); 00403 return rs; 00404 } 00405 00409 public DriverResultSet getProcedureColumns(String catalog, 00410 String schemaPattern, String procedureNamePattern, 00411 String columnNamePattern) 00412 { 00413 DatabaseSchema dbs = this.getDatabaseSchema(); 00414 if (dbs == null) 00415 return null; 00416 00417 if (procedureNamePattern == null) 00418 procedureNamePattern = "%"; 00419 00420 if (columnNamePattern == null) 00421 columnNamePattern = "%"; 00422 00423 //Build the ResultSet 00424 ArrayList procedures = dbs.getProcedures(); 00425 int size = procedures.size(); 00426 ArrayList data = new ArrayList(); 00427 for (int i = 0; i < size; i++) 00428 { 00429 DatabaseProcedure t = (DatabaseProcedure) procedures.get(i); 00430 if (procedureNamePattern.equals("%") 00431 || procedureNamePattern.equals(t.getName())) 00432 { 00433 if (logger.isDebugEnabled()) 00434 logger.debug("Found matching procedure " + t.getName()); 00435 00436 ArrayList params = t.getParameters(); 00437 int sizep = params.size(); 00438 DatabaseProcedureParameter param; 00439 for (int k = 0; k < sizep; k++) 00440 { 00441 param = (DatabaseProcedureParameter) params.get(k); 00442 if (columnNamePattern.equals("%") 00443 || columnNamePattern.equals(t.getName())) 00444 { 00445 if (logger.isDebugEnabled()) 00446 logger.debug("Found matching procedure parameter" 00447 + param.getName()); 00448 00449 Object[] row = new Object[13]; 00450 row[0] = vdbName; // PROCEDURE_CAT 00451 row[1] = null; // PROCEDURE_SCHEM 00452 row[2] = t.getName(); // PROCEDURE_NAME 00453 row[3] = param.getName(); // COLUMN_NAME 00454 row[4] = new Integer(param.getColumnType()); // COLUMN_TYPE 00455 row[5] = new Integer(param.getDataType()); // DATA_TYPE 00456 row[6] = param.getTypeName(); // TYPE_NAME 00457 row[7] = new Float(param.getPrecision()); // PRECISION 00458 row[8] = new Integer(param.getLength()); // LENGTH 00459 row[9] = new Integer(param.getScale()); // SCALE 00460 row[10] = new Integer(param.getRadix()); // RADIX 00461 row[11] = new Integer(param.getNullable()); // NULLABLE 00462 row[12] = param.getRemarks(); 00463 00464 data.add(row); 00465 } 00466 } 00467 } 00468 } 00469 DriverResultSet rs = new DriverResultSet(getProcedureColumnsFields, data); 00470 return rs; 00471 } 00472 00473 private static Field[] getSchemasFields = new Field[]{new Field( 00474 "TABLE_SCHEM", 00475 "TABLE_SCHEM", 9, 00476 Types.VARCHAR, 00477 "VARCHAR", "String")}; 00478 00479 private static Field[] getProcedureColumnsFields = new Field[]{ 00480 new Field("PROCEDURE_CAT", "PROCEDURE_CAT", 9, Types.VARCHAR, "VARCHAR", 00481 "String"), 00482 new Field("PROCEDURE_SCHEM", "PROCEDURE_SCHEM", 10, Types.VARCHAR, 00483 "VARCHAR", "String"), 00484 new Field("PROCEDURE_NAME", "PROCEDURE_NAME", 10, Types.VARCHAR, 00485 "VARCHAR", "String"), 00486 new Field("COLUMN_NAME", "COLUMN_NAME", 10, Types.VARCHAR, "VARCHAR", 00487 "String"), 00488 new Field("COLUMN_TYPE", "COLUMN_TYPE", 10, Types.SMALLINT, "SMALLINT", 00489 "Short"), 00490 new Field("DATA_TYPE", "DATA_TYPE", 10, Types.SMALLINT, "SMALLINT", 00491 "Short"), 00492 new Field("TYPE_NAME", "TYPE_NAME", 10, Types.VARCHAR, "VARCHAR", 00493 "String"), 00494 new Field("PRECISION", "PRECISION", 10, Types.FLOAT, "FLOAT", "Float"), 00495 new Field("LENGTH", "LENGTH", 10, Types.INTEGER, "INTEGER", "Integer"), 00496 new Field("SCALE", "SCALE", 10, Types.SMALLINT, "SMALLINT", "Short"), 00497 new Field("RADIX", "RADIX", 10, Types.SMALLINT, "SMALLINT", "Short"), 00498 new Field("NULLABLE", "NULLABLE", 10, Types.SMALLINT, "SMALLINT", "Short"), 00499 new Field("REMARKS", "REMARKS", 10, Types.VARCHAR, "VARCHAR", "String")}; 00500 00501 private static Field[] getCatalogsFields = new Field[]{new Field( 00502 "TABLE_CAT", 00503 "TABLE_CAT", 9, 00504 Types.VARCHAR, 00505 "VARCHAR", "String")}; 00506 00507 private static Field[] getTableTypesFields = new Field[]{new Field( 00508 "TABLE_TYPE", 00509 "TABLE_TYPE", 9, 00510 Types.VARCHAR, 00511 "VARCHAR", "String")}; 00512 00513 private static Field[] getTablePrivilegesFields = new Field[]{ 00514 new Field("TABLE_CAT", "TABLE_CAT", 9, Types.VARCHAR, "VARCHAR", "String"), 00515 new Field("TABLE_SCHEM", "TABLE_SCHEM", 10, Types.VARCHAR, "VARCHAR", 00516 "String"), 00517 new Field("TABLE_NAME", "TABLE_NAME", 10, Types.VARCHAR, "VARCHAR", 00518 "String"), 00519 new Field("GRANTOR", "GRANTOR", 10, Types.VARCHAR, "VARCHAR", "String"), 00520 new Field("GRANTEE", "GRANTEE", 10, Types.VARCHAR, "VARCHAR", "String"), 00521 new Field("PRIVILEGE", "PRIVILEGE", 10, Types.VARCHAR, "VARCHAR", 00522 "String"), 00523 new Field("IS_GRANTABLE", "IS_GRANTABLE", 10, Types.VARCHAR, "VARCHAR", 00524 "String"), }; 00525 00526 // # TABLE_CAT String => table catalog (may be null) 00527 // # TABLE_SCHEM String => table schema (may be null) 00528 // # TABLE_NAME String => table name 00529 // # GRANTOR => grantor of access (may be null) 00530 // # GRANTEE String => grantee of access 00531 // # PRIVILEGE String => name of access (SELECT, INSERT, UPDATE, REFRENCES, 00532 // ...) 00533 // # IS_GRANTABLE String => "YES" if grantee is permitted to grant to othe 00534 00535 private static Field[] getProceduresFields = new Field[]{ 00536 new Field("PROCEDURE_CAT", "PROCEDURE_CAT", 9, Types.VARCHAR, "VARCHAR", 00537 "String"), 00538 new Field("PROCEDURE_SCHEM", "PROCEDURE_SCHEM", 10, Types.VARCHAR, 00539 "VARCHAR", "String"), 00540 new Field("PROCEDURE_NAME", "PROCEDURE_NAME", 10, Types.VARCHAR, 00541 "VARCHAR", "String"), 00542 new Field("", "", 0, Types.VARCHAR, "VARCHAR", "String"), 00543 new Field("", "", 0, Types.VARCHAR, "VARCHAR", "String"), 00544 new Field("", "", 0, Types.VARCHAR, "VARCHAR", "String"), 00545 new Field("REMARKS", "REMARKS", 10, Types.VARCHAR, "VARCHAR", "String"), 00546 new Field("PROCEDURE_TYPE", "PROCEDURE_TYPE", 10, Types.SMALLINT, 00547 "SMALLINT", "Short") }; 00548 00549 // 00550 //# TABLE_CAT String => table catalog (may be null) 00551 //# TABLE_SCHEM String => table schema (may be null) 00552 //# TABLE_NAME String => table name 00553 //# COLUMN_NAME String => column name 00554 //# KEY_SEQ short => sequence number within primary key 00555 //# PK_NAME String => primary key name (may be null) 00556 // 00557 00558 private static Field[] getPrimaryKeysFields = new Field[]{ 00559 new Field("TABLE_CAT", "TABLE_CAT", 9, Types.VARCHAR, "VARCHAR", "String"), 00560 new Field("TABLE_SCHEM", "TABLE_SCHEM", 10, Types.VARCHAR, "VARCHAR", 00561 "String"), 00562 new Field("TABLE_NAME", "TABLE_NAME", 10, Types.VARCHAR, "VARCHAR", 00563 "String"), 00564 new Field("COLUMN_NAME", "COLUMN_NAME", 10, Types.VARCHAR, "VARCHAR", 00565 "String"), 00566 new Field("KEY_SEQ", "KEY_SEQ", 10, Types.SMALLINT, "SMALLINT", "Short"), 00567 new Field("PK_NAME", "PK_NAME", 10, Types.VARCHAR, "VARCHAR", "String")}; 00568 00570 private static Field[] getColumnsFields = new Field[]{ 00571 new Field("TABLE_CAT", "TABLE_CAT", 9, Types.VARCHAR, "VARCHAR", "String"), 00572 new Field("TABLE_SCHEM", "TABLE_SCHEM", 10, Types.VARCHAR, "VARCHAR", 00573 "String"), 00574 new Field("TABLE_NAME", "TABLE_NAME", 10, Types.VARCHAR, "VARCHAR", 00575 "String"), 00576 new Field("COLUMN_NAME", "COLUMN_NAME", 10, Types.VARCHAR, "VARCHAR", 00577 "String"), 00578 new Field("DATA_TYPE", "DATA_TYPE", 10, Types.SMALLINT, "SMALLINT", 00579 "Short"), 00580 new Field("TYPE_NAME", "TYPE_NAME", 10, Types.VARCHAR, "VARCHAR", 00581 "String"), 00582 new Field("COLUMN_SIZE", "COLUMN_SIZE", 10, Types.INTEGER, "INTEGER", 00583 "Integer"), 00584 new Field("BUFFER_LENGTH", "BUFFER_LENGTH", 10, Types.INTEGER, "INTEGER", 00585 "Integer"), 00586 new Field("DECIMAL_DIGITS", "DECIMAL_DIGITS", 10, Types.INTEGER, 00587 "INTEGER", "Integer"), 00588 new Field("NUM_PREC_RADIX", "NUM_PREC_RADIX", 10, Types.INTEGER, 00589 "INTEGER", "Integer"), 00590 new Field("NULLABLE", "NULLABLE", 10, Types.INTEGER, "INTEGER", "Integer"), 00591 new Field("REMARKS", "REMARKS", 10, Types.VARCHAR, "VARCHAR", "String"), 00592 new Field("COLUMN_DEF", "COLUMN_DEF", 10, Types.VARCHAR, "VARCHAR", 00593 "String"), 00594 new Field("SQL_DATA_TYPE", "SQL_DATA_TYPE", 10, Types.INTEGER, "INTEGER", 00595 "Integer"), 00596 new Field("SQL_DATETIME_SUB", "SQL_DATETIME_SUB", 10, Types.INTEGER, 00597 "INTEGER", "Integer"), 00598 new Field("CHAR_OCTET_LENGTH", "CHAR_OCTET_LENGTH", 10, Types.INTEGER, 00599 "INTEGER", "Integer"), 00600 new Field("ORDINAL_POSITION", "ORDINAL_POSITION", 10, Types.INTEGER, 00601 "INTEGER", "Integer"), 00602 new Field("IS_NULLABLE", "IS_NULLABLE", 10, Types.VARCHAR, "VARCHAR", 00603 "String") }; 00604 00606 private static Field[] getTablesFields = new Field[]{ 00607 new Field("TABLE_CAT", "TABLE_CAT", 9, Types.VARCHAR, "VARCHAR", "String"), 00608 new Field("TABLE_SCHEM", "TABLE_SCHEM", 10, Types.VARCHAR, "VARCHAR", 00609 "String"), 00610 new Field("TABLE_NAME", "TABLE_NAME", 10, Types.VARCHAR, "VARCHAR", 00611 "String"), 00612 new Field("TABLE_TYPE", "TABLE_TYPE", 10, Types.VARCHAR, "VARCHAR", 00613 "String"), 00614 new Field("REMARKS", "REMARKS", 10, Types.VARCHAR, "VARCHAR", "String"), 00615 new Field("TYPE_CAT", "TYPE_CAT", 10, Types.VARCHAR, "VARCHAR", "String"), 00616 new Field("TYPE_SCHEM", "TYPE_SCHEM", 10, Types.VARCHAR, "VARCHAR", 00617 "String"), 00618 new Field("TYPE_NAME", "TYPE_NAME", 10, Types.VARCHAR, "VARCHAR", 00619 "String"), 00620 new Field("SELF_REFERENCING_COL_NAME", "SELF_REFERENCING_COL_NAME", 25, 00621 Types.VARCHAR, "VARCHAR", "String"), 00622 new Field("REF_GENERATION", "REF_GENERATION", 15, Types.VARCHAR, 00623 "VARCHAR", "String") }; 00624 00625 }

CJDBCversion1.0.4に対してTue Oct 12 15:16:04 2004に生成されました。 doxygen 1.3.8