1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.support; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.File; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Connection; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.DriverManager; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLException; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Properties; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class Support_SQL { 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlDriver = null; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlLogin = null; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlCatalog = null; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlHost = null; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlUrl = null; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlPassword = null; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String sqlUser = null; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static int sqlMaxConnections = 5; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static int sqlMaxTasks = 1; 46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static File dbFile = null; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static void loadDriver() { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 5176800f98a0fabb9a636d1575062ac72d72683f8eJesse Wilson InputStream in = Class.forName("tests.support.Support_SQL") 5276800f98a0fabb9a636d1575062ac72d72683f8eJesse Wilson .getResourceAsStream("/connection.properties"); 5376800f98a0fabb9a636d1575062ac72d72683f8eJesse Wilson loadProperties(in); 5476800f98a0fabb9a636d1575062ac72d72683f8eJesse Wilson in.close(); 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String tmp = System.getProperty("java.io.tmpdir"); 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project File tmpDir = new File(tmp); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (tmpDir.isDirectory()) { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dbFile = File.createTempFile("sqliteTest", ".db", tmpDir); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dbFile.deleteOnExit(); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.err.println("java.io.tmpdir does not exist"); 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class.forName("SQLite.JDBCDriver").newInstance(); 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // overwrite sqlUrl to point to valid directory 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlUrl = "jdbc:sqlite:/" + dbFile.getPath(); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class.forName(sqlDriver).newInstance(); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 7176800f98a0fabb9a636d1575062ac72d72683f8eJesse Wilson throw new RuntimeException(ex); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Connection getConnection() throws SQLException { 762342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson try { 772342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson return DriverManager.getConnection(Support_SQL.sqlUrl, 782342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson Support_SQL.sqlLogin, Support_SQL.sqlPassword); 792342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson } catch (SQLException e) { 802342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson throw new SQLException("Failed to connect. url=" + Support_SQL.sqlUrl + ", sqlLogin=" 812342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson + Support_SQL.sqlLogin + ", sqlPassword=" + Support_SQL.sqlPassword, e); 822342423059f4a52db87a5ce914a8aa2e6514d66cJesse Wilson } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Connection getConnection(String url, String login, 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String password) throws SQLException { 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return DriverManager.getConnection(url, login, password); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static boolean isEqual(byte[] b1, int off1, byte[] b2, int off2, 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int len) { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < len; ++i) 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (b1[i + off1] != b2[i + off2]) 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return true; 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static void loadProperties(InputStream fileName) throws IOException { 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Properties properties = new Properties(); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project properties.load(fileName); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlDriver = properties.getProperty("sqlDriver"); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlLogin = properties.getProperty("sqlLogin"); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlCatalog = properties.getProperty("sqlCatalog"); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlHost = properties.getProperty("sqlHost"); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlUrl = properties.getProperty("sqlUrlPrefix") + sqlHost + "/" 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + sqlCatalog; 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlPassword = properties.getProperty("sqlPassword"); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlUser = properties.getProperty("sqlUser"); 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlMaxConnections = Integer.parseInt(properties 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProperty("sqlMaxConnections")); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sqlMaxTasks = Integer.parseInt(properties.getProperty("sqlMaxTasks")); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String getFilename() { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return dbFile.getPath(); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 119