Revision 20058 trunk/libraries/libDataSourceDBBaseDrivers/src/org/gvsig/data/datastores/vectorial/db/jdbc/postgresql/PostgresqlStore.java

View differences:

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