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
|