Revision 43479

View differences:

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
8 8
import org.gvsig.fmap.dal.DataTypes;
9 9
import org.gvsig.fmap.dal.exception.DataException;
10 10
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11
import org.gvsig.fmap.dal.feature.FeatureReference;
11 12
import org.gvsig.fmap.dal.feature.FeatureType;
12 13
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
13 14
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices;
14 15
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider;
15 16
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
16
import org.gvsig.fmap.dal.resource.exception.AccessResourceException;
17 17
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
18 18
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCExecuteSQLException;
19 19
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCSQLException;
......
121 121
        try {
122 122
            st = conn.prepareStatement(sql);
123 123
            while (deleteds.hasNext()) {
124
                FeatureProvider featureProvider = (FeatureProvider) deleteds.next();
125
                sqlbuilder.setParameters(st, featureProvider);
124
                FeatureReference reference = (FeatureReference) deleteds.next();
125
                sqlbuilder.setParameters(st, reference);
126 126
                int nAffected = JDBCUtils.executeUpdate(st,sql);
127 127
                if (nAffected == 0) {
128 128
                    throw new JDBCUpdateWithoutChangesException(
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/JDBCSQLBuilderBase.java
3 3
import java.sql.PreparedStatement;
4 4
import java.util.ArrayList;
5 5
import java.util.List;
6
import org.gvsig.fmap.dal.feature.FeatureReference;
6 7
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
7 8
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
9
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices;
8 10
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
11
import org.gvsig.tools.service.spi.ProviderServices;
9 12

  
10 13
public class JDBCSQLBuilderBase extends SQLBuilderBase {
11 14

  
......
53 56
        }
54 57
    }
55 58

  
59
    public void setParameters(PreparedStatement st, FeatureReference reference) {
60
        try {
61
            
62
            List<Object> values = new ArrayList<>();
63
            for (Parameter parameter : this.getParameters()) {
64
                if (parameter.is_constant()) {
65
                    values.add(parameter.getValue());
66
                } else {
67
                    String name = parameter.getName();
68
                    values.add(((FeatureReferenceProviderServices)reference).getKeyValue(name));
69
                }
70
            }
71
            JDBCUtils.setObjects(st, values, this.geometry_support_type());
72
        } catch (Exception ex) {
73
            String f = "unknow";
74
            try {
75
                f = reference.toString();
76
            } catch (Exception ex2) {
77
                // Do nothing
78
            }
79
            throw new RuntimeException("Can't set parameters to prepared statement from the feature (" + f + ")", ex);
80
        }
81
    }
82

  
56 83
}

Also available in: Unified diff