You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2005/09/16 11:44:48 UTC

svn commit: r289458 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils: ./ platform/ task/

Author: tomdz
Date: Fri Sep 16 02:44:34 2005
New Revision: 289458

URL: http://svn.apache.org/viewcvs?rev=289458&view=rev
Log:
Added ability to specify for which platforms a parameter for the database creation sub task is applicable
Changed initialization of the platform factory to a lazy scheme

Added:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Parameter.java
      - copied, changed from r289427, db/ddlutils/trunk/src/java/org/apache/ddlutils/task/NamedValue.java
Removed:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/NamedValue.java
Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/AxionPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/DerbyPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/FirebirdPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/InterbasePlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MSSqlPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MaxDbPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MckoiPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MySqlPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PostgreSqlPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SapDbPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SybasePlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToSpecifiedDatabaseCommand.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java Fri Sep 16 02:44:34 2005
@@ -40,9 +40,9 @@
     /**
      * Returns the name of the database that this platform is for.
      * 
-     * @return The database name
+     * @return The name
      */
-    public String getDatabaseName();
+    public String getName();
 
     /**
      * Returns the info object for this platform.

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java Fri Sep 16 02:44:34 2005
@@ -16,13 +16,9 @@
  * limitations under the License.
  */
 
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-
 import javax.sql.DataSource;
-
 import org.apache.ddlutils.platform.AxionPlatform;
 import org.apache.ddlutils.platform.CloudscapePlatform;
 import org.apache.ddlutils.platform.Db2Platform;
@@ -52,13 +48,24 @@
 public class PlatformFactory
 {
     /** The database name -> platform map */
-    private static Map _platforms = new HashMap();
+    private static Map _platforms = null;
 
-    static
+    /**
+     * Returns the platform map.
+     * 
+     * @return The platform list
+     */
+    private static synchronized Map getPlatforms()
     {
-        registerDatabases();
+        if (_platforms == null)
+        {
+            // lazy initialization
+            _platforms = new HashMap();
+            registerPlatforms();
+        }
+        return _platforms;
     }
-
+    
     /**
      * Creates a new platform for the given (case insensitive) database name
      * or returns null if the database is not recognized.
@@ -68,7 +75,7 @@
      */
     public static synchronized Platform createNewPlatformInstance(String databaseName) throws DdlUtilsException
     {
-        Class platformClass = (Class)_platforms.get(databaseName.toLowerCase());
+        Class platformClass = (Class)getPlatforms().get(databaseName.toLowerCase());
 
         try
         {
@@ -108,55 +115,73 @@
     }
 
     /**
-     * Returns a list of all supported databases.
+     * Returns a list of all supported platforms.
      * 
-     * @return The currently registered database types
+     * @return The names of the currently registered platforms
      */
-    public static synchronized List getDatabaseTypes()
+    public static synchronized String[] getSupportedPlatforms()
     {
-        // return a copy to prevent modification
-        List answer = new ArrayList();
-
-        answer.addAll(_platforms.keySet());
-        return answer;
+        return (String[])getPlatforms().keySet().toArray(new String[0]);
     }
 
+    /**
+     * Determines whether the indicated platform is supported.
+     * 
+     * @param platformName The name of the platform
+     * @return <code>true</code> if the platform is supported
+     */
+    public static boolean isPlatformSupported(String platformName)
+    {
+        return getPlatforms().containsKey(platformName.toLowerCase());
+    }
 
     /**
      * Registers a new platform.
      * 
-     * @param databaseName  The database name
+     * @param platformName  The platform name
      * @param platformClass The platform class which must implement the {@link Platform} interface
      */
-    public static synchronized void registerDatabase(String databaseName, Class platformClass)
+    public static synchronized void registerPlatform(String platformName, Class platformClass)
     {
-        if (!Platform.class.isAssignableFrom(platformClass))
-        {
-            throw new IllegalArgumentException("Cannot register class "+platformClass.getName()+" because it does not implement the "+Platform.class.getName()+" interface");
-        }
-        _platforms.put(databaseName.toLowerCase(), platformClass);        
+        addPlatform(getPlatforms(), platformName, platformClass);
+    }
+
+    /**
+     * Registers the known platforms.
+     */
+    private static void registerPlatforms()
+    {
+        addPlatform(_platforms, AxionPlatform.DATABASENAME,      AxionPlatform.class);
+        addPlatform(_platforms, CloudscapePlatform.DATABASENAME, CloudscapePlatform.class);
+        addPlatform(_platforms, Db2Platform.DATABASENAME,        Db2Platform.class);
+        addPlatform(_platforms, DerbyPlatform.DATABASENAME,      DerbyPlatform.class);
+        addPlatform(_platforms, FirebirdPlatform.DATABASENAME,   FirebirdPlatform.class);
+        addPlatform(_platforms, HsqlDbPlatform.DATABASENAME,     HsqlDbPlatform.class);
+        addPlatform(_platforms, InterbasePlatform.DATABASENAME,  InterbasePlatform.class);
+        addPlatform(_platforms, MaxDbPlatform.DATABASENAME,      MaxDbPlatform.class);
+        addPlatform(_platforms, MckoiPlatform.DATABASENAME,      MckoiPlatform.class);
+        addPlatform(_platforms, MSSqlPlatform.DATABASENAME,      MSSqlPlatform.class);
+        addPlatform(_platforms, MySqlPlatform.DATABASENAME,      MySqlPlatform.class);
+        addPlatform(_platforms, Oracle8Platform.DATABASENAME,    Oracle8Platform.class);
+        addPlatform(_platforms, Oracle9Platform.DATABASENAME,    Oracle9Platform.class);
+        addPlatform(_platforms, PostgreSqlPlatform.DATABASENAME, PostgreSqlPlatform.class);
+        addPlatform(_platforms, SapDbPlatform.DATABASENAME,      SapDbPlatform.class);
+        addPlatform(_platforms, SybasePlatform.DATABASENAME,     SybasePlatform.class);
     }
 
     /**
-     * Registers the predefined builders.
+     * Registers a new platform.
+     * 
+     * @param platformMap   The map to add the platform info to 
+     * @param platformName  The platform name
+     * @param platformClass The platform class which must implement the {@link Platform} interface
      */
-    protected static void registerDatabases()
+    private static synchronized void addPlatform(Map platformMap, String platformName, Class platformClass)
     {
-        registerDatabase(AxionPlatform.DATABASENAME,      AxionPlatform.class);
-        registerDatabase(CloudscapePlatform.DATABASENAME, CloudscapePlatform.class);
-        registerDatabase(Db2Platform.DATABASENAME,        Db2Platform.class);
-        registerDatabase(DerbyPlatform.DATABASENAME,      DerbyPlatform.class);
-        registerDatabase(FirebirdPlatform.DATABASENAME,   FirebirdPlatform.class);
-        registerDatabase(HsqlDbPlatform.DATABASENAME,     HsqlDbPlatform.class);
-        registerDatabase(InterbasePlatform.DATABASENAME,  InterbasePlatform.class);
-        registerDatabase(MaxDbPlatform.DATABASENAME,      MaxDbPlatform.class);
-        registerDatabase(MckoiPlatform.DATABASENAME,      MckoiPlatform.class);
-        registerDatabase(MSSqlPlatform.DATABASENAME,      MSSqlPlatform.class);
-        registerDatabase(MySqlPlatform.DATABASENAME,      MySqlPlatform.class);
-        registerDatabase(Oracle8Platform.DATABASENAME,    Oracle8Platform.class);
-        registerDatabase(Oracle9Platform.DATABASENAME,    Oracle9Platform.class);
-        registerDatabase(PostgreSqlPlatform.DATABASENAME, PostgreSqlPlatform.class);
-        registerDatabase(SapDbPlatform.DATABASENAME,      SapDbPlatform.class);
-        registerDatabase(SybasePlatform.DATABASENAME,     SybasePlatform.class);
+        if (!Platform.class.isAssignableFrom(platformClass))
+        {
+            throw new IllegalArgumentException("Cannot register class "+platformClass.getName()+" because it does not implement the "+Platform.class.getName()+" interface");
+        }
+        platformMap.put(platformName.toLowerCase(), platformClass);        
     }
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/AxionPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/AxionPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/AxionPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/AxionPlatform.java Fri Sep 16 02:44:34 2005
@@ -69,9 +69,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java Fri Sep 16 02:44:34 2005
@@ -71,9 +71,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java Fri Sep 16 02:44:34 2005
@@ -74,9 +74,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/DerbyPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/DerbyPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/DerbyPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/DerbyPlatform.java Fri Sep 16 02:44:34 2005
@@ -42,9 +42,9 @@
     public static final String JDBC_SUBPROTOCOL     = "derby";
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/FirebirdPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/FirebirdPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/FirebirdPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/FirebirdPlatform.java Fri Sep 16 02:44:34 2005
@@ -32,9 +32,9 @@
     public static final String JDBC_SUBPROTOCOL = "firebirdsql";
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java Fri Sep 16 02:44:34 2005
@@ -64,9 +64,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/InterbasePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/InterbasePlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/InterbasePlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/InterbasePlatform.java Fri Sep 16 02:44:34 2005
@@ -77,9 +77,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MSSqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MSSqlPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MSSqlPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MSSqlPlatform.java Fri Sep 16 02:44:34 2005
@@ -75,9 +75,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MaxDbPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MaxDbPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MaxDbPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MaxDbPlatform.java Fri Sep 16 02:44:34 2005
@@ -32,9 +32,9 @@
     public static final String DATABASENAME = "MaxDB";
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MckoiPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MckoiPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MckoiPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MckoiPlatform.java Fri Sep 16 02:44:34 2005
@@ -62,9 +62,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MySqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MySqlPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MySqlPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/MySqlPlatform.java Fri Sep 16 02:44:34 2005
@@ -80,9 +80,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java Fri Sep 16 02:44:34 2005
@@ -87,9 +87,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java Fri Sep 16 02:44:34 2005
@@ -235,7 +235,7 @@
      */
     public void createDatabase(String jdbcDriverClassName, String connectionUrl, String username, String password, Map parameters) throws DynaSqlException, UnsupportedOperationException
     {
-        throw new UnsupportedOperationException("Database creation is not supported for the database platform "+getDatabaseName());
+        throw new UnsupportedOperationException("Database creation is not supported for the database platform "+getName());
     }
 
     /* (non-Javadoc)
@@ -243,7 +243,7 @@
      */
     public void dropDatabase(String jdbcDriverClassName, String connectionUrl, String username, String password) throws DynaSqlException, UnsupportedOperationException
     {
-        throw new UnsupportedOperationException("Database deletion is not supported for the database platform "+getDatabaseName());
+        throw new UnsupportedOperationException("Database deletion is not supported for the database platform "+getName());
     }
 
     /* (non-Javadoc)

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PostgreSqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PostgreSqlPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PostgreSqlPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PostgreSqlPlatform.java Fri Sep 16 02:44:34 2005
@@ -85,9 +85,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SapDbPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SapDbPlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SapDbPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SapDbPlatform.java Fri Sep 16 02:44:34 2005
@@ -80,9 +80,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SybasePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SybasePlatform.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SybasePlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SybasePlatform.java Fri Sep 16 02:44:34 2005
@@ -79,9 +79,9 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.ddlutils.builder.Platform#getDatabaseName()
+     * @see org.apache.ddlutils.builder.Platform#getName()
      */
-    public String getDatabaseName()
+    public String getName()
     {
         return DATABASENAME;
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java Fri Sep 16 02:44:34 2005
@@ -16,7 +16,10 @@
  * limitations under the License.
  */
 
-import org.apache.commons.collections.map.ListOrderedMap;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.ddlutils.Platform;
 import org.apache.ddlutils.model.Database;
@@ -33,16 +36,16 @@
 public class CreateDatabaseCommand extends DatabaseCommand
 {
     /** The additional creation parameters */
-    private ListOrderedMap _parameters = new ListOrderedMap();
+    private ArrayList _parameters = new ArrayList();
 
     /**
      * Adds a parameter which is a name-value pair.
      * 
      * @param param The parameter
      */
-    public void addConfiguredParameter(NamedValue param)
+    public void addConfiguredParameter(Parameter param)
     {
-        _parameters.put(param.getName(), param.getValue());
+        _parameters.add(param);
     }
 
     /* (non-Javadoc)
@@ -58,20 +61,20 @@
         }
 
         Platform platform = getPlatform();
-
+        
         try
         {
             platform.createDatabase(dataSource.getDriverClassName(),
                                     dataSource.getUrl(),
                                     dataSource.getUsername(),
                                     dataSource.getPassword(),
-                                    _parameters);
+                                    getFilteredParameters(platform.getName()));
 
             task.log("Created database", Project.MSG_INFO);
         }
         catch (UnsupportedOperationException ex)
         {
-            task.log("Database platform "+getPlatform().getDatabaseName()+" does not support database creation via JDBC", Project.MSG_ERR);
+            task.log("Database platform "+getPlatform().getName()+" does not support database creation via JDBC", Project.MSG_ERR);
         }
         catch (Exception ex)
         {
@@ -84,5 +87,27 @@
                 task.log(ex.getLocalizedMessage(), Project.MSG_ERR);
             }
         }
+    }
+
+    /**
+     * Filters the parameters for the indicated platform.
+     * 
+     * @param platformName The name of the platform
+     * @return The filtered parameters
+     */
+    private Map getFilteredParameters(String platformName)
+    {
+        LinkedHashMap parameters = new LinkedHashMap();
+
+        for (Iterator it = _parameters.iterator(); it.hasNext();)
+        {
+            Parameter param = (Parameter)it.next();
+
+            if (param.isForPlatform(platformName))
+            {
+                parameters.put(param.getName(), param.getValue());
+            }
+        }
+        return parameters;
     }
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java Fri Sep 16 02:44:34 2005
@@ -53,7 +53,7 @@
         }
         catch (UnsupportedOperationException ex)
         {
-            task.log("Database platform "+getPlatform().getDatabaseName()+" does not support database dropping via JDBC", Project.MSG_ERR);
+            task.log("Database platform "+getPlatform().getName()+" does not support database dropping via JDBC", Project.MSG_ERR);
         }
         catch (Exception ex)
         {

Copied: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Parameter.java (from r289427, db/ddlutils/trunk/src/java/org/apache/ddlutils/task/NamedValue.java)
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Parameter.java?p2=db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Parameter.java&p1=db/ddlutils/trunk/src/java/org/apache/ddlutils/task/NamedValue.java&r1=289427&r2=289458&rev=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/NamedValue.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Parameter.java Fri Sep 16 02:44:34 2005
@@ -1,17 +1,25 @@
 package org.apache.ddlutils.task;
 
+import java.util.HashSet;
+import java.util.Set;
+import java.util.StringTokenizer;
+import org.apache.ddlutils.PlatformFactory;
+
 /**
- * A name-value pair.
+ * A parameter which consists of a name-value pair and an optional list of platforms
+ * for which the parameter is applicable.
  * 
  * @author <a href="mailto:tomdz@apache.org">Thomas Dudziak</a>
  * @version $Revision: 231306 $
  */
-public class NamedValue
+public class Parameter
 {
     /** The name */
     private String _name;
     /** The value */
     private String _value;
+    /** The platforms for which this parameter is applicable */
+    private Set _platforms = new HashSet();
 
     /**
      * Returns the name.
@@ -51,5 +59,44 @@
     public void setValue(String value)
     {
         _value = value;
+    }
+
+    /**
+     * Sets the platforms - a comma-separated list of platform names - for which this parameter shall be used.
+     * 
+     * @param platforms The platforms
+     */
+    public void setPlatforms(String platforms)
+    {
+        _platforms.clear();
+        if (platforms != null)
+        {
+            StringTokenizer tokenizer = new StringTokenizer(platforms, ",");
+
+            while (tokenizer.hasMoreTokens())
+            {
+                String platform = tokenizer.nextToken().trim();
+
+                if (PlatformFactory.isPlatformSupported(platform))
+                {
+                    _platforms.add(platform.toLowerCase());
+                }
+                else
+                {
+                    throw new IllegalArgumentException("Platform "+platform+" is not supported");
+                }
+            }
+        }
+    }
+
+    /**
+     * Determines whether this parameter is applicable for the indicated platform.
+     * 
+     * @param platformName The platform name
+     * @return <code>true</code> if this parameter is defined for the platform
+     */
+    public boolean isForPlatform(String platformName)
+    {
+        return _platforms.isEmpty() || _platforms.contains(platformName.toLowerCase());
     }
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToSpecifiedDatabaseCommand.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToSpecifiedDatabaseCommand.java?rev=289458&r1=289457&r2=289458&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToSpecifiedDatabaseCommand.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToSpecifiedDatabaseCommand.java Fri Sep 16 02:44:34 2005
@@ -138,7 +138,7 @@
             }
             catch (Exception ex)
             {
-                throw new BuildException("Could not read data file "+schemaFile.getAbsolutePath(), ex);
+                throw new BuildException("Could not read data file "+schemaFile.getAbsolutePath()+": "+ex.getLocalizedMessage(), ex);
             }
         }
     }