Revision 4562 org.gvsig.report/trunk/org.gvsig.report/org.gvsig.report.lib/org.gvsig.report.lib.impl/src/main/java/org/gvsig/report/lib/impl/JRFeatureStoreDataSource.java
JRFeatureStoreDataSource.java | ||
---|---|---|
94 | 94 |
return n; |
95 | 95 |
} |
96 | 96 |
|
97 |
private static final DynObjectValueItem[] INVALID_AVAILABLE_VALUES = new DynObjectValueItem[1]; |
|
98 |
|
|
97 | 99 |
public String getLabel(Feature feature, String fieldName) { |
98 |
|
|
99 | 100 |
DynObjectValueItem[] theAvailableValues = this.availableValues.get(fieldName); |
100 | 101 |
Object value = feature.get(fieldName); |
101 |
if (theAvailableValues==null) { |
|
102 |
FeatureAttributeDescriptor attr = featureType.getAttributeDescriptor(fieldName); |
|
103 |
if (attr.hasAvailableValues()) { |
|
104 |
this.availableValues.put(attr.getName(), attr.getAvailableValues(null)); |
|
105 |
} |
|
106 |
String labelPhrase = attr.getTags().getString(TAG_REPORT_ATTR_LABEL, null); |
|
107 |
if (StringUtils.isNotBlank(labelPhrase)) { |
|
108 |
if (attr.isForeingKey()) { |
|
109 |
EditableForeingKey fk; |
|
110 |
try { |
|
111 |
fk = (EditableForeingKey) attr.getForeingKey().clone(); |
|
112 |
fk.unbind(); |
|
113 |
fk.setLabelFormula(labelPhrase); |
|
114 |
|
|
115 |
// ForeingKey.ContextForeingKey myContext = fk.createContext(); |
|
116 |
this.availableValues.put(attr.getName(), fk.getAvailableValues(null)); |
|
117 |
} catch (CloneNotSupportedException ex) { |
|
118 |
LOGGER.warn("Not able to clone foreing key. "+ex.toString()); |
|
102 |
try { |
|
103 |
if (theAvailableValues!=INVALID_AVAILABLE_VALUES) { |
|
104 |
if (theAvailableValues==null) { |
|
105 |
FeatureAttributeDescriptor attr = featureType.getAttributeDescriptor(fieldName); |
|
106 |
if (attr.hasAvailableValues()) { |
|
107 |
this.availableValues.put(attr.getName(), attr.getAvailableValues(null)); |
|
119 | 108 |
} |
109 |
String labelPhrase = attr.getTags().getString(TAG_REPORT_ATTR_LABEL, null); |
|
110 |
if (StringUtils.isNotBlank(labelPhrase)) { |
|
111 |
if (attr.isForeingKey()) { |
|
112 |
EditableForeingKey fk; |
|
113 |
try { |
|
114 |
fk = (EditableForeingKey) attr.getForeingKey().clone(); |
|
115 |
fk.unbind(); |
|
116 |
fk.setLabelFormula(labelPhrase); |
|
117 |
|
|
118 |
// ForeingKey.ContextForeingKey myContext = fk.createContext(); |
|
119 |
this.availableValues.put(attr.getName(), fk.getAvailableValues(null)); |
|
120 |
} catch (CloneNotSupportedException ex) { |
|
121 |
LOGGER.warn("Not able to clone foreing key. "+ex.toString()); |
|
122 |
} |
|
123 |
} |
|
124 |
|
|
125 |
} |
|
126 |
theAvailableValues = this.availableValues.get(fieldName); |
|
120 | 127 |
} |
121 |
|
|
122 |
} |
|
123 |
theAvailableValues = this.availableValues.get(fieldName); |
|
124 |
} |
|
125 |
|
|
126 |
if (theAvailableValues!=null) { |
|
127 |
for (DynObjectValueItem theAvailableValue : theAvailableValues) { |
|
128 |
if (Objects.equals(value, theAvailableValue.getValue())) { |
|
129 |
return theAvailableValue.getLabel(); |
|
128 |
|
|
129 |
if (theAvailableValues!=null) { |
|
130 |
for (DynObjectValueItem theAvailableValue : theAvailableValues) { |
|
131 |
if (Objects.equals(value, theAvailableValue.getValue())) { |
|
132 |
return theAvailableValue.getLabel(); |
|
133 |
} |
|
134 |
} |
|
130 | 135 |
} |
131 | 136 |
} |
137 |
} catch (Exception ex) { |
|
138 |
LOGGER.warn("Fail", ex); |
|
139 |
this.availableValues.put(fieldName, INVALID_AVAILABLE_VALUES); |
|
132 | 140 |
} |
133 | 141 |
return Objects.toString(value); |
142 |
|
|
134 | 143 |
} |
135 | 144 |
|
136 | 145 |
@Override |
Also available in: Unified diff