Revision 37 org.gvsig.sextante/trunk/org.gvsig.sextante.app/org.gvsig.sextante.app.algorithm/org.gvsig.sextante.app.algorithm.dissolve/src/main/java/org/gvsig/sextante/app/algorithm/dissolve/AtomicDissolveOperation.java

View differences:

AtomicDissolveOperation.java
30 30
import org.gvsig.fmap.dal.feature.DisposableIterator;
31 31
import org.gvsig.fmap.dal.feature.EditableFeature;
32 32
import org.gvsig.fmap.dal.feature.Feature;
33
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
34 33
import org.gvsig.fmap.dal.feature.FeatureSet;
35 34
import org.gvsig.fmap.dal.feature.FeatureStore;
36 35
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureSelection;
......
45 44
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
46 45
 */
47 46
public class AtomicDissolveOperation extends GeometryOperation {
48
	private IDissolveCriteria                criteria         = null;
47
	private IDissolveRule                    rule             = null;
49 48
	private ArrayList<Geometry>              geometryList     = null;
50 49
	private Feature                          feature          = null;
51 50
	private EditableFeature                  result           = null;
52 51
	private boolean[]                        analizedFeats    = null;
53 52
	private FeatureStore                     outFeatureStore  = null;
54 53
	private int                              featAnalized     = 0;
55
	private double                           max              = 0;
56
	private double                           min              = 0;
57
	private double                           avg              = 0;
58
	private double                           sum              = 0;
54
	private int                              newFeatID        = 0;
55
	private Summary                          summary          = null;                       
59 56
	
60 57
	/**
61 58
	 * Sets IDissolveCriteria. This object will choose what geometry
62 59
	 * will be dissolved   
63 60
	 * @param criteria
64 61
	 */
65
	public void setCriteria(IDissolveCriteria criteria) {
66
		this.criteria = criteria;
62
	public void setCriteria(IDissolveRule rule) {
63
		this.rule = rule;
67 64
	}
68 65
	
69 66
	/**
......
117 114
		if(g1 == null)
118 115
			return null;
119 116
		
120
		com.vividsolutions.jts.geom.Geometry g2 = geomToJTS(g);
117
		com.vividsolutions.jts.geom.Geometry g2 = GeometryUtil.geomToJTS(g);
121 118
		
122 119
		//Si son iguales las geometrias no se opera
123 120
		if(g1.compareTo(g2) == 0)
124 121
			return null;
125 122
		
126
		if(criteria.verifyIfDissolve(g1, g2, this.feature, feature)) {
123
		if(rule.verifyIfDissolve(g1, g2, this.feature, feature)) {
127 124
			geometryList.add(g2);
128 125
			Geometry newGeom = GeometryUtil.geometryUnion(geometryList, g.getGeometryType().getType());
129 126
			try {
130 127
				result = outFeatureStore.createNewFeature();
131
				FeatureAttributeDescriptor[] desc = outFeatureStore.getDefaultFeatureType().getAttributeDescriptors();
132
				/*for (int i = 0; i < desc.length; i++) {
133
					if(desc[i].getName().compareTo("Max") == 0)
134
						
135
				}*/
136
				result.setGeometry("GEOMETRY", jtsToGeom(newGeom));
128
				result.setDouble(0, newFeatID);
129
				result.set(1, feature.get(rule.getIndexField()));
130
				summary.updateValues(feature);
131
				summary.loadEditableFeature(result);
132

  
133
				result.setGeometry("GEOMETRY", GeometryUtil.jtsToGeom(newGeom));
137 134
				geometryList.clear();
138 135
				geometryList.add(newGeom);
139 136
				analizedFeats[featAnalized] = true;
......
156 153
	 * @see org.gvsig.sextante.app.algorithm.base.core.IOperation#getResult()
157 154
	 */
158 155
	public Object getResult() {
156
		newFeatID ++;
159 157
		return result;
160 158
	}
161 159
	
......
171 169
		featuresSet = inFeatureStore.getFeatureSet();
172 170
		result = null;
173 171
		DisposableIterator it = null;
172
		
173
		summary = new Summary(rule, outFeatureStore.getDefaultFeatureType());
174
		summary.loadDefaultSummarizes(this.feature);
174 175

  
175 176
		if(selectedGeom) {
176 177
			DataSet ds = inFeatureStore.getSelection();
......
209 210
			try {
210 211
				Geometry newGeom = GeometryUtil.geometryUnion(geometryList, feature.getDefaultGeometry().getGeometryType().getType());
211 212
				result = outFeatureStore.createNewFeature();
212
				result.setGeometry("GEOMETRY", jtsToGeom(newGeom));
213
				result.setDouble(0, newFeatID);
214
				result.set(1, feature.get(rule.getIndexField()));
215
				summary.updateValues(feature);
216
				summary.loadEditableFeature(result);
217
				result.setGeometry("GEOMETRY", GeometryUtil.jtsToGeom(newGeom));
213 218
			} catch (DataException e) {
214 219
				Sextante.addErrorToLog(e);
215 220
			}

Also available in: Unified diff