Revision 8831 branches/v10/libraries/libCq CMS for java.old/src/org/cresques/filter/RasterFilterStackManager.java

View differences:

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