diff --git a/.gitignore b/.gitignore index d294b63f..309fa722 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,3 @@ /ontology/public/catalog-v0001.xml rdf/auth/firsttime/test-user-model.owl -utilities/rdbmigration/.work diff --git a/build.xml b/build.xml index 8e93c6d0..9c22fa3f 100644 --- a/build.xml +++ b/build.xml @@ -134,14 +134,4 @@ - - - - - - - - diff --git a/utilities/rdbmigration/build.xml b/utilities/rdbmigration/build.xml deleted file mode 100644 index 6071ab50..00000000 --- a/utilities/rdbmigration/build.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - all - Compiles and runs the RDB migration tool. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/utilities/rdbmigration/lib/arq-2.8.5.jar b/utilities/rdbmigration/lib/arq-2.8.5.jar deleted file mode 100644 index f89b6937..00000000 Binary files a/utilities/rdbmigration/lib/arq-2.8.5.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/commons-lang-2.6.jar b/utilities/rdbmigration/lib/commons-lang-2.6.jar deleted file mode 100644 index 98467d3a..00000000 Binary files a/utilities/rdbmigration/lib/commons-lang-2.6.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/icu4j-3.4.4.jar b/utilities/rdbmigration/lib/icu4j-3.4.4.jar deleted file mode 100644 index f5e8c167..00000000 Binary files a/utilities/rdbmigration/lib/icu4j-3.4.4.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/iri-0.8.jar b/utilities/rdbmigration/lib/iri-0.8.jar deleted file mode 100644 index f096c689..00000000 Binary files a/utilities/rdbmigration/lib/iri-0.8.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/jena-2.6.4.jar b/utilities/rdbmigration/lib/jena-2.6.4.jar deleted file mode 100644 index efc64a94..00000000 Binary files a/utilities/rdbmigration/lib/jena-2.6.4.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/log4j-1.2.14.jar b/utilities/rdbmigration/lib/log4j-1.2.14.jar deleted file mode 100644 index 62513071..00000000 Binary files a/utilities/rdbmigration/lib/log4j-1.2.14.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/mysql-connector-java-5.1.16-bin.jar b/utilities/rdbmigration/lib/mysql-connector-java-5.1.16-bin.jar deleted file mode 100644 index e62f2cb7..00000000 Binary files a/utilities/rdbmigration/lib/mysql-connector-java-5.1.16-bin.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/slf4j-api-1.5.6.jar b/utilities/rdbmigration/lib/slf4j-api-1.5.6.jar deleted file mode 100644 index 9b422169..00000000 Binary files a/utilities/rdbmigration/lib/slf4j-api-1.5.6.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/slf4j-log4j12-1.5.6.jar b/utilities/rdbmigration/lib/slf4j-log4j12-1.5.6.jar deleted file mode 100644 index 0c40e9c8..00000000 Binary files a/utilities/rdbmigration/lib/slf4j-log4j12-1.5.6.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/tdb-0.8.7.jar b/utilities/rdbmigration/lib/tdb-0.8.7.jar deleted file mode 100644 index 5b7965d6..00000000 Binary files a/utilities/rdbmigration/lib/tdb-0.8.7.jar and /dev/null differ diff --git a/utilities/rdbmigration/lib/xercesImpl.jar b/utilities/rdbmigration/lib/xercesImpl.jar deleted file mode 100644 index eac75ae8..00000000 Binary files a/utilities/rdbmigration/lib/xercesImpl.jar and /dev/null differ diff --git a/utilities/rdbmigration/src/edu/cornell/mannlib/vivo/utilities/rdbmigration/RdbMigrator.java b/utilities/rdbmigration/src/edu/cornell/mannlib/vivo/utilities/rdbmigration/RdbMigrator.java deleted file mode 100644 index cf7ac861..00000000 --- a/utilities/rdbmigration/src/edu/cornell/mannlib/vivo/utilities/rdbmigration/RdbMigrator.java +++ /dev/null @@ -1,361 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vivo.utilities.rdbmigration; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.Date; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.lang.StringUtils; - -import com.hp.hpl.jena.db.DBConnection; -import com.hp.hpl.jena.db.GraphRDB; -import com.hp.hpl.jena.graph.Node; -import com.hp.hpl.jena.query.Dataset; -import com.hp.hpl.jena.sparql.core.DatasetGraph; -import com.hp.hpl.jena.tdb.TDBFactory; - -/** - * A free-standing application that walks the user through the process of - * copying VIVO configuration data from RDB to TDB. - */ -public class RdbMigrator { - private static final String TABLE_RDB = "jena_graph"; - private static final String TABLE_MIGRATED = "vivo_rdb_migrated"; - private static final List EXPECTED_MODELS = Arrays - .asList(new String[] { - "http://vitro.mannlib.cornell.edu/default/vitro-kb-displayMetadata", - "http://vitro.mannlib.cornell.edu/default/vitro-kb-displayMetadata-displayModel", - "http://vitro.mannlib.cornell.edu/default/vitro-kb-displayMetadataTBOX", - "http://vitro.mannlib.cornell.edu/default/vitro-kb-userAccounts" }); - - private final String vivoHomeDir; - private final String jdbcUrl; - private final String username; - private final String password; - - private File targetDir; - private boolean alreadyMigrated; - private List modelsToCopy; - - /** - * Confirm all of the parameters. Ask the user for approval. Do the - * migration. - * - * @throws UserDeclinedException - * If the user decides not to continue. - */ - public RdbMigrator(String vivoHomeDir, String jdbcUrl, String username, - String password) throws UserDeclinedException, IOException, - SQLException { - this.vivoHomeDir = vivoHomeDir; - this.jdbcUrl = jdbcUrl; - this.username = username; - this.password = password; - - testDbConnection(); - - checkThatRdbExists(); - - confirmTargetDirectory(); - - if (doesTdbExist()) { - askContinueOverTdb(); - } - - if (isAlreadyMigrated()) { - askMigrateAgain(); - } - - getListOfRdbModels(); - - if (isUnexpectedModels()) { - askMigrateAllModels(); - } - - askApprovalForMigrationPlan(); - - migrate(); - } - - private void testDbConnection() { - try (Connection conn = getSqlConnection()) { - // Just open and close it. - } catch (SQLException e) { - quit("Can't log in to database: '" + jdbcUrl + "', '" + username - + "', '" + password + "'\n" + e.getMessage()); - } - } - - private void checkThatRdbExists() throws SQLException { - try (Connection conn = getSqlConnection()) { - DatabaseMetaData md = conn.getMetaData(); - try (ResultSet rs = md.getTables(null, null, TABLE_RDB, null);) { - if (!rs.next()) { - quit("The database at '" + jdbcUrl - + "' contains no RDB tables."); - } - } - } - } - - private void confirmTargetDirectory() { - File vivoHome = new File(vivoHomeDir); - if (!vivoHome.isDirectory()) { - quit("'" + vivoHome + "' is not a directory."); - } - if (!vivoHome.canWrite()) { - quit("Can't write to '" + vivoHome + "'."); - } - targetDir = new File(vivoHome, "tdbmodels"); - } - - private boolean doesTdbExist() { - if (!targetDir.exists()) { - return false; - } - - if (!targetDir.isDirectory()) { - quit("'" + targetDir + "' is not a directory."); - } - if (!targetDir.canWrite()) { - quit("Can't write to '" + targetDir + "'."); - } - - String[] filenames = targetDir.list(); - if (filenames == null || filenames.length == 0) { - return false; - } - - return true; - } - - private void askContinueOverTdb() throws UserDeclinedException, IOException { - ask("A directory of TDB files exists at '" + targetDir + "'.\n" - + " Migration will replace the existing triples.\n" - + "Continue? (y/n)"); - } - - private boolean isAlreadyMigrated() throws SQLException { - try (Connection conn = getSqlConnection()) { - DatabaseMetaData md = conn.getMetaData(); - try (ResultSet rs = md.getTables(null, null, TABLE_MIGRATED, null);) { - if (rs.next()) { - alreadyMigrated = true; - announceMigrationDate(conn); - return true; - } else { - return false; - } - } - } - } - - private void announceMigrationDate(Connection conn) { - String migrationDate = "UNKNOWN DATE"; - String query = String.format("SELECT date FROM %s LIMIT 1", - TABLE_MIGRATED); - - try (Statement stmt = conn.createStatement(); - java.sql.ResultSet rs = stmt.executeQuery(query)) { - if (rs.next()) { - migrationDate = rs.getString("DATE"); - } - } catch (SQLException e) { - // go with default answer. - } - - System.out.println("It looks like this RDB data has already been " - + "migrated to TDB, on " + migrationDate - + "\n (found a table named '" + TABLE_MIGRATED + "')"); - } - - private void askMigrateAgain() throws UserDeclinedException, IOException { - ask("Migrate again? (y/n)"); - } - - private void getListOfRdbModels() throws SQLException { - try (Connection conn = getSqlConnection(); - ClosingDBConnection rdb = new ClosingDBConnection(conn)) { - modelsToCopy = rdb.getAllModelNames().toList(); - } - } - - private boolean isUnexpectedModels() { - List unexpectedModels = new ArrayList<>(modelsToCopy); - unexpectedModels.removeAll(EXPECTED_MODELS); - if (unexpectedModels.isEmpty()) { - return false; - } - - System.out - .println("VIVO requires only these models from RDB:\n " - + StringUtils.join(EXPECTED_MODELS, "\n ") - + "\nYour RDB triple-store contains these additional models:\n " - + StringUtils.join(unexpectedModels, "\n ")); - return true; - } - - private void askMigrateAllModels() throws IOException, UserDeclinedException { - System.out.println("Migrate all models, or only the required models?\n" - + " Enter 'all' or 'only', or anything else to quit."); - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - String s = br.readLine(); - if (s != null) { - if (s.trim().toLowerCase().equals("all")) { - return; - } else if (s.trim().toLowerCase().equals("only")) { - modelsToCopy = EXPECTED_MODELS; - return; - } - } - throw new UserDeclinedException("Enter 'all' or 'only'."); - } - - private void askApprovalForMigrationPlan() throws SQLException, - UserDeclinedException, IOException { - int modelCount = 0; - int tripleCount = 0; - try (Connection conn = getSqlConnection(); - ClosingDBConnection rdb = new ClosingDBConnection(conn)) { - for (String modelName : modelsToCopy) { - modelCount++; - try (ClosingGraphRDB graph = new ClosingGraphRDB(rdb, modelName)) { - tripleCount += graph.size(); - } - } - } - String warning = alreadyMigrated ? " Existing triples will be over-written.\n" - : ""; - String question = String.format("Migrating %d triples in %d models " - + "to TDB files in '%s'\n%sContinue? (y/n)", tripleCount, - modelCount, targetDir, warning); - ask(question); - } - - private void quit(String message) { - throw new IllegalArgumentException( - "--------------------------------------------------------------\n" - + message - + "\n--------------------------------------------------------------"); - } - - private void ask(String string) throws UserDeclinedException, IOException { - System.out.println(string); - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - String s = br.readLine(); - if ((s == null) || (!s.trim().toLowerCase().equals("y"))) { - throw new UserDeclinedException("OK."); - } - } - - private static class UserDeclinedException extends Exception { - public UserDeclinedException(String message) { - super(message); - } - } - - public void migrate() throws SQLException { - copyData(); - writeMigrationRecord(); - } - - private void copyData() throws SQLException { - try (Connection conn = getSqlConnection(); - ClosingDBConnection rdb = new ClosingDBConnection(conn)) { - Dataset tdbDataset = TDBFactory.createDataset(targetDir - .getAbsolutePath()); - copyGraphs(rdb, tdbDataset); - } - } - - @SuppressWarnings("deprecation") - private void copyGraphs(ClosingDBConnection rdb, Dataset tdbDataset) { - DatasetGraph tdbDsGraph = tdbDataset.asDatasetGraph(); - for (String modelName : modelsToCopy) { - try (ClosingGraphRDB graph = new ClosingGraphRDB(rdb, modelName)) { - tdbDsGraph.addGraph(Node.createURI(modelName), graph); - System.out - .println(String.format(" copied %4d triples from %s", - graph.size(), modelName)); - } - } - } - - private void writeMigrationRecord() throws SQLException { - String createTable = String.format("CREATE TABLE %s (date DATE)", - TABLE_MIGRATED); - String deleteOldDates = String.format("DELETE FROM %s", TABLE_MIGRATED); - String insertDate = String.format("INSERT INTO %s (date) VALUES (?)", - TABLE_MIGRATED); - try (Connection conn = getSqlConnection(); - Statement stmt = conn.createStatement(); - PreparedStatement pstmt = conn.prepareStatement(insertDate)) { - if (alreadyMigrated) { - stmt.executeUpdate(deleteOldDates); - } else { - stmt.executeUpdate(createTable); - } - pstmt.setDate(1, new Date(System.currentTimeMillis())); - pstmt.executeUpdate(); - } - } - - private Connection getSqlConnection() throws SQLException { - Properties connectionProps; - connectionProps = new Properties(); - connectionProps.put("user", username); - connectionProps.put("password", password); - return DriverManager.getConnection(jdbcUrl, connectionProps); - } - - private static class ClosingDBConnection extends DBConnection implements - AutoCloseable { - ClosingDBConnection(Connection sqlConnection) { - super(sqlConnection, "MySQL"); - } - - } - - private static class ClosingGraphRDB extends GraphRDB implements - AutoCloseable { - ClosingGraphRDB(DBConnection rdb, String modelName) { - super(rdb, modelName, null, - GraphRDB.OPTIMIZE_ALL_REIFICATIONS_AND_HIDE_NOTHING, false); - } - } - - // ---------------------------------------------------------------------- - // Main routine - // ---------------------------------------------------------------------- - - @SuppressWarnings("unused") - public static void main(String[] args) { - if (args.length != 4) { - System.out.println("Usage: RdbMigrator vivoHomeDir, jdbcUrl, " - + "username, password"); - } - - try { - new RdbMigrator(args[0], args[1], args[2], args[3]); - } catch (IllegalArgumentException | UserDeclinedException e) { - System.out.println(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - } - } - -}