db-ddlutils-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From to...@apache.org
Subject svn commit: r407559 - /db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java
Date Thu, 18 May 2006 14:20:54 GMT
Author: tomdz
Date: Thu May 18 07:20:54 2006
New Revision: 407559

URL: http://svn.apache.org/viewvc?rev=407559&view=rev
Log:
Added new change object for the change of the column order

Added:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java

Added: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java?rev=407559&view=auto
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java (added)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java Thu May
18 07:20:54 2006
@@ -0,0 +1,81 @@
+package org.apache.ddlutils.alteration;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.apache.ddlutils.model.Column;
+import org.apache.ddlutils.model.Database;
+import org.apache.ddlutils.model.Table;
+
+/**
+ * Represents the change of the order of the columns of a table.
+ * 
+ * @version $Revision: $
+ */
+public class ColumnOrderChange extends TableChangeImplBase
+{
+    /** The map containing the new positions keyed by the source columns. */
+    private Map _newPositions;
+
+    /**
+     * Creates a new change object.
+     * 
+     * @param table        The table whose primary key is to be changed
+     * @param newPositions The map containing the new positions keyed by the source columns
+     */
+    public ColumnOrderChange(Table table, Map newPositions)
+    {
+        super(table);
+        _newPositions = newPositions;
+    }
+
+    /**
+     * Returns the new position of the given source column.
+     *
+     * @return The new position or -1 if no position is marked for the column
+     */
+    public int getNewPosition(Column sourceColumn)
+    {
+        Integer newPos = (Integer)_newPositions.get(sourceColumn);
+
+        return newPos == null ? -1 : newPos.intValue();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void apply(Database database)
+    {
+        Table     table      = database.findTable(getChangedTable().getName());
+        ArrayList newColumns = new ArrayList(table.getColumnCount());
+
+        for (int idx = 0; idx < table.getColumnCount(); idx++)
+        {
+            Column column = table.getColumn(idx);
+            int    newPos = getNewPosition(column);
+
+            newColumns.set(newPos < 0 ? idx : newPos, column);
+        }
+        for (int idx = 0; idx < table.getColumnCount(); idx++)
+        {
+            table.removeColumn(idx);
+        }
+        table.addColumns(newColumns);
+    }
+}



Mime
View raw message