From f8af05bc5318faa7c3c78e63c1cd0c827091b49e Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 19 Jun 2007 11:47:56 +0000
Subject: [PATCH] LMS-34 Javadoc added

SVN: 586
---
 .../cisd/dbmigration/DBMigrationEngine.java   | 13 ++++++++-
 .../cisd/dbmigration/IDAOFactory.java         |  9 ++++++
 .../cisd/dbmigration/IDatabaseAdminDAO.java   | 17 ++++++++++-
 .../dbmigration/IDatabaseVersionLogDAO.java   | 29 +++++++++++++++++++
 .../cisd/dbmigration/ISqlScriptExecutor.java  |  3 ++
 .../systemsx/cisd/dbmigration/LogEntry.java   |  3 +-
 .../cisd/dbmigration/PostgreSQLAdminDAO.java  |  7 +++++
 .../dbmigration/PostgreSQLDAOFactory.java     |  3 ++
 .../cisd/dbmigration/SqlScriptProvider.java   | 26 ++++++++++++++++-
 9 files changed, 106 insertions(+), 4 deletions(-)

diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java
index 47fc3491f06..812fda0a209 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java
@@ -44,7 +44,11 @@ public class DBMigrationEngine
 
     private final ISqlScriptExecutor scriptExecutor;
 
-
+    /**
+     * Creates an instance for the specified DAO factory and SQL script provider.
+     *
+     * @param shouldCreateFromScratch If <code>true</code> the database should be dropped and created from scratch.
+     */
     public DBMigrationEngine(IDAOFactory daoFactory, ISqlScriptProvider scriptProvider, boolean shouldCreateFromScratch)
     {
         adminDAO = daoFactory.getDatabaseDAO();
@@ -54,6 +58,12 @@ public class DBMigrationEngine
         this.shouldCreateFromScratch = shouldCreateFromScratch;
     }
     
+    /**
+     * Create or migrate database to the specified version.
+     * 
+     * @throws EnvironmentFailureException if creation/migration failed because of some missing scripts or an
+     *          inconsistent database.
+     */
     public void migrateTo(String version)
     {
         if (shouldCreateFromScratch)
@@ -66,6 +76,7 @@ public class DBMigrationEngine
             return;
         }
         LogEntry entry = logDAO.getLastEntry();
+        // TODO 2007-06-19, Franz-Josef Elmer: check not null and run status
         String databaseVersion = entry.getVersion();
         if (version.equals(databaseVersion))
         {
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDAOFactory.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDAOFactory.java
index 085dbbfefe6..cbaf2a4fd49 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDAOFactory.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDAOFactory.java
@@ -23,9 +23,18 @@ package ch.systemsx.cisd.dbmigration;
  */
 public interface IDAOFactory
 {
+    /**
+     * Returns an Data Access Object for administration of the database.
+     */
     public IDatabaseAdminDAO getDatabaseDAO();
     
+    /**
+     * Returns an executor of SQL scripts.
+     */
     public ISqlScriptExecutor getSqlScriptExecutor();
     
+    /**
+     * Returns the DAO for the database version log.
+     */
     public IDatabaseVersionLogDAO getDatabaseVersionLogDAO();
 }
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java
index fa4b0b5ffea..a68f99884b1 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java
@@ -17,19 +17,34 @@
 package ch.systemsx.cisd.dbmigration;
 
 /**
- * Interface for creating/dropping a database.
+ * Interface for administration of a database.
  *
  * @author Franz-Josef Elmer
  */
 public interface IDatabaseAdminDAO
 {
+    /**
+     * Returns the owner of the database to be created/dropped.
+     */
     public String getOwner();
     
+    /**
+     * Returns the name of the database to be created/dropped.
+     */
     public String getDatabaseName();
     
+    /**
+     * Creates the owner/user.
+     */
     public void createOwner();
     
+    /**
+     * Creates the database. 
+     */
     public void createDatabase();
     
+    /**
+     * Drops the database.
+     */
     public void dropDatabase();
 }
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseVersionLogDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseVersionLogDAO.java
index eb67e09dbe7..48323f6cd22 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseVersionLogDAO.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseVersionLogDAO.java
@@ -24,16 +24,45 @@ package ch.systemsx.cisd.dbmigration;
  */
 public interface IDatabaseVersionLogDAO
 {
+    /**
+     * Returns <code>true</code> if the database instance with database version log can be connected.
+     */
     public boolean canConnectToDatabase();
     
+    /**
+     * Creates the table DATABASE_VERSION_LOG.
+     */
     public void createTable();
     
+    /**
+     * Returns the last log entry found.
+     */
     public LogEntry getLastEntry();
     
+    /**
+     * Inserts a new entry into the version log with {@link LogEntry.RunStatus#START}. 
+     * 
+     * @param version Version of the database after creation/migration.
+     * @param moduleName Name of the module/script to be applied. 
+     * @param moduleCode Script code. 
+     */
     public void logStart(String version, String moduleName, String moduleCode);
     
+    /**
+     * Update log entry specified by version and module name to {@link LogEntry.RunStatus#SUCCESS}. 
+     * 
+     * @param version Version of the database after creation/migration.
+     * @param moduleName Name of the successfully applied module/script. 
+     */
     public void logSuccess(String version, String moduleName);
     
+    /**
+     * Update log entry specified by version and module name to {@link LogEntry.RunStatus#FAILED}. 
+     * 
+     * @param version Version of the database after creation/migration.
+     * @param moduleName Name of the failed module/script.
+     * @param runException Exception causing the failure. 
+     */
     public void logFailure(String version, String moduleName, Throwable runException);
 
 }
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptExecutor.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptExecutor.java
index 965696d5168..8ad74cd9cf3 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptExecutor.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptExecutor.java
@@ -23,5 +23,8 @@ package ch.systemsx.cisd.dbmigration;
  */
 public interface ISqlScriptExecutor
 {
+    /**
+     * Executes the specified SQL script.
+     */
     public void execute(String sqlScript);
 }
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/LogEntry.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/LogEntry.java
index 88fa1fc78e8..6ee226ec713 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/LogEntry.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/LogEntry.java
@@ -19,12 +19,13 @@ package ch.systemsx.cisd.dbmigration;
 import java.util.Date;
 
 /**
- * Log entry of DATABASE_VERSION_LOG
+ * Log entry of DATABASE_VERSION_LOG.
  *
  * @author Franz-Josef Elmer
  */
 public class LogEntry
 {
+    /** Run status of an entry. */
     public enum RunStatus {START, SUCCESS, FAILED, UNKNOWN}
     
     private String version;
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLAdminDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLAdminDAO.java
index 7dd57e508a2..35264138170 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLAdminDAO.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLAdminDAO.java
@@ -32,6 +32,13 @@ public class PostgreSQLAdminDAO extends SimpleJdbcDaoSupport implements IDatabas
     private final String owner;
     private final String database;
 
+    /**
+     * Creates an instance.
+     *
+     * @param dataSource Data source able to create/drop the specified database.
+     * @param owner Owner to be created if it doesn't exist.
+     * @param database Name of the database.
+     */
     public PostgreSQLAdminDAO(DataSource dataSource, String owner, String database)
     {
         this.owner = owner;
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLDAOFactory.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLDAOFactory.java
index 6be1d8b2c42..7ddb68ff9f4 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLDAOFactory.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/PostgreSQLDAOFactory.java
@@ -29,6 +29,9 @@ public class PostgreSQLDAOFactory implements IDAOFactory
     private final ISqlScriptExecutor sqlScriptExecutor;
     private final IDatabaseVersionLogDAO databaseVersionLogDAO;
 
+    /**
+     * Creates an instance based on the specified configuration context.
+     */
     public PostgreSQLDAOFactory(DatabaseConfigurationContext context)
     {
         databaseDAO = new PostgreSQLAdminDAO(context.getAdminDataSource(), context.getOwner(), context.getDatabaseName());
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java
index 2aaee7136b2..07d95de3371 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java
@@ -25,7 +25,9 @@ import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
 
 /**
- * Implementation of {@link ISqlScriptProvider} based on files in classpath or working directory. 
+ * Implementation of {@link ISqlScriptProvider} based on files in classpath or working directory. This provider tries
+ * first to load a resource. If this isn't successful the provider tries to look for files relative to the
+ * working directory. 
  *
  * @author Franz-Josef Elmer
  */
@@ -39,23 +41,45 @@ public class SqlScriptProvider implements ISqlScriptProvider
     private final String schemaScriptFolder;
     private final String dataScriptFolder;
     
+    /**
+     * Creates an instance for the specified script folders. They are either resource folders or folders
+     * relative to the working directory.
+     *
+     * @param schemaScriptFolder Folder of schema and migration scripts.
+     * @param dataScriptFolder Folder of data scripts.
+     */
     public SqlScriptProvider(String schemaScriptFolder, String dataScriptFolder)
     {
         this.schemaScriptFolder = schemaScriptFolder;
         this.dataScriptFolder = dataScriptFolder;
     }
 
+    /**
+     * Returns the data script for the specified version. 
+     * The name of the script is expected to be
+     * <pre>&lt;data script folder&gt;/&lt;version&gt;/data-&lt;version&gt;.sql</pre>
+     */
     public Script getDataScript(String version)
     {
         return loadScript(dataScriptFolder + "/" + version, "data-" + version + SQL_FILE_TYPE);
     }
 
+    /**
+     * Returns the migration script for the specified versions. 
+     * The name of the script is expected to be
+     * <pre>&lt;schema script folder&gt;/migration/migration-&lt;fromVersion&gt;-&lt;toVersion&gt;.sql</pre>
+     */
     public Script getMigrationScript(String fromVersion, String toVersion)
     {
         String scriptName = "migration-" + fromVersion + "-" + toVersion + SQL_FILE_TYPE;
         return loadScript(schemaScriptFolder + "/migration", scriptName);
     }
 
+    /**
+     * Returns the schmea script for the specified version. 
+     * The name of the script is expected to be
+     * <pre>&lt;schema script folder&gt;/&lt;version&gt;/schema-&lt;version&gt;.sql</pre>
+     */
     public Script getSchemaScript(String version)
     {
         return loadScript(schemaScriptFolder + "/" + version, "schema-" + version + SQL_FILE_TYPE);
-- 
GitLab