Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureAttributeDescriptor.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureAttributeDescriptor.java	(revision 43361)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureAttributeDescriptor.java	(revision 43362)
@@ -266,6 +266,9 @@
 
     public EditableFeatureAttributeDescriptor setIsAutomatic(boolean isAutomatic) {
         this.isAutomatic = isAutomatic;
+        if( isAutomatic ) {
+            this.setHidden(true);
+        }
         return this;
     }
     
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureAttributeDescriptor.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureAttributeDescriptor.java	(revision 43361)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureAttributeDescriptor.java	(revision 43362)
@@ -124,6 +124,7 @@
         this.geometrySubType = Geometry.SUBTYPES.UNKNOWN;
         this.additionalInfo = null;
         this.isAutomatic = false;
+        this.hidden = false;
     }
 
     protected DefaultFeatureAttributeDescriptor(
@@ -172,6 +173,7 @@
         this.indexed = other.indexed;
         this.isIndexAscending = other.isIndexAscending;
         this.allowIndexDuplicateds = other.allowIndexDuplicateds;
+        this.hidden = other.hidden;
     }
     
     @Override
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc/JDBCStoreParameters.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc/JDBCStoreParameters.java	(revision 43361)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc/JDBCStoreParameters.java	(revision 43362)
@@ -25,6 +25,7 @@
 package org.gvsig.fmap.dal.store.jdbc;
 
 import java.text.MessageFormat;
+import org.apache.commons.lang3.StringUtils;
 
 import org.gvsig.fmap.dal.store.db.DBStoreParameters;
 
@@ -238,7 +239,7 @@
 	 * @return
 	 */
 	public String tableID() {
-		if (this.getSchema() == null || this.getSchema() == "") {
+		if (  StringUtils.isEmpty(this.getSchema()) ) {
             return escapeName(this.getTable());
 		}
         return escapeName(this.getSchema()) + "." + escapeName(this.getTable());
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/PerformChangesOperation.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/PerformChangesOperation.java	(revision 43361)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/PerformChangesOperation.java	(revision 43362)
@@ -65,7 +65,7 @@
     public final Object perform(Connection conn) throws DataException {
         if (featureTypesChanged.hasNext()) {
             FeatureStoreProvider.FeatureTypeChanged item = featureTypesChanged.next();
-            this.performUpdateTable(conn, tableName, item.getSource(), item.getTarget());
+            this.performUpdateTable(conn, dbName, schemaName, tableName, item.getSource(), item.getTarget());
             typeChanged = true;
         } else {
             typeChanged = false;
@@ -82,14 +82,13 @@
         return true;
     }
     
-    public void performDeletes(Connection conn,
+    protected JDBCSQLBuilderBase buildDeleteSQL(
             String database,
             String schema,
             String table,
-            FeatureType type,
-            Iterator<FeatureReferenceProviderServices> deleteds) throws DataException {
-
-        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
+            FeatureType type
+        ) {
+        JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
         sqlbuilder.delete().table().database(database).schema(schema).name(table);
         for (FeatureAttributeDescriptor attr : type) {
             if (attr.isPrimaryKey()) {
@@ -104,7 +103,18 @@
         if (!sqlbuilder.delete().has_where() ) {
             throw new RuntimeException("Operation requires missing pk");
         }
+        return sqlbuilder;
+    }
 
+    public void performDeletes(Connection conn,
+            String database,
+            String schema,
+            String table,
+            FeatureType type,
+            Iterator<FeatureReferenceProviderServices> deleteds) throws DataException {
+
+        JDBCSQLBuilderBase sqlbuilder = buildDeleteSQL(database, schema, table, type);
+
         PreparedStatement st = null;
         String sql = sqlbuilder.delete().toString();
         try {
@@ -131,17 +141,20 @@
             JDBCUtils.closeQuietly(st);
         }
     }
-
-    public void performInserts(Connection conn,
+    
+    protected JDBCSQLBuilderBase buildInsertSQL(
             String database,
             String schema,
             String table,
-            FeatureType type,
-            Iterator<FeatureProvider> inserteds) throws DataException {
+            FeatureType type
+        ) {
         JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
 
         sqlbuilder.insert().table().database(database).schema(schema).name(table);
         for (FeatureAttributeDescriptor attr : type) {
+            if( attr.isAutomatic() ) {
+                continue;
+            }
             if (attr.getType() == DataTypes.GEOMETRY) {
                 sqlbuilder.insert().column().name(attr.getName()).with_value(
                     sqlbuilder.parameter(attr.getName()).as_geometry_variable().srs(
@@ -154,7 +167,17 @@
                 );
             }
         }
+        return sqlbuilder;
+    }
 
+    public void performInserts(Connection conn,
+            String database,
+            String schema,
+            String table,
+            FeatureType type,
+            Iterator<FeatureProvider> inserteds) throws DataException {
+        JDBCSQLBuilderBase sqlbuilder = buildInsertSQL(database, schema, table, type);
+
         PreparedStatement st;
         String sql = sqlbuilder.insert().toString();
         try {
@@ -177,14 +200,14 @@
         }
     }
 
-    public void performUpdates(Connection conn,
+    protected JDBCSQLBuilderBase buildUpdateSQL(
             String database,
             String schema,
             String table,
-            FeatureType type,
-            Iterator<FeatureProvider> updateds) throws DataException {
+            FeatureType type
+        ) {
+        JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
 
-        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
         sqlbuilder.update().table().database(database).schema(schema).name(table);
         for (FeatureAttributeDescriptor attr : type) {
             if (attr.isPrimaryKey()) {
@@ -211,7 +234,18 @@
         if (!sqlbuilder.update().has_where() ) {
             throw new RuntimeException("Operation requires missing pk");
         }
+        return sqlbuilder;
+    }
+    
+    public void performUpdates(Connection conn,
+            String database,
+            String schema,
+            String table,
+            FeatureType type,
+            Iterator<FeatureProvider> updateds) throws DataException {
 
+        JDBCSQLBuilderBase sqlbuilder = buildUpdateSQL(database, schema, table, type);
+        
         PreparedStatement st = null;
         String sql = sqlbuilder.update().toString();
         try {
@@ -230,14 +264,16 @@
         }
     }
 
-    public void performUpdateTable(Connection conn,
+    protected JDBCSQLBuilderBase buildUpdateTableSQL(
+            String database,
+            String schema,
             String table,
             FeatureType original,
-            FeatureType target) throws DataException {
+            FeatureType target
+        ) {
+        JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
+        sqlbuilder.update().table().database(database).schema(schema).name(table);
 
-        SQLBuilderBase sqlbuilder = createSQLBuilder();
-        sqlbuilder.update().table().name(table);
-
         for (FeatureAttributeDescriptor attrOrgiginal : original) {
             FeatureAttributeDescriptor attrTarget = target.getAttributeDescriptor(
                     attrOrgiginal.getName()
@@ -273,6 +309,17 @@
                 );
             }
         }
+        return sqlbuilder;
+    }
+
+    public void performUpdateTable(Connection conn,
+            String database,
+            String schema,
+            String table,
+            FeatureType original,
+            FeatureType target) throws DataException {
+
+        SQLBuilderBase sqlbuilder = buildUpdateTableSQL(null, null, table, original, target);
         Statement st = null;
         try {
             st = conn.createStatement();
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultEditingNotificationManager.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultEditingNotificationManager.java	(revision 43361)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultEditingNotificationManager.java	(revision 43362)
@@ -241,7 +241,7 @@
 
         for (FeatureAttributeDescriptor attrDesc : attributeDescriptors) {
             if ( attrDesc.isAutomatic() ) {
-                break;
+                continue;
             }
             if ( (attrDesc.isPrimaryKey() || !attrDesc.allowNull())
                     && feature.get(attrDesc.getName()) == null ) {
@@ -287,10 +287,10 @@
                 );
                 dialog.show(WindowManager.MODE.DIALOG);
                 if( dialog.getAction() == WindowManager_v2.BUTTON_OK ) {
-                    this.userCancelValue = true;
-                } else {
                     form.fetch((EditableFeature) feature);
                     this.userCancelValue = false;
+                } else {
+                    this.userCancelValue = true;
                 }
                 
             } catch (Exception ex) {
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeatureForm.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeatureForm.java	(revision 43361)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeatureForm.java	(revision 43362)
@@ -35,7 +35,7 @@
     
     @Override
     public void setStore(FeatureStore store) {
-        if( this.store.equals(store) ) {
+        if( java.util.Objects.equals(this.store, store) ) {
             return;
         }
         this.store = store;
