Revision 2321 org.gvsig.raster.multifile/branches/org.gvsig.raster.multifile_dataaccess_refactoring/org.gvsig.raster.multifile.io/src/main/java/org/gvsig/raster/multifile/io/MultiFileProvider.java

View differences:

MultiFileProvider.java
97 97
    private DataStoreTransparency            fileTransparency         = null;
98 98
    private static final Logger              logger                   = LoggerFactory.getLogger(MultiFileProvider.class);
99 99
    protected static String[]                formatList               = null;
100
    private List<RasterProvider>             providerList             = null;
101 100
    
102 101
	public static void register() {
103 102
		DataManagerProviderServices dataman = (DataManagerProviderServices) DALLocator.getDataManager();
......
172 171
		openFromMff();
173 172
		
174 173
		uri = getParameters().getURI();
175
		providerList = getParameters().getProviders();
176 174
		setParam(storeServices, params);
177 175
		
178 176
		try {
......
200 198
	private void openFromMff() throws OpenException {
201 199
		if(getParameters().getURI() != null && new File(getParameters().getURI()).exists()) {
202 200
			boolean loadedProviders = true;
203
			if(getParameters().getProviders() != null) {
201
			if(getParameters().hasProviders()) {
204 202
				//solo se considera que est�n todos los providers cargados si existen y est�n open,
205 203
				//sino se leeran de disco
206 204
				for (int i = 0; i < getParameters().getProviders().size(); i++) {
......
214 212
				return;
215 213
			
216 214
			try {
217
				if(getParameters().getProviders() != null)
218
					getParameters().getProviders().clear();
215
				if(getParameters().hasProviders())
216
					getParameters().removeAllProviders();
219 217
				MultiFileFormat multiFileFormat = new MultiFileFormat();
220 218
				multiFileFormat = MultiFileFormatSerializer.read(multiFileFormat, getParameters().getURI());
221 219
				for (int i = 0; i < multiFileFormat.getNumberOfFiles(); i++) {
......
333 331
	}
334 332
	
335 333
	public int getBandCount() {
336
		providerList = getParameters().getProviders();
334
		List<RasterProvider> providerList = getParameters().getProviders();
337 335
		int bandCount = 0;
338 336
		for (int i = 0; i < providerList.size(); i++) {
339 337
			bandCount += providerList.get(i).getBandCount();
......
342 340
	}
343 341
	
344 342
	public int[] getDataType() {
345
		providerList = getParameters().getProviders();
343
		List<RasterProvider> providerList = getParameters().getProviders();
346 344
		int[] datatypes = new int[getBandCount()];
347 345
		int k = 0;
348 346
		for (int i = 0; i < providerList.size(); i++) {
......
356 354
	}
357 355
	
358 356
	public String[] getURIByProvider() {
359
		providerList = getParameters().getProviders();
357
		List<RasterProvider> providerList = getParameters().getProviders();
360 358
		String[] uris = new String[providerList.size()];
361 359
		for (int i = 0; i < uris.length; i++) {
362 360
			uris[i] = providerList.get(i).getURIOfFirstProvider();
......
369 367
	}
370 368
	
371 369
	public String getURIOfFirstProvider() {
372
		providerList = getParameters().getProviders();
370
		List<RasterProvider> providerList = getParameters().getProviders();
373 371
		return providerList.get(0).getURIOfFirstProvider();
374 372
	}
375 373
	
376 374
	
377 375
	public Extent getExtent() {
378
		providerList = getParameters().getProviders();
376
		List<RasterProvider> providerList = getParameters().getProviders();
379 377
		if(providerList != null && providerList.size() > 0)
380 378
			return providerList.get(0).getExtent();
381 379
		return null;
382 380
	}
383 381
	
384 382
	public AffineTransform getAffineTransform() {
385
		providerList = getParameters().getProviders();
383
		List<RasterProvider> providerList = getParameters().getProviders();
386 384
		return providerList.get(0).getAffineTransform();
387 385
	}
388 386
	
389 387
	public void setAffineTransform(AffineTransform t) {
390
		providerList = getParameters().getProviders();
388
		List<RasterProvider> providerList = getParameters().getProviders();
391 389
		for (int i = 0; i < providerList.size(); i++) {
392 390
			providerList.get(i).setAffineTransform(t);
393 391
		}
394 392
	}
395 393
	
396 394
	public int getInternalProviderCount() {
397
		return providerList.size();
395
		return getParameters().getProviders().size();
398 396
	}
399 397
	
400 398
	public RasterProvider getInternalProvider(int i) {
401
		return providerList.get(i);
399
		return getParameters().getProviders().get(i);
402 400
	}
403 401
	
404 402
	public int[] getBandCountByProvider() {
405
		providerList = getParameters().getProviders();
403
		List<RasterProvider> providerList = getParameters().getProviders();
406 404
		int[] bc = new int[providerList.size()];
407 405
		for (int i = 0; i < bc.length; i++) {
408 406
			bc[i] = providerList.get(i).getBandCount();
......
411 409
	}
412 410
	
413 411
	public long[] getFileSizeByProvider() {
414
		providerList = getParameters().getProviders();
412
		List<RasterProvider> providerList = getParameters().getProviders();
415 413
		long[] fs = new long[providerList.size()];
416 414
		for (int i = 0; i < fs.length; i++) {
417 415
			fs[i] = ((AbstractRasterProvider)providerList.get(i)).getFileSize();
......
420 418
	}
421 419
	
422 420
	public Point2D rasterToWorld(Point2D pt) {
423
		providerList = getParameters().getProviders();
421
		List<RasterProvider> providerList = getParameters().getProviders();
424 422
		return providerList.get(0).rasterToWorld(pt);
425 423
	}
426 424

  
427 425
	public Point2D worldToRaster(Point2D pt) {
428
		providerList = getParameters().getProviders();
426
		List<RasterProvider> providerList = getParameters().getProviders();
429 427
		return providerList.get(0).worldToRaster(pt);
430 428
	}
431 429
	
432 430
	public boolean isInside(Point2D p){
433
		providerList = getParameters().getProviders();
431
		List<RasterProvider> providerList = getParameters().getProviders();
434 432
		return providerList.get(0).isInside(p);
435 433
	}
436 434
	
437 435
	public double getCellSize() {
438
		providerList = getParameters().getProviders();
436
		List<RasterProvider> providerList = getParameters().getProviders();
439 437
		return providerList.get(0).getCellSize();
440 438
	}
441 439
	
442 440
	public Statistics getStatistics() {
443 441
		if(stats == null || (stats instanceof MultiProviderStatistics && 
444
				((MultiProviderStatistics)stats).getNumberOfProviders() != providerList.size())) {
445
			providerList = getParameters().getProviders();
446
			stats = new MultiProviderStatistics(providerList);
442
				((MultiProviderStatistics)stats).getNumberOfProviders() != getParameters().getProviders().size())) {
443
			List<RasterProvider> providerList = getParameters().getProviders();
444
			stats = new MultiProviderStatistics(providerList, this);
447 445
		}
448
		
446

  
449 447
		return stats;
450 448
	}
451
	
449

  
452 450
	public HistogramComputer getHistogramComputer() {
453 451
		if(histogram == null || 
454 452
			(histogram instanceof MultiProviderHistogramComputer && 
455
			((MultiProviderHistogramComputer)histogram).getNumberOfProviders() != providerList.size())) {
453
			((MultiProviderHistogramComputer)histogram).getNumberOfProviders() != getParameters().getProviders().size())) {
456 454
			histogram = new MultiProviderHistogramComputer(this);
457 455
		}
458 456
		
......
492 490
	}
493 491

  
494 492
	public double getWidth() {
495
		providerList = getParameters().getProviders();
493
		List<RasterProvider> providerList = getParameters().getProviders();
496 494
		if(providerList != null && providerList.size() > 0) {
497 495
			return providerList.get(0).getWidth();
498 496
		}
......
500 498
	}
501 499

  
502 500
	public double getHeight() {
503
		providerList = getParameters().getProviders();
501
		List<RasterProvider> providerList = getParameters().getProviders();
504 502
		if(providerList != null && providerList.size() > 0) {
505 503
			return providerList.get(0).getHeight();
506 504
		}
......
508 506

  
509 507
	}
510 508

  
511
	/*
512
	 *  (non-Javadoc)
513
	 * @see org.gvsig.raster.dataset.RasterDataset#readBlock(int, int, double)
514
	 */
515 509
	public Object readBlock(int pos, int blockHeight, double scale)
516 510
		throws InvalidSetViewException, FileNotOpenException, RasterDriverException, ProcessInterruptedException {
517
		providerList = getParameters().getProviders();
518 511
		return null;
519 512
	}
520 513

  
......
524 517
	 * @return
525 518
	 */
526 519
	private int[] getSubBandByBandNumber(int band) {
527
		providerList = getParameters().getProviders();
520
		List<RasterProvider> providerList = getParameters().getProviders();
528 521
		int[] res = new int[2];
529 522
		int acum = 0;
530 523
		for (int i = 0; i < providerList.size(); i++) {
......
542 535
	@Override
543 536
	public void loadBuffer(SpiRasterQuery q) 
544 537
			throws ProcessInterruptedException, RasterDriverException {
545
		providerList = getParameters().getProviders();
538
		List<RasterProvider> providerList = getParameters().getProviders();
546 539
		
547 540
		for (int i = 0; i < providerList.size(); i++) {
548 541
			SpiRasterQuery query = (SpiRasterQuery)q.clone();
......
567 560
	
568 561
	public Object getData(int x, int y, int band)throws InvalidSetViewException, FileNotOpenException, RasterDriverException {
569 562
		int[] sub = getSubBandByBandNumber(band);
570
		RasterProvider prov = providerList.get(sub[0]);
563
		RasterProvider prov = getParameters().getProviders().get(sub[0]);
571 564
		return prov.getData(x, y, sub[1]);
572 565
	}
573 566

  
......
757 750
	
758 751
	public String getURIByBand(int band) {
759 752
		int[] sub = getSubBandByBandNumber(band);
760
		RasterProvider prov = providerList.get(sub[0]);
753
		RasterProvider prov = getParameters().getProviders().get(sub[0]);
761 754
		return prov.getURIOfFirstProvider();
762 755
	}
763 756
	
......
803 796
	}
804 797
	
805 798
	private void setFirstProviderToNotTiled() throws InvalidSourceException {
799
		List<RasterProvider> providerList = getParameters().getProviders();
806 800
		if(providerList == null || providerList.size() <= 0 || !providerList.get(0).isTiled()) 
807 801
			return;
808 802
		

Also available in: Unified diff