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