/******************************************************************************* * Copyright 2014 Miami-Dade County * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package org.sharegov.cirmx.maintenance; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; import java.sql.Types; import java.util.Date; import mjson.Json; import org.sharegov.cirm.rest.OperationService; import org.sharegov.cirm.Refs; import org.sharegov.cirm.StartUp; import org.sharegov.cirm.rdb.RelationalStore; import org.sharegov.cirm.rdb.RelationalStoreExt; import org.sharegov.cirm.rdb.RelationalStoreImpl; import org.sharegov.cirm.rdb.ThreadLocalConnection; /** * Fills default data for AnwerhubMarqueee and PopularSearchesList, and it also inserts and deletes dummy rows in each table of the horizontal and vertical CIRM schema. * The DB it goes to is defined in County ontology. * * We call inserting and deleting dummy rows "priming" the database and we suspect the priming to relieve a bug when using serializable transactions with an Oracle database. * All inserts will be done with negative ID values and all deleted will be on rows with negative ID values. * * Run this class as Java program with one parameter: * EnsureDefaultData -data ... Reads and saves AnswerHubMarqueeList.json and PopularSearchesList.json. * EnsureDefaultData -prime ... Inserts and deletes rows in each database table. * EnsureDefaultData -both ... Executes both, prime and data. * * To get latest Anwerhub or Popsearches from inside Browser, run: * JSON.stringify(cirm.op.get('/individual/PopularSearchesList')) * JSON.stringify(cirm.op.get('/individual/AnswerHubMarqueeList')) * @author Thomas Hilpold * */ public class EnsureDefaultData { public final static String ResDir = ""; //"org//sharegov//cirmx//maintenance//"; public final static String AnswerHubMarqueeList = ResDir + "AnswerHubMarqueeListV04.json"; public final static String PopularSearchesList = ResDir + "PopularSearchesListV04.json"; public final static int DEFAULT_ROWS_TO_INSERT = 50000; //Vertical: 1 CIRM_IRI_TYPE 2 CIRM_IRI, 3-7 CIRMOWL_DATA_VAL_1-5, 8 CIRM_CLASSIFICATION, 9 CIRM_OBJECT_PROPERTY, 10 CIRM_DATA_PROPERTY public final static String[] TABLESV = new String[] { "CIRM_IRI_TYPE", //0 "CIRM_IRI", "CIRM_OWL_DATA_VAL_CLOB", "CIRM_OWL_DATA_VAL_DATE", "CIRM_OWL_DATA_VAL_DOUBLE", "CIRM_OWL_DATA_VAL_INTEGER", "CIRM_OWL_DATA_VAL_STRING", "CIRM_CLASSIFICATION", "CIRM_OWL_OBJECT_PROPERTY", "CIRM_OWL_DATA_PROPERTY" //9 }; //Horizontal: H1 CIRM_SERVICE_CALL, H2 CIRM_SERVICE_ACTION, H3 CIRM_MDC_ADDRESS, H4 CIRM_SR_REQUESTS, H5 CIRM_SR_ACTIVITY, H6 CIRM_SR_ACTOR, public final static String[] TABLESH = new String[] { "CIRM_SERVICE_CALL", //0 "CIRM_SERVICE_ACTION", "CIRM_MDC_ADDRESS", "CIRM_GIS_INFO", "CIRM_SR_REQUESTS", "CIRM_SR_ACTIVITY", "CIRM_SR_ACTOR", "CIRM_SRREQ_SRACTOR" //7 }; public final static String INSERTV_01_CIRM_IRI_TYPE = "INSERT INTO " + TABLESV[0] + " VALUES(?,?) "; public final static String INSERTV_02_CIRM_IRI = "INSERT INTO " + TABLESV[1] + " VALUES(?,?,?) "; public final static String INSERTV_03_CIRM_VAL_CLOB = "INSERT INTO " + TABLESV[2] + " VALUES(?,?,?,?) "; public final static String INSERTV_04_CIRM_VAL_DATE = "INSERT INTO " + TABLESV[3] + " VALUES(?,?) "; public final static String INSERTV_05_CIRM_VAL_DOUBLE = "INSERT INTO " + TABLESV[4] + " VALUES(?,?) "; public final static String INSERTV_06_CIRM_VAL_INTEGER = "INSERT INTO " + TABLESV[5] + " VALUES(?,?) "; public final static String INSERTV_07_CIRM_VAL_STRING = "INSERT INTO " + TABLESV[6] + " VALUES(?,?) "; public final static String INSERTV_08_CIRM_CLASSIFICATION = "INSERT INTO " + TABLESV[7] + " VALUES(?,?,?,?) "; public final static String INSERTV_09_CIRM_OBJECT_PROP = "INSERT INTO " + TABLESV[8] + " VALUES(?,?,?,?,?) "; public final static String INSERTV_10_CIRM_DATA_PROP = "INSERT INTO " + TABLESV[9] + " VALUES(?,?,?,?,?,?) "; public final static String INSERTH_01_CIRM_SERVICE_CALL = "INSERT INTO "+ TABLESH[0] + " VALUES(?,?,?,?,?) "; public final static String INSERTH_02_CIRM_SERVICE_ACTION = "INSERT INTO "+ TABLESH[1] + " VALUES(?,?,?,?) "; public final static String INSERTH_03_CIRM_MDC_ADDRESS = "INSERT INTO "+ TABLESH[2] + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) "; public final static String INSERTH_04_CIRM_GIS_INFO = "INSERT INTO "+ TABLESH[3] + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; public final static String INSERTH_05_CIRM_SR_REQUESTS = "INSERT INTO "+ TABLESH[4] + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; public final static String INSERTH_06_CIRM_SR_ACTIVITY = "INSERT INTO "+ TABLESH[5] + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?) "; public final static String INSERTH_07_CIRM_SR_ACTOR = "INSERT INTO "+ TABLESH[6] + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; public final static String INSERTH_08_CIRM_SRREQ_SRACTOR = "INSERT INTO "+ TABLESH[7] + " VALUES(?,?) "; public final static String DELETEV_01_CIRM_IRI_TYPE = "DELETE FROM " + TABLESV[0] + " WHERE ID < 0 "; public final static String DELETEV_02_CIRM_IRI = "DELETE FROM " + TABLESV[1] + " WHERE ID < 0 "; public final static String DELETEV_03_CIRM_VAL_CLOB = "DELETE FROM " + TABLESV[2] + " WHERE ID < 0 "; public final static String DELETEV_04_CIRM_VAL_DATE = "DELETE FROM " + TABLESV[3] + " WHERE ID < 0 "; public final static String DELETEV_05_CIRM_VAL_DOUBLE = "DELETE FROM " + TABLESV[4] + " WHERE ID < 0 "; public final static String DELETEV_06_CIRM_VAL_INTEGER = "DELETE FROM " + TABLESV[5] + " WHERE ID < 0 "; public final static String DELETEV_07_CIRM_VAL_STRING = "DELETE FROM " + TABLESV[6] + " WHERE ID < 0 "; public final static String DELETEV_08_CIRM_CLASSIFICATION = "DELETE FROM " + TABLESV[7] + " WHERE SUBJECT < 0 "; public final static String DELETEV_09_CIRM_OBJECT_PROP = "DELETE FROM " + TABLESV[8] + " WHERE SUBJECT < 0 "; public final static String DELETEV_10_CIRM_DATA_PROP = "DELETE FROM " + TABLESV[9] + " WHERE SUBJECT < 0 "; public final static String DELETEH_01_CIRM_SERVICE_CALL = "DELETE FROM "+ TABLESH[0] + " WHERE SERVICE_CALL_ID < 0 "; public final static String DELETEH_02_CIRM_SERVICE_ACTION = "DELETE FROM "+ TABLESH[1] + " WHERE SERVICE_CALL_ID < 0 "; public final static String DELETEH_03_CIRM_MDC_ADDRESS = "DELETE FROM "+ TABLESH[2] + " WHERE ADDRESS_ID < 0 "; public final static String DELETEH_04_CIRM_GIS_INFO = "DELETE FROM "+ TABLESH[3] + " WHERE ID < 0 "; public final static String DELETEH_05_CIRM_SR_REQUESTS = "DELETE FROM "+ TABLESH[4] + " WHERE SR_REQUEST_ID < 0 "; public final static String DELETEH_06_CIRM_SR_ACTIVITY = "DELETE FROM "+ TABLESH[5] + " WHERE ACTIVITY_ID < 0 "; public final static String DELETEH_07_CIRM_SR_ACTOR = "DELETE FROM "+ TABLESH[6] + " WHERE SR_ACTOR_ID < 0 "; public final static String DELETEH_08_CIRM_SRREQ_SRACTOR = "DELETE FROM "+ TABLESH[7] + " WHERE SR_REQUEST_ID < 0 "; private static OperationService operationService; private static OperationService getOperationService() { if (operationService == null) { try { StartUp.main(new String[0]); operationService = new OperationService(); } catch (Exception e) { throw new RuntimeException("Could not start up.", e); } } return operationService; } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { if (args.length != 1) help(); String parameter = args[0]; if (parameter.equalsIgnoreCase("-data")) { ensureDefaultData(); } else if (parameter.equalsIgnoreCase("-prime")) { primeDatabaseTables(); } else if (parameter.equalsIgnoreCase("-both")) { ensureDefaultData(); primeDatabaseTables(); } else { help(); } } public static void help() { System.out.println("EnsureDefaultData Usage:"); System.out.println("-data ... Reads and saves AnswerHubMarqueeList.json and PopularSearchesList.json."); System.out.println("-prime ... Inserts and deletes rows in each database table."); System.out.println("-both ... Executes both, prime and data."); System.exit(-1); } /** * Inserts and deletes DEFAULT_ROWS_TO_INSERT rows with negative IDs. * * @throws Exception */ public static void primeDatabaseTables() throws Exception { RelationalStoreImpl.TRANSACTION_ISOLATION_LEVEL = Connection.TRANSACTION_READ_COMMITTED; RelationalStoreExt store = Refs.defaultRelationalStoreExt.resolve(); ThreadLocalConnection conn = store.getConnection(); conn.assertTopLevelMode(); deleteInsertedRows(conn); insertRowsIntoEachTable(conn, DEFAULT_ROWS_TO_INSERT); deleteInsertedRows(conn); conn.close(); RelationalStoreImpl.TRANSACTION_ISOLATION_LEVEL = Connection.TRANSACTION_SERIALIZABLE; } /** * Inserts rows using negative IDs from [-1, 0-nrOfRows] * @param nrOfRows * @throws Exception */ public static void insertRowsIntoEachTable(Connection conn, int nrOfRows) throws Exception { //Insertion order: //Vertical: 1 CIRM_IRI, 2-6 CIRMOWL_DATA_VAL_1-5, 7 CIRM_CLASSIFICATION, 8 CIRM_OBJECT_PROPERTY, 9 CIRM_DATA_PROPERTY, 10 CIRM_IRI_TYPE //Horizontal: H1 CIRM_SERVICE_CALL, H2 CIRM_SERVICE_ACTION, H3 CIRM_MDC_ADDRESS, H4 CIRM_SR_REQUESTS, H5 CIRM_SR_ACTIVITY, H6 CIRM_SR_ACTOR, // H7 CIRM_SRREQ_SRACTOR //Vertical int firstId = -1; int lastId = 0 - nrOfRows; PreparedStatement ps; System.out.println("Inserting rows " + firstId + " to " + lastId + " in each table. Total rows per table: " + nrOfRows); System.out.println("Vertical Schema start:"); // V01 System.out.print("Table: " + INSERTV_01_CIRM_IRI_TYPE + " .."); ps = conn.prepareStatement(INSERTV_01_CIRM_IRI_TYPE); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "String" + id); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V02 System.out.print("Table: " + INSERTV_02_CIRM_IRI + " .."); ps = conn.prepareStatement(INSERTV_02_CIRM_IRI); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "String" + id); ps.setInt(3, id); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V03 System.out.print("Table: " + INSERTV_03_CIRM_VAL_CLOB + " .."); ps = conn.prepareStatement(INSERTV_03_CIRM_VAL_CLOB); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "String" + id); ps.setString(3, "String" + id); ps.setNull(4, Types.CLOB); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V04 System.out.print("Table: " + INSERTV_04_CIRM_VAL_DATE + " .."); ps = conn.prepareStatement(INSERTV_04_CIRM_VAL_DATE); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setTimestamp(2, new Timestamp(new Date().getTime() + id * 100)); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V05 System.out.print("Table: " + INSERTV_05_CIRM_VAL_DOUBLE + " .."); ps = conn.prepareStatement(INSERTV_05_CIRM_VAL_DOUBLE); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setDouble(2, id * .99); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V06 System.out.print("Table: " + INSERTV_06_CIRM_VAL_INTEGER + " .."); ps = conn.prepareStatement(INSERTV_06_CIRM_VAL_INTEGER); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setInt(2, id); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V07 System.out.print("Table: " + INSERTV_07_CIRM_VAL_STRING + " .."); ps = conn.prepareStatement(INSERTV_07_CIRM_VAL_STRING); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "String" + id); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V08 System.out.print("Table: " + INSERTV_08_CIRM_CLASSIFICATION + " .."); ps = conn.prepareStatement(INSERTV_08_CIRM_CLASSIFICATION); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setInt(2, id); ps.setTimestamp(3, new Timestamp(new Date().getTime())); ps.setTimestamp(4, new Timestamp(new Date().getTime())); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V09 System.out.print("Table: " + INSERTV_09_CIRM_OBJECT_PROP + " .."); ps = conn.prepareStatement(INSERTV_09_CIRM_OBJECT_PROP); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setInt(2, id); ps.setInt(3, id); ps.setTimestamp(4, new Timestamp(new Date().getTime())); ps.setTimestamp(5, new Timestamp(new Date().getTime())); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // V10 System.out.print("Table: " + INSERTV_10_CIRM_DATA_PROP + " .."); ps = conn.prepareStatement(INSERTV_10_CIRM_DATA_PROP); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setInt(2, id); ps.setInt(3, id); ps.setInt(4, id); ps.setTimestamp(5, new Timestamp(new Date().getTime())); ps.setTimestamp(6, new Timestamp(new Date().getTime())); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); System.out.println("Vertical Schema insert finished."); System.out.println("--------------------------------------------------------"); System.out.println("Horizontal Schema insert start."); // H1 System.out.print("Table: " + INSERTH_01_CIRM_SERVICE_CALL + " .."); ps = conn.prepareStatement(INSERTH_01_CIRM_SERVICE_CALL); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "Agent" + id); ps.setTimestamp(3, new Timestamp(new Date().getTime())); ps.setTimestamp(4, new Timestamp(new Date().getTime() + 1000)); ps.setString(5, "0123456789"); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H2 System.out.print("Table: " + INSERTH_02_CIRM_SERVICE_ACTION + " .."); ps = conn.prepareStatement(INSERTH_02_CIRM_SERVICE_ACTION); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "Name" + id); ps.setString(3, "Value" + id); ps.setTimestamp(4, new Timestamp(new Date().getTime())); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H3 System.out.print("Table: " + INSERTH_03_CIRM_MDC_ADDRESS + " .."); ps = conn.prepareStatement(INSERTH_03_CIRM_MDC_ADDRESS); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "fa" + id); ps.setInt(3, id); ps.setString(4, "sn" + id); ps.setString(5, "snp" + id); ps.setString(6, "sns" + id); ps.setString(7, "unit" + id); ps.setInt(8, id); ps.setInt(9, id); ps.setInt(10, id); ps.setDouble(11, id); ps.setDouble(12, id); ps.setString(13, "loc" + id); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H4 System.out.print("Table: " + INSERTH_04_CIRM_GIS_INFO + " .."); ps = conn.prepareStatement(INSERTH_04_CIRM_GIS_INFO); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "hash" + id); ps.setString(3, "{ \"data\":" + id + "}"); ps.setString(4, "SWR" + id ); ps.setString(5, "MUNICIP" + id ); ps.setString(6, "TEAMOFFC" + id ); ps.setString(7, "MIACODE" + id ); ps.setDouble(8, id * .99 ); ps.setString(9, "MUN" + id ); ps.setInt(10, id ); ps.setInt(11, id ); ps.setInt(12, id ); ps.setInt(13, id ); ps.setString(14, "MIACOM" + id ); ps.setString(15, "MIAGARB" + id ); ps.setString(16, "MIAGARB2" + id ); ps.setString(17, "m" + id ); ps.setInt(18, id ); ps.setString(19, "r" + id ); ps.setInt(20, id ); ps.setString(21, "d" + id ); ps.setInt(22, id ); ps.setInt(23, id ); ps.setString(24, "m" + id ); ps.setString(25, "STLGHT" + id ); ps.setInt(26, id ); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H5 System.out.print("Table: " + INSERTH_05_CIRM_SR_REQUESTS + " .."); ps = conn.prepareStatement(INSERTH_05_CIRM_SR_REQUESTS); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "" + id); ps.setString(3, "" + id); ps.setString(4, "" + id); ps.setString(5, "" + id); ps.setInt(6, id); ps.setInt(7, id); ps.setDouble(8, id * .99); ps.setDouble(9, id * .99); ps.setString(10, "" + id); ps.setString(11, "" + id); ps.setTimestamp(12, new Timestamp(new Date().getTime())); ps.setString(13, "" + id); ps.setTimestamp(14, new Timestamp(new Date().getTime() + 1000)); ps.setString(15, "" + id); ps.setTimestamp(16, new Timestamp(new Date().getTime() + 1000)); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H6 System.out.print("Table: " + INSERTH_06_CIRM_SR_ACTIVITY + " .."); ps = conn.prepareStatement(INSERTH_06_CIRM_SR_ACTIVITY); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setInt(2, id); ps.setString(3, "" + id); ps.setString(4, "" + id); ps.setString(5, "" + id); ps.setString(6, "" + id); ps.setTimestamp(7, new Timestamp(new Date().getTime())); ps.setTimestamp(8, new Timestamp(new Date().getTime() + 1000)); ps.setString(9, "" + id); ps.setTimestamp(10, new Timestamp(new Date().getTime() + 1000)); ps.setString(11, "" + id); ps.setTimestamp(12, new Timestamp(new Date().getTime() + 1000)); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H7 System.out.print("Table: " + INSERTH_07_CIRM_SR_ACTOR + " .."); ps = conn.prepareStatement(INSERTH_07_CIRM_SR_ACTOR); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setString(2, "" + id); ps.setString(3, "" + id); ps.setString(4, "" + id); ps.setString(5, "" + id); ps.setString(6, "" + id); ps.setString(7, "" + id); ps.setString(8, "" + id); ps.setString(9, "" + id); ps.setString(10, "" + id); ps.setInt(11, id); ps.setString(12, "" + id); ps.setString(13, "" + id); ps.setString(14, "" + id); ps.setString(15, "" + id); ps.setTimestamp(16, new Timestamp(new Date().getTime())); ps.setString(17, "" + id); ps.setTimestamp(18, new Timestamp(new Date().getTime() + 1000)); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // H8 System.out.print("Table: " + INSERTH_08_CIRM_SRREQ_SRACTOR + " .."); ps = conn.prepareStatement(INSERTH_08_CIRM_SRREQ_SRACTOR); for (int id = firstId; id >= lastId; id --) { ps.setInt(1, id); ps.setInt(2, id); ps.addBatch(); } ps.executeBatch(); conn.commit(); ps.close(); System.out.println(".Done."); // System.out.println("Horizontal Schema insert finished."); System.out.println("--------------------------------------------------------"); } public static void deleteInsertedRows(Connection conn) throws SQLException{ //Delete from horizontal inverse insert order Statement deleteStmt = conn.createStatement(); System.out.println("Delete all with negative id start."); System.out.println("Horizontal Schema delete start."); System.out.println(DELETEH_08_CIRM_SRREQ_SRACTOR); deleteStmt.executeUpdate(DELETEH_08_CIRM_SRREQ_SRACTOR); conn.commit(); System.out.println(DELETEH_07_CIRM_SR_ACTOR); deleteStmt.executeUpdate(DELETEH_07_CIRM_SR_ACTOR); conn.commit(); System.out.println(DELETEH_06_CIRM_SR_ACTIVITY); deleteStmt.executeUpdate(DELETEH_06_CIRM_SR_ACTIVITY); conn.commit(); System.out.println(DELETEH_05_CIRM_SR_REQUESTS); deleteStmt.executeUpdate(DELETEH_05_CIRM_SR_REQUESTS); conn.commit(); System.out.println(DELETEH_04_CIRM_GIS_INFO); deleteStmt.executeUpdate(DELETEH_04_CIRM_GIS_INFO); conn.commit(); System.out.println(DELETEH_03_CIRM_MDC_ADDRESS); deleteStmt.executeUpdate(DELETEH_03_CIRM_MDC_ADDRESS); conn.commit(); System.out.println(DELETEH_02_CIRM_SERVICE_ACTION); deleteStmt.executeUpdate(DELETEH_02_CIRM_SERVICE_ACTION); conn.commit(); System.out.println(DELETEH_01_CIRM_SERVICE_CALL); deleteStmt.executeUpdate(DELETEH_01_CIRM_SERVICE_CALL); conn.commit(); System.out.println("Horizontal Schema delete finished."); System.out.println("Vertical Schema delete start."); System.out.println(DELETEV_10_CIRM_DATA_PROP); deleteStmt.executeUpdate(DELETEV_10_CIRM_DATA_PROP); conn.commit(); System.out.println(DELETEV_09_CIRM_OBJECT_PROP); deleteStmt.executeUpdate(DELETEV_09_CIRM_OBJECT_PROP); conn.commit(); System.out.println(DELETEV_08_CIRM_CLASSIFICATION); deleteStmt.executeUpdate(DELETEV_08_CIRM_CLASSIFICATION); conn.commit(); System.out.println(DELETEV_07_CIRM_VAL_STRING); deleteStmt.executeUpdate(DELETEV_07_CIRM_VAL_STRING); conn.commit(); System.out.println(DELETEV_06_CIRM_VAL_INTEGER); deleteStmt.executeUpdate(DELETEV_06_CIRM_VAL_INTEGER); conn.commit(); System.out.println(DELETEV_05_CIRM_VAL_DOUBLE); deleteStmt.executeUpdate(DELETEV_05_CIRM_VAL_DOUBLE); conn.commit(); System.out.println(DELETEV_04_CIRM_VAL_DATE); deleteStmt.executeUpdate(DELETEV_04_CIRM_VAL_DATE); conn.commit(); System.out.println(DELETEV_03_CIRM_VAL_CLOB); deleteStmt.executeUpdate(DELETEV_03_CIRM_VAL_CLOB); conn.commit(); System.out.println(DELETEV_02_CIRM_IRI); deleteStmt.executeUpdate(DELETEV_02_CIRM_IRI); conn.commit(); System.out.println(DELETEV_01_CIRM_IRI_TYPE); deleteStmt.executeUpdate(DELETEV_01_CIRM_IRI_TYPE); conn.commit(); deleteStmt.close(); System.out.println("Vertical Schema delete finished."); System.out.println("Delete finished."); } public static void ensureDefaultData() throws Exception { RelationalStoreImpl.TRANSACTION_ISOLATION_LEVEL = Connection.TRANSACTION_READ_COMMITTED; URL answerHubJsonUrl = EnsureDefaultData.class.getResource(AnswerHubMarqueeList); URL popularSearchJsonUrl = EnsureDefaultData.class.getResource(PopularSearchesList); String answerHubJsonStr = readAsStringUTF8(answerHubJsonUrl); String popularSearchesStr = readAsStringUTF8(popularSearchJsonUrl); Json answerHubJson = Json.read(answerHubJsonStr); Json popularSearchJson = Json.read(popularSearchesStr); OperationService opService = getOperationService(); System.out.println("ENSURING DEFAULT DATA..."); opService.saveIndividual("AnswerHubMarqueeList", answerHubJson); opService.saveIndividual("PopularSearchesList", popularSearchJson); System.out.println(); System.out.println("DONE: DEFAULT DATA ENSURED"); RelationalStoreImpl.TRANSACTION_ISOLATION_LEVEL = Connection.TRANSACTION_SERIALIZABLE; } public static String readAsStringUTF8(URL url) { StringBuffer str = new StringBuffer(10000); String cur; try { BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8")); do { cur = br.readLine(); if (cur != null) { str.append(cur); } } while(cur != null); } catch (Exception e) { e.printStackTrace(); } return str.toString(); } }