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
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