From 943b51d921538df8368b5a97daee4f5357195559 Mon Sep 17 00:00:00 2001
From: Rick Herrick <jrherrick@wustl.edu>
Date: Fri, 19 Aug 2016 17:35:38 -0500
Subject: [PATCH] XNAT-4273 Started initializing task for database table
 migration.

---
 build.gradle                                  |  2 +-
 .../tasks/EncryptXnatPasswords.java           |  3 +-
 .../tasks/MigrateDatabaseTables.java          | 71 +++++++++++++++++++
 3 files changed, 74 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/org/nrg/xnat/initialization/tasks/MigrateDatabaseTables.java

diff --git a/build.gradle b/build.gradle
index 73dade74..78832236 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ def vSwagger = '2.4.0'
 def vHibernate = '4.3.11.Final'
 def vEhcache = '2.6.11'
 def vJackson = '2.6.5'
-def vPostgreSQL = '9.4.1207'
+def vPostgreSQL = '9.4.1209.jre7'
 def vServletApi = '3.1.0'
 def vTomcat = '7.0.68'
 def vCargo = '1.4.18'
diff --git a/src/main/java/org/nrg/xnat/initialization/tasks/EncryptXnatPasswords.java b/src/main/java/org/nrg/xnat/initialization/tasks/EncryptXnatPasswords.java
index fbc9f063..da490362 100644
--- a/src/main/java/org/nrg/xnat/initialization/tasks/EncryptXnatPasswords.java
+++ b/src/main/java/org/nrg/xnat/initialization/tasks/EncryptXnatPasswords.java
@@ -83,10 +83,11 @@ public class EncryptXnatPasswords extends AbstractInitializingTask {
             }
             return passwords;
         }
+
         final ShaPasswordEncoder encoder = new ShaPasswordEncoder(256);
     }
 
-    private static Logger logger = LoggerFactory.getLogger(EncryptXnatPasswords.class);
+    private static final Logger logger = LoggerFactory.getLogger(EncryptXnatPasswords.class);
 
     private final JdbcTemplate _template;
 }
diff --git a/src/main/java/org/nrg/xnat/initialization/tasks/MigrateDatabaseTables.java b/src/main/java/org/nrg/xnat/initialization/tasks/MigrateDatabaseTables.java
new file mode 100644
index 00000000..eb8d400c
--- /dev/null
+++ b/src/main/java/org/nrg/xnat/initialization/tasks/MigrateDatabaseTables.java
@@ -0,0 +1,71 @@
+/*
+ * org.nrg.xnat.initialization.tasks.XnatPasswordEncrypter
+ * XNAT http://www.xnat.org
+ * Copyright (c) 2016, Washington University School of Medicine
+ * All Rights Reserved
+ *
+ * Released under the Simplified BSD.
+ */
+package org.nrg.xnat.initialization.tasks;
+
+import org.nrg.framework.utilities.BasicXnatResourceLocator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PropertiesLoaderUtils;
+import org.springframework.dao.DataAccessException;
+import org.springframework.jdbc.BadSqlGrammarException;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.ResultSetExtractor;
+import org.springframework.security.authentication.encoding.ShaPasswordEncoder;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+@Component
+public class MigrateDatabaseTables extends AbstractInitializingTask {
+    @Autowired
+    public MigrateDatabaseTables(final JdbcTemplate template) {
+        super();
+        _template = template;
+    }
+
+    @Override
+    public String getTaskName() {
+        return "Migrate XNAT database tables";
+    }
+
+    @Override
+    public void run() {
+        try {
+            for (final Resource resource : BasicXnatResourceLocator.getResources("classpath*:META-INF/xnat/migration/**/*-tables.properties")) {
+                final Properties properties = PropertiesLoaderUtils.loadProperties(resource);
+
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        BasicXnatResourceLocator.getResources()
+    }
+
+    private boolean tableExists(final String name) throws SQLException {
+        try (final Connection connection = _template.getDataSource().getConnection();
+             final ResultSet results = connection.getMetaData().getTables("catalog", null, name, new String[]{"TABLE"})) {
+            if (results.next()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static final Logger logger = LoggerFactory.getLogger(MigrateDatabaseTables.class);
+
+    private final JdbcTemplate _template;
+}
-- 
GitLab