Revision 43629 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
JDBCSQLBuilderBase.java | ||
---|---|---|
1 | 1 |
package org.gvsig.fmap.dal.store.jdbc2.spi; |
2 | 2 |
|
3 | 3 |
import java.sql.PreparedStatement; |
4 |
import java.sql.SQLException; |
|
4 | 5 |
import java.util.ArrayList; |
5 | 6 |
import java.util.List; |
6 | 7 |
import org.gvsig.fmap.dal.feature.FeatureReference; |
7 | 8 |
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase; |
8 | 9 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
9 | 10 |
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices; |
10 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
|
|
11 |
import org.gvsig.tools.service.spi.ProviderServices;
|
|
11 |
import org.gvsig.fmap.geom.Geometry;
|
|
12 |
import org.gvsig.tools.dispose.Disposable;
|
|
12 | 13 |
|
13 | 14 |
public class JDBCSQLBuilderBase extends SQLBuilderBase { |
14 | 15 |
|
... | ... | |
33 | 34 |
} |
34 | 35 |
} |
35 | 36 |
|
36 |
public void setParameters(PreparedStatement st, FeatureProvider feature) {
|
|
37 |
public Disposable setParameters(PreparedStatement st, FeatureProvider feature) {
|
|
37 | 38 |
try { |
38 | 39 |
List<Object> values = new ArrayList<>(); |
39 | 40 |
for (Parameter parameter : this.getParameters()) { |
... | ... | |
44 | 45 |
values.add(feature.get(name)); |
45 | 46 |
} |
46 | 47 |
} |
47 |
JDBCUtils.setObjects(st, values, this.geometry_support_type());
|
|
48 |
return this.setStatementParameters(st, values, this.geometry_support_type());
|
|
48 | 49 |
} catch (Exception ex) { |
49 | 50 |
String f = "unknow"; |
50 | 51 |
try { |
... | ... | |
56 | 57 |
} |
57 | 58 |
} |
58 | 59 |
|
59 |
public void setParameters(PreparedStatement st, FeatureReference reference) {
|
|
60 |
public Disposable setParameters(PreparedStatement st, FeatureReference reference) {
|
|
60 | 61 |
try { |
61 | 62 |
|
62 | 63 |
List<Object> values = new ArrayList<>(); |
... | ... | |
68 | 69 |
values.add(((FeatureReferenceProviderServices)reference).getKeyValue(name)); |
69 | 70 |
} |
70 | 71 |
} |
71 |
JDBCUtils.setObjects(st, values, this.geometry_support_type());
|
|
72 |
return this.setStatementParameters(st, values, this.geometry_support_type());
|
|
72 | 73 |
} catch (Exception ex) { |
73 | 74 |
String f = "unknow"; |
74 | 75 |
try { |
... | ... | |
80 | 81 |
} |
81 | 82 |
} |
82 | 83 |
|
84 |
public Disposable setStatementParameters( |
|
85 |
PreparedStatement st, |
|
86 |
List values, |
|
87 |
GeometrySupportType geometrySupportType) throws SQLException { |
|
88 |
|
|
89 |
if (values == null) { |
|
90 |
return new Disposable() { |
|
91 |
@Override |
|
92 |
public void dispose() { |
|
93 |
} |
|
94 |
}; |
|
95 |
} |
|
96 |
try { |
|
97 |
byte[] bytes; |
|
98 |
int columnIndex = 1; |
|
99 |
for (Object value : values) { |
|
100 |
if (value instanceof Geometry) { |
|
101 |
switch(geometrySupportType) { |
|
102 |
case WKT: |
|
103 |
value = ((Geometry) value).convertToWKT(); |
|
104 |
st.setObject(columnIndex, value); |
|
105 |
break; |
|
106 |
case NATIVE: |
|
107 |
case WKB: |
|
108 |
bytes = ((Geometry) value).convertToWKB(); |
|
109 |
st.setBytes(columnIndex, bytes); |
|
110 |
break; |
|
111 |
case EWKB: |
|
112 |
bytes = ((Geometry) value).convertToEWKB(); |
|
113 |
st.setBytes(columnIndex, bytes); |
|
114 |
break; |
|
115 |
} |
|
116 |
} else { |
|
117 |
st.setObject(columnIndex, value); |
|
118 |
} |
|
119 |
columnIndex++; |
|
120 |
} |
|
121 |
return new Disposable() { |
|
122 |
@Override |
|
123 |
public void dispose() { |
|
124 |
} |
|
125 |
}; |
|
126 |
} catch(Exception ex) { |
|
127 |
throw new SQLException("Can't set values for the prepared statement.", ex); |
|
128 |
} |
|
129 |
} |
|
83 | 130 |
} |
Also available in: Unified diff