Revision 44748 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultCodeBuilder.java

View differences:

DefaultCodeBuilder.java
49 49
import org.gvsig.expressionevaluator.Function;
50 50
import org.gvsig.expressionevaluator.Interpreter;
51 51
import org.gvsig.expressionevaluator.SymbolTable;
52
import org.gvsig.expressionevaluator.impl.function.programming.GetattrFunction;
53 52
import org.gvsig.expressionevaluator.impl.function.programming.GetitemFunction;
54 53
import org.gvsig.tools.dynobject.DynObject;
55 54
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
......
272 271
            return this.codes.size();
273 272
        }
274 273

  
275
        public void add(String name, Code arg) {
276
            this.codes.add(new ImmutablePair<>(name, arg));
274
        public void add(String name, Code parameter) {
275
          if( !StringUtils.isBlank(name) ) {
276
            for (int i = 0; i < codes.size(); i++) {
277
              Pair<String, Code> arg = codes.get(i);
278
              if( StringUtils.equalsIgnoreCase(name, arg.getKey()) ) {
279
                codes.set(i, new ImmutablePair<>(name, parameter));
280
                return;
281
              }              
282
            }
283
          }
284
          this.codes.add(new ImmutablePair<>(name, parameter));
277 285
        }
278 286

  
279 287
        public void add(Code arg) {
......
285 293
        }
286 294

  
287 295
        @Override
296
        public boolean contains(String name) {
297
          for (Pair<String, Code> arg : this.codes) {
298
            if( StringUtils.equalsIgnoreCase(arg.getKey(), name) ) {
299
              return true;
300
            }
301
          }
302
          return false;
303
        }
304
        
305
        @Override
288 306
        public boolean contains(String name, int index) {
289 307
          String argNameX = name + String.valueOf(index).trim();
290 308
          for (Pair<String, Code> arg : this.codes) {
......
327 345
          return null;
328 346
        }
329 347

  
348
        @Override
330 349
        public String getName(int n) {
331 350
            return this.codes.get(n).getKey();
332 351
        }
......
548 567
                    break;
549 568
                case FUNCTION:
550 569
                default:
551
                    if( StringUtils.equalsIgnoreCase(this.name(),GetattrFunction.NAME) ) {
570
                    if( StringUtils.equalsIgnoreCase(this.name(),ExpressionBuilder.FUNCTION_GETATTR) ) {
552 571
                      Code arg0 = this.parameters().get(0);
553 572
                      Code arg1 = this.parameters().get(1);
554 573
                      if( arg0 instanceof Code.Identifier && arg1 instanceof Code.Constant ) {
......
845 864
        BaseCodes args = args();
846 865
        args.add(obj);
847 866
        args.add(constant(attrname));
848
        return function(GetattrFunction.NAME, args);
867
        return function(ExpressionBuilder.FUNCTION_GETATTR, args);
849 868
    }    
850 869

  
851 870
    @Override

Also available in: Unified diff