Revision 19738
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/DataSourceDBDriverJDBCParameters.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc; |
|
2 |
|
|
3 |
import java.sql.Connection; |
|
4 |
|
|
5 |
import org.gvsig.data.IDataSourceParameters; |
|
6 |
|
|
7 |
public abstract class DataSourceDBDriverJDBCParameters implements |
|
8 |
IDataSourceParameters { |
|
9 |
|
|
10 |
protected String url = null; |
|
11 |
protected String user = null; |
|
12 |
protected String passw = null; |
|
13 |
|
|
14 |
public String getPassw() { |
|
15 |
return passw; |
|
16 |
} |
|
17 |
public void setPassw(String passw) { |
|
18 |
this.passw = passw; |
|
19 |
} |
|
20 |
public String getUrl() { |
|
21 |
return url; |
|
22 |
} |
|
23 |
public void setUrl(String url) { |
|
24 |
this.url = url; |
|
25 |
} |
|
26 |
public String getUser() { |
|
27 |
return user; |
|
28 |
} |
|
29 |
public void setUser(String user) { |
|
30 |
this.user = user; |
|
31 |
} |
|
32 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/DBFeatureType.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.sql.Connection; |
4 | 4 |
|
5 |
import org.gvsig.data.spatialprovisional.IExtent; |
|
6 | 5 |
import org.gvsig.data.vectorial.DefaultFeatureType; |
7 | 6 |
import org.gvsig.data.vectorial.IFeatureType; |
8 | 7 |
|
8 |
import com.iver.cit.gvsig.fmap.core.extent.IExtent; |
|
9 |
|
|
9 | 10 |
public class DBFeatureType extends DefaultFeatureType { |
10 | 11 |
private int dimension=2; |
11 | 12 |
private String tableID; |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/DBStoreJDBCParameters.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc; |
|
2 |
|
|
3 |
public abstract class DBStoreJDBCParameters extends |
|
4 |
DataStoreDBParameters { |
|
5 |
|
|
6 |
public abstract String getUrl(); |
|
7 |
|
|
8 |
|
|
9 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2DriverParameters.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
|
2 |
|
|
3 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBDriverJDBCParameters; |
|
4 |
import org.gvsig.data.spatialprovisional.IExtent; |
|
5 |
|
|
6 |
public class H2DriverParameters extends DBDriverJDBCParameters { |
|
7 |
|
|
8 |
private IExtent workingArea=null; |
|
9 |
private String SRISD = null; |
|
10 |
private String geometryField=null; |
|
11 |
|
|
12 |
|
|
13 |
public String getGeometryField() { |
|
14 |
return geometryField; |
|
15 |
} |
|
16 |
|
|
17 |
public void setGeometryField(String geometryColumn) { |
|
18 |
this.geometryField = geometryColumn; |
|
19 |
} |
|
20 |
|
|
21 |
public H2DriverParameters(){ |
|
22 |
super(); |
|
23 |
} |
|
24 |
|
|
25 |
public String getUrl() { |
|
26 |
return H2DriverUtils.getJDBCUrl(this.getHost(), this.getDb()); |
|
27 |
} |
|
28 |
|
|
29 |
public String getDataStoreName() { |
|
30 |
return H2Driver.DRIVER_NAME; |
|
31 |
} |
|
32 |
|
|
33 |
public String tableID(){ |
|
34 |
if (this.getSchema() == null || this.getSchema() == "") |
|
35 |
return this.getTableName(); |
|
36 |
return this.getSchema()+"."+this.getTableName(); |
|
37 |
} |
|
38 |
|
|
39 |
public String getSRISD() { |
|
40 |
return SRISD; |
|
41 |
} |
|
42 |
|
|
43 |
public void setSRISD(String srisd) { |
|
44 |
SRISD = srisd; |
|
45 |
} |
|
46 |
|
|
47 |
public IExtent getWorkingArea() { |
|
48 |
return workingArea; |
|
49 |
} |
|
50 |
|
|
51 |
public void setWorkingArea(IExtent workingArea) { |
|
52 |
this.workingArea = workingArea; |
|
53 |
} |
|
54 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2Driver.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
|
2 |
|
|
3 |
import java.sql.Connection; |
|
4 |
import java.sql.ResultSet; |
|
5 |
import java.sql.ResultSetMetaData; |
|
6 |
import java.sql.Statement; |
|
7 |
import java.util.Iterator; |
|
8 |
import java.util.Locale; |
|
9 |
|
|
10 |
import org.gvsig.data.datastores.vectorial.driver.AbstractDriver; |
|
11 |
import org.gvsig.data.datastores.vectorial.driver.IDriverParameters; |
|
12 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesReader; |
|
13 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesWriter; |
|
14 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBFeatureType; |
|
15 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.exception.SQLException; |
|
16 |
import org.gvsig.data.exception.CloseException; |
|
17 |
import org.gvsig.data.exception.InitializeException; |
|
18 |
import org.gvsig.data.exception.OpenException; |
|
19 |
import org.gvsig.data.exception.ReadException; |
|
20 |
import org.gvsig.data.spatialprovisional.IExtent; |
|
21 |
import org.gvsig.data.vectorial.IFeature; |
|
22 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
|
23 |
import org.gvsig.data.vectorial.IFeatureCollection; |
|
24 |
import org.gvsig.data.vectorial.IFeatureID; |
|
25 |
import org.gvsig.data.vectorial.IFeatureType; |
|
26 |
import org.gvsig.data.vectorial.expansionadapter.FeatureManager; |
|
27 |
import org.gvsig.metadata.IMetadata; |
|
28 |
import org.gvsig.metadata.IMetadataManager; |
|
29 |
import org.gvsig.metadata.MetadataManager; |
|
30 |
|
|
31 |
|
|
32 |
public class H2Driver extends AbstractDriver { |
|
33 |
public static final String DRIVER_NAME = "h2"; |
|
34 |
protected static Locale ukLocale = new Locale("en", "UK"); // English, UK version |
|
35 |
private DBFeatureType featureType; |
|
36 |
protected IMetadata metadata; |
|
37 |
private Connection connection = null; |
|
38 |
private String sqlSelectPart; //sqlOrig |
|
39 |
private String baseWhereClause = null; |
|
40 |
private String tableId; |
|
41 |
private String baseOrder = null; |
|
42 |
|
|
43 |
private String sql; |
|
44 |
|
|
45 |
private ResultSetMetaData rsMetaData; |
|
46 |
private int numReg=-1; |
|
47 |
|
|
48 |
H2DriverParameters getParametersH2(){ |
|
49 |
return (H2DriverParameters)this.parameters; |
|
50 |
} |
|
51 |
|
|
52 |
Connection getConnection(){ |
|
53 |
// FIXME: OJO REsource manager |
|
54 |
return this.connection; |
|
55 |
|
|
56 |
} |
|
57 |
|
|
58 |
public void init(IDriverParameters parameters) throws InitializeException { |
|
59 |
super.init(parameters); |
|
60 |
|
|
61 |
|
|
62 |
|
|
63 |
this.initConnection(); |
|
64 |
this.initFeatureType(); |
|
65 |
this.initSqlProperties(); |
|
66 |
|
|
67 |
|
|
68 |
|
|
69 |
|
|
70 |
|
|
71 |
//writer.setCreateTable(false); |
|
72 |
//writer.setWriteAll(false); |
|
73 |
//writer.initialize(lyrDef); |
|
74 |
|
|
75 |
} |
|
76 |
private void initConnection() throws InitializeException{ |
|
77 |
H2DriverParameters dParams = this.getParametersH2(); |
|
78 |
|
|
79 |
String dburl = dParams.getUrl(); |
|
80 |
String dbuser = dParams.getUser(); |
|
81 |
String dbpass = dParams.getPassw(); |
|
82 |
|
|
83 |
this.connection = H2DriverUtils.getConnection(dburl, dbuser, dbpass); |
|
84 |
|
|
85 |
} |
|
86 |
|
|
87 |
private void initSqlProperties() throws InitializeException{ |
|
88 |
H2DriverParameters dParams = this.getParametersH2(); |
|
89 |
sqlSelectPart = "SELECT " + dParams.getFields() +" FROM "+ dParams.tableID(); |
|
90 |
|
|
91 |
baseWhereClause = dParams.getBaseFilter(); |
|
92 |
|
|
93 |
if (dParams.getWorkingArea() != null){ |
|
94 |
String waWhere = getWorkingAreaWhere(dParams.getWorkingArea(), dParams.getSRISD()); |
|
95 |
if (waWhere != null){ |
|
96 |
baseWhereClause = "(("+baseWhereClause+") and "+waWhere +")"; |
|
97 |
} |
|
98 |
|
|
99 |
} |
|
100 |
|
|
101 |
this.baseOrder = dParams.getBaseOrder(); |
|
102 |
|
|
103 |
} |
|
104 |
|
|
105 |
private void initFeatureType() throws InitializeException{ |
|
106 |
H2DriverParameters dParams = this.getParametersH2(); |
|
107 |
this.tableId = dParams.tableID(); |
|
108 |
try { |
|
109 |
this.featureType = H2DriverUtils.getFeatureType(this.connection, dParams); |
|
110 |
} catch (ReadException e) { |
|
111 |
throw new InitializeException("H2Driver",e); |
|
112 |
} |
|
113 |
if (dParams.getFieldId() == null || dParams.getFieldId() == ""){ |
|
114 |
throw new InitializeException( |
|
115 |
"H2Driver", |
|
116 |
new Exception("Field Id not set")); |
|
117 |
|
|
118 |
} else if (this.featureType.getFieldIndex(dParams.getFieldId()) < 0) { |
|
119 |
throw new InitializeException( |
|
120 |
"H2Driver", |
|
121 |
new Exception("Field id '"+ dParams.getFieldId() +"' not Found")); |
|
122 |
|
|
123 |
|
|
124 |
} |
|
125 |
this.featureType.setFieldId(dParams.getFieldId()); |
|
126 |
|
|
127 |
if (dParams.getGeometryField() != null && dParams.getGeometryField() != ""){ |
|
128 |
if (this.featureType.getFieldIndex(dParams.getGeometryField())< 0){ |
|
129 |
// FIXME: crear una nueva excepcion?? |
|
130 |
throw new InitializeException( |
|
131 |
"H2Driver", |
|
132 |
new Exception("Geometry Field '"+ dParams.getGeometryField() +"' not Found")); |
|
133 |
|
|
134 |
} |
|
135 |
|
|
136 |
this.featureType.setDefaultGeometry(dParams.getGeometryField()); |
|
137 |
} |
|
138 |
|
|
139 |
} |
|
140 |
|
|
141 |
public void open() throws OpenException { |
|
142 |
// FIXME: Resource Manager |
|
143 |
} |
|
144 |
|
|
145 |
public void close() throws CloseException { |
|
146 |
// FIXME: Resource Manager |
|
147 |
try { |
|
148 |
connection.close(); |
|
149 |
} catch (java.sql.SQLException e) { |
|
150 |
throw new CloseException("H2",e); |
|
151 |
} |
|
152 |
} |
|
153 |
|
|
154 |
public void dispose() { |
|
155 |
// TODO Apéndice de método generado automáticamente |
|
156 |
|
|
157 |
} |
|
158 |
|
|
159 |
public IFeaturesWriter getFeaturesWriter() { |
|
160 |
IFeaturesWriter writer = new H2FeaturesWriter(); |
|
161 |
// writer.init(this); |
|
162 |
return writer; |
|
163 |
} |
|
164 |
|
|
165 |
|
|
166 |
public IFeaturesReader getFeatutesReader() { |
|
167 |
IFeaturesReader reader = new H2FeaturesReader(); |
|
168 |
reader.init(this); |
|
169 |
return reader; |
|
170 |
} |
|
171 |
|
|
172 |
public IFeature getFeatureByID(IFeatureID id) throws ReadException { |
|
173 |
return getFeatureByID(featureType,((H2FeatureID)id).getKey()); |
|
174 |
} |
|
175 |
|
|
176 |
public IFeatureType getFeatureType() { |
|
177 |
return featureType; |
|
178 |
} |
|
179 |
|
|
180 |
public IFeatureCollection getDataCollection(FeatureManager featureManager,IFeatureType type, String filter, String order) throws ReadException { |
|
181 |
if (type==null){ |
|
182 |
type=getFeatureType(); |
|
183 |
} |
|
184 |
return getFeatutesReader().getFeatures(featureManager,type,filter,order); |
|
185 |
} |
|
186 |
|
|
187 |
public String getName() { |
|
188 |
return DRIVER_NAME; |
|
189 |
} |
|
190 |
|
|
191 |
public boolean isEditable() { |
|
192 |
return true; |
|
193 |
} |
|
194 |
|
|
195 |
public boolean canAlterFeatureType() { |
|
196 |
return true; |
|
197 |
} |
|
198 |
public long getFeatureCount() throws ReadException{ |
|
199 |
if (numReg == -1) |
|
200 |
{ |
|
201 |
String sql = ""; |
|
202 |
try |
|
203 |
{ |
|
204 |
Statement s = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY); |
|
205 |
sql = "SELECT COUNT("+ |
|
206 |
this.featureType.getFieldId() + |
|
207 |
") AS NUMREG FROM " + |
|
208 |
this.tableId + " " + this.getBaseWhereClause(); |
|
209 |
ResultSet r = s.executeQuery(sql); |
|
210 |
r.next(); |
|
211 |
numReg = r.getInt(1); |
|
212 |
System.err.println("numReg = " + numReg); |
|
213 |
} |
|
214 |
catch (java.sql.SQLException e) |
|
215 |
{ |
|
216 |
throw new SQLException(sql,"getFeatureCount",e); |
|
217 |
} |
|
218 |
} |
|
219 |
|
|
220 |
return numReg; |
|
221 |
} |
|
222 |
|
|
223 |
public IMetadata getMetadata() { |
|
224 |
if (metadata==null){ |
|
225 |
IMetadataManager manager=MetadataManager.getManager(); |
|
226 |
metadata=manager.create(DRIVER_NAME); |
|
227 |
//TODO: Apadir los meteadatos |
|
228 |
} |
|
229 |
return metadata; |
|
230 |
} |
|
231 |
private String getWorkingAreaWhere(IExtent r, String strEPSG) { |
|
232 |
//TODO???? |
|
233 |
if (r==null){ |
|
234 |
return null; |
|
235 |
} |
|
236 |
return null; |
|
237 |
} |
|
238 |
|
|
239 |
private String getWorkingAreaWhereOld(IExtent r, String strEPSG) { |
|
240 |
|
|
241 |
// double xMin = r.getMinX(); |
|
242 |
// double yMin = r.getMinY(); |
|
243 |
// double xMax = r.getMaxX(); |
|
244 |
// double yMax = r.getMaxY(); |
|
245 |
|
|
246 |
//SELECT GEOM, ID FROM EJESLINSHP WHERE Intersects(envelope(createLineString(557393.5366216213, 4191291.9799999995, 867544.3433783785, 4519165.6899999995, SRID(GEOM))), GEOM) |
|
247 |
String SRID; |
|
248 |
try{ |
|
249 |
//Si el strEPSG no es válido se lanzara la excepción NumberFormatException que obligará a que el SRID se calcule cada vez |
|
250 |
Integer.getInteger(strEPSG); |
|
251 |
SRID=strEPSG; |
|
252 |
} |
|
253 |
catch(NumberFormatException except){ |
|
254 |
SRID="SRID("+this.featureType.getDefaultGeometry()+")"; |
|
255 |
} |
|
256 |
String wktBox="Intersects(envelope(createLineString("+r.getMinX()+", "+r.getMinY()+", "+r.getMaxX()+", "+r.getMaxY()+", "+ SRID +")), "+this.featureType.getDefaultGeometry()+")"; |
|
257 |
//String wktBox="Intersects(createEnvelope("+xMin+", "+yMin+", "+xMax+", "+yMax+", SRID("+this.geometryField+")), "+this.geometryField+")"; |
|
258 |
|
|
259 |
//USAR UNA GEOM ENVELOPE |
|
260 |
//String wktBox="Intersects(envelope("+this.geometryField+"), "+this.geometryField+")"; |
|
261 |
|
|
262 |
String sqlAux=""; |
|
263 |
/* |
|
264 |
if(getWhereClause().equals("")){ |
|
265 |
sqlAux="WHERE "+wktBox; |
|
266 |
} |
|
267 |
else if(getWhereClause().toUpperCase().trim().startsWith("WHERE")){ |
|
268 |
sqlAux=getWhereClause()+" AND "+wktBox; |
|
269 |
} |
|
270 |
else{ |
|
271 |
sqlAux="WHERE "+getWhereClause()+" AND "+wktBox; |
|
272 |
} |
|
273 |
*/ |
|
274 |
return sqlAux; |
|
275 |
|
|
276 |
} |
|
277 |
|
|
278 |
|
|
279 |
public IFeature getFeatureByID(IFeatureType featureType2, Object featureKey) throws ReadException{ |
|
280 |
ResultSet rs=null; |
|
281 |
try{ |
|
282 |
this.open(); |
|
283 |
Statement st=this.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); |
|
284 |
String sql = this.getSqlSelectPart() + " WHERE "+ H2DriverUtils.getFliterForID(this.featureType, featureKey); |
|
285 |
rs=st.executeQuery(sql); |
|
286 |
if (rs.isLast()) { |
|
287 |
|
|
288 |
return null; |
|
289 |
}else{ |
|
290 |
if(rs.next()){ |
|
291 |
return H2DriverUtils.createFeature(this, rs, this.featureType); |
|
292 |
} |
|
293 |
|
|
294 |
} |
|
295 |
|
|
296 |
} catch (java.sql.SQLException e) { |
|
297 |
e.printStackTrace(); |
|
298 |
throw new ReadException("H2Spatial Driver", e); |
|
299 |
} finally{ |
|
300 |
if (rs != null) |
|
301 |
try { |
|
302 |
rs.close(); |
|
303 |
} catch (java.sql.SQLException e) { |
|
304 |
// TODO ????? |
|
305 |
e.printStackTrace(); |
|
306 |
} |
|
307 |
} |
|
308 |
return null; |
|
309 |
} |
|
310 |
|
|
311 |
public String getBaseWhereClause() { |
|
312 |
return baseWhereClause; |
|
313 |
} |
|
314 |
|
|
315 |
public String getSql() { |
|
316 |
return sql; |
|
317 |
} |
|
318 |
|
|
319 |
public String getSqlSelectPart() { |
|
320 |
return sqlSelectPart; |
|
321 |
} |
|
322 |
|
|
323 |
public String getBaseOrder() { |
|
324 |
// TODO Auto-generated method stub |
|
325 |
return this.baseOrder; |
|
326 |
} |
|
327 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2DataSourceParameters.java | ||
---|---|---|
1 | 1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
2 | 2 |
|
3 |
import java.sql.Connection;
|
|
3 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DataSourceDBDriverJDBCParametersOld;
|
|
4 | 4 |
|
5 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.ConnectionJDBC; |
|
6 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DataSourceDBDriverJDBCParameters; |
|
5 |
public class H2DataSourceParameters extends DataSourceDBDriverJDBCParametersOld { |
|
7 | 6 |
|
8 |
public class H2DataSourceParameters extends DataSourceDBDriverJDBCParameters { |
|
9 |
|
|
10 | 7 |
public String getDataSourceName() { |
11 | 8 |
return H2DataSource.DATASOURCE_NAME; |
12 | 9 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2StoreParameters.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
|
2 |
|
|
3 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBStoreJDBCParameters; |
|
4 |
import org.gvsig.data.spatialprovisional.IExtent; |
|
5 |
|
|
6 |
public class H2StoreParameters extends DBStoreJDBCParameters{ |
|
7 |
|
|
8 |
public String getDataStoreName() { |
|
9 |
return H2Store.DATASTORE_NAME; |
|
10 |
} |
|
11 |
private IExtent workingArea=null; |
|
12 |
private String SRISD = null; |
|
13 |
private String geometryField=null; |
|
14 |
|
|
15 |
|
|
16 |
public String getGeometryField() { |
|
17 |
return geometryField; |
|
18 |
} |
|
19 |
|
|
20 |
public void setGeometryField(String geometryColumn) { |
|
21 |
this.geometryField = geometryColumn; |
|
22 |
} |
|
23 |
|
|
24 |
public String getUrl() { |
|
25 |
return H2DriverUtils.getJDBCUrl(this.getHost(), this.getDb()); |
|
26 |
} |
|
27 |
|
|
28 |
public String tableID(){ |
|
29 |
if (this.getSchema() == null || this.getSchema() == "") |
|
30 |
return this.getTableName(); |
|
31 |
return this.getSchema()+"."+this.getTableName(); |
|
32 |
} |
|
33 |
|
|
34 |
public String getSRISD() { |
|
35 |
return SRISD; |
|
36 |
} |
|
37 |
|
|
38 |
public void setSRISD(String srisd) { |
|
39 |
SRISD = srisd; |
|
40 |
} |
|
41 |
|
|
42 |
public IExtent getWorkingArea() { |
|
43 |
return workingArea; |
|
44 |
} |
|
45 |
|
|
46 |
public void setWorkingArea(IExtent workingArea) { |
|
47 |
this.workingArea = workingArea; |
|
48 |
} |
|
49 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeaturesReader.java | ||
---|---|---|
1 | 1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
2 | 2 |
|
3 |
import org.gvsig.data.datastores.vectorial.driver.IDriver; |
|
4 | 3 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesReader; |
5 | 4 |
import org.gvsig.data.exception.ReadException; |
6 | 5 |
import org.gvsig.data.vectorial.IFeatureCollection; |
6 |
import org.gvsig.data.vectorial.IFeatureStore; |
|
7 | 7 |
import org.gvsig.data.vectorial.IFeatureType; |
8 | 8 |
import org.gvsig.data.vectorial.expansionadapter.FeatureManager; |
9 | 9 |
|
10 | 10 |
class H2FeaturesReader implements IFeaturesReader { |
11 |
private H2Driver driver;
|
|
12 |
public void init(IDriver driver) {
|
|
13 |
this.driver=(H2Driver)driver;
|
|
11 |
private H2Store store;
|
|
12 |
public void init(IFeatureStore store) {
|
|
13 |
this.store=(H2Store)store;
|
|
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
public IFeatureCollection getFeatures(FeatureManager featureManager, IFeatureType type, String filter, String order) throws ReadException { |
17 | 17 |
IFeatureCollection coll; |
18 | 18 |
if (featureManager == null){ |
19 |
coll=new H2FeatureCollection(driver,type,filter,order);
|
|
19 |
coll=new H2FeatureCollection(store,type,filter,order);
|
|
20 | 20 |
}else{ |
21 | 21 |
if ((order != null && order != "")){ |
22 |
coll=new H2FeatureCollectionWithFeatureID(featureManager,driver,type,filter,order);
|
|
22 |
coll=new H2FeatureCollectionWithFeatureID(featureManager,store,type,filter,order);
|
|
23 | 23 |
} else{ |
24 | 24 |
if (filter == null || filter == ""){ |
25 |
coll=new H2FeatureCollectionEditing(featureManager,driver,type);
|
|
25 |
coll=new H2FeatureCollectionEditing(featureManager,store,type);
|
|
26 | 26 |
} else { |
27 |
coll=new H2FeatureCollectionEditingFiltered(featureManager,driver,type,filter);
|
|
27 |
coll=new H2FeatureCollectionEditingFiltered(featureManager,store,type,filter);
|
|
28 | 28 |
} |
29 | 29 |
} |
30 | 30 |
|
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeatureCollection.java | ||
---|---|---|
26 | 26 |
protected DBFeatureType featureType; |
27 | 27 |
protected String filter; |
28 | 28 |
protected String totalFilter; |
29 |
protected H2Driver driver;
|
|
29 |
protected H2Store store;
|
|
30 | 30 |
protected ResultSet rs; |
31 | 31 |
private String order; |
32 | 32 |
private int numReg=-1; |
... | ... | |
35 | 35 |
private String totalOrder; |
36 | 36 |
private Connection connection; |
37 | 37 |
|
38 |
public H2FeatureCollection(H2Driver driver,IFeatureType type, String filter, String order) {
|
|
39 |
this.driver=driver;
|
|
38 |
public H2FeatureCollection(H2Store store,IFeatureType type, String filter, String order) {
|
|
39 |
this.store=store;
|
|
40 | 40 |
this.featureType=(DBFeatureType)type; |
41 | 41 |
this.filter=filter; |
42 | 42 |
this.order=order; |
43 | 43 |
this.calculateWhere(); |
44 | 44 |
this.calculateOrder(); |
45 | 45 |
|
46 |
this.sql = this.driver.getSqlSelectPart();
|
|
47 |
this.sqlCount = "Select count(" + type.getFieldId() +") From "+ this.driver.getParametersH2().tableID();
|
|
46 |
this.sql = this.store.getSqlSelectPart();
|
|
47 |
this.sqlCount = "Select count(" + type.getFieldId() +") From "+ ((H2StoreParameters)this.store.getParameters()).tableID();
|
|
48 | 48 |
if (!isStringEmpty(this.totalFilter)){ |
49 | 49 |
this.sql= this.sql + " Where " + this.totalFilter; |
50 | 50 |
this.sqlCount= this.sqlCount + " Where " + this.totalFilter; |
... | ... | |
55 | 55 |
} |
56 | 56 |
|
57 | 57 |
private ResultSet getNewResulset(String aSql) throws ReadException{ |
58 |
this.driver.open();
|
|
58 |
this.store.open();
|
|
59 | 59 |
|
60 |
this.connection = this.driver.getConnection();
|
|
60 |
this.connection = this.store.getConnection();
|
|
61 | 61 |
|
62 | 62 |
try { |
63 | 63 |
Statement st = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY); |
... | ... | |
75 | 75 |
} |
76 | 76 |
|
77 | 77 |
private void calculateWhere(){ |
78 |
if (isStringEmpty(this.driver.getBaseWhereClause())){
|
|
78 |
if (isStringEmpty(this.store.getBaseWhereClause())){
|
|
79 | 79 |
this.totalFilter = this.filter; |
80 | 80 |
} else { |
81 |
this.totalFilter = "(" + this.driver.getBaseWhereClause() + ") and " +this.filter;
|
|
81 |
this.totalFilter = "(" + this.store.getBaseWhereClause() + ") and " +this.filter;
|
|
82 | 82 |
} |
83 | 83 |
} |
84 | 84 |
|
85 | 85 |
private void calculateOrder(){ |
86 |
if (isStringEmpty(this.driver.getBaseOrder())){
|
|
86 |
if (isStringEmpty(this.store.getBaseOrder())){
|
|
87 | 87 |
this.totalOrder = this.order; |
88 | 88 |
} else { |
89 |
this.totalOrder = this.driver.getBaseOrder() + ", " +this.order;
|
|
89 |
this.totalOrder = this.store.getBaseOrder() + ", " +this.order;
|
|
90 | 90 |
} |
91 | 91 |
|
92 | 92 |
} |
... | ... | |
144 | 144 |
} catch (ReadException e) { |
145 | 145 |
throw new RuntimeException(e); |
146 | 146 |
} |
147 |
H2Iterator dbfIter=new H2Iterator(this.driver,this.featureType,r);
|
|
147 |
H2Iterator dbfIter=new H2Iterator(this.store,this.featureType,r);
|
|
148 | 148 |
return dbfIter; |
149 | 149 |
} |
150 | 150 |
|
... | ... | |
206 | 206 |
|
207 | 207 |
protected class H2Iterator implements Iterator{ |
208 | 208 |
private ResultSet rs; |
209 |
private H2Driver driver;
|
|
209 |
private H2Store store;
|
|
210 | 210 |
private DBFeatureType featureType; |
211 | 211 |
|
212 |
public H2Iterator(H2Driver driver,DBFeatureType featureType ,ResultSet rs){
|
|
212 |
public H2Iterator(H2Store store,DBFeatureType featureType ,ResultSet rs){
|
|
213 | 213 |
this.rs = rs; |
214 |
this.driver = driver;
|
|
214 |
this.store = store;
|
|
215 | 215 |
this.featureType = featureType; |
216 | 216 |
} |
217 | 217 |
|
... | ... | |
240 | 240 |
IFeature feature=null; |
241 | 241 |
try { |
242 | 242 |
if(rs.next()){ |
243 |
feature = H2DriverUtils.createFeature(this.driver, this.rs, this.featureType);
|
|
243 |
feature = H2DriverUtils.createFeature(this.store, this.rs, this.featureType);
|
|
244 | 244 |
} else { |
245 | 245 |
rs.close(); |
246 | 246 |
rs.getStatement().close(); |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeatureID.java | ||
---|---|---|
7 | 7 |
|
8 | 8 |
public class H2FeatureID implements IFeatureID{ |
9 | 9 |
private Object featureKey; |
10 |
private H2Driver driver;
|
|
10 |
private H2Store store;
|
|
11 | 11 |
|
12 |
public H2FeatureID(H2Driver driver,String featureIndex) {
|
|
12 |
public H2FeatureID(H2Store store,String featureIndex) {
|
|
13 | 13 |
this.featureKey=featureIndex; |
14 |
this.driver=driver;
|
|
14 |
this.store=store;
|
|
15 | 15 |
} |
16 | 16 |
public Object getKey(){ |
17 | 17 |
return featureKey; |
18 | 18 |
} |
19 | 19 |
public IFeature getFeature(IFeatureType featureType) throws ReadException { |
20 |
return driver.getFeatureByID(featureType, featureKey);
|
|
20 |
return store.getFeatureByID(featureType, featureKey);
|
|
21 | 21 |
} |
22 | 22 |
public boolean equals(Object obj) { |
23 | 23 |
if (obj instanceof H2FeatureID) |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2DataSource.java | ||
---|---|---|
1 | 1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
2 | 2 |
|
3 | 3 |
import java.sql.Connection; |
4 |
import java.sql.DriverManager; |
|
5 |
import java.sql.SQLException; |
|
6 | 4 |
|
7 | 5 |
import org.gvsig.data.DataSourceManager; |
8 | 6 |
import org.gvsig.data.IDataSourceParameters; |
9 | 7 |
import org.gvsig.data.IDataStore; |
10 | 8 |
import org.gvsig.data.IDataStoreParameters; |
11 | 9 |
import org.gvsig.data.datastores.vectorial.driver.IDriverStoreParameters; |
12 |
import org.gvsig.data.datastores.vectorial.driver.dbf.DBFDataSourceParameters; |
|
13 |
import org.gvsig.data.datastores.vectorial.driver.dxf.DXFDriverParameters; |
|
14 |
import org.gvsig.data.datastores.vectorial.driver.dxf.DXFFeaturesWriter; |
|
15 | 10 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.AbstractDataSourceDBDriverJDBC; |
16 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.exception.JDBCDriverNotFoundException; |
|
17 | 11 |
import org.gvsig.data.exception.InitializeException; |
18 | 12 |
import org.gvsig.data.exception.InitializeWriterException; |
19 |
import org.gvsig.data.exception.OpenException; |
|
20 | 13 |
import org.gvsig.data.exception.ReadException; |
21 | 14 |
import org.gvsig.data.vectorial.IFeatureType; |
22 | 15 |
|
... | ... | |
69 | 62 |
} |
70 | 63 |
|
71 | 64 |
public IDataStore createNewDataStore(IDataStoreParameters dsp, IFeatureType featureType) throws InitializeException, InitializeWriterException { |
72 |
H2FeaturesWriter.create((H2DriverParameters)((IDriverStoreParameters)dsp).getDriverParameters(),featureType);
|
|
65 |
H2FeaturesWriter.create((H2StoreParameters)dsp,featureType);
|
|
73 | 66 |
DataSourceManager dsm=DataSourceManager.getManager(); |
74 | 67 |
return dsm.createDataStore(dsp); |
75 | 68 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeatureCollectionEditingFiltered.java | ||
---|---|---|
26 | 26 |
protected DBFeatureType featureType; |
27 | 27 |
protected String totalFilter; |
28 | 28 |
protected String filter; |
29 |
protected H2Driver driver;
|
|
29 |
protected H2Store store;
|
|
30 | 30 |
protected ResultSet rs; |
31 | 31 |
private int numReg=-1; |
32 | 32 |
private String sql; |
... | ... | |
37 | 37 |
private FeatureFilterParser parser; |
38 | 38 |
|
39 | 39 |
|
40 |
public H2FeatureCollectionEditingFiltered(FeatureManager fm,H2Driver driver,IFeatureType type,String filter) {
|
|
40 |
public H2FeatureCollectionEditingFiltered(FeatureManager fm,H2Store store,IFeatureType type,String filter) {
|
|
41 | 41 |
this.featureManager=fm; |
42 |
this.driver=driver;
|
|
42 |
this.store=store;
|
|
43 | 43 |
this.featureType=(DBFeatureType)type; |
44 | 44 |
|
45 | 45 |
this.filter = filter; |
46 | 46 |
|
47 | 47 |
this.calculateWhere(); |
48 |
this.totalOrder = driver.getBaseOrder();
|
|
48 |
this.totalOrder = store.getBaseOrder();
|
|
49 | 49 |
|
50 |
this.sql = this.driver.getSqlSelectPart();
|
|
51 |
this.sqlCount = "Select count(" + type.getFieldId() +") From "+ this.driver.getParametersH2().tableID();
|
|
50 |
this.sql = this.store.getSqlSelectPart();
|
|
51 |
this.sqlCount = "Select count(" + type.getFieldId() +") From "+ ((H2StoreParameters)this.store.getParameters()).tableID();
|
|
52 | 52 |
if (!isStringEmpty(this.totalFilter)){ |
53 | 53 |
this.sql= this.sql + " Where " + this.totalFilter; |
54 | 54 |
this.sqlCount= this.sqlCount + " Where " + this.totalFilter; |
... | ... | |
63 | 63 |
} |
64 | 64 |
|
65 | 65 |
private void calculateWhere(){ |
66 |
if (isStringEmpty(this.driver.getBaseWhereClause())){
|
|
66 |
if (isStringEmpty(this.store.getBaseWhereClause())){
|
|
67 | 67 |
this.totalFilter = this.filter; |
68 | 68 |
} else { |
69 |
this.totalFilter = "(" + this.driver.getBaseWhereClause() + ") and " +this.filter;
|
|
69 |
this.totalFilter = "(" + this.store.getBaseWhereClause() + ") and " +this.filter;
|
|
70 | 70 |
} |
71 | 71 |
} |
72 | 72 |
|
73 | 73 |
private ResultSet getNewResulset(String aSql) throws ReadException{ |
74 |
this.driver.open();
|
|
74 |
this.store.open();
|
|
75 | 75 |
|
76 |
this.connection = this.driver.getConnection();
|
|
76 |
this.connection = this.store.getConnection();
|
|
77 | 77 |
|
78 | 78 |
try { |
79 | 79 |
Statement st = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY); |
... | ... | |
150 | 150 |
try{ |
151 | 151 |
ResultSet r=null; |
152 | 152 |
r = this.getNewResulset(this.sql); |
153 |
H2Iterator dbfIter=new H2Iterator(this.driver,r,this.featureType);
|
|
153 |
H2Iterator dbfIter=new H2Iterator(this.store,r,this.featureType);
|
|
154 | 154 |
return dbfIter; |
155 | 155 |
} catch (BaseException e){ |
156 | 156 |
throw new RuntimeException(e); |
... | ... | |
216 | 216 |
protected class H2Iterator implements Iterator{ |
217 | 217 |
private Iterator dbIter; |
218 | 218 |
private Iterator mIter; |
219 |
public H2Iterator(H2Driver driver, ResultSet rs, DBFeatureType featureType){
|
|
220 |
this.dbIter = new H2IteratorDB(driver,rs,featureType);
|
|
219 |
public H2Iterator(H2Store store, ResultSet rs, DBFeatureType featureType){
|
|
220 |
this.dbIter = new H2IteratorDB(store,rs,featureType);
|
|
221 | 221 |
this.mIter = new H2IteratorMemory(featureType); |
222 | 222 |
} |
223 | 223 |
public boolean hasNext() { |
... | ... | |
241 | 241 |
private boolean nextChecked=false; |
242 | 242 |
private IFeature feature; |
243 | 243 |
private ResultSet rs; |
244 |
private H2Driver driver;
|
|
244 |
private H2Store store;
|
|
245 | 245 |
private DBFeatureType featureType; |
246 | 246 |
private boolean rsEOF=false; |
247 | 247 |
|
248 |
public H2IteratorDB(H2Driver driver, ResultSet rs, DBFeatureType featureType){
|
|
249 |
this.driver = driver;
|
|
248 |
public H2IteratorDB(H2Store store, ResultSet rs, DBFeatureType featureType){
|
|
249 |
this.store = store;
|
|
250 | 250 |
this.rs = rs; |
251 | 251 |
this.featureType = featureType; |
252 | 252 |
} |
... | ... | |
312 | 312 |
IFeature feature=null; |
313 | 313 |
try { |
314 | 314 |
if(rs.next()){ |
315 |
feature=H2DriverUtils.createFeature(this.driver, this.rs, featureType);
|
|
315 |
feature=H2DriverUtils.createFeature(this.store, this.rs, featureType);
|
|
316 | 316 |
} |
317 | 317 |
} catch (java.sql.SQLException e) { |
318 | 318 |
throw new RuntimeException( |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/Register.java | ||
---|---|---|
5 | 5 |
public class Register { |
6 | 6 |
public static void selfRegister() { |
7 | 7 |
DataSourceManager dsm = DataSourceManager.getManager(); |
8 |
|
|
9 |
dsm.registerDriver(H2Driver.DRIVER_NAME,
|
|
10 |
H2Driver.class,
|
|
11 |
H2DriverParameters.class
|
|
8 |
|
|
9 |
dsm.registerDriver(H2Store.DATASTORE_NAME,
|
|
10 |
H2Store.class,
|
|
11 |
H2StoreParameters.class
|
|
12 | 12 |
); |
13 | 13 |
} |
14 |
|
|
15 | 14 |
|
15 |
|
|
16 | 16 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2Feature.java | ||
---|---|---|
7 | 7 |
import org.gvsig.data.vectorial.IFeatureID; |
8 | 8 |
import org.gvsig.data.vectorial.IFeatureType; |
9 | 9 |
|
10 |
|
|
10 | 11 |
public class H2Feature extends Feature{ |
11 | 12 |
|
12 | 13 |
/** |
13 | 14 |
* |
14 | 15 |
*/ |
15 | 16 |
private static final long serialVersionUID = -5836612523458472800L; |
16 |
private H2Driver driver;
|
|
17 |
private H2Store store;
|
|
17 | 18 |
private String featureIndex; |
18 | 19 |
|
19 |
public H2Feature(IFeatureType featureType, H2Driver driver, String featureIndex) {
|
|
20 |
public H2Feature(IFeatureType featureType, H2Store store, String featureIndex) {
|
|
20 | 21 |
super(featureType); |
21 |
this.driver=driver;
|
|
22 |
this.store=store;
|
|
22 | 23 |
this.featureIndex=featureIndex; |
23 | 24 |
} |
24 | 25 |
|
25 | 26 |
public IFeatureID getID() { |
26 |
return new H2FeatureID(this.driver,featureIndex);
|
|
27 |
return new H2FeatureID(this.store,featureIndex);
|
|
27 | 28 |
} |
28 | 29 |
|
29 | 30 |
public IExtent getExtent() { |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeatureCollectionEditing.java | ||
---|---|---|
23 | 23 |
protected ComplexObservable observable = new ComplexObservable(); |
24 | 24 |
protected DBFeatureType featureType; |
25 | 25 |
protected String totalFilter; |
26 |
protected H2Driver driver;
|
|
26 |
protected H2Store store;
|
|
27 | 27 |
protected ResultSet rs; |
28 | 28 |
private int numReg=-1; |
29 | 29 |
private String sql; |
... | ... | |
34 | 34 |
// private FeatureFilterParser parser; |
35 | 35 |
|
36 | 36 |
|
37 |
public H2FeatureCollectionEditing(FeatureManager fm,H2Driver driver,IFeatureType type) {
|
|
37 |
public H2FeatureCollectionEditing(FeatureManager fm,H2Store store,IFeatureType type) {
|
|
38 | 38 |
this.featureManager=fm; |
39 |
this.driver=driver;
|
|
39 |
this.store=store;
|
|
40 | 40 |
this.featureType=(DBFeatureType)type; |
41 | 41 |
|
42 |
this.totalFilter =driver.getBaseWhereClause();
|
|
43 |
this.totalOrder = driver.getBaseOrder();
|
|
42 |
this.totalFilter =store.getBaseWhereClause();
|
|
43 |
this.totalOrder = store.getBaseOrder();
|
|
44 | 44 |
|
45 |
this.sql = this.driver.getSqlSelectPart();
|
|
46 |
this.sqlCount = "Select count(" + type.getFieldId() +") From "+ this.driver.getParametersH2().tableID();
|
|
45 |
this.sql = this.store.getSqlSelectPart();
|
|
46 |
this.sqlCount = "Select count(" + type.getFieldId() +") From "+ ((H2StoreParameters)this.store.getParameters()).tableID();
|
|
47 | 47 |
if (!isStringEmpty(this.totalFilter)){ |
48 | 48 |
this.sql= this.sql + " Where " + this.totalFilter; |
49 | 49 |
this.sqlCount= this.sqlCount + " Where " + this.totalFilter; |
... | ... | |
58 | 58 |
} |
59 | 59 |
|
60 | 60 |
private ResultSet getNewResulset(String aSql) throws ReadException{ |
61 |
this.driver.open();
|
|
61 |
this.store.open();
|
|
62 | 62 |
|
63 |
this.connection = this.driver.getConnection();
|
|
63 |
this.connection = this.store.getConnection();
|
|
64 | 64 |
|
65 | 65 |
try { |
66 | 66 |
Statement st = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY); |
... | ... | |
129 | 129 |
try{ |
130 | 130 |
ResultSet r=null; |
131 | 131 |
r = this.getNewResulset(this.sql); |
132 |
H2Iterator dbfIter=new H2Iterator(this.driver,r,this.featureType);
|
|
132 |
H2Iterator dbfIter=new H2Iterator(this.store,r,this.featureType);
|
|
133 | 133 |
return dbfIter; |
134 | 134 |
} catch (BaseException e){ |
135 | 135 |
throw new RuntimeException(e); |
... | ... | |
197 | 197 |
private boolean nextChecked=false; |
198 | 198 |
private IFeature feature; |
199 | 199 |
private ResultSet rs; |
200 |
private H2Driver driver;
|
|
200 |
private H2Store store;
|
|
201 | 201 |
private DBFeatureType featureType; |
202 | 202 |
private boolean rsEOF=false; |
203 | 203 |
|
204 |
public H2Iterator(H2Driver driver, ResultSet rs, DBFeatureType featureType){
|
|
205 |
this.driver = driver;
|
|
204 |
public H2Iterator(H2Store store, ResultSet rs, DBFeatureType featureType){
|
|
205 |
this.store = store;
|
|
206 | 206 |
this.rs = rs; |
207 | 207 |
this.featureType = featureType; |
208 | 208 |
position=0; |
... | ... | |
290 | 290 |
IFeature feature=null; |
291 | 291 |
try { |
292 | 292 |
if(rs.next()){ |
293 |
feature=H2DriverUtils.createFeature(this.driver, this.rs, featureType);
|
|
293 |
feature=H2DriverUtils.createFeature(this.store, this.rs, featureType);
|
|
294 | 294 |
} |
295 | 295 |
} catch (java.sql.SQLException e) { |
296 | 296 |
throw new RuntimeException( |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeaturesWriter.java | ||
---|---|---|
17 | 17 |
import java.sql.Types; |
18 | 18 |
import java.util.Iterator; |
19 | 19 |
|
20 |
import org.gvsig.data.datastores.vectorial.driver.IDriver; |
|
21 | 20 |
import org.gvsig.data.datastores.vectorial.driver.ISelectiveWriter; |
22 | 21 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBAttributeDescriptor; |
23 | 22 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBFeatureType; |
... | ... | |
28 | 27 |
import org.gvsig.data.exception.WriteException; |
29 | 28 |
import org.gvsig.data.vectorial.IFeature; |
30 | 29 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
30 |
import org.gvsig.data.vectorial.IFeatureStore; |
|
31 | 31 |
import org.gvsig.data.vectorial.IFeatureType; |
32 | 32 |
|
33 | 33 |
import com.iver.cit.gvsig.fmap.core.FShape; |
... | ... | |
41 | 41 |
private Connection conex; |
42 | 42 |
private boolean bCreateTable=false; |
43 | 43 |
private String toEncode; |
44 |
private H2Driver driver;
|
|
45 |
private H2DriverParameters parameters;
|
|
44 |
private H2Store store;
|
|
45 |
private H2StoreParameters parameters;
|
|
46 | 46 |
|
47 | 47 |
private PreparedStatement insertSt; |
48 | 48 |
private PreparedStatement updateSt; |
49 | 49 |
|
50 | 50 |
|
51 |
public void init(IDriver driver) {
|
|
51 |
public void init(IFeatureStore store) {
|
|
52 | 52 |
Statement st; |
53 |
this.driver = (H2Driver)driver;
|
|
54 |
this.parameters=(H2DriverParameters)driver.getParameters();
|
|
53 |
this.store = (H2Store)store;
|
|
54 |
this.parameters=(H2StoreParameters)store.getParameters();
|
|
55 | 55 |
|
56 |
this.featureType = (DBFeatureType)this.driver.getFeatureType();
|
|
57 |
conex = this.driver.getConnection();
|
|
56 |
this.featureType = (DBFeatureType)this.store.getDefaultFeatureType();
|
|
57 |
conex = this.store.getConnection();
|
|
58 | 58 |
try { |
59 | 59 |
st = conex.createStatement(); |
60 | 60 |
|
... | ... | |
530 | 530 |
return sql; |
531 | 531 |
} |
532 | 532 |
|
533 |
public static void create(H2DriverParameters parameters, IFeatureType featureType)throws OpenException, InitializeWriterException {
|
|
533 |
public static void create(H2StoreParameters parameters, IFeatureType featureType)throws OpenException, InitializeWriterException {
|
|
534 | 534 |
try { |
535 | 535 |
Class.forName("org.h2.Driver"); |
536 | 536 |
} catch (ClassNotFoundException e) { |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2DriverUtils.java | ||
---|---|---|
76 | 76 |
|
77 | 77 |
} |
78 | 78 |
|
79 |
static DBFeatureType getFeatureType(Connection conn,H2DriverParameters params) throws ReadException{
|
|
79 |
static DBFeatureType getFeatureType(Connection conn,H2StoreParameters params) throws ReadException{
|
|
80 | 80 |
String sql=""; |
81 | 81 |
String columns=params.getFields(); |
82 | 82 |
|
... | ... | |
321 | 321 |
} |
322 | 322 |
|
323 | 323 |
static String getConnectionResourceID(String dbUrl,String dbUser){ |
324 |
return H2Driver.DRIVER_NAME+";"+dbUrl+";"+dbUser;
|
|
324 |
return H2Store.CONNECTION_STRING+";"+dbUrl+";"+dbUser;
|
|
325 | 325 |
|
326 | 326 |
} |
327 | 327 |
|
... | ... | |
367 | 367 |
return conn; |
368 | 368 |
} |
369 | 369 |
|
370 |
static IFeature createFeature(H2Driver driver,ResultSet rs,DBFeatureType featureType) throws ReadException{
|
|
370 |
static IFeature createFeature(H2Store driver,ResultSet rs,DBFeatureType featureType) throws ReadException{
|
|
371 | 371 |
|
372 | 372 |
H2Feature feature=null; |
373 | 373 |
|
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2FeatureCollectionWithFeatureID.java | ||
---|---|---|
3 | 3 |
import java.util.ArrayList; |
4 | 4 |
import java.util.Collection; |
5 | 5 |
import java.util.Comparator; |
6 |
import java.util.HashMap; |
|
7 | 6 |
import java.util.Iterator; |
8 |
import java.util.Map; |
|
9 | 7 |
import java.util.TreeSet; |
10 | 8 |
|
11 | 9 |
import org.gvsig.data.ComplexObservable; |
... | ... | |
26 | 24 |
protected IFeatureType featureType; |
27 | 25 |
|
28 | 26 |
|
29 |
public H2FeatureCollectionWithFeatureID(FeatureManager fm,H2Driver driver,IFeatureType type, String filter,String order) throws ReadException {
|
|
27 |
public H2FeatureCollectionWithFeatureID(FeatureManager fm,H2Store store,IFeatureType type, String filter,String order) throws ReadException {
|
|
30 | 28 |
this.featureType=type; |
31 |
intilizeFeatureIDs(fm, driver, filter, order);
|
|
29 |
intilizeFeatureIDs(fm, store, filter, order);
|
|
32 | 30 |
} |
33 | 31 |
|
34 |
protected void intilizeFeatureIDs(FeatureManager fm,H2Driver driver, String filter,String order) throws ReadException {
|
|
32 |
protected void intilizeFeatureIDs(FeatureManager fm,H2Store store, String filter,String order) throws ReadException {
|
|
35 | 33 |
FeatureFilterParser parser = null; |
36 | 34 |
IFeature feature; |
37 | 35 |
Collection tmpFeatures; |
... | ... | |
66 | 64 |
|
67 | 65 |
} |
68 | 66 |
|
69 |
IFeatureCollection coll = new H2FeatureCollection(driver,this.featureType,filter,order);
|
|
67 |
IFeatureCollection coll = new H2FeatureCollection(store,this.featureType,filter,order);
|
|
70 | 68 |
Iterator iter = coll.iterator(); |
71 | 69 |
while (iter.hasNext()){ |
72 | 70 |
feature =(IFeature)iter.next(); |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/h2/H2Store.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.h2; |
|
2 |
|
|
3 |
import java.sql.Connection; |
|
4 |
import java.sql.ResultSet; |
|
5 |
import java.sql.ResultSetMetaData; |
|
6 |
import java.sql.Statement; |
|
7 |
import java.util.Iterator; |
|
8 |
import java.util.List; |
|
9 |
import java.util.Locale; |
|
10 |
|
|
11 |
import org.gvsig.data.IDataCollection; |
|
12 |
import org.gvsig.data.IDataStoreParameters; |
|
13 |
import org.gvsig.data.commands.implementation.AbstractAttributeCommand; |
|
14 |
import org.gvsig.data.commands.implementation.AbstractFeatureCommand; |
|
15 |
import org.gvsig.data.commands.implementation.UpdateAttributeCommand; |
|
16 |
import org.gvsig.data.commands.implementation.UpdateFeatureCommand; |
|
17 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesReader; |
|
18 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesWriter; |
|
19 |
import org.gvsig.data.datastores.vectorial.driver.ISelectiveWriter; |
|
20 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBFeatureType; |
|
21 |
import org.gvsig.data.exception.CloseException; |
|
22 |
import org.gvsig.data.exception.InitializeException; |
|
23 |
import org.gvsig.data.exception.OpenException; |
|
24 |
import org.gvsig.data.exception.ReadException; |
|
25 |
import org.gvsig.data.exception.WriteException; |
|
26 |
import org.gvsig.data.spatialprovisional.IExtent; |
|
27 |
import org.gvsig.data.vectorial.AbstractFeatureStore; |
|
28 |
import org.gvsig.data.vectorial.CreatedFeature; |
|
29 |
import org.gvsig.data.vectorial.IFeature; |
|
30 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
|
31 |
import org.gvsig.data.vectorial.IFeatureID; |
|
32 |
import org.gvsig.data.vectorial.IFeatureType; |
|
33 |
import org.gvsig.exceptions.BaseException; |
|
34 |
import org.gvsig.metadata.IMetadata; |
|
35 |
|
|
36 |
public class H2Store extends AbstractFeatureStore{ |
|
37 |
public static final String CONNECTION_STRING = "h2"; |
|
38 |
public static String DATASTORE_NAME = "H2Store"; |
|
39 |
protected static Locale ukLocale = new Locale("en", "UK"); // English, UK version |
|
40 |
private DBFeatureType featureType; |
|
41 |
protected IMetadata metadata; |
|
42 |
private Connection connection = null; |
|
43 |
private String sqlSelectPart; //sqlOrig |
|
44 |
private String baseWhereClause = null; |
|
45 |
private String tableId; |
|
46 |
private String baseOrder = null; |
|
47 |
|
|
48 |
private String sql; |
|
49 |
|
|
50 |
private ResultSetMetaData rsMetaData; |
|
51 |
private int numReg=-1; |
|
52 |
|
|
53 |
protected void doFinishEdition() throws WriteException, ReadException { |
|
54 |
Iterator commandsfeatures = null; |
|
55 |
IFeaturesWriter writer = getFeaturesWriter(); |
|
56 |
IFeatureType type = getDefaultFeatureType(); |
|
57 |
|
|
58 |
if (writer instanceof ISelectiveWriter){ |
|
59 |
ISelectiveWriter selectiveWriter=(ISelectiveWriter)writer; |
|
60 |
selectiveWriter.init(this); |
|
61 |
selectiveWriter.updateFeatureType(type); |
|
62 |
selectiveWriter.preProcess(); |
|
63 |
|
|
64 |
commandsfeatures = commands.getCommandsAttributeDeleted().iterator(); |
|
65 |
while( commandsfeatures.hasNext() ) { |
|
66 |
Object obj=commandsfeatures.next(); |
|
67 |
if (obj instanceof AbstractAttributeCommand){ |
|
68 |
IFeatureAttributeDescriptor attribute = ((AbstractAttributeCommand)obj).getAttributeDescriptor(); |
|
69 |
selectiveWriter.deleteAttribute(attribute); |
|
70 |
} |
|
71 |
} |
|
72 |
commandsfeatures = commands.getCommandsAttributeUpdated().iterator(); |
|
73 |
while( commandsfeatures.hasNext() ) { |
|
74 |
Object obj=commandsfeatures.next(); |
|
75 |
if (obj instanceof AbstractAttributeCommand){ |
|
76 |
IFeatureAttributeDescriptor oldAttribute = ((UpdateAttributeCommand)obj).getOldAttributeDescriptor(); |
|
77 |
IFeatureAttributeDescriptor attribute = ((UpdateAttributeCommand)obj).getAttributeDescriptor(); |
|
78 |
selectiveWriter.updateAttribute(oldAttribute,attribute); |
|
79 |
} |
|
80 |
} |
|
81 |
commandsfeatures = commands.getCommandsAttributeInserted().iterator(); |
|
82 |
while( commandsfeatures.hasNext() ) { |
|
83 |
Object obj=commandsfeatures.next(); |
|
84 |
if (obj instanceof AbstractAttributeCommand){ |
|
85 |
IFeatureAttributeDescriptor attribute = ((AbstractAttributeCommand)obj).getAttributeDescriptor(); |
|
86 |
selectiveWriter.insertAttribute(attribute); |
|
87 |
} |
|
88 |
} |
|
89 |
|
|
90 |
|
|
91 |
commandsfeatures = commands.getCommandsFeatureDeleted().iterator(); |
|
92 |
while( commandsfeatures.hasNext() ) { |
|
93 |
Object obj=commandsfeatures.next(); |
|
94 |
if (obj instanceof AbstractFeatureCommand){ |
|
95 |
IFeature feature = ((AbstractFeatureCommand)obj).getFeature(); |
|
96 |
if (feature instanceof CreatedFeature) |
|
97 |
continue; |
|
98 |
|
|
99 |
selectiveWriter.deleteFeature(feature); |
|
100 |
} |
|
101 |
} |
|
102 |
commandsfeatures = commands.getCommandsFeatureUpdated().iterator(); |
|
103 |
while( commandsfeatures.hasNext() ) { |
|
104 |
Object obj=commandsfeatures.next(); |
|
105 |
if (obj instanceof AbstractFeatureCommand){ |
|
106 |
IFeature oldFeature = ((UpdateFeatureCommand)obj).getOldFeature(); |
|
107 |
IFeature feature = ((UpdateFeatureCommand)obj).getFeature(); |
|
108 |
if (featureManager.isDeleted(feature)){ |
|
109 |
continue; |
|
110 |
} |
|
111 |
selectiveWriter.updateFeature(oldFeature,feature); |
|
112 |
} |
|
113 |
} |
|
114 |
commandsfeatures = commands.getCommandsFeatureInserted().iterator(); |
|
115 |
while( commandsfeatures.hasNext() ) { |
|
116 |
Object obj=commandsfeatures.next(); |
|
117 |
if (obj instanceof AbstractFeatureCommand){ |
|
118 |
IFeature feature = ((AbstractFeatureCommand)obj).getFeature(); |
|
119 |
if (featureManager.isDeleted(feature)){ |
|
120 |
continue; |
|
121 |
} |
|
122 |
selectiveWriter.insertFeature(feature); |
|
123 |
} |
|
124 |
} |
|
125 |
selectiveWriter.postProcess(); |
|
126 |
} |
|
127 |
|
|
128 |
} |
|
129 |
|
|
130 |
public IDataCollection getDataCollection(IFeatureType type, String filter, String order) throws ReadException { |
|
131 |
if (type==null){ |
|
132 |
type=getDefaultFeatureType(); |
|
133 |
} |
|
134 |
return getFeatutesReader().getFeatures(featureManager,type,filter,order); |
|
135 |
} |
|
136 |
|
|
137 |
public IFeature getFeatureByID(IFeatureID id) throws ReadException { |
|
138 |
return getFeatureByID(featureType,((H2FeatureID)id).getKey()); |
|
139 |
} |
|
140 |
public IFeature getFeatureByID(IFeatureType featureType2, Object featureKey) throws ReadException{ |
|
141 |
ResultSet rs=null; |
|
142 |
try{ |
|
143 |
this.open(); |
|
144 |
Statement st=this.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); |
|
145 |
String sql = this.getSqlSelectPart() + " WHERE "+ H2DriverUtils.getFliterForID(this.featureType, featureKey); |
|
146 |
rs=st.executeQuery(sql); |
|
147 |
if (rs.isLast()) { |
|
148 |
|
|
149 |
return null; |
|
150 |
}else{ |
|
151 |
if(rs.next()){ |
|
152 |
return H2DriverUtils.createFeature(this, rs, this.featureType); |
|
153 |
} |
|
154 |
|
|
155 |
} |
|
156 |
|
|
157 |
} catch (java.sql.SQLException e) { |
|
158 |
e.printStackTrace(); |
|
159 |
throw new ReadException("H2Spatial Driver", e); |
|
160 |
} finally{ |
|
161 |
if (rs != null) |
|
162 |
try { |
|
163 |
rs.close(); |
|
164 |
} catch (java.sql.SQLException e) { |
|
165 |
// TODO ????? |
|
166 |
e.printStackTrace(); |
|
167 |
} |
|
168 |
} |
|
169 |
return null; |
|
170 |
} |
|
171 |
Connection getConnection(){ |
|
172 |
// FIXME: OJO REsource manager |
|
173 |
return this.connection; |
|
174 |
|
|
175 |
} |
|
176 |
private void initSqlProperties() throws InitializeException{ |
|
177 |
H2StoreParameters dParams = (H2StoreParameters)this.getParameters(); |
|
178 |
sqlSelectPart = "SELECT " + dParams.getFields() +" FROM "+ dParams.tableID(); |
|
179 |
|
|
180 |
baseWhereClause = dParams.getBaseFilter(); |
|
181 |
|
|
182 |
if (dParams.getWorkingArea() != null){ |
|
183 |
String waWhere = getWorkingAreaWhere(dParams.getWorkingArea(), dParams.getSRISD()); |
|
184 |
if (waWhere != null){ |
|
185 |
baseWhereClause = "(("+baseWhereClause+") and "+waWhere +")"; |
|
186 |
} |
|
187 |
|
|
188 |
} |
|
189 |
|
|
190 |
this.baseOrder = dParams.getBaseOrder(); |
|
191 |
|
|
192 |
} |
|
193 |
private String getWorkingAreaWhere(IExtent r, String strEPSG) { |
|
194 |
//TODO???? |
|
195 |
if (r==null){ |
|
196 |
return null; |
|
197 |
} |
|
198 |
return null; |
|
199 |
} |
|
200 |
public List getFeatureTypes() { |
|
201 |
// TODO Auto-generated method stub |
|
202 |
return null; |
|
203 |
} |
|
204 |
|
|
205 |
public IFeatureType getDefaultFeatureType() { |
|
206 |
// TODO Auto-generated method stub |
|
207 |
return null; |
|
208 |
} |
|
209 |
|
|
210 |
public boolean isWithDefaultLegend() { |
|
211 |
// TODO Auto-generated method stub |
|
212 |
return false; |
|
213 |
} |
|
214 |
|
|
215 |
public Object getDefaultLegend() { |
|
216 |
// TODO Auto-generated method stub |
|
217 |
return null; |
|
218 |
} |
|
219 |
|
|
220 |
public Object getDefaultLabelingStrategy() { |
|
221 |
// TODO Auto-generated method stub |
|
222 |
return null; |
|
223 |
} |
|
224 |
|
|
225 |
public boolean canAlterFeatureType() { |
|
226 |
return true; |
|
227 |
} |
|
228 |
|
|
229 |
public IDataStoreParameters getParameters() { |
|
230 |
// TODO Auto-generated method stub |
|
231 |
return null; |
|
232 |
} |
|
233 |
|
|
234 |
public String getName() { |
|
235 |
// TODO Auto-generated method stub |
|
236 |
return null; |
|
237 |
} |
|
238 |
|
|
239 |
public void open() throws OpenException { |
|
240 |
// TODO Auto-generated method stub |
|
241 |
|
|
242 |
} |
|
243 |
|
|
244 |
public void close() throws CloseException { |
|
245 |
// TODO Auto-generated method stub |
|
246 |
|
|
247 |
} |
|
248 |
|
|
249 |
public void dispose() throws CloseException { |
|
250 |
// TODO Auto-generated method stub |
|
251 |
|
|
252 |
} |
|
253 |
|
|
254 |
public boolean isEditable() { |
|
255 |
return true; |
|
256 |
} |
|
257 |
|
|
258 |
public IMetadata getMetadata() throws BaseException { |
|
259 |
// TODO Auto-generated method stub |
|
260 |
return null; |
|
261 |
} |
|
262 |
public IFeaturesReader getFeatutesReader() { |
|
263 |
IFeaturesReader reader = new H2FeaturesReader(); |
|
264 |
reader.init(this); |
|
265 |
return reader; |
|
266 |
} |
|
267 |
public IFeaturesWriter getFeaturesWriter() { |
|
268 |
IFeaturesWriter writer = new H2FeaturesWriter(); |
|
269 |
// writer.init(this); |
|
270 |
return writer; |
|
271 |
} |
|
272 |
public String getSqlSelectPart() { |
|
273 |
return sqlSelectPart; |
|
274 |
} |
|
275 |
public String getBaseOrder() { |
|
276 |
return this.baseOrder; |
|
277 |
} |
|
278 |
public String getBaseWhereClause() { |
|
279 |
return baseWhereClause; |
|
280 |
} |
|
281 |
} |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/hsqldb/HSQLDBFeature.java | ||
---|---|---|
7 | 7 |
import org.gvsig.data.vectorial.IFeatureID; |
8 | 8 |
import org.gvsig.data.vectorial.IFeatureType; |
9 | 9 |
|
10 |
|
|
10 | 11 |
public class HSQLDBFeature extends Feature{ |
11 | 12 |
|
12 | 13 |
private HSQLDBDriver driver; |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/hsqldb/HSQLDBFeaturesWriter.java | ||
---|---|---|
1 | 1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.hsqldb; |
2 | 2 |
|
3 |
import org.gvsig.data.datastores.vectorial.driver.IDriver; |
|
4 | 3 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesWriter; |
5 | 4 |
import org.gvsig.data.vectorial.IFeature; |
5 |
import org.gvsig.data.vectorial.IFeatureStore; |
|
6 | 6 |
import org.gvsig.data.vectorial.IFeatureType; |
7 | 7 |
|
8 | 8 |
public class HSQLDBFeaturesWriter implements IFeaturesWriter { |
9 | 9 |
private IFeatureType featureType; |
10 |
public void init(IDriver driver) {
|
|
11 |
HSQLDBDriverParameters parameters=(HSQLDBDriverParameters)driver.getParameters();
|
|
10 |
public void init(IFeatureStore store) {
|
|
11 |
HSQLDBDriverParameters parameters=(HSQLDBDriverParameters)store.getParameters();
|
|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
public void postProcess() { |
trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/driver/jdbc/hsqldb/HSQLDBStore.java | ||
---|---|---|
1 |
package org.gvsig.data.datastores.vectorial.driver.jdbc.hsqldb; |
|
2 |
|
|
3 |
import java.sql.Connection; |
|
4 |
import java.sql.ResultSet; |
|
5 |
import java.sql.ResultSetMetaData; |
|
6 |
import java.sql.Statement; |
|
7 |
import java.util.Iterator; |
|
8 |
import java.util.List; |
|
9 |
import java.util.Locale; |
|
10 |
|
|
11 |
import org.gvsig.data.IDataCollection; |
|
12 |
import org.gvsig.data.IDataStoreParameters; |
|
13 |
import org.gvsig.data.commands.implementation.AbstractAttributeCommand; |
|
14 |
import org.gvsig.data.commands.implementation.AbstractFeatureCommand; |
|
15 |
import org.gvsig.data.commands.implementation.UpdateAttributeCommand; |
|
16 |
import org.gvsig.data.commands.implementation.UpdateFeatureCommand; |
|
17 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesReader; |
|
18 |
import org.gvsig.data.datastores.vectorial.driver.IFeaturesWriter; |
|
19 |
import org.gvsig.data.datastores.vectorial.driver.ISelectiveWriter; |
|
20 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.DBFeatureType; |
|
21 |
import org.gvsig.data.datastores.vectorial.driver.jdbc.h2.H2DriverUtils; |
|
22 |
import org.gvsig.data.exception.CloseException; |
|
23 |
import org.gvsig.data.exception.InitializeException; |
|
24 |
import org.gvsig.data.exception.OpenException; |
|
25 |
import org.gvsig.data.exception.ReadException; |
|
26 |
import org.gvsig.data.exception.WriteException; |
|
27 |
import org.gvsig.data.spatialprovisional.IExtent; |
|
28 |
import org.gvsig.data.vectorial.AbstractFeatureStore; |
|
29 |
import org.gvsig.data.vectorial.CreatedFeature; |
|
30 |
import org.gvsig.data.vectorial.IFeature; |
|
31 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
|
32 |
import org.gvsig.data.vectorial.IFeatureID; |
|
33 |
import org.gvsig.data.vectorial.IFeatureType; |
|
34 |
import org.gvsig.exceptions.BaseException; |
|
35 |
import org.gvsig.metadata.IMetadata; |
|
36 |
|
|
37 |
public class HSQLDBStore extends AbstractFeatureStore{ |
|
38 |
public static final String CONNECTION_STRING = "h2"; |
|
39 |
public static String DATASTORE_NAME = "H2Store"; |
|
40 |
protected static Locale ukLocale = new Locale("en", "UK"); // English, UK version |
|
41 |
private DBFeatureType featureType; |
|
42 |
protected IMetadata metadata; |
|
43 |
private Connection connection = null; |
|
44 |
private String sqlSelectPart; //sqlOrig |
|
45 |
private String baseWhereClause = null; |
|
46 |
private String tableId; |
|
47 |
private String baseOrder = null; |
|
48 |
|
|
49 |
private String sql; |
|
50 |
|
|
51 |
private ResultSetMetaData rsMetaData; |
|
52 |
private int numReg=-1; |
|
53 |
|
|
54 |
protected void doFinishEdition() throws WriteException, ReadException { |
|
55 |
Iterator commandsfeatures = null; |
|
56 |
IFeaturesWriter writer = getFeaturesWriter(); |
|
57 |
IFeatureType type = getDefaultFeatureType(); |
|
58 |
|
|
59 |
if (writer instanceof ISelectiveWriter){ |
|
60 |
ISelectiveWriter selectiveWriter=(ISelectiveWriter)writer; |
|
61 |
selectiveWriter.init(this); |
|
62 |
selectiveWriter.updateFeatureType(type); |
|
63 |
selectiveWriter.preProcess(); |
|
64 |
|
|
65 |
commandsfeatures = commands.getCommandsAttributeDeleted().iterator(); |
|
66 |
while( commandsfeatures.hasNext() ) { |
|
67 |
Object obj=commandsfeatures.next(); |
|
68 |
if (obj instanceof AbstractAttributeCommand){ |
Also available in: Unified diff