Revision 385 org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.groupby/src/main/java/org/gvsig/geoprocess/algorithm/groupby/GroupByAlgorithm.java

View differences:

GroupByAlgorithm.java
45 45
import org.gvsig.fmap.geom.Geometry.TYPES;
46 46
import org.gvsig.fmap.geom.aggregate.MultiCurve;
47 47
import org.gvsig.fmap.geom.aggregate.MultiPoint;
48
import org.gvsig.fmap.geom.aggregate.MultiPrimitive;
48 49
import org.gvsig.fmap.geom.aggregate.MultiSurface;
49 50
import org.gvsig.fmap.geom.exception.CreateGeometryException;
50 51
import org.gvsig.fmap.geom.primitive.Curve;
......
101 102
        // setGeneratesUserDefinedRasterOutput(false);
102 103
		try {
103 104
			m_Parameters.addInputVectorLayer(LAYER, getTranslation("Input_layer"), IVectorLayer.SHAPE_TYPE_WRONG, true);
104
			m_Parameters.addNumericalValue(FIELD, getTranslation("Field"), 0, AdditionalInfoNumericalValue.NUMERICAL_VALUE_INTEGER);
105
			m_Parameters.addNumericalValue(FIELD_DATE, getTranslation("Field_date"), 0, AdditionalInfoNumericalValue.NUMERICAL_VALUE_INTEGER);
105
			m_Parameters.addString(FIELD, getTranslation("Field"));
106
			m_Parameters.addString(FIELD_DATE, getTranslation("Field_date"));
106 107
			m_Parameters.addString(FIELD_LIST, getTranslation("Field_list"));
107 108
			m_Parameters.addString(FUNCTION_LIST, getTranslation("Function_list"));
108 109
			m_Parameters.addString(LAYER_NAME, getTranslation("Layer_name"));
......
122 123
    		throw new GeoAlgorithmExecutionException(getTranslation("file_exists"));
123 124
    	}
124 125
		IVectorLayer layer = m_Parameters.getParameterValueAsVectorLayer(LAYER);
125
		int groupByField = m_Parameters.getParameterValueAsInt(FIELD);
126
		int positionFieldDate = m_Parameters.getParameterValueAsInt(FIELD_DATE);
126
		String groupByField = m_Parameters.getParameterValueAsString(FIELD);
127
		String fieldDate = m_Parameters.getParameterValueAsString(FIELD_DATE);
127 128
		String fieldsString = m_Parameters.getParameterValueAsString(FIELD_LIST);
128 129
		String functionsString = m_Parameters.getParameterValueAsString(FUNCTION_LIST);
129 130
		String layerName = m_Parameters.getParameterValueAsString(LAYER_NAME);
......
131 132
		int inputShapeType = layer.getShapeType();
132 133
		
133 134
		String[] funcList = functionsString.split(";");
134
		int[] fieldList = getFieldList(fieldsString);
135
		String[] fieldList = fieldsString.split(";");
135 136
		
136 137
		if(fieldList != null && funcList != null) {
137 138
			if(fieldList.length != funcList.length) {
......
173 174
				loadFeature(featureStore, 
174 175
						outFeatStore, 
175 176
						fieldNameGrouped, 
176
						positionFieldDate, 
177
						fieldDate, 
177 178
						groupedValue, 
178 179
						fieldList, 
179 180
						funcList,
......
192 193
	private void loadFeature(FeatureStore inStore, 
193 194
			FeatureStore outStore, 
194 195
			String fieldNameGrouped,
195
			int positionFieldDate,
196
			String fieldDate,
196 197
			String groupedValue, 
197
			int[] fieldList, 
198
			String[] fieldList, 
198 199
			String[] funcList,
199 200
			int geomOption) throws DataException {
200 201
		DataManager manager = DALLocator.getDataManager();
......
242 243
						if(values[i] == null) 
243 244
							values[i] = v;
244 245
					}
245
					if(funcList[i].compareToIgnoreCase("Last") == 0 && positionFieldDate != -1) {
246
					if(funcList[i].compareToIgnoreCase("Last") == 0 && fieldDate != null) {
246 247
						if(lastDate == null || 
247 248
								values[i] == null || 
248
								lastDate.isAfter(feature.getInstant(positionFieldDate))) {
249
							lastDate = feature.getInstant(positionFieldDate);
250
							values[i] = updateAny((Double)values[i], v);
249
								lastDate.isAfter(feature.getInstant(fieldDate))) {
250
							lastDate = feature.getInstant(fieldDate);
251
							values[i] = v;
251 252
						}
252 253
					}
253 254
				}
......
257 258
				switch (geomOption) {
258 259
				case 0: //Adds only the first geometry
259 260
					if(nFeaturesByGroup == 0) { //If is the first feature
260
						feat.set(outStore.getDefaultFeatureType().getDefaultGeometryAttributeName(), 
261
								feature.getDefaultGeometry());
261
						Geometry g = feature.getDefaultGeometry();
262
						if(!(g instanceof MultiPrimitive)) {
263
							List<Geometry> gList = new ArrayList<Geometry>();
264
							gList.add(g);
265
							g = buildMultiGeometry(gList);
266
						}
267
						feat.set(outStore.getDefaultFeatureType().getDefaultGeometryAttributeName(), g);
262 268
					}
263 269
					break;
264 270
				case 1: //Multigeometry with all geometries
......
411 417
	 * @return
412 418
	 * @throws DataException
413 419
	 */
414
	private Set<String> getGroupedValues(FeatureStore featureStore, int groupByField) throws DataException {
420
	private Set<String> getGroupedValues(FeatureStore featureStore, String groupByField) throws DataException {
415 421
		HashMap<String, String> valueGrouped = new HashMap<String, String>();
416 422
		FeatureSet featureSet = featureStore.getFeatureSet();
417 423
		DisposableIterator it = featureSet.iterator();
......
452 458
     */
453 459
    private FeatureStore buildOutPutStore(FeatureType featureType,
454 460
    		String sextanteLayerName,
455
    		int groupByField,
456
    		int[] fieldList,
461
    		String groupByField,
462
    		String[] fieldList,
457 463
    		String[] funcList,
458 464
    		int geomOption,
459 465
    		int inputShapeType) {

Also available in: Unified diff