Revision 46078

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/expressionevaluator/DefaultFeatureExpressionEvaluator.java
3 3
import java.util.ArrayList;
4 4
import java.util.HashSet;
5 5
import java.util.List;
6
import java.util.Objects;
6 7
import java.util.Set;
8
import org.apache.commons.lang3.StringUtils;
7 9
import org.gvsig.expressionevaluator.Code;
10
import org.gvsig.expressionevaluator.Code.Callable;
8 11
import org.gvsig.expressionevaluator.SymbolTable;
9 12
import org.gvsig.expressionevaluator.Expression;
13
import org.gvsig.expressionevaluator.ExpressionBuilder;
10 14
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
11 15
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
12 16
import org.gvsig.expressionevaluator.Function;
......
37 41
    {
38 42

  
39 43
    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultFeatureExpressionEvaluator.class);
44
	private String storeName;
40 45

  
41 46
    private static class DescriptionAdapter implements Description {
42 47

  
......
97 102
    }
98 103

  
99 104
    public DefaultFeatureExpressionEvaluator(String source) {
105
		this(null, source);
106
	}
107
	
108
    public DefaultFeatureExpressionEvaluator(String storeName, String source) {
100 109
        this();
101 110
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
102 111
        this.expression = manager.createExpression();
103 112
        this.expression.setPhrase(source);
113
		this.storeName = storeName;
104 114
    }
105 115

  
106 116
    public DefaultFeatureExpressionEvaluator(Expression expression) {
117
		this(null, expression);
118
    }
119
	
120
    public DefaultFeatureExpressionEvaluator(String storeName, Expression expression) {
107 121
        this();
108 122
        this.expression = expression;
109
    }
123
		this.storeName = storeName;
124
		
125
	}
110 126

  
111 127
    @Override
112 128
    public String getName() {
......
147 163
            this.expression.getCode().accept((Object code) -> {
148 164
              if (code instanceof Code.Identifier) {
149 165
                Code.Identifier identifier = (Code.Identifier) code;
150
                names.add(identifier.name());
151
              }
166
				if(!StringUtils.equalsIgnoreCase(storeName, identifier.name())) {
167
					names.add(identifier.name());
168
				}
169
              } else if (code instanceof Code.Callable) {
170
				  Callable callable = (Callable) code;
171
				  if (callable.name().equals(ExpressionBuilder.FUNCTION_GETATTR)) {
172
					  Code p0 = callable.parameters().get(0);
173
					  if (!(p0 instanceof Code.Identifier)) {
174
						  return;
175
					  }
176
					  if (!StringUtils.equalsIgnoreCase(storeName, ((Code.Identifier) p0).name())) {
177
						  return;
178
					  }
179
					  Code p1 = callable.parameters().get(1);
180
					  if (!(p1 instanceof Code.Constant)) {
181
						  return;
182
					  }
183
					  String s = Objects.toString(((Code.Constant)p1).value(), null);
184
					  if (s != null) {
185
						  names.add(s);
186
					  }
187
				  }
188
			  } 
152 189
            });
153 190
            EvaluatorFieldsInfo info = new EvaluatorFieldsInfo();
154 191
            for (String name : names) {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureStore.java
3005 3005

  
3006 3006
    @Override
3007 3007
    public FeatureQuery createFeatureQuery() {
3008
        return new DefaultFeatureQuery();
3008
        return new DefaultFeatureQuery(this.getName());
3009 3009
    }
3010 3010

  
3011 3011
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureQuery.java
115 115
    private FeatureExtraColumns extraColumn = new DefaultFeatureExtraColumns();
116 116
    
117 117
    private MutableSymbolTable symbolTable;
118
	private String storeName;
118 119
    
119 120
    /**
120 121
     * Creates a FeatureQuery which will load all available Features of a type.
121 122
     *
122 123
     */
123 124
    public DefaultFeatureQuery() {
124
        super();
125
		super();
126
	}
127
	
128
    public DefaultFeatureQuery(String storeName) {
129
        this();
130
		this.storeName = storeName;
131
		
125 132
    }
126 133

  
127 134
    /**
......
377 384
            this.clearFilter();
378 385
            return;
379 386
        }
380
        Evaluator x = new DefaultFeatureExpressionEvaluator(filter);
387
        Evaluator x = new DefaultFeatureExpressionEvaluator(storeName, filter);
381 388
        this.setFilter(x);
382 389
    }
383 390

  
......
606 613
        state.set("groupByColumns", this.groupByColumns);
607 614
        state.set("aggregateFunctions", this.aggregateFunctions);
608 615
        state.set("extraColumn", this.extraColumn);
616
		state.set("storeName", this.storeName);
609 617
        
610 618

  
611 619
    }
......
654 662
        }
655 663
        this.limit = state.getLong("limit");
656 664
        this.pageSize = state.getLong("pageSize");
665
		this.storeName = state.getString("storeName");
657 666
        
658 667
        
659 668
        this.order = (FeatureQueryOrder) state.get("order");
......
720 729
        definition.addDynFieldObject("extraColumn")
721 730
                .setClassOfValue(DefaultFeatureExtraColumns.class);
722 731
                        
732
		definition.addDynFieldString("storeName").setMandatory(false);
723 733

  
724 734
    }
725 735

  
......
890 900
            LOGGER.debug("Can't clone symbol table",ex);
891 901
        }
892 902
    }
903
	this.storeName = other.storeName;
893 904
  }
894 905

  
895 906
    @Override

Also available in: Unified diff