Author: oltka
Date: Wed Feb 15 14:30:32 2012
New Revision: 1244500

URL: http://svn.apache.org/viewvc?rev=1244500&view=rev
Log:
CAY-1666 fix some problem with merge

Added:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java
Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java?rev=1244500&r1=1244499&r2=1244500&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
 Wed Feb 15 14:30:32 2012
@@ -38,9 +38,11 @@ import org.apache.cayenne.dba.JdbcAdapte
 import org.apache.cayenne.dba.PkGenerator;
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.dba.TypesMapping;
+import org.apache.cayenne.dba.sybase.SybaseMergerFactory;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.merge.MergerFactory;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLAction;
 
@@ -209,4 +211,14 @@ public class IngresAdapter extends JdbcA
             super.bindParameter(statement, object, pos, sqlType, scale);
         }
     }
+    
+    @Override
+    public MergerFactory mergerFactory() {
+        return new IngresMergerFactory();
+    }
+    
+//    @Override
+//    public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute 
column) {
+//        super.createTableAppendColumn(sqlBuffer, column);
+//    }
 }

Added: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java?rev=1244500&view=auto
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java
 (added)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java
 Wed Feb 15 14:30:32 2012
@@ -0,0 +1,107 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ ****************************************************************/
+package org.apache.cayenne.dba.ingres;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
+import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.merge.DropColumnToDb;
+import org.apache.cayenne.merge.DropRelationshipToDb;
+import org.apache.cayenne.merge.MergerFactory;
+import org.apache.cayenne.merge.MergerToken;
+import org.apache.cayenne.merge.SetColumnTypeToDb;
+
+
+public class IngresMergerFactory extends MergerFactory {
+    
+    @Override
+    public MergerToken createSetColumnTypeToDb(
+            final DbEntity entity,
+            DbAttribute columnOriginal,
+            final DbAttribute columnNew) {
+
+        return new SetColumnTypeToDb(entity, columnOriginal, columnNew) {
+
+            @Override
+            protected void appendPrefix(StringBuffer sqlBuffer, 
QuotingStrategy context) {
+                sqlBuffer.append("ALTER TABLE ");
+                sqlBuffer.append(context.quoteFullyQualifiedName(entity));
+                sqlBuffer.append(" ALTER COLUMN ");
+                sqlBuffer.append(context.quoteString(columnNew.getName()));
+                sqlBuffer.append(" ");
+           }
+        };
+    }
+
+    @Override
+    public MergerToken createDropColumnToDb(DbEntity entity, DbAttribute 
column) {
+        return new DropColumnToDb(entity, column) {
+
+            @Override
+            public List<String> createSql(DbAdapter adapter) {
+                StringBuilder buf = new StringBuilder();
+                QuotingStrategy context = 
adapter.getQuotingStrategy(getEntity()
+                        .getDataMap()
+                        .isQuotingSQLIdentifiers());
+                buf.append("ALTER TABLE ");
+                buf.append(context.quoteFullyQualifiedName(getEntity()));
+                buf.append(" DROP COLUMN ");
+                buf.append(context.quoteString(getColumn().getName()));
+                buf.append(" RESTRICT ");
+
+                return Collections.singletonList(buf.toString());
+            }
+
+        };
+    }
+    
+    @Override
+    public MergerToken createDropRelationshipToDb(
+            final DbEntity entity,
+            DbRelationship rel) {
+
+        return new DropRelationshipToDb(entity, rel) {
+
+            @Override
+            public List<String> createSql(DbAdapter adapter) {
+                String fkName = getFkName();
+                
+                if (fkName == null) {
+                    return Collections.emptyList();
+                }
+                QuotingStrategy context = 
adapter.getQuotingStrategy(getEntity()
+                        .getDataMap()
+                        .isQuotingSQLIdentifiers());
+                StringBuilder buf = new StringBuilder();
+                buf.append("ALTER TABLE ");
+                buf.append(context.quoteFullyQualifiedName(getEntity()));
+                buf.append(" DROP CONSTRAINT ");
+                buf.append(fkName);
+                buf.append(" RESTRICT ");
+
+                return Collections.singletonList(buf.toString());
+            }
+        };
+    }
+}


Reply via email to