Revision 44744 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/DefaultFeatureAttributeEmulatorExpression.java
DefaultFeatureAttributeEmulatorExpression.java | ||
---|---|---|
47 | 47 |
private String errorMessage; |
48 | 48 |
|
49 | 49 |
private boolean enableExceptions; |
50 |
private List<String> undefinedSymbols; |
|
50 | 51 |
|
51 | 52 |
private FilteredLogger logger; |
52 | 53 |
|
... | ... | |
69 | 70 |
private void checkVars(final FeatureType featureType) { |
70 | 71 |
this.valid = true; |
71 | 72 |
final List<String> theUsedFields = new ArrayList<>(); |
72 |
final List<String> undefinedFields = new ArrayList<>();
|
|
73 |
this.undefinedSymbols = new ArrayList<>();
|
|
73 | 74 |
|
74 | 75 |
try { |
75 | 76 |
Code code = this.expression.getCode(); |
... | ... | |
80 | 81 |
if (code instanceof Identifier) { |
81 | 82 |
String name = ((Identifier) code).name(); |
82 | 83 |
if (featureType.get(name) == null) { |
83 |
undefinedFields.add(name); |
|
84 |
valid = false; |
|
84 |
undefinedSymbols.add(name); |
|
85 | 85 |
} else { |
86 | 86 |
theUsedFields.add(name); |
87 | 87 |
} |
88 | 88 |
} |
89 | 89 |
} |
90 | 90 |
}); |
91 |
if(!undefinedFields.isEmpty()){ |
|
92 |
this.errorMessage = "undefined fields " + StringUtils.join(undefinedFields,", "); |
|
93 |
} |
|
94 | 91 |
} catch (Exception ex) { |
95 | 92 |
valid = false; |
96 | 93 |
this.errorMessage = ex.getMessage(); |
... | ... | |
99 | 96 |
} |
100 | 97 |
|
101 | 98 |
@Override |
99 |
public List<String> getUndefinedSymbols() { |
|
100 |
return undefinedSymbols; |
|
101 |
} |
|
102 |
|
|
103 |
@Override |
|
102 | 104 |
public boolean isEnableExceptions() { |
103 | 105 |
return enableExceptions; |
104 | 106 |
} |
... | ... | |
134 | 136 |
|
135 | 137 |
@Override |
136 | 138 |
public Object get(Feature feature) { |
137 |
if (!this.valid) { |
|
138 |
return null; |
|
139 |
} |
|
140 | 139 |
this.getFeatureSymbolTable().setFeature(feature); |
141 | 140 |
try { |
142 | 141 |
Object result = this.expression.execute(this.getSymbolTable()); |
Also available in: Unified diff