|
DBHelper |
|
1 /* 2 * DBHelper.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Marin Dimitrov, 18/Sep/2001 12 * 13 * $Id: DBHelper.java,v 1.25 2001/11/14 13:20:43 marin Exp $ 14 */ 15 16 package gate.persist; 17 18 import java.sql.*; 19 import java.net.*; 20 import java.util.*; 21 22 import gate.util.*; 23 24 public class DBHelper { 25 26 /** --- */ 27 private static final String jdbcOracleDriverName = "oracle.jdbc.driver.OracleDriver"; 28 private static final String jdbcPostgresDriverName = "postgresql.Driver"; 29 private static final String jdbcSapDBDriverName = "com.sap.dbtech.jdbc.DriverSapDB"; 30 31 32 //ACHTUNG! 33 //DO NOT EDIT THESE CONSTANTS WITHOUT 34 //SYNCHRONIZING WITH ERROR.SPC PL/SQL PACKAGE 35 //note that while Oracle returns negative error numbers 36 //the SQLException::getErrorCode() returns positive ones 37 // 38 public static final int X_ORACLE_START = 20100; 39 public static final int X_ORACLE_DUPLICATE_GROUP_NAME = X_ORACLE_START + 1 ; 40 public static final int X_ORACLE_DUPLICATE_USER_NAME = X_ORACLE_START + 2 ; 41 public static final int X_ORACLE_INVALID_USER_NAME = X_ORACLE_START + 3 ; 42 public static final int X_ORACLE_INVALID_USER_PASS = X_ORACLE_START + 4 ; 43 public static final int X_ORACLE_INVALID_USER_GROUP = X_ORACLE_START + 5 ; 44 public static final int X_ORACLE_INVALID_LR = X_ORACLE_START + 6 ; 45 public static final int X_ORACLE_INVALID_ACCESS_MODE = X_ORACLE_START + 7 ; 46 public static final int X_ORACLE_INVALID_ARGUMENT = X_ORACLE_START + 8 ; 47 public static final int X_ORACLE_NOT_IMPLEMENTED = X_ORACLE_START + 9 ; 48 public static final int X_ORACLE_GROUP_OWNS_RESOURCES = X_ORACLE_START + 10 ; 49 public static final int X_ORACLE_USER_OWNS_RESOURCES = X_ORACLE_START + 11 ; 50 public static final int X_ORACLE_INCOMPLETE_DATA = X_ORACLE_START + 12 ; 51 public static final int X_ORACLE_INVALID_LR_TYPE = X_ORACLE_START + 13 ; 52 public static final int X_ORACLE_INVALID_ANNOTATION_TYPE = X_ORACLE_START + 14 ; 53 public static final int X_ORACLE_INVALID_FEATURE_TYPE = X_ORACLE_START + 15 ; 54 public static final int X_ORACLE_INVALID_CONTENT_TYPE = X_ORACLE_START + 16 ; 55 public static final int X_ORACLE_INVALID_ANNOTATION = X_ORACLE_START + 17 ; 56 public static final int X_ORACLE_INSUFFICIENT_PRIVILEGES = X_ORACLE_START + 18 ; 57 public static final int X_ORACLE_INVALID_ANNOTATION_SET = X_ORACLE_START + 19 ; 58 59 public static final int TRUE = 1; 60 public static final int FALSE = 0; 61 62 public static final int CHARACTER_CONTENT = 1; 63 public static final int BINARY_CONTENT = 2; 64 public static final int EMPTY_CONTENT = 3; 65 66 public static final String DOCUMENT_CLASS = "gate.corpora.DatabaseDocumentImpl"; 67 public static final String CORPUS_CLASS = "gate.corpora.DatabaseCorpusImpl"; 68 69 public static final String DB_PARAMETER_GUID = "DB_GUID"; 70 71 //dummy key 72 //hopefully no one will create a feature with such key 73 public static final String DUMMY_FEATURE_KEY = "--NO--SUCH--KEY--"; 74 //dummy ID 75 public static final Long DUMMY_ID; 76 77 78 //!!! ACHTUNG !!! 79 // these 4 constants should *always* be synchronzied with the ones in the 80 // related SQL packages/scripts [for Oracle - security.spc] 81 // i.e. if u don't have a serious reason do *not* change anything 82 83 /** used to store corpus' features */ 84 protected static final int FEATURE_OWNER_CORPUS = 1; 85 /** used to store document's features */ 86 protected static final int FEATURE_OWNER_DOCUMENT = 2; 87 /** used to store annotation's features */ 88 protected static final int FEATURE_OWNER_ANNOTATION = 3; 89 90 /** feature value is int */ 91 public static final int VALUE_TYPE_NULL = 100; 92 /** feature value is int */ 93 public static final int VALUE_TYPE_INTEGER = 101; 94 /** feature value is long */ 95 public static final int VALUE_TYPE_LONG = 102; 96 /** feature value is boolean */ 97 public static final int VALUE_TYPE_BOOLEAN = 103; 98 /** feature value is string less than 4000 bytes */ 99 public static final int VALUE_TYPE_STRING = 104; 100 /** feature value is binary */ 101 public static final int VALUE_TYPE_BINARY = 105; 102 /** feature value is float */ 103 public static final int VALUE_TYPE_FLOAT = 106; 104 /** feature value is array of ints */ 105 public static final int VALUE_TYPE_INTEGER_ARR = 107; 106 /** feature value is array of longs */ 107 public static final int VALUE_TYPE_LONG_ARR = 108; 108 /** feature value is array of bools */ 109 public static final int VALUE_TYPE_BOOLEAN_ARR = 109; 110 /** feature value is array of strings */ 111 public static final int VALUE_TYPE_STRING_ARR = 110; 112 /** feature value is array of binary values */ 113 public static final int VALUE_TYPE_BINARY_ARR = 111; 114 /** feature value is array of floats */ 115 public static final int VALUE_TYPE_FLOAT_ARR = 112; 116 /** feature value is array of floats */ 117 public static final int VALUE_TYPE_EMPTY_ARR = 113; 118 119 120 private static final boolean DEBUG = false; 121 122 123 124 private static boolean driversLoaded; 125 126 static { 127 DUMMY_ID = new Long(Long.MIN_VALUE); 128 driversLoaded = false; 129 } 130 131 132 protected DBHelper() { 133 134 //no way 135 //contains only static methods 136 } 137 138 /** --- */ 139 private static synchronized void loadDrivers() 140 throws ClassNotFoundException { 141 142 if (!driversLoaded) { 143 Class.forName(jdbcOracleDriverName); 144 Class.forName(jdbcPostgresDriverName); 145 Class.forName(jdbcSapDBDriverName); 146 147 driversLoaded = true; 148 } 149 } 150 151 152 /** --- */ 153 public static void cleanup(ResultSet rs) 154 throws PersistenceException { 155 156 try { 157 if (rs!=null) 158 rs.close(); 159 } 160 catch(SQLException sqle) { 161 throw new PersistenceException("an SQL exception occured ["+ sqle.getMessage()+"]"); 162 } 163 } 164 165 /** --- */ 166 public static void cleanup(Statement stmt) 167 throws PersistenceException { 168 try { 169 if (stmt!=null) 170 stmt.close(); 171 } 172 catch(SQLException sqle) { 173 throw new PersistenceException("an SQL exception occured ["+ sqle.getMessage()+"]"); 174 } 175 } 176 177 /** --- */ 178 public static Connection connect(String connectURL) 179 throws SQLException,ClassNotFoundException{ 180 181 loadDrivers(); 182 Connection conn = DriverManager.getConnection(connectURL); 183 184 if (DEBUG) { 185 DatabaseMetaData meta = conn.getMetaData(); 186 gate.util.Err.println( 187 "JDBC driver name=["+meta.getDriverName() + 188 "] version=["+ meta.getDriverVersion() +"]"); 189 } 190 191 return conn; 192 } 193 194 /** --- */ 195 public static void readCLOB(java.sql.Clob src, StringBuffer dest) 196 throws SQLException { 197 198 throw new MethodNotImplementedException(); 199 } 200 201 202 /** --- */ 203 public static void writeCLOB(StringBuffer src,java.sql.Clob dest) 204 throws SQLException { 205 206 throw new MethodNotImplementedException(); 207 } 208 209 } 210
|
DBHelper |
|