Revision 20058 trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/db/jdbc/postgresql/PostgresqlStore.java
PostgresqlStore.java | ||
---|---|---|
3 | 3 |
import java.lang.ref.WeakReference; |
4 | 4 |
import java.sql.Connection; |
5 | 5 |
import java.sql.ResultSet; |
6 |
import java.sql.Statement; |
|
7 |
import java.util.ArrayList; |
|
8 |
import java.util.List; |
|
6 |
import java.util.Iterator; |
|
9 | 7 |
import java.util.Locale; |
10 | 8 |
|
11 | 9 |
import org.gvsig.data.IDataCollection; |
12 | 10 |
import org.gvsig.data.IDataExplorer; |
13 | 11 |
import org.gvsig.data.IDataStoreParameters; |
14 | 12 |
import org.gvsig.data.datastores.vectorial.db.DBFeatureType; |
13 |
import org.gvsig.data.datastores.vectorial.db.jdbc.JDBCAttributeDescriptor; |
|
14 |
import org.gvsig.data.datastores.vectorial.db.jdbc.JDBCFeature; |
|
15 | 15 |
import org.gvsig.data.datastores.vectorial.db.jdbc.JDBCFeaturesWriter; |
16 | 16 |
import org.gvsig.data.datastores.vectorial.db.jdbc.JDBCStore; |
17 | 17 |
import org.gvsig.data.exception.CloseException; |
... | ... | |
20 | 20 |
import org.gvsig.data.exception.ReadException; |
21 | 21 |
import org.gvsig.data.spatialprovisional.IExtent; |
22 | 22 |
import org.gvsig.data.vectorial.IFeature; |
23 |
import org.gvsig.data.vectorial.IFeatureAttributeDescriptor; |
|
23 | 24 |
import org.gvsig.data.vectorial.IFeatureCollection; |
24 |
import org.gvsig.data.vectorial.IFeatureID; |
|
25 | 25 |
import org.gvsig.data.vectorial.IFeatureType; |
26 | 26 |
import org.gvsig.metadata.IMetadata; |
27 |
import org.gvsig.metadata.IMetadataManager; |
|
28 |
import org.gvsig.metadata.MetadataManager; |
|
27 |
import org.postgis.PGgeometry; |
|
29 | 28 |
|
29 |
import com.iver.cit.gvsig.fmap.core.IGeometry; |
|
30 |
|
|
30 | 31 |
public class PostgresqlStore extends JDBCStore{ |
31 | 32 |
public static final String CONNECTION_STRING = "postgresql"; |
32 | 33 |
public static String DATASTORE_NAME = "PostgresqlStore"; |
33 | 34 |
protected static Locale ukLocale = new Locale("en", "UK"); // English, UK version |
34 |
private DBFeatureType featureType; |
|
35 |
protected IMetadata metadata; |
|
36 |
PostgresqlStoreParameters getParametersPostgresql(){ |
|
35 |
PostgresqlStoreParameters getParametersPostgresql(){ |
|
37 | 36 |
return (PostgresqlStoreParameters)this.parameters; |
38 | 37 |
} |
39 | 38 |
|
... | ... | |
133 | 132 |
return coll; |
134 | 133 |
} |
135 | 134 |
|
136 |
public IFeature getFeatureByID(IFeatureID id) throws ReadException { |
|
137 |
return getFeatureByID(featureType,((PostgresqlFeatureID)id).getKey()); |
|
138 |
} |
|
139 |
public IFeature getFeatureByID(IFeatureType featureType2, Object[] featureKey) throws ReadException{ |
|
140 |
if (useSqlSource){ |
|
141 |
throw new ReadException(this.getName(), |
|
142 |
new UnsupportedOperationException("Unsuported featureByID in sqlSource mode")); |
|
143 |
} |
|
144 |
ResultSet rs=null; |
|
145 |
try{ |
|
146 |
this.open(); |
|
147 |
Statement st=this.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); |
|
148 |
String sql = this.getSqlSelectPart() + " WHERE "+ PostgresqlStoreUtils.getFilterForID(this.featureType, featureKey); |
|
149 |
rs=st.executeQuery(sql); |
|
150 |
if (rs.isLast()) { |
|
151 |
|
|
152 |
return null; |
|
153 |
}else{ |
|
154 |
if(rs.next()){ |
|
155 |
return PostgresqlStoreUtils.createFeature(this, rs, this.featureType); |
|
156 |
} |
|
157 |
|
|
158 |
} |
|
159 |
|
|
160 |
} catch (java.sql.SQLException e) { |
|
161 |
e.printStackTrace(); |
|
162 |
throw new ReadException(this.getName(), e); |
|
163 |
} finally{ |
|
164 |
if (rs != null) |
|
165 |
try { |
|
166 |
rs.close(); |
|
167 |
} catch (java.sql.SQLException e) { |
|
168 |
// TODO ????? |
|
169 |
e.printStackTrace(); |
|
170 |
} |
|
171 |
} |
|
172 |
return null; |
|
173 |
} |
|
174 | 135 |
protected Connection getConnection(){ |
175 | 136 |
// FIXME: OJO REsource manager |
176 | 137 |
return this.connection; |
... | ... | |
248 | 209 |
return writer; |
249 | 210 |
} |
250 | 211 |
|
212 |
public IDataExplorer getExplorer() { |
|
213 |
// TODO Auto-generated method stub |
|
214 |
return null; |
|
215 |
} |
|
216 |
|
|
251 | 217 |
public IMetadata getMetadata() { |
252 | 218 |
if (metadata==null){ |
253 |
IMetadataManager manager=MetadataManager.getManager(); |
|
254 |
metadata=manager.create(DATASTORE_NAME); |
|
255 |
//TODO: Apadir los meteadatos |
|
219 |
IMetadata tmp=super.getMetadata(); |
|
220 |
|
|
221 |
return tmp; |
|
222 |
}else{ |
|
223 |
return super.getMetadata(); |
|
256 | 224 |
} |
257 |
return metadata; |
|
258 |
} |
|
259 | 225 |
|
260 |
|
|
261 |
public IFeatureType getDefaultFeatureType() { |
|
262 |
// TODO Auto-generated method stub |
|
263 |
return this.featureType; |
|
264 | 226 |
} |
265 | 227 |
|
266 | 228 |
|
267 |
public Object getDefaultLabelingStrategy() { |
|
268 |
// TODO Auto-generated method stub |
|
269 |
return null; |
|
270 |
} |
|
229 |
protected void loadValueFromResulset(ResultSet rs, IFeature feature, IFeatureAttributeDescriptor attr) throws ReadException { |
|
230 |
IGeometry geom = null; |
|
231 |
String name = attr.getName(); |
|
232 |
try { |
|
233 |
if (attr.getDataType().equals(IFeatureAttributeDescriptor.TYPE_GEOMETRY)) { |
|
271 | 234 |
|
272 |
|
|
273 |
public Object getDefaultLegend() { |
|
274 |
// TODO Auto-generated method stub |
|
275 |
return null; |
|
235 |
PGgeometry data =(PGgeometry)rs.getObject(name); |
|
236 |
if (data == null) { |
|
237 |
geom = null; |
|
238 |
} else{ |
|
239 |
geom = PostGIS2Geometry.getGeneralPath(data); |
|
240 |
} |
|
241 |
feature.setGeometry(name,geom); |
|
242 |
} else { |
|
243 |
feature.set(name, rs.getObject(name)); |
|
244 |
} |
|
245 |
} catch (java.sql.SQLException e) { |
|
246 |
throw new ReadException("CreateFeature",e); |
|
247 |
} |
|
276 | 248 |
} |
277 | 249 |
|
278 | 250 |
|
279 |
public List getFeatureTypes() { |
|
280 |
ArrayList list = new ArrayList(); |
|
281 |
list.add(this.featureType); |
|
282 |
return list; |
|
251 |
protected IFeature newFeatureInstance(DBFeatureType featureType, Object[] pk) { |
|
252 |
return new PostgresqlFeature(featureType,this,pk); |
|
283 | 253 |
} |
284 | 254 |
|
285 | 255 |
|
286 |
public boolean isWithDefaultLegend() { |
|
287 |
// TODO Auto-generated method stub |
|
288 |
return false; |
|
256 |
IFeature createFeatureFromResulset(ResultSet rs, DBFeatureType featureType2) throws ReadException { |
|
257 |
return this.createFeature(rs, featureType2); |
|
289 | 258 |
} |
290 | 259 |
|
291 | 260 |
|
292 |
public IDataExplorer getExplorer() { |
|
293 |
// TODO Auto-generated method stub |
|
294 |
return null; |
|
295 |
} |
|
296 |
|
|
297 | 261 |
} |
Also available in: Unified diff