1 23 24 package org.infoglue.cmsinstaller; 25 26 import java.text.SimpleDateFormat ; 27 import java.util.*; 28 import java.util.Date ; 29 import java.io.*; 30 import java.sql.*; 31 32 public abstract class DatabaseCommander 33 { 34 public String databaseName = null; 35 public String driverClass = null; 36 public String url = null; 37 public String userName = null; 38 public String password = null; 39 public String databaseHostName = null; 40 public String databasePortNumber= null; 41 private String databaseInstance = null; 42 public String infoglueDatabaseUserName = null; 43 public String infoglueDatabasePassword = null; 44 public String databaseSuffix = null; 45 public String hostName = null; 46 public boolean createDatabase = false; 47 public boolean createInitialData= false; 48 49 public boolean createAntSeekHome= false; 50 public boolean createOfficeStand= false; 51 public boolean createOfficeStand2= false; 52 53 public DatabaseCommander(String driverClass, String databaseHostName, String databasePortNumber, String databaseInstance, String url, String userName, String password, String infoglueDatabaseUserName, String infoglueDatabasePassword, String databaseName, String databaseSuffix, String hostName, boolean createDatabase, boolean createInitialData, boolean createAntSeekHome, boolean createOfficeStand, boolean createOfficeStand2) 54 { 55 this.driverClass = driverClass; 56 this.url = url; 57 this.userName = userName; 58 this.password = password ; 59 this.databaseHostName = databaseHostName; 60 this.databasePortNumber = databasePortNumber; 61 this.databaseInstance = databaseInstance; 62 this.infoglueDatabaseUserName = infoglueDatabaseUserName; 63 this.infoglueDatabasePassword = infoglueDatabasePassword; 64 this.databaseName = databaseName; 65 this.databaseSuffix = databaseSuffix; 66 this.hostName = hostName; 67 this.createDatabase = createDatabase; 68 this.createInitialData = createInitialData; 69 this.createAntSeekHome = createAntSeekHome; 70 this.createOfficeStand = createOfficeStand; 71 this.createOfficeStand2 = createOfficeStand2; 72 } 73 74 public Connection getConnection() throws Exception 75 { 76 Connection conn = null; 77 78 Logger.logInfo("*****************************************"); 79 Logger.logInfo("* The connect phaze starts *"); 80 Logger.logInfo("*****************************************"); 81 82 Logger.logInfo("Loading JDBC driver " + this.driverClass + "\n"); 84 Class.forName(this.driverClass).newInstance(); 85 86 Logger.logInfo("Connecting to database on " + url + " whith driver " + this.driverClass + " and " + this.userName + " and " + this.password); 88 conn = DriverManager.getConnection(this.url, userName, password); 89 Logger.logInfo("Connected..."); 90 91 return conn; 92 } 93 94 public Connection getConnection(String url, String userName, String password) throws Exception 95 { 96 Connection conn = null; 97 98 Logger.logInfo("*****************************************"); 99 Logger.logInfo("* The connect phaze starts *"); 100 Logger.logInfo("*****************************************"); 101 102 Logger.logInfo("Loading JDBC driver " + this.driverClass + "\n"); 104 Class.forName(this.driverClass).newInstance(); 105 106 Logger.logInfo("Connecting to database on " + url); 108 conn = DriverManager.getConnection(url, userName, password); 109 Logger.logInfo("Connected..."); 110 111 return conn; 112 } 113 114 public String getHostAddress() 115 { 116 String address = null; 117 118 try 119 { 120 address = java.net.InetAddress.getLocalHost().getHostAddress(); 121 } 122 catch(Exception e) 123 { 124 e.printStackTrace(); 125 } 126 127 return address; 128 } 129 130 131 134 135 protected void issueSpecialCommand(Connection conn, String sql) 136 { 137 Logger.logInfo("Command:" + sql); 138 139 try 140 { 141 String tableName = null; 142 String columnName = null; 143 String image = null; 144 String idColumn = null; 145 String idValue = null; 146 147 StringTokenizer st = new StringTokenizer(sql, " "); 148 int i = 0; 149 while (st.hasMoreTokens()) 150 { 151 String part = st.nextToken(); 152 if(i == 2) 154 tableName = part; 155 if(i == 4) 156 columnName = part; 157 if(i == 6) 158 image = part; 159 if(i == 8) 160 idColumn = part; 161 if(i == 10) 162 idValue = part; 163 164 i++; 165 } 166 167 File file = new File(image); 168 FileInputStream fis = new FileInputStream(file); 169 byte[] imageByteArray = new byte[(int)file.length()]; 170 fis.read(imageByteArray); 171 172 173 sql = "UPDATE " + tableName + " SET " + columnName + " = ? WHERE " + idColumn + " = " + idValue + ""; 174 PreparedStatement ps = conn.prepareStatement(sql); 176 ps.setBytes(1, imageByteArray); 177 ps.executeUpdate(); 178 } 179 catch(Exception ex) 180 { 181 Logger.logInfo("Command failed: " + ex.getMessage()); 182 Logger.logInfo("SQL: " + sql); 183 System.err.println("SQLException: " + ex.getMessage()); 184 } 185 } 186 187 public void setupExamples() throws Exception 188 { 189 203 if(this.createOfficeStand2) 204 { 205 File file = new File("assets/www.officestand2.com.xml"); 206 InitialDataInstaller initialDataInstaller = new InitialDataInstaller(); 207 initialDataInstaller.importRepository(file); 208 } 209 } 210 211 215 216 protected abstract void issueSpecialBlobCommand(Connection conn, String sql); 217 218 219 protected List parseColumns(String columnDefinition) 220 { 221 List columns = new ArrayList(); 222 223 columnDefinition = columnDefinition.substring(1, columnDefinition.length() - 1); 225 227 StringTokenizer st = new StringTokenizer(columnDefinition, ","); 228 while (st.hasMoreTokens()) 229 { 230 String part = st.nextToken(); 231 columns.add(part); 233 } 234 235 return columns; 236 } 237 238 public Date parseDate(String dateString, String pattern) 239 { 240 if(dateString == null) 241 return new Date (); 242 243 Date date = new Date (); 244 245 try 246 { 247 SimpleDateFormat formatter = new SimpleDateFormat (pattern); 248 date = formatter.parse(dateString); 249 } 250 catch(Exception e) 251 { 252 Logger.logInfo("Error parsing date:" + dateString); 253 } 254 255 return date; 256 } 257 258 protected List parseValues(String values) 259 { 260 List valueList = new ArrayList(); 261 262 values = values.substring(1, values.length() - 2); 264 266 int offset = 0; 267 int index = values.indexOf("[,]", offset); 268 while (index > -1) 270 { 271 String part = values.substring(offset, index); 272 valueList.add(part); 275 offset = index + 3; 276 index = values.indexOf("[,]", offset); 277 } 278 279 String part = values.substring(offset); 280 valueList.add(part); 282 283 return valueList; 284 } 285 286 public String getDatabaseInstance() 287 { 288 return databaseInstance; 289 } 290 public void setDatabaseInstance(String databaseInstance) 291 { 292 this.databaseInstance = databaseInstance; 293 } 294 295 public abstract String getDriver(); 296 297 public abstract String getUrl(String hostName, String databasePortNumber, String database); 298 299 public abstract String getUnicodeUrl(String hostName, String databasePortNumber, String database); 300 301 public abstract void setupDatabase() throws Exception ; 302 303 public abstract void upgradeTo1_3(Connection conn) throws Exception ; 304 305 public abstract void upgradeTo1_3_2(Connection conn) throws Exception ; 306 307 public abstract void upgradeTo2_0(Connection conn) throws Exception ; 308 309 public abstract void upgradeTo2_1(Connection conn) throws Exception ; 310 311 public abstract void upgradeTo2_3(Connection conn) throws Exception ; 312 313 public abstract String getDatabaseVendor() throws Exception ; 314 315 public abstract void createCastorFile() throws Exception ; 316 317 public abstract void createCastorRootFile() throws Exception ; 318 319 321 public abstract void createOSPropertiesFile() throws Exception ; 322 323 public abstract void testSetupDummyDatabase() throws Exception ; 324 325 public abstract void testConnectDatabase() throws Exception ; 326 327 } | Popular Tags |