Revision 19440 trunk/libraries/libDataSource/src/org/gvsig/data/datastores/vectorial/driver/DriverStore.java

View differences:

DriverStore.java
9 9
import org.gvsig.data.IDataCollection;
10 10
import org.gvsig.data.IDataStoreParameters;
11 11
import org.gvsig.data.commands.implementation.AbstractFeatureCommand;
12
import org.gvsig.data.spatialprovisional.IExtent;
12 13
import org.gvsig.data.vectorial.AbstractFeatureStore;
13 14
import org.gvsig.data.vectorial.FeatureStoreNotification;
14 15
import org.gvsig.data.vectorial.IFeature;
15 16
import org.gvsig.data.vectorial.IFeatureCollection;
16 17
import org.gvsig.data.vectorial.IFeatureID;
17 18
import org.gvsig.data.vectorial.IFeatureType;
19
import org.gvsig.metadata.IMetadata;
20
import org.gvsig.metadata.IMetadataManager;
21
import org.gvsig.metadata.Metadata;
22
import org.gvsig.metadata.MetadataManager;
18 23

  
19 24
/**
20 25
 *
......
32 37

  
33 38
	private Rectangle2D fullExtent;
34 39

  
35
    public void init(IDataStoreParameters parameters) {
40
	public void init(IDataStoreParameters parameters) {
36 41
        super.init(parameters);
37 42
    	IDriverStoreParameters driverStoreParameters=(IDriverStoreParameters)parameters;
38 43
    	DataSourceManager dsm = DataSourceManager.getManager();
......
164 169
    	return driver.isEditable();
165 170
    }
166 171

  
167
    public Object getFullExtent() {
168
    	//TODO este m?todo est? para poder calcular un extent en m?s de 2 dimensiones si hace falta.
169
    	return getFullExtent2D();
170
    }
171

  
172
	public Rectangle2D getFullExtent2D() {
173
		IFeatureCollection featureCollection=(IFeatureCollection)getDataCollection();
174
    	if (spatialManager.isFullExtentDirty()){
175
    		if (!featureCollection.isEmpty()){
176
    			Iterator featureIterator=featureCollection.iterator();
177
    			fullExtent = ((IFeature)featureIterator.next()).getBoundingBox2D();
178
    			while(featureIterator.hasNext()){
179
    				IFeature feature=(IFeature)featureIterator.next();
180
    				Rectangle2D bound=feature.getBoundingBox2D();
181
    				if (bound!=null)
182
    					fullExtent.add(bound);
183
    			}
184
    		} else {
185
    			fullExtent = driver.getFullExtent();
186
    		}
187
    	}
188
		return fullExtent;
189
	}
190

  
191
	public List getAllSRS() {
192
		return driver.getAllSRS();
193
	}
194

  
195
	public String getDefaultSRS() {
196
		List listProjections=driver.getAllSRS();
197
		if (!listProjections.isEmpty())
198
			return (String)listProjections.get(0);
199
		return null;
200
	}
201

  
202
	public boolean isWithDefaultLegend() {
172
   public boolean isWithDefaultLegend() {
203 173
		return (driver instanceof IDefaultLegend);
204 174
	}
205 175

  
......
218 188
	public boolean canAlterFeatureType() {
219 189
		return driver.canAlterFeatureType();
220 190
	}
191

  
192
	public IMetadata getMetadata() {
193
		IMetadata metadata=driver.getMetadata();
194
		if (this.alterMode){
195
			IExtent extent=(IExtent)metadata.get("extent");
196
			IFeatureCollection featureCollection=(IFeatureCollection)getDataCollection();
197
	    	if (spatialManager.isFullExtentDirty()){
198
	    		if (!featureCollection.isEmpty()){
199
	    			Iterator featureIterator=featureCollection.iterator();
200
	    			extent = ((IFeature)featureIterator.next()).getExtent();
201
	    			while(featureIterator.hasNext()){
202
	    				IFeature feature=(IFeature)featureIterator.next();
203
	    				IExtent boundExtent=feature.getExtent();
204
	    				if (boundExtent!=null)
205
	    					extent.add(boundExtent);
206
	    			}
207
	    		}
208
	    	}
209
	    	metadata.set("extent",extent);
210
		}
211
		return metadata;
212
	}
221 213
}
222 214

  

Also available in: Unified diff