Revision 11076 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/RasterMultiDataset.java

View differences:

RasterMultiDataset.java
20 20

  
21 21
import java.awt.geom.Point2D;
22 22
import java.io.File;
23
import java.lang.reflect.Constructor;
24
import java.lang.reflect.InvocationTargetException;
23 25
import java.util.ArrayList;
24 26

  
25
import org.gvsig.raster.dataaccess.buffer.RasterBuffer;
27
import org.cresques.cts.IProjection;
28
import org.gvsig.raster.buffer.RasterBuffer;
29
import org.gvsig.raster.dataset.io.GdalDriver;
26 30
import org.gvsig.raster.dataset.properties.DatasetColorInterpretation;
27 31
import org.gvsig.raster.dataset.properties.DatasetListHistogram;
28 32
import org.gvsig.raster.dataset.properties.DatasetListStatistics;
......
34 38
import org.gvsig.raster.util.Histogram;
35 39
import org.gvsig.raster.util.HistogramException;
36 40
import org.gvsig.raster.util.IHistogramable;
41
import org.gvsig.raster.util.extensionPoints.ExtensionPoint;
42
import org.gvsig.raster.util.extensionPoints.ExtensionPoints;
43
import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton;
37 44

  
38 45

  
39 46
/**
......
54 61
	private ArrayList					palettes = new ArrayList();
55 62
	private DatasetListStatistics 		stats = null;
56 63
	private DatasetListHistogram		histogram = null;
64
	int percent = 0;
57 65
			
58 66
	//TODO: FUNCIONALIDAD: Contructores igual a RasterDataset + String[] nameFiles
59
	public RasterMultiDataset(String name){
67
	public RasterMultiDataset(String name) {
60 68
		this.name = name;
61 69
	}
62 70
	
63 71
	/**
72
	 * Abre un dataset pasando como par?metros la proyecci?n y un objeto identificador del dataset. Este
73
	 * objeto puede ser una ruta a un fichero en disco. En este caso la extensi?n del fichero servir? para 
74
	 * buscar el driver que lo gestiona. Si proporcionamos un array de cadenas se tratar?n como la ruta a N ficheros
75
	 * de disco. Tambi?n puede ser un buffer de datos en memoria o cualquier otro objeto
76
	 * que pueda aceptar un driver.  
77
	 * @param proj PRoyecci?n
78
	 * @param datasetOpenParam Par?metros al driver
79
	 * @return RasterMultiDatset
80
	 * @throws NotSupportedExtensionException
81
	 * @throws RasterDriverException
82
	 */
83
	public static RasterMultiDataset open(IProjection proj, Object datasetOpenParam) throws NotSupportedExtensionException, RasterDriverException{
84
		RasterMultiDataset rmd = new RasterMultiDataset(null);
85
		if(datasetOpenParam instanceof String[]) {
86
			String[] param = (String[])datasetOpenParam;
87
			for (int dataset = 0; dataset < param.length; dataset++)
88
				try {
89
					rmd.addDataset(RasterDataset.open(proj, param[dataset]));
90
				} catch (FileFoundInListException e) {
91
					//No lo a?adimos en el dataset pq ya existe
92
				} 	
93
		} else if(datasetOpenParam instanceof IBuffer[]) {
94
			IBuffer[] param = (IBuffer[])datasetOpenParam;
95
			for (int dataset = 0; dataset < param.length; dataset++)
96
				try {
97
					rmd.addDataset(RasterDataset.open(proj, param[dataset]));
98
				} catch (FileFoundInListException e) {
99
					//No lo a?adimos en el dataset pq ya existe
100
				} 	
101
		} else {
102
			RasterDataset rd = RasterDataset.open(proj, datasetOpenParam);
103
			try {
104
				rmd.addDataset(rd);
105
			} catch (FileFoundInListException e) {
106
				//No lo a?adimos en el dataset pq ya existe
107
			}
108
		}
109
		return rmd;
110
	}
111
	
112
	/**
64 113
	 * Add a file to the list.
65 114
	 * @param f file to add.
66 115
	 */
67
	public void addDataset(RasterDataset f)throws FileFoundInListException{
116
	public void addDataset(RasterDataset f)throws FileFoundInListException {
68 117
		if(findDataset(f))
69 118
			throw new FileFoundInListException("The file already is in list.");
70 119
		files.add(f);
......
80 129
	public void addDataset(String fileName)throws FileFoundInListException, NotSupportedExtensionException, RasterDriverException{
81 130
		if(findDataset(fileName))
82 131
			throw new FileFoundInListException("The file already is in list.");
83
		RasterDataset f = RasterDataset.openFile(null, fileName);
132
		RasterDataset f = RasterDataset.open(null, fileName);
84 133
		files.add(f);
85 134
		addBands(f);
86 135
		stats = new DatasetListStatistics(files);
......
90 139
	 * A?ade el fichero a lista de georrasterfiles y sus bandas a la lista de bandas
91 140
	 * @param grf
92 141
	 */
93
	private void addBands(RasterDataset grf){
142
	private void addBands(RasterDataset grf) {
94 143
		if(grf == null)
95 144
			return;
96 145
		
97 146
		int dataType = grf.getDataType();
98
		for(int i = 0; i < grf.getBandCount();i++){
99
			try{
147
		for(int i = 0; i < grf.getBandCount();i++) {
148
			try {
100 149
				Band band = new Band(grf.getFName(), i, dataType);
101 150
				bandList.addBand(band, i);
102
			}catch(BandFoundInListException ex){
151
			} catch(BandFoundInListException ex) {
103 152
				//No a?adimos la banda
104 153
			}
105 154
		}
......
109 158
	 * Elimina un fichero a la lista a partir de su nombre
110 159
	 * @param fileName	Nombre del fichero a eliminar.
111 160
	 */
112
	public void removeDataset(String fileName){
113
		for(int i=0;i<files.size();i++){
114
			if(((RasterDataset)files.get(i)).getFName().equals(fileName)){
161
	public void removeDataset(String fileName) {
162
		for(int i=0;i<files.size();i++) {
163
			if(((RasterDataset)files.get(i)).getFName().equals(fileName)) {
115 164
				files.remove(i);
116 165
				bandList.removeBands(fileName);
117 166
				return;
......
123 172
	 * Elimina un fichero a la lista
124 173
	 * @param file Fichero a eliminar
125 174
	 */
126
	public void removeDataset(RasterDataset file){
127
		for(int i=0;i<files.size();i++){
128
			if(((RasterDataset)files.get(i)).getFName().equals(file.getFName())){
175
	public void removeDataset(RasterDataset file) {
176
		for(int i=0;i<files.size();i++) {
177
			if(((RasterDataset)files.get(i)).getFName().equals(file.getFName())) {
129 178
				files.remove(i);
130 179
				bandList.removeBands(file.getFName());
131 180
				return;
......
137 186
	 * Obtiene el n?mero de ficheros en la lista
138 187
	 * @return integer.
139 188
	 */
140
	public int getDatasetCount(){
189
	public int getDatasetCount() {
141 190
		return files.size();
142 191
	}
143 192
	
......
147 196
	 * @return true si se ha hallado el fichero y false si no se 
148 197
	 * ha encontrado
149 198
	 */
150
	public boolean findDataset(RasterDataset file){
151
		for(int i = 0;i<files.size();i++){
199
	public boolean findDataset(RasterDataset file) {
200
		for(int i = 0;i<files.size();i++) {
152 201
			RasterDataset grf = (RasterDataset)files.get(i); 
153 202
			if(	grf.getFName().equals(file.getFName()))
154 203
				return true;
......
162 211
	 * @return true si se ha hallado el fichero y false si no se 
163 212
	 * ha encontrado
164 213
	 */
165
	public boolean findDataset(String fileName){
166
		for(int i = 0;i<files.size();i++){
214
	public boolean findDataset(String fileName) {
215
		for(int i = 0;i<files.size();i++) {
167 216
			if(((RasterDataset)files.get(i)).getFName().equals(fileName))
168 217
				return true;
169 218
		}
......
173 222
	/**
174 223
	 * @see org.javaGeoRaster.io.GeoInfo
175 224
	 */
176
	public void close(){
225
	public void close() {
177 226
		for(int i = 0; i < files.size(); i++)
178 227
			((RasterDataset)files.get(i)).close();
179 228
	}
......
182 231
	 * Obtiene en un array de String la lista de nombres de ficheros
183 232
	 * @return lista de nombres de los ficheros del GeoRasterMultiFile
184 233
	 */
185
	public String[] getNameDatasetStringList(){
234
	public String[] getNameDatasetStringList() {
186 235
		String[] list = new String[files.size()];
187 236
		for(int i = 0; i < files.size(); i++)
188 237
			list[i] = ((RasterDataset)files.get(i)).getFName();
......
194 243
	 * @param raster Buffer a inicializar
195 244
	 * @param bandList Lista de bandas
196 245
	 */
197
	private void initBufferToNoData(IBuffer raster, BandList bandList){
198
		for(int i = 0; i < bandList.getDrawableBandsCount(); i++){
199
			switch(getDataType()[0]){
246
	private void initBufferToNoData(IBuffer raster, BandList bandList) {
247
		for(int i = 0; i < bandList.getDrawableBandsCount(); i++) {
248
			switch(getDataType()[0]) {
200 249
			case IBuffer.TYPE_BYTE:raster.assign(i, raster.getByteNoDataValue());break;
201 250
			case IBuffer.TYPE_SHORT:raster.assign(i, raster.getShortNoDataValue());break;
202 251
			case IBuffer.TYPE_INT:raster.assign(i, raster.getIntNoDataValue());break;
......
825 874
	 * @see org.gvsig.raster.driver.datasetproperties.IHistogramable#getHistogram()
826 875
	 */
827 876
	public Histogram getHistogram() throws HistogramException {
877
		percent = 0;
828 878
		if(histogram == null)
829 879
			histogram = new DatasetListHistogram(this);
830 880
		
831 881
		try {
832 882
			Histogram tmp = histogram.getHistogram();
883
			percent = 100;
833 884
			return tmp;
834 885
		} catch (FileNotOpenException e) {
835 886
			throw new HistogramException("FileNotOpenException");
......
860 911
	 * @see org.gvsig.raster.util.IHistogramable#getPercent()
861 912
	 */
862 913
	public int getPercent() {
863
		if (histogram != null) return histogram.getPercent();
864
		return 0;
914
		return percent;
865 915
	}
866

  
867
	/*
868
	 * (non-Javadoc)
869
	 * @see org.gvsig.raster.util.IHistogramable#resetPercent()
870
	 */
871
	public void resetPercent() {
872
		if (histogram != null) histogram.resetPercent();
873
	}
874

  
875
	/*
876
	 * (non-Javadoc)
877
	 * @see org.gvsig.raster.util.ICancellable#isCanceled()
878
	 */
879
	public boolean isCanceled() {
880
		if (histogram != null) return histogram.isCanceled();
881
		return false;
882
	}
883

  
884
	/*
885
	 * (non-Javadoc)
886
	 * @see org.gvsig.raster.util.ICancellable#setCanceled(boolean)
887
	 */
888
	public void setCanceled(boolean value) {
889
		if (histogram != null) histogram.setCanceled(value);
890
	}
891
}
916
	
917
}

Also available in: Unified diff