Revision 775

View differences:

org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.multifile.io/src/main/java/org/gvsig/raster/tools/multifile/io/DefaultMultiFileIOLibrary.java
41 41
		MultiFileServerExplorerParameters.registerDynClass();
42 42
		MultiFileDataParametersImpl.registerDynClass();
43 43
		MultiFileProvider.register();
44
		MultiFileDataParametersImpl.registerPersistence();
44 45
	}
45 46
}
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.multifile.io/src/main/java/org/gvsig/raster/tools/multifile/io/MultiFileProvider.java
730 730
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getColorInterpretation()
731 731
	 */
732 732
	public ColorInterpretation getColorInterpretation() {
733
		if(getColorInterpretation() == null) {
733
		if(super.getColorInterpretation() == null) {
734 734
			String[] cis = new String[getBandCount()];
735 735
			for (int i = 0; i < cis.length; i++) {
736 736
				if(i == 0)
......
740 740
			}
741 741
			setColorInterpretation(new DataStoreColorInterpretation(cis));
742 742
		}
743
		return getColorInterpretation();
743
		return super.getColorInterpretation();
744 744
	}
745 745

  
746 746
	/*
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.multifile.io/src/main/java/org/gvsig/raster/tools/multifile/io/MultiFileDataParametersImpl.java
28 28
package org.gvsig.raster.tools.multifile.io;
29 29

  
30 30
import java.util.ArrayList;
31
import java.util.List;
31 32

  
33
import org.gvsig.fmap.dal.DALLocator;
32 34
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
35
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
36
import org.gvsig.fmap.dal.exception.InitializeException;
37
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
38
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
33 39
import org.gvsig.fmap.dal.spi.DataStoreProvider;
40
import org.gvsig.raster.impl.provider.DefaultRasterProvider;
34 41
import org.gvsig.raster.impl.provider.RasterProvider;
35 42
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
36 43
import org.gvsig.raster.impl.store.AbstractRasterFileDataParameters;
......
40 47
import org.gvsig.tools.dynobject.DynClass;
41 48
import org.gvsig.tools.dynobject.DynField;
42 49
import org.gvsig.tools.dynobject.DynObjectManager;
50
import org.gvsig.tools.dynobject.DynStruct;
51
import org.gvsig.tools.persistence.PersistenceManager;
52
import org.gvsig.tools.persistence.PersistentState;
53
import org.gvsig.tools.persistence.exception.PersistenceException;
43 54

  
44 55
/**
45 56
 * Parameters for the Multifile provider
......
166 177
	public ArrayList<RasterProvider> getProviders() {
167 178
		return (ArrayList<RasterProvider>)getDynValue(MultiFileDataParameters.FIELD_PROVIDERS);
168 179
	}
180
	
181
	/*
182
	 * (non-Javadoc)
183
	 * @see org.gvsig.raster.impl.store.AbstractRasterDataParameters#loadFromState(org.gvsig.tools.persistence.PersistentState)
184
	 */
185
	@SuppressWarnings("unchecked")
186
	public void loadFromState(PersistentState state)
187
			throws PersistenceException {
188
		super.loadFromState(state);
189
		DataManagerProviderServices dataManager = (DataManagerProviderServices)DALLocator.getDataManager();
190
		
191
		List<RasterDataParameters> parameters = state.getList("parameters");
192
		for (int i = 0; i < parameters.size(); i++) {
193
			try {
194
				DefaultRasterStore dSet = new DefaultRasterStore();
195
				DefaultRasterProvider provider = (DefaultRasterProvider)dataManager.createProvider(dSet, parameters.get(i));
196
				addProvider(provider);
197
			} catch (InitializeException e) {
198
				throw new PersistenceException(e);
199
			} catch (ProviderNotRegisteredException e) {
200
				throw new PersistenceException(e);
201
			}
202
		}
203
	}
204

  
205
	/*
206
	 * (non-Javadoc)
207
	 * @see org.gvsig.raster.impl.store.AbstractRasterDataParameters#saveToState(org.gvsig.tools.persistence.PersistentState)
208
	 */
209
	public void saveToState(PersistentState state) throws PersistenceException {
210
		super.saveToState(state);
211
		ArrayList<RasterProvider> provList = getProviders();
212
		ArrayList<RasterDataParameters> rasterDataParametersList = new ArrayList<RasterDataParameters>(); 
213
		for (int j = 0; j < provList.size(); j++) {
214
			rasterDataParametersList.add(provList.get(j).getDataParameters());	
215
		}
216
		
217
		state.set("parameters", rasterDataParametersList);	
218
	}	
219
	
220
	public static void registerPersistence() {
221
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
222
		DynStruct definition = manager.getDefinition("MultiFileDataParameters_Persistent");
223
		if( definition == null ) {
224
			definition = manager.addDefinition(
225
					MultiFileDataParametersImpl.class,
226
					"MultiFileDataParameters_Persistent",
227
					"MultiFileDataParameters Persistent",
228
					null, 
229
					null
230
			);
231
			definition.addDynFieldList("parameters").setClassOfItems(RasterDataParameters.class).setMandatory(true);
232
			AbstractRasterDataParameters.registerPersistence(definition);
233
		}
234
	}
169 235
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/serializer/StatisticsRmfSerializer.java
78 78
	public static final String MINIMUN   = "Minimun";
79 79
	public static final String MEAN      = "Mean";
80 80
	public static final String VARIANCE  = "Variance";
81
	public static final String NVALUES   = "NValues";
81 82
	public static final String BANDCOUNT = "BandCount";
82 83
	public static final String TAILTRIM  = "TailTrim";
83 84
	public static final String KEY       = "Key";
......
134 135
	 * @throws XmlPullParserException
135 136
	 * @throws IOException
136 137
	 */
137
	private long[] parserStatBandValues(KXmlParser parser, int band, double[] max, double[] min, double[] sndmax, double[] sndmin, double[] maxRGB, double[] minRGB, double[] sndmaxRGB, double[] sndminRGB, double[] mean, double[] variance)  throws XmlPullParserException, IOException {
138
		boolean maxOk = false, minOk = false, sndmaxOk = false, sndminOk = false, meanOk = false, varianceOk = false;
138
	private long[] parserStatBandValues(KXmlParser parser, int band, double[] max, double[] min, double[] sndmax, double[] sndmin, double[] maxRGB, double[] minRGB, double[] sndmaxRGB, double[] sndminRGB, double[] mean, double[] variance, long[] nValues)  throws XmlPullParserException, IOException {
139
		boolean maxOk = false, minOk = false, sndmaxOk = false, sndminOk = false, meanOk = false, varianceOk = false, nvaluesOk = false;
139 140
		boolean maxRGBOk = false, minRGBOk = false, sndmaxRGBOk = false, sndminRGBOk = false;
140 141
		long[] valueList = null;
141 142
		boolean end = false;
......
164 165
							meanOk = true;
165 166
						if (parser.getName().compareTo(VARIANCE) == 0)
166 167
							varianceOk = true;
168
						if (parser.getName().compareTo(NVALUES) == 0)
169
							nvaluesOk = true;
167 170
					}
168 171
					break;
169 172
						 case KXmlParser.END_TAG:
......
211 214
								variance[band] = Double.parseDouble(parser.getText());
212 215
								varianceOk = false;
213 216
							}
217
							if(nvaluesOk) {
218
								nValues[band] = Long.parseLong(parser.getText());
219
								nvaluesOk = false;
220
							}
214 221
							break;
215 222
				}
216 223
				if (!end)
......
231 238
		double[] secondMin = null, secondMinRGB = null;
232 239
		double[] mean = null;
233 240
		double[] variance = null;
241
		long[] nValues = null;
234 242

  
235 243
		KXmlParser parser = new KXmlParser();
236 244
		Reader reader = new StringReader(xml);
......
261 269
										secondMinRGB = new double[bandCount];
262 270
										mean = new double[bandCount];
263 271
										variance = new double[bandCount];
272
										nValues = new long[bandCount];
264 273
									}
265 274
									for (int i = 0; i < bandCount; i++)
266
										parserStatBandValues(parser, i, max, min, secondMax, secondMin, maxRGB, minRGB, secondMaxRGB, secondMinRGB, mean, variance);
275
										parserStatBandValues(parser, i, max, min, secondMax, secondMin, maxRGB, minRGB, secondMaxRGB, secondMinRGB, mean, variance, nValues);
267 276
								}
268 277
							}
269 278
							break;
......
293 302
		getDatasetStatistics().setSecondMinRGB(secondMinRGB);
294 303
		getDatasetStatistics().setMean(mean);
295 304
		getDatasetStatistics().setVariance(variance);
305
		getDatasetStatistics().setNumberOfValues(nValues);
296 306
		getDatasetStatistics().setCalculated(true);
297 307
	}
298 308

  
......
329 339
			if (getDatasetStatistics().getMean() != null)
330 340
				putProperty(b, MEAN, getDatasetStatistics().getMean()[i], 2);
331 341
			if (getDatasetStatistics().getVariance() != null)
332
				putProperty(b, VARIANCE, getDatasetStatistics().getVariance()[i], 2);	
342
				putProperty(b, VARIANCE, getDatasetStatistics().getVariance()[i], 2);
343
			if (getDatasetStatistics().getNumberOfValues() != null)
344
				putProperty(b, NVALUES, new Long(getDatasetStatistics().getNumberOfValues()[i]).toString(), 2);
333 345
			b.append("\t</" + BAND + ">\n");
334 346
		}
335 347
		for (int i = 0; i < getDatasetStatistics().getTailTrimCount(); i++) {

Also available in: Unified diff