Revision 8831 branches/v10/libraries/libCq CMS for java.old/src/org/cresques/filter/RasterFilterStackManager.java
RasterFilterStackManager.java | ||
---|---|---|
438 | 438 |
* quedarse en inconsistencia de tipos. |
439 | 439 |
*/ |
440 | 440 |
public void controlTypes() { |
441 |
if (debug) { |
|
442 |
filterStack.show(); |
|
443 |
} |
|
444 |
|
|
445 | 441 |
for (int i = filterStack.lenght(); i >= 0; i--) { |
442 |
String classFilter = null, packageFilter = null, oldClass = null; |
|
443 |
try{ |
|
444 |
classFilter = filterStack.get(i - 1).getClass().toString(); |
|
445 |
packageFilter = classFilter.substring(classFilter.indexOf(" ") + 1, classFilter.lastIndexOf(".")); |
|
446 |
oldClass = classFilter.substring(classFilter.lastIndexOf(".") +1, classFilter.length()); |
|
447 |
}catch(ArrayIndexOutOfBoundsException ex){ |
|
448 |
return; |
|
449 |
} |
|
450 |
|
|
446 | 451 |
if ((i - 1) >= 0) { |
447 | 452 |
//Para el primer filtro comprobamos con el tipo de dato de entrada a la pila |
448 | 453 |
if (i == filterStack.lenght()) { |
449 |
if (filterStack.getInitDataType() != |
|
450 |
filterStack.get(i - 1).getInRasterDataType()) { |
|
451 |
String oldClass = filterStack.get(i - 1). |
|
452 |
getClass(). |
|
453 |
toString(). |
|
454 |
substring(filterStack.get(i - 1). |
|
455 |
getClass(). |
|
456 |
toString(). |
|
457 |
lastIndexOf(".") +1, |
|
458 |
filterStack.get(i - 1). |
|
459 |
getClass(). |
|
460 |
toString(). |
|
461 |
length()); |
|
454 |
if (filterStack.getInitDataType() != filterStack.get(i - 1).getInRasterDataType()) { |
|
462 | 455 |
Pattern p = Pattern.compile(RasterBuf.typesToString(filterStack.get(i - 1).getInRasterDataType())); |
463 | 456 |
Matcher m = p.matcher(oldClass); |
464 | 457 |
String newClass = m.replaceAll(RasterBuf.typesToString(filterStack.getInitDataType())); |
465 |
String strPackage = "org.cresques.filter."; |
|
466 |
if(newClass.endsWith("ImageFilter")) |
|
467 |
strPackage = strPackage + newClass.substring(0, newClass.lastIndexOf("ImageFilter")); |
|
468 |
else if(newClass.endsWith("ShortFilter")) |
|
469 |
strPackage = strPackage + newClass.substring(0, newClass.lastIndexOf("ShortFilter")); |
|
470 |
else if(newClass.endsWith("DoubleFilter")) |
|
471 |
strPackage = strPackage + newClass.substring(0, newClass.lastIndexOf("DoubleFilter")); |
|
472 |
else if(newClass.endsWith("FloatFilter")) |
|
473 |
strPackage = strPackage + newClass.substring(0, newClass.lastIndexOf("FloatFilter")); |
|
474 |
|
|
475 |
strPackage = strPackage + "." + newClass; |
|
476 |
|
|
458 |
String strPackage = packageFilter + "." + newClass; |
|
459 |
|
|
477 | 460 |
try { |
478 | 461 |
Class filterClass = Class.forName(strPackage); |
479 | 462 |
Constructor con = filterClass.getConstructor(null); |
480 | 463 |
RasterFilter newFilter = (RasterFilter) con.newInstance(null); |
481 | 464 |
newFilter.params = filterStack.get(i - 1).params; |
482 |
filterStack.replace(newFilter, i - 1, |
|
483 |
this.getType(newFilter)); |
|
465 |
filterStack.replace(newFilter, i - 1, getType(newFilter)); |
|
484 | 466 |
} catch (Exception e) { |
485 | 467 |
e.printStackTrace(); |
486 | 468 |
} |
487 | 469 |
} |
488 | 470 |
|
489 | 471 |
//Desde el filtro 2 en adelante se compara la salida de uno con la entrada del siguiente |
490 |
} else if (filterStack.get(i).getOutRasterDataType() != |
|
491 |
filterStack.get(i - 1).getInRasterDataType()) { |
|
492 |
String oldClass = filterStack.get(i - 1).getClass(). |
|
493 |
toString().substring(filterStack.get(i - 1). |
|
494 |
getClass(). |
|
495 |
toString(). |
|
496 |
lastIndexOf(".") + 1, |
|
497 |
filterStack.get(i - 1). |
|
498 |
getClass(). |
|
499 |
toString(). |
|
500 |
length()); |
|
472 |
} else if (filterStack.get(i).getOutRasterDataType() != filterStack.get(i - 1).getInRasterDataType()) { |
|
501 | 473 |
Pattern p = Pattern.compile(RasterBuf.typesToString(filterStack.get(i - 1).getInRasterDataType())); |
502 | 474 |
Matcher m = p.matcher(oldClass); |
503 | 475 |
String newClass = m.replaceAll(RasterBuf.typesToString(filterStack.get(i).getOutRasterDataType())); |
504 |
|
|
476 |
String strPackage = packageFilter + "." + newClass; |
|
477 |
|
|
505 | 478 |
try { |
506 |
Class filterClass = Class.forName("org.cresques.io.raster." + |
|
507 |
newClass); |
|
479 |
Class filterClass = Class.forName(strPackage.trim()); |
|
508 | 480 |
Constructor con = filterClass.getConstructor(null); |
509 | 481 |
RasterFilter newFilter = (RasterFilter) con.newInstance(null); |
482 |
//newFilter.setFilterName(filterStack.get(i - 1).getFilterName()); |
|
510 | 483 |
newFilter.params = filterStack.get(i - 1).params; |
511 |
filterStack.replace(newFilter, i - 1, |
|
512 |
this.getType(newFilter)); |
|
484 |
filterStack.replace(newFilter, i - 1, getType(newFilter)); |
|
513 | 485 |
} catch (Exception e) { |
514 | 486 |
e.printStackTrace(); |
515 | 487 |
} |
... | ... | |
517 | 489 |
} |
518 | 490 |
} |
519 | 491 |
|
520 |
if (debug) {
|
|
492 |
if (debug) |
|
521 | 493 |
filterStack.show(); |
522 |
} |
|
494 |
|
|
523 | 495 |
} |
524 | 496 |
|
525 | 497 |
/** |
Also available in: Unified diff