From df8d8a1d03f2e26892c6e36c44e3589d6bf5783c Mon Sep 17 00:00:00 2001 From: brinn <brinn> Date: Mon, 28 Jan 2008 15:59:52 +0000 Subject: [PATCH] fix: dropDatabase() when the db files are not located in the "targets" sub-directory SVN: 3827 --- .../systemsx/cisd/dbmigration/h2/H2AdminDAO.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java index 508592509b7..2a460040380 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java @@ -20,6 +20,8 @@ import java.io.File; import java.io.FilenameFilter; import java.sql.SQLException; import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.sql.DataSource; @@ -49,6 +51,8 @@ public class H2AdminDAO extends SimpleJdbcDaoSupport implements IDatabaseAdminDA private static final String DROP_ALL_OBJECTS_SQL = "drop all objects;"; private static final String SQL_FILE_TYPE = ".sql"; + + private static final Pattern dbDirPartPattern = Pattern.compile(".*:file:(.*?)/.*"); private static final String CREATE_TABLE_DATABASE_VERSION_LOGS_SQL = "create table " + DatabaseVersionLogDAO.DB_VERSION_LOG + " (db_version varchar(4) not null, " @@ -59,6 +63,8 @@ public class H2AdminDAO extends SimpleJdbcDaoSupport implements IDatabaseAdminDA private final String databaseName; + private final String databaseDir; + private final String databaseURL; private final ISqlScriptExecutor scriptExecutor; @@ -81,6 +87,14 @@ public class H2AdminDAO extends SimpleJdbcDaoSupport implements IDatabaseAdminDA this.massUploader = massUploader; this.databaseName = databaseName; this.databaseURL = databaseURL; + final Matcher dbDirPartMatcherOrNull = dbDirPartPattern.matcher(databaseURL); + if (dbDirPartMatcherOrNull.matches()) + { + this.databaseDir = dbDirPartMatcherOrNull.group(1); + } else + { + this.databaseDir = "."; + } setDataSource(dataSource); } @@ -123,7 +137,7 @@ public class H2AdminDAO extends SimpleJdbcDaoSupport implements IDatabaseAdminDA scriptExecutor.execute(new Script("drop database", DROP_ALL_OBJECTS_SQL), true, null); try { - DeleteDbFiles.execute("targets", databaseName, true); + DeleteDbFiles.execute(databaseDir, databaseName, true); } catch (SQLException ex) { throw new CheckedExceptionTunnel(ex); -- GitLab