Revision 225

View differences:

org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.app/org.gvsig.geoprocess.app.mainplugin/src/main/java/org/gvsig/geoprocess/core/CompositeSourceOutputChannel.java
27 27
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
28 28
 * @author gvSIG Team
29 29
 * @deprecated use
30
 *             org.gvsig.geoprocess.lib.sextante.outputs.CompositeSourceOutputChannel
30
 *             org.gvsig.geoprocess.lib.sextante.outputs.CompositeSourceIOutputChannel
31 31
 *             instead
32 32
 */
33 33
public class CompositeSourceOutputChannel extends
34
    org.gvsig.geoprocess.lib.sextante.outputs.CompositeSourceOutputChannel {
34
    org.gvsig.geoprocess.lib.sextante.outputs.CompositeSourceIOutputChannel {
35 35

  
36 36
    public CompositeSourceOutputChannel(Object parameters) {
37 37
        super(parameters);
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.intersection/src/main/java/org/gvsig/geoprocess/algorithm/intersection/IntersectionAlgorithm.java
31 31
import org.gvsig.fmap.dal.feature.FeatureStore;
32 32
import org.gvsig.fmap.dal.feature.FeatureType;
33 33
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
34
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
34
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
35 35

  
36 36
/**
37 37
 * Intersection algorithm
......
105 105
								boolean selectedGeom) throws DataException {
106 106
		FeatureStore storeLayer = null;
107 107
		FeatureStore storeOverlay = null;
108
		if(layer instanceof gvVectorLayer && 
109
			overlay instanceof gvVectorLayer) {
110
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
111
			storeOverlay = ((gvVectorLayer)overlay).getFeatureStore();
108
		if(layer instanceof FlyrVectIVectorLayer && 
109
			overlay instanceof FlyrVectIVectorLayer) {
110
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
111
			storeOverlay = ((FlyrVectIVectorLayer)overlay).getFeatureStore();
112 112
		} else
113 113
			return;
114 114

  
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.clip/src/main/java/org/gvsig/geoprocess/algorithm/clip/ClipAlgorithm.java
32 32
import org.gvsig.fmap.dal.feature.FeatureType;
33 33
import org.gvsig.geoprocess.algorithm.base.core.ScalableUnionOperation;
34 34
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
35
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
35
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
36 36

  
37 37
/**
38 38
 * Clip algorithm
......
90 90
		}
91 91
		
92 92
		FeatureStore storeLayer = null;
93
		if(layer instanceof gvVectorLayer && clippingGeometry != null)
94
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
93
		if(layer instanceof FlyrVectIVectorLayer && clippingGeometry != null)
94
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
95 95
		else
96 96
			return false;
97 97
		
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.convexhull/src/main/java/org/gvsig/geoprocess/algorithm/convexhull/ConvexHullAlgorithm.java
37 37
import org.gvsig.fmap.geom.Geometry;
38 38
import org.gvsig.geoprocess.algorithm.base.util.GeometryUtil;
39 39
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
41 41
import org.gvsig.tools.dispose.DisposableIterator;
42 42

  
43 43
/**
......
78 78
		
79 79
		FeatureStore store = null;
80 80
		
81
		if(input instanceof gvVectorLayer)
82
			store = ((gvVectorLayer)input).getFeatureStore();
81
		if(input instanceof FlyrVectIVectorLayer)
82
			store = ((FlyrVectIVectorLayer)input).getFeatureStore();
83 83
		else
84 84
			return false;
85 85
		
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.dissolve/src/main/java/org/gvsig/geoprocess/algorithm/dissolve/DissolveAlgorithm.java
37 37
import org.gvsig.fmap.dal.feature.FeatureStore;
38 38
import org.gvsig.fmap.dal.feature.FeatureType;
39 39
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
41 41

  
42 42
/**
43 43
 * Dissolve algorithm
......
102 102
		loadSummary(functionList);
103 103
		
104 104
		FeatureStore storeLayer = null;
105
		if(layer instanceof gvVectorLayer)
106
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
105
		if(layer instanceof FlyrVectIVectorLayer)
106
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
107 107
		else
108 108
			return false;
109 109
		
......
202 202
			IVectorLayer output = getNewVectorLayer(sextanteLayerLabel,
203 203
													sextanteLayerName,
204 204
													shapeType, types, attrNames);
205
			return ((gvVectorLayer)output).getFeatureStore();
205
			return ((FlyrVectIVectorLayer)output).getFeatureStore();
206 206
		} catch (UnsupportedOutputChannelException e) {
207 207
			Sextante.addErrorToLog(e);
208 208
        } catch (GeoAlgorithmExecutionException e) {
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.union/src/main/java/org/gvsig/geoprocess/algorithm/union/UnionAlgorithm.java
40 40
import org.gvsig.geoprocess.algorithm.difference.DifferenceOperation;
41 41
import org.gvsig.geoprocess.algorithm.intersection.IntersectionOperation;
42 42
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
43
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
43
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
44 44

  
45 45
/**
46 46
 * Union algorithm
......
95 95
		
96 96
		FeatureStore storeLayer1 = null;
97 97
		FeatureStore storeLayer2 = null;
98
		if(layer1 instanceof gvVectorLayer && 
99
			layer2 instanceof gvVectorLayer) {
100
			storeLayer1 = ((gvVectorLayer)layer1).getFeatureStore();
101
			storeLayer2 = ((gvVectorLayer)layer2).getFeatureStore();
98
		if(layer1 instanceof FlyrVectIVectorLayer && 
99
			layer2 instanceof FlyrVectIVectorLayer) {
100
			storeLayer1 = ((FlyrVectIVectorLayer)layer1).getFeatureStore();
101
			storeLayer2 = ((FlyrVectIVectorLayer)layer2).getFeatureStore();
102 102
		} else
103 103
			return false;
104 104

  
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.buffer/src/main/java/org/gvsig/geoprocess/algorithm/buffer/BufferAlgorithm.java
37 37
import org.gvsig.fmap.dal.feature.FeatureStore;
38 38
import org.gvsig.fmap.dal.feature.FeatureType;
39 39
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
41 41

  
42 42
/**
43 43
 * Geoprocess that computes a buffer area around each feature's geometry of the
......
119 119
		}
120 120
		
121 121
		FeatureStore storeLayer = null;
122
		if(layer instanceof gvVectorLayer)
123
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
122
		if(layer instanceof FlyrVectIVectorLayer)
123
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
124 124
		else
125 125
			return false;
126 126
		
......
191 191
			IVectorLayer output = getNewVectorLayer(sextanteLayerLabel,
192 192
													sextanteLayerName,
193 193
													shapeType, types, attrNames);
194
			return ((gvVectorLayer)output).getFeatureStore();
194
			return ((FlyrVectIVectorLayer)output).getFeatureStore();
195 195
		} catch (UnsupportedOutputChannelException e) {
196 196
			Sextante.addErrorToLog(e);
197 197
        } catch (GeoAlgorithmExecutionException e) {
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.base/src/main/java/org/gvsig/geoprocess/algorithm/base/core/ScalableUnionOperation.java
40 40
import org.gvsig.geoprocess.algorithm.base.util.GeometryUtil;
41 41
import org.gvsig.geoprocess.algorithm.base.util.JTSFacade;
42 42
import org.gvsig.geoprocess.algorithm.base.visitor.exception.VisitorException;
43
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
43
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
44 44
import org.gvsig.tools.dispose.DisposableIterator;
45 45

  
46 46
/**
......
148 148
	public static org.gvsig.fmap.geom.Geometry joinLayerGeometries(IVectorLayer input) throws WrongParameterTypeException, WrongParameterIDException, NullParameterValueException {
149 149
		FeatureStore store = null;
150 150
		
151
		if(input instanceof gvVectorLayer)
152
			store = ((gvVectorLayer)input).getFeatureStore();
151
		if(input instanceof FlyrVectIVectorLayer)
152
			store = ((FlyrVectIVectorLayer)input).getFeatureStore();
153 153
		else
154 154
			return null;
155 155
		
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.difference/src/main/java/org/gvsig/geoprocess/algorithm/difference/DifferenceAlgorithm.java
33 33
import org.gvsig.geoprocess.algorithm.base.core.GeometryOperation;
34 34
import org.gvsig.geoprocess.algorithm.base.core.ScalableUnionOperation;
35 35
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
36
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
36
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
37 37

  
38 38
/**
39 39
 * Difference algorithm
......
87 87
		}
88 88
		
89 89
		FeatureStore storeLayer = null;
90
		if(layer instanceof gvVectorLayer)
91
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
90
		if(layer instanceof FlyrVectIVectorLayer)
91
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
92 92
		else
93 93
			return false;
94 94
		
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.reproject/src/main/java/org/gvsig/geoprocess/algorithm/reproject/ReprojectAlgorithm.java
32 32
import org.gvsig.fmap.dal.feature.FeatureStore;
33 33
import org.gvsig.fmap.dal.feature.FeatureType;
34 34
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
35
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
35
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
36 36

  
37 37
/**
38 38
 * Reproject algorithm
......
81 81
		String dstProj = m_Parameters.getParameterValueAsString(DST_PROJECTION);
82 82
		
83 83
		FeatureStore storeLayer = null;
84
		if(layer instanceof gvVectorLayer)
85
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
84
		if(layer instanceof FlyrVectIVectorLayer)
85
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
86 86
		else
87 87
			return false;
88 88
		
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.spatialjoin/src/main/java/org/gvsig/geoprocess/algorithm/spatialjoin/IntersectsSpatialJoinOperation.java
35 35
import org.gvsig.fmap.geom.primitive.Envelope;
36 36
import org.gvsig.geoprocess.algorithm.base.core.GeometryOperation;
37 37
import org.gvsig.geoprocess.algorithm.dissolve.Summary;
38
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
38
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
39 39
import org.gvsig.tools.dispose.DisposableIterator;
40 40

  
41 41
/**
......
49 49
	private FeatureIndex              index                 = null;
50 50
	private Summary                   summary               = null;
51 51
	
52
	public IntersectsSpatialJoinOperation(gvVectorLayer targetLayer, String indexName, Summary summary) {
52
	public IntersectsSpatialJoinOperation(FlyrVectIVectorLayer targetLayer, String indexName, Summary summary) {
53 53
		FeatureIndexes indexes = targetLayer.getFeatureStore().getIndexes();
54 54
		index = indexes.getFeatureIndex(indexName);
55 55
		this.summary = summary;
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.spatialjoin/src/main/java/org/gvsig/geoprocess/algorithm/spatialjoin/SpatiallyIndexedSpatialJoinOperation.java
36 36
import org.gvsig.fmap.geom.primitive.Envelope;
37 37
import org.gvsig.geoprocess.algorithm.base.core.GeometryOperation;
38 38
import org.gvsig.geoprocess.algorithm.base.util.GeometryUtil;
39
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
39
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
40 40
import org.gvsig.tools.dispose.DisposableIterator;
41 41

  
42 42
/**
......
62 62
	 */
63 63
	private FeatureIndex              index                 = null;
64 64
	
65
	public SpatiallyIndexedSpatialJoinOperation(gvVectorLayer targetLayer, String indexName) {
65
	public SpatiallyIndexedSpatialJoinOperation(FlyrVectIVectorLayer targetLayer, String indexName) {
66 66
		FeatureIndexes indexes = targetLayer.getFeatureStore().getIndexes();
67 67
		index = indexes.getFeatureIndex(indexName);
68 68
	}
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.spatialjoin/src/main/java/org/gvsig/geoprocess/algorithm/spatialjoin/SpatialJoinAlgorithm.java
42 42
import org.gvsig.geoprocess.algorithm.dissolve.IDissolveRule;
43 43
import org.gvsig.geoprocess.algorithm.dissolve.Summary;
44 44
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
45
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
45
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
46 46

  
47 47
/**
48 48
 * Spatial join algorithm
......
102 102
		String functionList = m_Parameters.getParameterValueAsString(FUNCTION_LIST);
103 103
		loadSummary(functionList);
104 104

  
105
		gvVectorLayer lyr1 = null;
106
		gvVectorLayer lyr2 = null;
107
		if(layer2 instanceof gvVectorLayer && layer1 instanceof gvVectorLayer) { 
108
			lyr2 = ((gvVectorLayer)layer2);
109
			lyr1 = ((gvVectorLayer)layer1);
105
		FlyrVectIVectorLayer lyr1 = null;
106
		FlyrVectIVectorLayer lyr2 = null;
107
		if(layer2 instanceof FlyrVectIVectorLayer && layer1 instanceof FlyrVectIVectorLayer) { 
108
			lyr2 = ((FlyrVectIVectorLayer)layer2);
109
			lyr1 = ((FlyrVectIVectorLayer)layer1);
110 110
		} else 
111 111
			return false;
112 112

  
......
250 250
			IVectorLayer output = getNewVectorLayer(sextanteLayerLabel,
251 251
													sextanteLayerName,
252 252
													shapeType, types, attrNames);
253
			return ((gvVectorLayer)output).getFeatureStore();
253
			return ((FlyrVectIVectorLayer)output).getFeatureStore();
254 254
		} catch (UnsupportedOutputChannelException e) {
255 255
			Sextante.addErrorToLog(e);
256 256
        } catch (GeoAlgorithmExecutionException e) {
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.xyshift/src/main/java/org/gvsig/geoprocess/algorithm/xyshift/XYShiftAlgorithm.java
33 33
import org.gvsig.fmap.dal.feature.FeatureType;
34 34
import org.gvsig.geoprocess.algorithm.base.core.GeometryOperation;
35 35
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
36
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
36
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
37 37

  
38 38
/**
39 39
 * XYShift algorithm
......
83 83
		double y = m_Parameters.getParameterValueAsDouble(Y);
84 84
		
85 85
		FeatureStore storeLayer = null;
86
		if(layer instanceof gvVectorLayer)
87
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
86
		if(layer instanceof FlyrVectIVectorLayer)
87
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
88 88
		else
89 89
			return false;
90 90
		
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.merge/src/main/java/org/gvsig/geoprocess/algorithm/merge/MergeAlgorithm.java
37 37
import org.gvsig.fmap.dal.feature.FeatureType;
38 38
import org.gvsig.geoprocess.algorithm.base.core.GeometryOperation;
39 39
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
40
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
41 41

  
42 42
/**
43 43
 * Merge algorithm
......
84 84
		ArrayList<IVectorLayer> layers = m_Parameters.getParameterValueAsArrayList(LAYERS);
85 85
		
86 86
		FeatureStore storeLayer = null;
87
		if(layer instanceof gvVectorLayer)
88
			storeLayer = ((gvVectorLayer)layer).getFeatureStore();
87
		if(layer instanceof FlyrVectIVectorLayer)
88
			storeLayer = ((FlyrVectIVectorLayer)layer).getFeatureStore();
89 89
		else
90 90
			return false;
91 91
		
......
94 94
			ArrayList<FeatureStore> featureStoreList = new ArrayList<FeatureStore>();
95 95
			for (int i = 0; i < layers.size(); i++) {
96 96
				IVectorLayer lyr = layers.get(i);
97
				if(lyr instanceof gvVectorLayer && layer.getShapeType() == lyr.getShapeType())
98
					featureStoreList.add(((gvVectorLayer)lyr).getFeatureStore());
97
				if(lyr instanceof FlyrVectIVectorLayer && layer.getShapeType() == lyr.getShapeType())
98
					featureStoreList.add(((FlyrVectIVectorLayer)lyr).getFeatureStore());
99 99
				else {
100 100
					JOptionPane.showMessageDialog(null,
101 101
							Sextante.getText("layers_type_are_different"),
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.merge/src/main/java/org/gvsig/geoprocess/algorithm/merge/MergeOperation.java
28 28
import org.gvsig.fmap.dal.feature.Feature;
29 29
import org.gvsig.fmap.geom.exception.CreateGeometryException;
30 30
import org.gvsig.geoprocess.algorithm.base.core.GeometryOperation;
31
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
31
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
32 32

  
33 33
/**
34 34
 * Builds a geometry with the intersection between two layers
......
54 54
			return lastEditFeature;
55 55
		
56 56
		try {
57
			if(inFeatureStore == ((gvVectorLayer)layer).getFeatureStore())
57
			if(inFeatureStore == ((FlyrVectIVectorLayer)layer).getFeatureStore())
58 58
				lastEditFeature = persister.addFeature(featureInput, g);
59 59
			else
60 60
				lastEditFeature = persister.addDifferentFieldFeature(featureInput, g);
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/AbstractSextanteGeoProcess.java
39 39
import org.gvsig.fmap.dal.feature.FeatureType;
40 40
import org.gvsig.fmap.geom.Geometry;
41 41
import org.gvsig.geoprocess.lib.api.GeoProcess;
42
import org.gvsig.geoprocess.lib.sextante.dataObjects.gvVectorLayer;
42
import org.gvsig.geoprocess.lib.sextante.dataObjects.FlyrVectIVectorLayer;
43 43

  
44 44
/**
45 45
 * Base implementation for Sextante based {@link GeoProcess} objects.
......
104 104
            IVectorLayer output =
105 105
                getNewVectorLayer(sextanteLayerLabel, sextanteLayerName,
106 106
                    shapeType, types, attrNames);
107
            return ((gvVectorLayer) output).getFeatureStore();
107
            return ((FlyrVectIVectorLayer) output).getFeatureStore();
108 108
        } catch (UnsupportedOutputChannelException e) {
109 109
            Sextante.addErrorToLog(e);
110 110
        } catch (GeoAlgorithmExecutionException e) {
......
190 190
            IVectorLayer output =
191 191
                getNewVectorLayer(sextanteLayerLabel, sextanteLayerName,
192 192
                    shapeType, types, attrNames);
193
            return ((gvVectorLayer) output).getFeatureStore();
193
            return ((FlyrVectIVectorLayer) output).getFeatureStore();
194 194
        } catch (UnsupportedOutputChannelException e) {
195 195
            Sextante.addErrorToLog(e);
196 196
        } catch (GeoAlgorithmExecutionException e) {
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/SextanteGeoProcessLibrary.java
35 35
import org.gvsig.fmap.mapcontrol.MapControlLibrary;
36 36
import org.gvsig.geoprocess.lib.api.GeoProcessLibrary;
37 37
import org.gvsig.geoprocess.lib.api.GeoProcessLocator;
38
import org.gvsig.geoprocess.lib.sextante.core.gvInputFactory;
39
import org.gvsig.geoprocess.lib.sextante.core.gvOutputFactory;
40
import org.gvsig.geoprocess.lib.sextante.core.gvPostProcessTaskFactory;
38
import org.gvsig.geoprocess.lib.sextante.core.DefaultInputFactory;
39
import org.gvsig.geoprocess.lib.sextante.core.DefaultOutputFactory;
40
import org.gvsig.geoprocess.lib.sextante.core.DefaultPostProcessTaskFactory;
41 41
import org.gvsig.raster.fmap.FmapRasterLibrary;
42 42
import org.gvsig.tools.library.AbstractLibrary;
43 43
import org.gvsig.tools.library.LibraryException;
......
79 79
        SextanteGUI.initialize();
80 80
        SextanteGUI.setCustomDefaultSettings(map);
81 81
        SextanteGUI.setMainFrame(((Frame) PluginServices.getMainFrame()));
82
        SextanteGUI.setOutputFactory(new gvOutputFactory());
83
        SextanteGUI.setInputFactory(new gvInputFactory());
84
        SextanteGUI.setPostProcessTaskFactory(new gvPostProcessTaskFactory());
82
        SextanteGUI.setOutputFactory(new DefaultOutputFactory());
83
        SextanteGUI.setInputFactory(new DefaultInputFactory());
84
        SextanteGUI.setPostProcessTaskFactory(new DefaultPostProcessTaskFactory());
85 85

  
86 86
        GeoProcessLocator
87 87
            .registerGeoProcessManager(SextanteGeoProcessManager.class);
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/gvVectorLayer.java
1
package org.gvsig.geoprocess.lib.sextante.dataObjects;
2

  
3
import java.io.File;
4
import java.sql.Types;
5
import java.util.Iterator;
6

  
7
import com.vividsolutions.jts.geom.Geometry;
8

  
9
import es.unex.sextante.core.Sextante;
10
import es.unex.sextante.dataObjects.AbstractVectorLayer;
11
import es.unex.sextante.dataObjects.IFeatureIterator;
12
import es.unex.sextante.dataObjects.IVectorLayer;
13
import es.unex.sextante.outputs.FileOutputChannel;
14
import es.unex.sextante.outputs.IOutputChannel;
15

  
16
import org.cresques.cts.IProjection;
17

  
18
import org.gvsig.fmap.dal.DALLocator;
19
import org.gvsig.fmap.dal.DataManager;
20
import org.gvsig.fmap.dal.DataServerExplorer;
21
import org.gvsig.fmap.dal.DataStoreParameters;
22
import org.gvsig.fmap.dal.exception.DataException;
23
import org.gvsig.fmap.dal.feature.EditableFeature;
24
import org.gvsig.fmap.dal.feature.EditableFeatureType;
25
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
26
import org.gvsig.fmap.dal.feature.FeatureStore;
27
import org.gvsig.fmap.dal.feature.FeatureType;
28
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
29
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
30
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
31
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
32
import org.gvsig.fmap.geom.DataTypes;
33
import org.gvsig.fmap.geom.GeometryLocator;
34
import org.gvsig.fmap.geom.GeometryManager;
35
import org.gvsig.fmap.geom.operation.GeometryOperationContext;
36
import org.gvsig.fmap.geom.operation.GeometryOperationException;
37
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
38
import org.gvsig.fmap.geom.operation.fromjts.FromJTS;
39
import org.gvsig.fmap.geom.type.GeometryType;
40
import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException;
41
import org.gvsig.fmap.geom.type.GeometryTypeNotValidException;
42
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
43
import org.gvsig.fmap.mapcontext.layers.LayerFactory;
44
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
45
import org.gvsig.tools.ToolsLocator;
46
import org.gvsig.tools.dataTypes.DataTypesManager;
47

  
48
public class gvVectorLayer extends AbstractVectorLayer {
49

  
50
    private static final DataManager DATA_MANAGER = DALLocator.getDataManager();
51

  
52
    private final int PRECISION = 5;
53
    private FeatureStore featureStore = null;
54
    private IProjection m_Projection = null;
55
    private FeatureType featureType = null;
56
    private GeometryManager geometryManager = null;
57
    private FLyrVect m_Layer;
58
    private String m_sName;
59
    private IOutputChannel m_Channel;
60

  
61
    // private Object inputParameters = null;
62

  
63
    public gvVectorLayer() {
64
        geometryManager = GeometryLocator.getGeometryManager();
65
    }
66

  
67
    public void create(String sName, Object inputParams, int iShapeType,
68
        Class[] types, String[] sFields, Object crs, int[] fieldSize) {
69
        try {
70
            // inputParameters = inputParams;
71
            m_sName = sName;
72
            m_Projection = (IProjection) crs;
73

  
74
            if (inputParams instanceof OutputParameters) {
75
                OutputParameters outputParam = (OutputParameters) inputParams;
76
                NewFeatureStoreParameters newParams =
77
                    outputParam.getDataParameters();
78
                DataServerExplorer dataServerExplorer =
79
                    outputParam.getExplorer();
80

  
81
                featureType = newParams.getDefaultFeatureType();
82
                loadFeatureType(sFields, types, iShapeType, crs,
83
                    (EditableFeatureType) featureType, fieldSize);
84
                newParams.setDynValue("CRS", m_Projection);
85

  
86
                DATA_MANAGER.newStore(dataServerExplorer.getProviderName(),
87
                    newParams.getDataStoreName(), newParams, true);
88

  
89
                featureStore =
90
                    (FeatureStore) DATA_MANAGER.openStore(
91
                        newParams.getDataStoreName(), newParams);
92
                featureStore.edit(FeatureStore.MODE_APPEND);
93
            }
94

  
95
            if (inputParams instanceof FilesystemStoreParameters) {
96
                // TODO: Terminar para todo tipo fuentes de datos. No se puede
97
                // hacer ahora pq falta poder obtener un FeatureType del
98
                // parameter.
99
                // Esto es as? pq el store registra parameters para cargar
100
                // ficheros y no para escribirlos.
101
                String path =
102
                    ((FilesystemStoreParameters) inputParams).getFile()
103
                        .getAbsolutePath();
104
                create(sName, path, iShapeType, types, sFields, crs, fieldSize);
105
            }
106

  
107
            if (inputParams instanceof String) {
108
                create(sName, (String) inputParams, iShapeType, types, sFields,
109
                    crs, fieldSize);
110
            }
111

  
112
            /*
113
             * NewFeatureStoreParameters param =
114
             * (NewFeatureStoreParameters)inputParams;
115
             * featureType = param.getDefaultFeatureType();
116
             * loadFeatureType(sFields, types, iShapeType, crs, featureType,
117
             * fieldSize);
118
             * 
119
             * param.setDefaultFeatureType(featureType);
120
             * 
121
             * DataManager manager = DALLocator.getDataManager();
122
             * featureStore = (FeatureStore) manager.createStore(param);
123
             * featureStore.edit(FeatureStore.MODE_APPEND);
124
             */
125

  
126
        } catch (Exception e) {
127
            Sextante.addErrorToLog(e);
128
        }
129
    }
130

  
131
    public void create(final String sName, final String sFilename,
132
        final int iShapeType, final Class<?>[] types, final String[] sFields,
133
        final Object crs, final int[] fieldSize) {
134

  
135
        try {
136
            // inputParameters = sFilename;
137
            m_sName = sName;
138
            m_Projection = (IProjection) crs;
139

  
140
            final FilesystemServerExplorerParameters explorerParams =
141
                (FilesystemServerExplorerParameters) DATA_MANAGER
142
                    .createServerExplorerParameters(FilesystemServerExplorer.NAME);
143
            explorerParams.setRoot(new File(sFilename).getParent());
144
            final FilesystemServerExplorer explorer =
145
                (FilesystemServerExplorer) DATA_MANAGER.openServerExplorer(
146
                    FilesystemServerExplorer.NAME, explorerParams);
147
            final NewFeatureStoreParameters newParams =
148
                (NewFeatureStoreParameters) explorer.getAddParameters(new File(
149
                    sFilename));
150

  
151
            EditableFeatureType editableFeatureType =
152
                newParams.getDefaultFeatureType();
153
            featureType = editableFeatureType;
154
            loadFeatureType(sFields, types, iShapeType, crs,
155
                editableFeatureType, fieldSize);
156

  
157
            newParams.setDefaultFeatureType(featureType);
158
            newParams.setDynValue("crs", m_Projection);
159

  
160
            explorer.add(newParams.getDataStoreName(), newParams, true);
161
            featureStore =
162
                (FeatureStore) DATA_MANAGER.openStore(
163
                    newParams.getDataStoreName(), newParams);
164
            featureStore.edit(FeatureStore.MODE_APPEND);
165
            featureType = featureStore.getDefaultFeatureType();
166

  
167
        } catch (final Exception e) {
168
            Sextante.addErrorToLog(e);
169
        }
170
    }
171

  
172
    private void loadFeatureType(final String[] fields, final Class<?>[] types,
173
        final int shapeType, final Object crs,
174
        final EditableFeatureType featureType, final int[] fieldSize) {
175
        final int[] iTypes = getTypes(types);
176

  
177
        for (int i = 0; i < fields.length; i++) {
178
            if (iTypes[i] == DataTypes.GEOMETRY) {
179
                addGeometryAttribute(fields[i], shapeType, featureType);
180
            } else {
181
                featureType.add(fields[i], iTypes[i]).setSize(fieldSize[i])
182
                    .setPrecision(PRECISION);
183
            }
184
        }
185

  
186
        FeatureAttributeDescriptor desc =
187
            featureType.getAttributeDescriptor("GEOMETRY");
188
        if (desc == null) {
189
            addGeometryAttribute("GEOMETRY", shapeType, featureType);
190
        }
191
        featureType.setDefaultGeometryAttributeName("GEOMETRY");
192
    }
193

  
194
    private void addGeometryAttribute(final String fieldName,
195
        final int shapeType, final EditableFeatureType featureType) {
196
        try {
197
            GeometryType type =
198
                geometryManager.getGeometryType(getgvSIGShapeType(shapeType),
199
                    org.gvsig.fmap.geom.Geometry.SUBTYPES.GEOM2D);
200
            featureType.add(fieldName, DataTypes.GEOMETRY)
201
                .setGeometryType(type);
202
        } catch (GeometryTypeNotSupportedException e) {
203
            throw new RuntimeException(
204
                "Error getting geometry type with type = "
205
                    + getgvSIGShapeType(shapeType) + ", subtype = "
206
                    + org.gvsig.fmap.geom.Geometry.SUBTYPES.GEOM2D, e);
207
        } catch (GeometryTypeNotValidException e) {
208
            throw new RuntimeException(
209
                "Error getting geometry type with type = "
210
                    + getgvSIGShapeType(shapeType) + ", subtype = "
211
                    + org.gvsig.fmap.geom.Geometry.SUBTYPES.GEOM2D, e);
212
        }
213
    }
214

  
215
    private int[] getTypes(Class<?>[] classes) {
216
        DataTypesManager typesManager = ToolsLocator.getDataTypesManager();
217
        int[] types = new int[classes.length];
218
        for (int i = 0; i < classes.length; i++) {
219
            types[i] = typesManager.getDataType(classes[i]).getType();
220
        }
221
        return types;
222
    }
223

  
224
    public void create(final FLyrVect layer) {
225

  
226
        m_Layer = layer;
227
        try {
228
            featureStore = layer.getFeatureStore();
229
            featureType = featureStore.getDefaultFeatureType();
230
            m_Projection = layer.getProjection();
231
        } catch (final Exception e) {
232
            Sextante.addErrorToLog(e);
233
        }
234

  
235
    }
236

  
237
    @SuppressWarnings("deprecation")
238
    public void open() {
239

  
240
        if (m_Layer == null) {
241
            try {
242
                m_Layer =
243
                    (FLyrVect) LayerFactory.getInstance().createLayer(
244
                        getFilename(), featureStore);
245
            } catch (final LoadLayerException e) {
246
                Sextante.addErrorToLog(e);
247
                throw new RuntimeException(e);
248
            }
249
        }
250

  
251
    }
252

  
253
    public void close() {
254
    }
255

  
256
    /**
257
     * Returns the length of field
258
     * 
259
     * @param dataType
260
     * @return length of field
261
     */
262
    public int getDataTypeLength(final int dataType) {
263

  
264
        switch (dataType) {
265
        case Types.NUMERIC:
266
        case Types.DOUBLE:
267
        case Types.REAL:
268
        case Types.FLOAT:
269
        case Types.BIGINT:
270
        case Types.INTEGER:
271
        case Types.DECIMAL:
272
            return 20;
273
        case Types.CHAR:
274
        case Types.VARCHAR:
275
        case Types.LONGVARCHAR:
276
            return 254;
277
        case Types.DATE:
278
            return 8;
279
        case Types.BOOLEAN:
280
        case Types.BIT:
281
            return 1;
282
        }
283
        return 0;
284

  
285
    }
286

  
287
    @SuppressWarnings("unchecked")
288
    public void addFeature(final Geometry geom, final Object[] values) {
289
        try {
290
            org.gvsig.fmap.geom.Geometry iGeo = null;
291

  
292
            final GeometryOperationContext ctx = new GeometryOperationContext();
293
            ctx.setAttribute(FromJTS.PARAM, geom);
294
            try {
295
                iGeo =
296
                    (org.gvsig.fmap.geom.Geometry) geometryManager
297
                        .invokeOperation(FromJTS.NAME, ctx);
298
            } catch (final GeometryOperationNotSupportedException e) {
299
                Sextante.addErrorToLog(e);
300
                return;
301
            } catch (final GeometryOperationException e) {
302
                Sextante.addErrorToLog(e);
303
                return;
304
            }
305

  
306
            final EditableFeature ef = featureStore.createNewFeature();
307
            final Iterator<FeatureAttributeDescriptor> features =
308
                featureType.iterator();
309

  
310
            int i = 0;
311
            while (features.hasNext()) {
312
                final FeatureAttributeDescriptor featureAttributeDescriptor =
313
                    features.next();
314
                // if (!featureAttributeDescriptor.getName().equals(
315
                // featureType.getDefaultGeometryAttributeName())) {
316
                // ef.set(
317
                // featureAttributeDescriptor.getName().substring(
318
                // 0,
319
                // Math.min(11, featureAttributeDescriptor.getName()
320
                // .length())), values[i]);
321
                // i++;
322
                // }
323
                if (!featureAttributeDescriptor.getName().equals(
324
                    featureType.getDefaultGeometryAttributeName())) {
325
                    ef.set(featureAttributeDescriptor.getName(), values[i]);
326
                }
327
                i++;
328
            }
329
            ef.set(featureType.getDefaultGeometryAttributeIndex(), iGeo);
330
            featureStore.insert(ef);
331
        } catch (final Exception e) {
332
            e.printStackTrace();
333
        }
334
    }
335

  
336
    public IFeatureIterator iterator() {
337

  
338
        if (m_Layer != null) {
339
            return new gvFeatureIterator(m_Layer, getFilters());
340
        } else {
341
            // cannot iterate layers being edited
342
            return new gvFeatureIterator();
343
        }
344
    }
345

  
346
    public String getFieldName(final int i) {
347

  
348
        if (featureStore != null) {
349
            return ((FeatureAttributeDescriptor) featureType.get(i)).getName();
350
        }
351
        return null;
352

  
353
    }
354

  
355
    public Class<?> getFieldType(final int i) {
356
        return featureStore == null ? null : featureType
357
            .getAttributeDescriptor(i).getDataType().getDefaultClass();
358
    }
359

  
360
    public int getFieldCount() {
361
        if (featureStore != null) {
362
            return featureType.size();
363
        }
364
        return 0;
365

  
366
    }
367

  
368
    @Override
369
    public int getShapesCount() {
370

  
371
        if (featureStore != null) {
372
            try {
373
                return (int) featureStore.getFeatureSet().getSize();
374
            } catch (final DataException e) {
375
                Sextante.addErrorToLog(e);
376
                return 0;
377
            }
378
        }
379
        return 0;
380

  
381
    }
382

  
383
    public int getShapeType() {
384
        if (featureStore != null) {
385
            return getShapeTypeFromGvSIGShapeType(((FeatureAttributeDescriptor) featureType
386
                .get(featureType.getDefaultGeometryAttributeIndex()))
387
                .getGeomType().getType());
388
        }
389
        return 0;
390
    }
391

  
392
    private int getShapeTypeFromGvSIGShapeType(final int shapeType) {
393

  
394
        switch (shapeType) {
395
        case org.gvsig.fmap.geom.Geometry.TYPES.SURFACE:
396
            return IVectorLayer.SHAPE_TYPE_POLYGON;
397
        case org.gvsig.fmap.geom.Geometry.TYPES.CURVE:
398
        case org.gvsig.fmap.geom.Geometry.TYPES.MULTICURVE:
399
            return IVectorLayer.SHAPE_TYPE_LINE;
400
        case org.gvsig.fmap.geom.Geometry.TYPES.POINT:
401
        case org.gvsig.fmap.geom.Geometry.TYPES.MULTIPOINT:
402
            return IVectorLayer.SHAPE_TYPE_POINT;
403
        default:
404
            return IVectorLayer.SHAPE_TYPE_POLYGON;
405
        }
406

  
407
    }
408

  
409
    private int getgvSIGShapeType(final int shapeType) {
410

  
411
        switch (shapeType) {
412
        case IVectorLayer.SHAPE_TYPE_POLYGON:
413
            return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE;
414
        case IVectorLayer.SHAPE_TYPE_LINE:
415
            return org.gvsig.fmap.geom.Geometry.TYPES.CURVE;
416
        case IVectorLayer.SHAPE_TYPE_POINT:
417
            return org.gvsig.fmap.geom.Geometry.TYPES.POINT;
418
        default:
419
            return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE;
420
        }
421

  
422
    }
423

  
424
    public String getName() {
425

  
426
        if (m_Layer != null) {
427
            return m_Layer.getName();
428
        } else {
429
            return m_sName;
430
        }
431
    }
432

  
433
    public void postProcess() {
434

  
435
        if (featureStore == null) {
436
            return;
437
        }
438
        try {
439
            featureStore.finishEditing();
440
        } catch (final DataException e) {
441
            // No puede finalizar la edici๏ฟฝn. Es posible que se haya cerrado
442
            // previamente.
443
        }
444

  
445
        /*
446
         * FLyrVect vectorLayer = null;
447
         * if (inputParameters instanceof String) {
448
         * vectorLayer = (FLyrVect) FileTools.openLayer((String)
449
         * inputParameters, s_Name, m_Projection);
450
         * }
451
         * if (inputParameters instanceof OutputParameters) {
452
         * vectorLayer = (FLyrVect) FileTools.openLayer(((OutputParameters)
453
         * inputParameters).getDataParameters(), s_Name,
454
         * m_Projection);
455
         * }
456
         * create(vectorLayer);
457
         */
458

  
459
    }
460

  
461
    public String getFilename() {
462

  
463
        if (featureStore != null) {
464
            final DataStoreParameters dsp = featureStore.getParameters();
465
            if (dsp instanceof FilesystemStoreParameters) {
466
                return ((FilesystemStoreParameters) dsp).getFile()
467
                    .getAbsolutePath();
468
            } else {
469
                return null;
470
            }
471
        } else {
472
            return m_sName;
473
        }
474

  
475
    }
476

  
477
    public Object getCRS() {
478

  
479
        return m_Projection;
480

  
481
    }
482

  
483
    public void setName(final String name) {
484

  
485
        m_sName = name;
486
        // inputParameters = name;
487

  
488
    }
489

  
490
    @Override
491
    public Object getBaseDataObject() {
492

  
493
        return m_Layer;
494

  
495
    }
496

  
497
    public void free() {
498

  
499
        m_Layer.dispose();
500
        featureStore.dispose();
501

  
502
        m_Layer = null;
503
        featureStore = null;
504
    }
505

  
506
    public IOutputChannel getOutputChannel() {
507

  
508
        if (featureStore != null) {
509
            final DataStoreParameters dsp = featureStore.getParameters();
510
            if (dsp instanceof FilesystemStoreParameters) {
511
                String file =
512
                    ((FilesystemStoreParameters) dsp).getFile()
513
                        .getAbsolutePath();
514
                return new FileOutputChannel(file);
515
            } else {
516
                return null;
517
            }
518
        } else {
519
            return m_Channel;
520
        }
521

  
522
    }
523

  
524
    public boolean canBeEdited() {
525

  
526
        // we support only file-based, so we can overwrite
527
        return true;
528

  
529
    }
530

  
531
    public FeatureStore getFeatureStore() {
532
        return featureStore;
533
    }
534

  
535
}
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/gvRecordsetIterator.java
1
package org.gvsig.geoprocess.lib.sextante.dataObjects;
2

  
3
import java.util.ArrayList;
4
import java.util.Iterator;
5

  
6
import es.unex.sextante.dataObjects.IRecord;
7
import es.unex.sextante.dataObjects.IRecordsetIterator;
8
import es.unex.sextante.dataObjects.RecordImpl;
9

  
10
import org.gvsig.fmap.dal.exception.DataException;
11
import org.gvsig.fmap.dal.feature.Feature;
12
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
13
import org.gvsig.fmap.dal.feature.FeatureSet;
14
import org.gvsig.fmap.dal.feature.FeatureType;
15
import org.gvsig.tools.dispose.DisposableIterator;
16

  
17
public class gvRecordsetIterator implements IRecordsetIterator {
18

  
19
    private final FeatureSet featureSet;
20
    private DisposableIterator featureIterator;
21

  
22
    gvRecordsetIterator(final FeatureSet obj) throws DataException {
23

  
24
        featureSet = obj;
25
        try {
26
            featureIterator = featureSet.fastIterator();
27
        } catch (final DataException e) {
28
            throw e;
29
        }
30

  
31
    }
32

  
33
    public boolean hasNext() {
34
        return featureIterator.hasNext();
35
    }
36

  
37
    public IRecord next() {
38
        final Feature feature = (Feature) featureIterator.next();
39
        final FeatureType fType = feature.getType();
40
        @SuppressWarnings("unchecked")
41
        final Iterator<FeatureAttributeDescriptor> descriptors =
42
            fType.iterator();
43
        final ArrayList<Object> objects = new ArrayList<Object>();
44
        while (descriptors.hasNext()) {
45
            final FeatureAttributeDescriptor descriptor = descriptors.next();
46
            objects.add(feature.get(descriptor.getName()));
47
        }
48

  
49
        final IRecord record = new RecordImpl(objects.toArray(new Object[0]));
50

  
51
        return record;
52
    }
53

  
54
    public void close() {
55
        if (featureIterator != null) {
56
            featureIterator.dispose();
57
            featureIterator = null;
58
        }
59
        featureSet.dispose();
60
    }
61

  
62
}
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/gvFeatureIterator.java
1
package org.gvsig.geoprocess.lib.sextante.dataObjects;
2

  
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
import java.util.List;
6
import java.util.NoSuchElementException;
7

  
8
import com.vividsolutions.jts.geom.Geometry;
9

  
10
import es.unex.sextante.core.Sextante;
11
import es.unex.sextante.dataObjects.FeatureImpl;
12
import es.unex.sextante.dataObjects.IFeature;
13
import es.unex.sextante.dataObjects.IFeatureIterator;
14
import es.unex.sextante.dataObjects.vectorFilters.IVectorLayerFilter;
15

  
16
import org.gvsig.fmap.dal.exception.DataException;
17
import org.gvsig.fmap.dal.feature.Feature;
18
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
19
import org.gvsig.fmap.dal.feature.FeatureSet;
20
import org.gvsig.fmap.dal.feature.FeatureType;
21
import org.gvsig.fmap.geom.operation.tojts.ToJTS;
22
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
23
import org.gvsig.tools.dispose.DisposableIterator;
24

  
25
public class gvFeatureIterator implements IFeatureIterator {
26

  
27
    private final List<IVectorLayerFilter> m_Filters;
28
    private boolean m_bIsNextConsumed;
29
    private IFeature m_CurrentValue;
30
    private boolean m_bFinished;
31
    private DisposableIterator m_FeatureIterator;
32

  
33
    public gvFeatureIterator(final FLyrVect layer,
34
        final List<IVectorLayerFilter> filters) {
35

  
36
        m_bIsNextConsumed = true;
37
        m_Filters = filters;
38

  
39
        FeatureSet set = null;
40
        try {
41
            set = layer.getFeatureStore().getFeatureSet();
42
            m_FeatureIterator = set.fastIterator();
43
        } catch (final DataException e) {
44
            if (m_FeatureIterator != null) {
45
                m_FeatureIterator.dispose();
46
            }
47
            if (set != null) {
48
                set.dispose();
49
            }
50
        }
51
    }
52

  
53
    public gvFeatureIterator() {
54

  
55
        m_Filters = null;
56

  
57
    }
58

  
59
    private boolean accept(final IFeature value) {
60

  
61
        for (final IVectorLayerFilter filter : m_Filters) {
62
            if (!filter.accept(value, 0)) {
63
                return false;
64
            }
65
        }
66
        return true;
67
    }
68

  
69
    public boolean moveToNextValid() {
70

  
71
        if (m_FeatureIterator == null) {
72
            return false;
73
        }
74

  
75
        boolean bFound = false;
76
        ;
77
        while (!bFound && m_FeatureIterator.hasNext()) {
78
            try {
79
                final Feature f = (Feature) m_FeatureIterator.next();
80
                final org.gvsig.fmap.geom.Geometry geometry =
81
                    f.getDefaultGeometry();
82
                final Geometry geom =
83
                    (Geometry) geometry.invokeOperation(ToJTS.CODE, null);
84
                final FeatureType type = f.getType();
85
                @SuppressWarnings("unchecked")
86
                final Iterator<FeatureAttributeDescriptor> iter =
87
                    type.iterator();
88
                final List<Object> objects = new ArrayList<Object>();
89
                while (iter.hasNext()) {
90
                    final FeatureAttributeDescriptor descriptor = iter.next();
91
                    final String name = descriptor.getName();
92
                    // Comment this as if the geometry field is in the middle of
93
                    // the fields it will be problematic elsewhere
94
                    if (!type.getDefaultGeometryAttributeName().equals(name)) {
95
                        objects.add(f.get(name));
96
                    }
97
                }
98
                final FeatureImpl feature =
99
                    new FeatureImpl(geom, objects.toArray(new Object[objects
100
                        .size()]));
101
                if (accept(feature)) {
102
                    bFound = true;
103
                    m_CurrentValue = feature;
104
                    m_bIsNextConsumed = false;
105
                }
106
            } catch (final Exception e) {
107
                Sextante.addErrorToLog(e);
108
                return false;
109
            }
110
        }
111
        if (!bFound) {
112
            m_bFinished = true;
113
        }
114
        return bFound;
115
    }
116

  
117
    public IFeature next() {
118

  
119
        if (!m_bIsNextConsumed) {
120
            m_bIsNextConsumed = true;
121
            return m_CurrentValue;
122
        }
123

  
124
        if (!m_bFinished) {
125
            if (moveToNextValid()) {
126
                m_bIsNextConsumed = true;
127
                return m_CurrentValue;
128
            }
129
        }
130

  
131
        throw new NoSuchElementException();
132
    }
133

  
134
    public boolean hasNext() {
135

  
136
        if (m_bFinished) {
137
            return false;
138
        }
139

  
140
        if (!m_bIsNextConsumed) {
141
            return true;
142
        }
143

  
144
        return moveToNextValid();
145

  
146
    }
147

  
148
    public void close() {
149
    }
150

  
151
}
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/gvTable.java
1
package org.gvsig.geoprocess.lib.sextante.dataObjects;
2

  
3
import java.io.File;
4
import java.util.Iterator;
5

  
6
import es.unex.sextante.core.Sextante;
7
import es.unex.sextante.dataObjects.AbstractTable;
8
import es.unex.sextante.dataObjects.IRecordsetIterator;
9
import es.unex.sextante.outputs.FileOutputChannel;
10
import es.unex.sextante.outputs.IOutputChannel;
11

  
12
import org.gvsig.app.project.ProjectManager;
13
import org.gvsig.app.project.documents.table.TableDocument;
14
import org.gvsig.app.project.documents.table.TableManager;
15
import org.gvsig.fmap.dal.DALLocator;
16
import org.gvsig.fmap.dal.DataManager;
17
import org.gvsig.fmap.dal.exception.DataException;
18
import org.gvsig.fmap.dal.feature.EditableFeature;
19
import org.gvsig.fmap.dal.feature.EditableFeatureType;
20
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
21
import org.gvsig.fmap.dal.feature.FeatureStore;
22
import org.gvsig.fmap.dal.feature.FeatureType;
23
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
24
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
25
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
26
import org.gvsig.tools.ToolsLocator;
27
import org.gvsig.tools.dataTypes.DataTypesManager;
28

  
29
public class gvTable extends AbstractTable {
30

  
31
    private final int PRECISION = 5;
32
    private TableDocument m_Table;
33
    private String m_sName;
34
    private String m_sFilename;
35
    private FeatureType featureType;
36
    private FeatureStore featureStore;
37

  
38
    public String getName() {
39

  
40
        if (m_Table != null) {
41
            return m_Table.getName();
42
        } else {
43
            return m_sName;
44
        }
45

  
46
    }
47

  
48
    public void create(final TableDocument table) {
49

  
50
        try {
51
            m_Table = table;
52
            featureStore = table.getStore();
53
            featureType = featureStore.getDefaultFeatureType();
54
        } catch (final DataException e) {
55
            Sextante.addErrorToLog(e);
56
        }
57

  
58
    }
59

  
60
    public void create(final String sName, final String sFilename,
61
        final Class<?>[] types, final String[] sFields) {
62

  
63
        try {
64
            m_sName = sName;
65

  
66
            final DataManager datamanager = DALLocator.getDataManager();
67
            final FilesystemServerExplorerParameters explorerParams =
68
                (FilesystemServerExplorerParameters) datamanager
69
                    .createServerExplorerParameters(FilesystemServerExplorer.NAME);
70
            explorerParams.setRoot(new File(sFilename).getParent());
71
            final FilesystemServerExplorer explorer =
72
                (FilesystemServerExplorer) datamanager.openServerExplorer(
73
                    FilesystemServerExplorer.NAME, explorerParams);
74
            final NewFeatureStoreParameters newParams =
75
                (NewFeatureStoreParameters) explorer.getAddParameters(new File(
76
                    sFilename));
77

  
78
            EditableFeatureType editableFeatureType =
79
                newParams.getDefaultFeatureType();
80
            featureType = editableFeatureType;
81
            loadFeatureType(sFields, types, editableFeatureType);
82

  
83
            newParams.setDefaultFeatureType(featureType);
84

  
85
            explorer.add(newParams.getDataStoreName(), newParams, true);
86
            final DataManager manager = DALLocator.getDataManager();
87
            featureStore =
88
                (FeatureStore) manager.openStore(newParams.getDataStoreName(),
89
                    newParams);
90
            featureStore.edit(FeatureStore.MODE_APPEND);
91
            featureType = featureStore.getDefaultFeatureType();
92
            m_sFilename = sFilename;
93

  
94
        } catch (final Exception e) {
95
            Sextante.addErrorToLog(e);
96
        }
97

  
98
    }
99

  
100
    private void loadFeatureType(final String[] fields, final Class<?>[] types,
101
        final EditableFeatureType featureType) {
102
        final int[] iTypes = getTypes(types);
103

  
104
        for (int i = 0; i < fields.length; i++) {
105
            featureType.add(fields[i], iTypes[i]).setPrecision(PRECISION);
106
        }
107
    }
108

  
109
    private int[] getTypes(Class<?>[] classes) {
110
        DataTypesManager typesManager = ToolsLocator.getDataTypesManager();
111
        int[] types = new int[classes.length];
112
        for (int i = 0; i < classes.length; i++) {
113
            types[i] = typesManager.getDataType(classes[i]).getType();
114
        }
115
        return types;
116
    }
117

  
118
    public void addRecord(final Object[] record) {
119
        try {
120
            final EditableFeature ef = featureStore.createNewFeature();
121
            @SuppressWarnings("unchecked")
122
            final Iterator<FeatureAttributeDescriptor> features =
123
                featureType.iterator();
124

  
125
            int i = 0;
126
            while (features.hasNext()) {
127
                final FeatureAttributeDescriptor featureAttributeDescriptor =
128
                    features.next();
129
                ef.set(featureAttributeDescriptor.getName(), record[i]);
130
                i++;
131
            }
132
            featureStore.insert(ef);
133
        } catch (final Exception e) {
134
            e.printStackTrace();
135
        }
136

  
137
    }
138

  
139
    public IRecordsetIterator iterator() {
140
        try {
141
            return new gvRecordsetIterator(featureStore.getFeatureSet(m_Table
142
                .getQuery()));
143
        } catch (final DataException e) {
144
            throw new RuntimeException(e);
145
        }
146
    }
147

  
148
    public String getFieldName(final int i) {
149
        return ((FeatureAttributeDescriptor) featureType.get(i)).getName();
150
    }
151

  
152
    public Class<?> getFieldType(final int i) {
153
        return featureType.getAttributeDescriptor(i).getDataType()
154
            .getDefaultClass();
155
    }
156

  
157
    public int getFieldCount() {
158
        return featureType.size();
159
    }
160

  
161
    public long getRecordCount() {
162
        try {
163
            return featureStore.getFeatureSet(m_Table.getQuery()).getSize();
164
        } catch (final DataException e) {
165
            e.printStackTrace();
166
        }
167
        return 0;
168
    }
169

  
170
    public void postProcess() {
171
        try {
172
            final TableDocument table =
173
                (TableDocument) ProjectManager.getInstance().createDocument(
174
                    TableManager.TYPENAME, m_sName);
175
            table.setStore(featureStore);
176
        } catch (final Exception e) {
177
            return;
178
        }
179

  
180
        final TableDocument table = FileTools.openTable(m_sFilename, m_sName);
181
        create(table);
182
    }
183

  
184
    public void open() {
185

  
186
    }
187

  
188
    public void close() {
189
        // Nothing to do
190
    }
191

  
192
    public String getFilename() {
193

  
194
        return m_sFilename;
195

  
196
    }
197

  
198
    public void setName(final String name) {
199

  
200
        if (m_Table != null) {
201
            m_Table.setName(name);
202
        } else {
203
            m_sName = name;
204
        }
205

  
206
    }
207

  
208
    public Object getBaseDataObject() {
209

  
210
        return m_Table;
211

  
212
    }
213

  
214
    public void free() {
215

  
216
        m_Table = null;
217

  
218
    }
219

  
220
    public IOutputChannel getOutputChannel() {
221

  
222
        return new FileOutputChannel(m_sFilename);
223

  
224
    }
225
}
org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.lib/org.gvsig.geoprocess.lib.sextante/src/main/java/org/gvsig/geoprocess/lib/sextante/dataObjects/gvRasterLayerWrite.java
1
package org.gvsig.geoprocess.lib.sextante.dataObjects;
2

  
3
import java.awt.geom.Rectangle2D;
4

  
5
import es.unex.sextante.core.AnalysisExtent;
6
import es.unex.sextante.dataObjects.AbstractRasterLayer;
7
import es.unex.sextante.gui.core.SextanteGUI;
8
import es.unex.sextante.outputs.IOutputChannel;
9

  
10
import org.cresques.cts.IProjection;
11

  
12
/**
13
 * 
14
 * @author volaya, nacho brodin (nachobrodin@gmail.com)
15
 * 
16
 */
17
public class gvRasterLayerWrite
18
         extends
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff