Index: PerformChangesOperation.java
===================================================================
--- PerformChangesOperation.java	(revision 44057)
+++ PerformChangesOperation.java	(revision 44058)
@@ -23,14 +23,13 @@
 import org.gvsig.fmap.dal.store.jdbc.exception.JDBCUpdateWithoutChangesException;
 import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
 import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
+import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
 import org.gvsig.tools.dispose.Disposable;
 import org.gvsig.tools.dispose.DisposeUtils;
 
 public class PerformChangesOperation extends AbstractConnectionWritableOperation {
 
-    protected String dbName;
-    protected String schemaName;
-    protected String tableName;
+    protected TableReference table;
     protected FeatureType featureType;
     protected Iterator<FeatureReferenceProviderServices> deleteds;
     protected Iterator<FeatureStoreProvider.FeatureTypeChanged> featureTypesChanged;
@@ -40,25 +39,21 @@
     protected boolean typeChanged = false;
     
     public PerformChangesOperation(JDBCHelper helper) {
-        this(helper, null, null, null, null, null, null, null, null);
+        this(helper, null, null, null, null, null, null);
     }
 
     public PerformChangesOperation(JDBCHelper helper,
-            String dbName,
-            String schemaName,
-            String tableName,
+            TableReference table,
             FeatureType featureType,
             Iterator<FeatureReferenceProviderServices> deleteds,
             Iterator<FeatureProvider> inserteds,
             Iterator<FeatureProvider> updateds,
             Iterator<FeatureStoreProvider.FeatureTypeChanged> featureTypesChanged) {
         super(helper);
-        this.dbName = dbName;
         this.deleteds = deleteds;
         this.inserteds = inserteds;
         this.updateds = updateds;
-        this.schemaName = schemaName;
-        this.tableName = tableName;
+        this.table = table;
         this.featureType = featureType;
         this.featureTypesChanged = featureTypesChanged;
     }
@@ -71,31 +66,32 @@
     public Object perform(Connection conn) throws DataException {
         if (featureTypesChanged.hasNext()) {
             FeatureStoreProvider.FeatureTypeChanged item = featureTypesChanged.next();
-            this.performUpdateTable(conn, dbName, schemaName, tableName, item.getSource(), item.getTarget());
+            this.performUpdateTable(conn, table, item.getSource(), item.getTarget());
             typeChanged = true;
         } else {
             typeChanged = false;
         }
         if (deleteds.hasNext()) {
-            performDeletes(conn, dbName, schemaName, tableName, featureType, deleteds);
+            performDeletes(conn, table, featureType, deleteds);
         }
         if (updateds.hasNext()) {
-            performUpdates(conn, dbName, schemaName, tableName, featureType, updateds);
+            performUpdates(conn, table, featureType, updateds);
         }
         if (inserteds.hasNext()) {
-            performInserts(conn, dbName, schemaName, tableName, featureType, inserteds);
+            performInserts(conn, table, featureType, inserteds);
         }
         return true;
     }
     
     protected JDBCSQLBuilderBase buildDeleteSQL(
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType type
         ) {
         JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
-        sqlbuilder.delete().table().database(database).schema(schema).name(table);
+        sqlbuilder.delete().table()
+                .database(this.table.getDatabase())
+                .schema(this.table.getSchema())
+                .name(this.table.getTable());
         for (FeatureAttributeDescriptor attr : type) {
             if (attr.isPrimaryKey()) {
                 sqlbuilder.delete().where().and(
@@ -113,13 +109,11 @@
     }
 
     public void performDeletes(Connection conn,
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType type,
             Iterator<FeatureReferenceProviderServices> deleteds) throws DataException {
 
-        JDBCSQLBuilderBase sqlbuilder = buildDeleteSQL(database, schema, table, type);
+        JDBCSQLBuilderBase sqlbuilder = buildDeleteSQL(table, type);
 
         PreparedStatement st = null;
         Disposable paramsDisposer = null;
@@ -137,7 +131,7 @@
                     );
                 }
                 if (nAffected > 1) {
-                    logger.warn("Remove statement affectst to {} rows ( {} )",
+                    LOGGER.warn("Remove statement affectst to {} rows ( {} )",
                             nAffected, sql
                     );
                 }
@@ -151,14 +145,15 @@
     }
     
     protected JDBCSQLBuilderBase buildInsertSQL(
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType type
         ) {
         JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
 
-        sqlbuilder.insert().table().database(database).schema(schema).name(table);
+        sqlbuilder.insert().table()
+                .database(this.table.getDatabase())
+                .schema(this.table.getSchema())
+                .name(this.table.getTable());
         for (FeatureAttributeDescriptor attr : type) {
             if( attr.isAutomatic() ) {
                 continue;
@@ -179,12 +174,10 @@
     }
 
     public void performInserts(Connection conn,
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType type,
             Iterator<FeatureProvider> inserteds) throws DataException {
-        JDBCSQLBuilderBase sqlbuilder = buildInsertSQL(database, schema, table, type);
+        JDBCSQLBuilderBase sqlbuilder = buildInsertSQL(table, type);
 
         PreparedStatement st;
         Disposable paramsDisposer;
@@ -213,14 +206,15 @@
     }
 
     protected JDBCSQLBuilderBase buildUpdateSQL(
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType type
         ) {
         JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
 
-        sqlbuilder.update().table().database(database).schema(schema).name(table);
+        sqlbuilder.update().table()
+                .database(this.table.getDatabase())
+                .schema(this.table.getSchema())
+                .name(this.table.getTable());
         for (FeatureAttributeDescriptor attr : type) {
             if (attr.isPrimaryKey()) {
                 sqlbuilder.update().where().and(
@@ -250,13 +244,11 @@
     }
     
     public void performUpdates(Connection conn,
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType type,
             Iterator<FeatureProvider> updateds) throws DataException {
 
-        JDBCSQLBuilderBase sqlbuilder = buildUpdateSQL(database, schema, table, type);
+        JDBCSQLBuilderBase sqlbuilder = buildUpdateSQL(table, type);
         
         PreparedStatement st = null;
         Disposable paramsDisposer = null;
@@ -279,14 +271,15 @@
     }
 
     protected List<String> buildUpdateTableSQL(
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType original,
             FeatureType target
         ) {
         JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
-        sqlbuilder.alter_table().table().database(database).schema(schema).name(table);
+        sqlbuilder.alter_table().table()
+                .database(this.table.getDatabase())
+                .schema(this.table.getSchema())
+                .name(this.table.getTable());
 
         for (FeatureAttributeDescriptor attrOrgiginal : original) {
             FeatureAttributeDescriptor attrTarget = target.getAttributeDescriptor(
@@ -387,9 +380,7 @@
     }
 
     protected List<String> buildCreateIndexSQL(
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType original,
             FeatureType target
         ) {
@@ -417,7 +408,10 @@
                 sqlbuilder.create_index().if_not_exist();
                 sqlbuilder.create_index().name("idx_" + table + "_" + attrTarget.getName());
                 sqlbuilder.create_index().column(attrTarget.getName());
-                sqlbuilder.create_index().table().database(database).schema(schema).name(table);
+                sqlbuilder.create_index().table()
+                    .database(this.table.getDatabase())
+                    .schema(this.table.getSchema())
+                    .name(this.table.getTable());
                 sqls.addAll(sqlbuilder.create_index().toStrings());
             }
         }
@@ -425,16 +419,14 @@
     }
     
     public void performUpdateTable(Connection conn,
-            String database,
-            String schema,
-            String table,
+            TableReference table,
             FeatureType original,
             FeatureType target) throws DataException {
         
         ArrayList<String> sqls = new ArrayList<>();
         
-        sqls.addAll(buildUpdateTableSQL(database, schema, table, original, target));
-        sqls.addAll(buildCreateIndexSQL(database, schema, table, original, target));
+        sqls.addAll(buildUpdateTableSQL(table, original, target));
+        sqls.addAll(buildCreateIndexSQL(table, original, target));
 
         if( !CollectionUtils.isEmpty(sqls) ) {
             Statement st = null;
