1 /* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package tests.support; 18 19 import java.sql.Connection; 20 import java.sql.Date; 21 import java.sql.SQLException; 22 import java.sql.Statement; 23 import java.sql.Time; 24 25 public class DatabaseCreator { 26 public static final int defaultInt = 2; 27 28 public static final String defaultString = "string"; 29 30 public static final String defaultCharacter = "chr"; 31 32 public static final double defaultDouble = 0.1; 33 34 public static final String TEST_TABLE1 = "table1"; 35 36 public static final String TEST_TABLE2 = "table2"; 37 38 public static final String TEST_TABLE3 = "table3"; 39 40 public static final String TEST_TABLE4 = "table4"; 41 42 public static final String SALESPEOPLE_TABLE = "Salespeople"; 43 44 public static final String CUSTOMERS_TABLE = "Customers"; 45 46 public static final String ORDERS_TABLE = "Orders"; 47 48 public static final String PARENT_TABLE = "test_names"; 49 50 public static final String FKSTRICT_TABLE = "test_strict"; 51 52 public static final String FKCASCADE_TABLE = "test_cascade"; 53 54 public static final String TEST_TABLE5 = "test"; 55 56 public static final String SIMPLE_TABLE1 = "simple_table1"; 57 58 public static final String SIMPLE_TABLE2 = "simple_table2"; 59 60 public static final String SIMPLE_TABLE3 = "simple_table3"; 61 62 public static final String CREATE_TABLE1 = "CREATE TABLE " + TEST_TABLE1 63 + " (id INTEGER NOT NULL," + " field1 CHAR(100) DEFAULT NULL," 64 + " field2 DECIMAL " //+ defaultInt 65 + " COMMENT 'field2_rem'," + " field3 DECIMAL," + " fkey INTEGER," 66 + " PRIMARY KEY (id) FOREIGN KEY (fkey) REFERENCES " 67 + TEST_TABLE3 + "(fk))"; 68 69 public static final String CREATE_TABLE2 = "CREATE TABLE " + TEST_TABLE2 70 + " ( " + "finteger integer NOT NULL, " + "ftext text, " 71 + "fcharacter character (5), " + "fdecimal decimal (5,1), " 72 + "fnumeric numeric (4,1), " + "fsmallint smallint, " 73 + "ffloat float, " + "freal real, " + "fdouble double, " 74 + "fdate date," + " ftime time, PRIMARY KEY (finteger))"; 75 76 public static final String CREATE_TABLE3 = "CREATE TABLE " + TEST_TABLE3 77 + " (fk INTEGER NOT NULL," + "" + " PRIMARY KEY (fk))"; 78 79 public static final String CREATE_TABLE4 = "CREATE TABLE " + TEST_TABLE4 80 + " (fk INTEGER NOT NULL," + " field1 CHAR(100) NOT NULL," 81 + " PRIMARY KEY (fk))"; 82 83 public static final String CREATE_TABLE5 = "CREATE TABLE " + TEST_TABLE5 84 + "( testId INTEGER NOT NULL, testValue CHAR(200))"; 85 86 public static final String CREATE_TABLE_SALESPEOPLE = "CREATE TABLE " 87 + SALESPEOPLE_TABLE + " (snum integer, sname character (10)," 88 + " city character (10), comm real, PRIMARY KEY (snum))"; 89 90 public static final String CREATE_TABLE_CUSTOMERS = "CREATE TABLE " 91 + CUSTOMERS_TABLE 92 + " (cnum integer, cname character (10), city character (10)," 93 + " rating integer, snum integer, PRIMARY KEY (cnum))"; 94 95 public static final String CREATE_TABLE_ORDERS = "CREATE TABLE " 96 + ORDERS_TABLE 97 + " (onum integer, amt real, odate date, cnum integer," 98 + " snum integer, PRIMARY KEY (onum))"; 99 100 public static final String CREATE_TABLE_PARENT = "CREATE TABLE " 101 + PARENT_TABLE + "(id INTEGER NOT NULL, " 102 + "name CHAR(200), PRIMARY KEY(id))"; 103 104 public static final String CREATE_TABLE_FKSTRICT = "CREATE TABLE " 105 + FKSTRICT_TABLE + "(id INTEGER NOT NULL," + "name_id INTEGER," 106 + "value CHAR(200), PRIMARY KEY(id), " 107 + "CONSTRAINT fk1 FOREIGN KEY (name_id) " + "REFERENCES " 108 + PARENT_TABLE + " (id) " + "ON DELETE RESTRICT " 109 + "ON UPDATE RESTRICT)"; 110 111 public static final String CREATE_TABLE_FKCASCADE = "CREATE TABLE " 112 + FKCASCADE_TABLE + "(id INTEGER NOT NULL," + "name_id INTEGER," 113 + "value CHAR(200), PRIMARY KEY(id), " 114 + "CONSTRAINT fk2 FOREIGN KEY (name_id) " + "REFERENCES " 115 + PARENT_TABLE + " (id) " + "ON DELETE CASCADE " 116 + "ON UPDATE CASCADE)"; 117 118 public static final String CREATE_TABLE_SIMPLE1 = "CREATE TABLE " 119 + SIMPLE_TABLE1 + "(id INTEGER NOT NULL," + "speed INTEGER," 120 + "size INTEGER)"; 121 122 public static final String CREATE_TABLE_SIMPLE2 = "CREATE TABLE " 123 + SIMPLE_TABLE2 + "(id INTEGER NOT NULL," + "speed INTEGER," 124 + "size INTEGER)"; 125 126 public static final String CREATE_TABLE_SIMPLE3 = "CREATE TABLE " 127 + SIMPLE_TABLE3 + "(id INTEGER NOT NULL," + "speed INTEGER)"; 128 129 public static final String DROP_TABLE1 = "DROP TABLE " + TEST_TABLE1; 130 131 public static final String DROP_TABLE2 = "DROP TABLE " + TEST_TABLE2; 132 133 public static final String DROP_TABLE3 = "DROP TABLE " + TEST_TABLE3; 134 135 public static final String DROP_TABLE4 = "DROP TABLE " + TEST_TABLE4; 136 137 public static final String DROP_TABLE5 = "DROP TABLE " + TEST_TABLE5; 138 139 public static final String DROP_TABLE_CUSTOMERS = "DROP TABLE " 140 + CUSTOMERS_TABLE; 141 142 public static final String DROP_TABLE_ORDERS = "DROP TABLE " + ORDERS_TABLE; 143 144 public static final String DROP_TABLE_SALESPEOPLE = "DROP TABLE " 145 + SALESPEOPLE_TABLE; 146 147 public static final String DROP_TABLE_PARENT = "DROP TABLE " + PARENT_TABLE; 148 149 public static final String DROP_TABLE_FKSTRICT = "DROP TABLE " 150 + FKSTRICT_TABLE; 151 152 public static final String DROP_TABLE_FKCASCADE = "DROP TABLE " 153 + FKCASCADE_TABLE; 154 155 public static final String DROP_TABLE_SIMPLE1 = "DROP TABLE " 156 + SIMPLE_TABLE1; 157 158 public static final String DROP_TABLE_SIMPLE2 = "DROP TABLE " 159 + SIMPLE_TABLE2; 160 161 public static final String DROP_TABLE_SIMPLE3 = "DROP TABLE " 162 + SIMPLE_TABLE3; 163 164 public static final String INSERT_SALESPEOPLE1 = " INSERT INTO " 165 + SALESPEOPLE_TABLE + " (snum, sname, city, comm) " 166 + "VALUES (1001, 'Peel', 'London', .12)"; 167 168 public static final String INSERT_SALESPEOPLE2 = " INSERT INTO " 169 + SALESPEOPLE_TABLE + " (snum, sname, city, comm) " 170 + "VALUES (1002, 'Serres', 'SanJose', .13)"; 171 172 public static final String INSERT_SALESPEOPLE3 = " INSERT INTO " 173 + SALESPEOPLE_TABLE + " (snum, sname, city, comm) " 174 + "VALUES (1004, 'Motika', 'London', .11)"; 175 176 public static final String INSERT_SALESPEOPLE4 = " INSERT INTO " 177 + SALESPEOPLE_TABLE + " (snum, sname, city, comm) " 178 + "VALUES (1007, 'Rifkin', 'Barcelona', .15)"; 179 180 public static final String INSERT_SALESPEOPLE5 = " INSERT INTO " 181 + SALESPEOPLE_TABLE + " (snum, sname, city, comm) " 182 + "VALUES (1003, 'Axelrod', 'NewYork', .10)"; 183 184 public static final String INSERT_SALESPEOPLE6 = " INSERT INTO " 185 + SALESPEOPLE_TABLE + " (snum, sname, city, comm) " 186 + "VALUES (1013, 'Simpson', 'Kasan', .25)"; 187 188 public static final String INSERT_CUSTOMERS1 = " INSERT INTO " 189 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum)" 190 + " VALUES (2001, 'Hoffman', 'London', 100, 1001)"; 191 192 public static final String INSERT_CUSTOMERS2 = " INSERT INTO " 193 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum) " 194 + "VALUES (2002, 'Giovanni', 'Rome', 200, 1003)"; 195 196 public static final String INSERT_CUSTOMERS3 = " INSERT INTO " 197 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum) " 198 + "VALUES (2003, 'Liu', 'SanJose', 200, 1002)"; 199 200 public static final String INSERT_CUSTOMERS4 = " INSERT INTO " 201 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum) " 202 + "VALUES (2004, 'Grass', 'Berlin', 300, 1002)"; 203 204 public static final String INSERT_CUSTOMERS5 = " INSERT INTO " 205 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum) " 206 + "VALUES (2006, 'Clemens', 'London', 100, 1001)"; 207 208 public static final String INSERT_CUSTOMERS6 = " INSERT INTO " 209 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum) " 210 + "VALUES (2008, 'Cisneros', 'SanJose', 300, 1007)"; 211 212 public static final String INSERT_CUSTOMERS7 = " INSERT INTO " 213 + CUSTOMERS_TABLE + " (cnum, cname, city, rating, snum) " 214 + "VALUES (2007, 'Pereira', 'Rome', 100, 1004)"; 215 216 public static final String INSERT_ORDERS1 = " INSERT INTO " + ORDERS_TABLE 217 + " (onum, amt, odate, cnum, snum) " 218 + "VALUES (3001, 18.69, 10/03/1990, 2008, 1007)"; 219 220 public static final String INSERT_ORDERS2 = " INSERT INTO " + ORDERS_TABLE 221 + " (onum, amt, odate, cnum, snum) " 222 + "VALUES (3003, 767.19, 10/03/1990, 2001, 1001)"; 223 224 public static final String INSERT_ORDERS3 = " INSERT INTO " + ORDERS_TABLE 225 + " (onum, amt, odate, cnum, snum) " 226 + "VALUES (3002, 1900.10, 10/03/1990, 2007, 1004)"; 227 228 public static final String INSERT_ORDERS4 = " INSERT INTO " + ORDERS_TABLE 229 + " (onum, amt, odate, cnum, snum) " 230 + "VALUES (3005, 5160.45, 10/03/1990, 2003, 1002)"; 231 232 public static final String INSERT_ORDERS5 = " INSERT INTO " + ORDERS_TABLE 233 + " (onum, amt, odate, cnum, snum) " 234 + "VALUES (3006, 1098.16, 10/03/1990, 2008, 1007)"; 235 236 public static final String INSERT_ORDERS6 = " INSERT INTO " + ORDERS_TABLE 237 + " (onum, amt, odate, cnum, snum) " 238 + "VALUES (3009, 1713.23, 10/04/1990, 2002, 1003)"; 239 240 public static final String INSERT_ORDERS7 = " INSERT INTO " + ORDERS_TABLE 241 + " (onum, amt, odate, cnum, snum) " 242 + "VALUES (3007, 75.75, 10/04/1990, 2004, 1002)"; 243 244 public static final String INSERT_ORDERS8 = " INSERT INTO " + ORDERS_TABLE 245 + " (onum, amt, odate, cnum, snum) " 246 + "VALUES (3008, 4723.01, 10/05/1990, 2006, 1001)"; 247 248 public static final String INSERT_ORDERS9 = " INSERT INTO " + ORDERS_TABLE 249 + " (onum, amt, odate, cnum, snum) " 250 + "VALUES (3010, 1309.95, 10/06/1990, 2004, 1002)"; 251 252 public static final String INSERT_ORDERS10 = " INSERT INTO " + ORDERS_TABLE 253 + " (onum, amt, odate, cnum, snum) " 254 + "VALUES (3011, 9891.88, 10/06/1990, 2006, 1001)"; 255 256 public static void fillParentTable(Connection conn) throws SQLException { 257 Statement statement = conn.createStatement(); 258 statement 259 .execute("INSERT INTO " + PARENT_TABLE + " VALUES(1, 'test1')"); 260 statement.execute("INSERT INTO " + PARENT_TABLE + " VALUES(2,'test2')"); 261 statement 262 .execute("INSERT INTO " + PARENT_TABLE + " VALUES(3, 'test3')"); 263 } 264 265 public static void fillFKStrictTable(Connection conn) throws SQLException { 266 Statement statement = conn.createStatement(); 267 statement.execute("INSERT INTO " + FKSTRICT_TABLE 268 + " VALUES(1, 1, '1')"); 269 statement.execute("INSERT INTO " + FKSTRICT_TABLE 270 + " VALUES(2, 2, '2')"); 271 statement.execute("INSERT INTO " + FKSTRICT_TABLE 272 + " VALUES(3, 1, '3')"); 273 } 274 275 public static void fillFKCascadeTable(Connection conn) throws SQLException { 276 Statement statement = conn.createStatement(); 277 statement.execute("INSERT INTO " + FKCASCADE_TABLE 278 + " VALUES(1, 1, '1')"); 279 statement.execute("INSERT INTO " + FKCASCADE_TABLE 280 + " VALUES(2, 2, '2')"); 281 statement.execute("INSERT INTO " + FKCASCADE_TABLE 282 + " VALUES(3, 1, '3')"); 283 } 284 285 public static void fillSimpleTable1(Connection conn) throws SQLException { 286 Statement statement = conn.createStatement(); 287 statement 288 .execute("INSERT INTO " + SIMPLE_TABLE1 + " VALUES(1, 10, 20)"); 289 statement.execute("INSERT INTO " + SIMPLE_TABLE1 + " VALUES(2, 5, 7)"); 290 } 291 292 public static void fillSimpleTable3(Connection conn) throws SQLException { 293 Statement statement = conn.createStatement(); 294 statement.execute("INSERT INTO " + SIMPLE_TABLE3 + " VALUES(1, 8)"); 295 statement.execute("INSERT INTO " + SIMPLE_TABLE3 + " VALUES(2, 6)"); 296 statement.execute("INSERT INTO " + SIMPLE_TABLE3 + " VALUES(3, 4)"); 297 } 298 299 public static void fillSalesPeopleTable(Connection conn) 300 throws SQLException { 301 Statement statement = conn.createStatement(); 302 303 statement.execute(DatabaseCreator.INSERT_SALESPEOPLE1); 304 statement.execute(DatabaseCreator.INSERT_SALESPEOPLE2); 305 statement.execute(DatabaseCreator.INSERT_SALESPEOPLE3); 306 statement.execute(DatabaseCreator.INSERT_SALESPEOPLE4); 307 statement.execute(DatabaseCreator.INSERT_SALESPEOPLE5); 308 statement.execute(DatabaseCreator.INSERT_SALESPEOPLE6); 309 } 310 311 public static void fillCustomersTable(Connection conn) throws SQLException { 312 Statement statement = conn.createStatement(); 313 314 statement.execute(DatabaseCreator.INSERT_CUSTOMERS1); 315 statement.execute(DatabaseCreator.INSERT_CUSTOMERS2); 316 statement.execute(DatabaseCreator.INSERT_CUSTOMERS3); 317 statement.execute(DatabaseCreator.INSERT_CUSTOMERS4); 318 statement.execute(DatabaseCreator.INSERT_CUSTOMERS5); 319 statement.execute(DatabaseCreator.INSERT_CUSTOMERS6); 320 statement.execute(DatabaseCreator.INSERT_CUSTOMERS7); 321 } 322 323 public static void fillOrdersTable(Connection conn) throws SQLException { 324 Statement statement = conn.createStatement(); 325 326 statement.execute(DatabaseCreator.INSERT_ORDERS1); 327 statement.execute(DatabaseCreator.INSERT_ORDERS2); 328 statement.execute(DatabaseCreator.INSERT_ORDERS3); 329 statement.execute(DatabaseCreator.INSERT_ORDERS4); 330 statement.execute(DatabaseCreator.INSERT_ORDERS5); 331 statement.execute(DatabaseCreator.INSERT_ORDERS6); 332 statement.execute(DatabaseCreator.INSERT_ORDERS7); 333 statement.execute(DatabaseCreator.INSERT_ORDERS8); 334 statement.execute(DatabaseCreator.INSERT_ORDERS9); 335 statement.execute(DatabaseCreator.INSERT_ORDERS10); 336 } 337 338 public static void fillTestTable1(Connection conn, int numberOfRecords) 339 throws SQLException { 340 Statement statement = conn.createStatement(); 341 for (int id = 0; id < numberOfRecords; id++) { 342 String value = DatabaseCreator.defaultString + id; 343 String insertQuery = "INSERT INTO " + DatabaseCreator.TEST_TABLE1 344 + " (id, field1, field2, field3) VALUES(" + id + ", '" 345 + value + "', " + id + ", " + id + ")"; 346 statement.execute(insertQuery); 347 } 348 } 349 350 public static void fillTestTable2(Connection conn, int startID, int endID, 351 long time) throws SQLException { 352 Statement statement = conn.createStatement(); 353 for (int id = startID; id <= endID; id++) { 354 double value = id + DatabaseCreator.defaultDouble; 355 String insertQuery = "INSERT INTO " + DatabaseCreator.TEST_TABLE2 356 + " (finteger, ftext, fcharacter, fdecimal, fnumeric," 357 + " fsmallint, ffloat, freal, fdouble, fdate, ftime)" 358 + " VALUES (" + id + ", '" + DatabaseCreator.defaultString 359 + id + "'," + " '" + DatabaseCreator.defaultCharacter + id 360 + "', " + value + ", " + value + "," + value + ", " + value 361 + ", " + value + "," + value + ", '" 362 + new Date(time).toString() + "'," + " '" 363 + new Time(time).toString() + "')"; 364 statement.execute(insertQuery); 365 } 366 } 367 368 public static void fillTestTable2(Connection conn, int numberOfRecords) 369 throws SQLException { 370 Statement statement = conn.createStatement(); 371 for (int id = 0; id < numberOfRecords; id++) { 372 double value = id + DatabaseCreator.defaultDouble; 373 String insertQuery = "INSERT INTO " + DatabaseCreator.TEST_TABLE2 374 + " (finteger, ftext, fcharacter, fdecimal, fnumeric," 375 + " fsmallint, ffloat, freal, fdouble)" + " VALUES (" + id 376 + ", '" + DatabaseCreator.defaultString + id + "'," + " '" 377 + DatabaseCreator.defaultCharacter + id + "', " + value 378 + ", " + value + "," + value + ", " + value + ", " + value 379 + "," + value + ")"; 380 statement.execute(insertQuery); 381 } 382 } 383 384 public static void fillTestTable4(Connection conn, int numberOfRecords) 385 throws SQLException { 386 Statement statement = conn.createStatement(); 387 for (int id = 0; id < numberOfRecords; id++) { 388 String insertQuery = "INSERT INTO " + DatabaseCreator.TEST_TABLE4 389 + " (fk, field1) VALUES(" + id + ", \"" 390 + DatabaseCreator.defaultString + id + "\")"; 391 statement.execute(insertQuery); 392 } 393 } 394 395 public static void fillTestTable5(Connection conn) throws SQLException { 396 Statement statement = conn.createStatement(); 397 statement.execute("INSERT INTO " + TEST_TABLE5 + " VALUES(1, '0')"); 398 statement.execute("INSERT INTO " + TEST_TABLE5 + " VALUES(2, '3')"); 399 statement.execute("INSERT INTO " + TEST_TABLE5 + " VALUES(3, '4')"); 400 } 401 } 402