Revision 4562

View differences:

org.gvsig.report/trunk/org.gvsig.report/org.gvsig.report.lib/org.gvsig.report.lib.impl/src/main/java/org/gvsig/report/lib/impl/DefaultReportConfig.java
6 6
import java.util.ArrayList;
7 7
import java.util.List;
8 8
import java.util.Objects;
9
import javax.json.Json;
10 9
import javax.json.JsonArray;
11
import javax.json.JsonArrayBuilder;
12 10
import javax.json.JsonObject;
13
import javax.json.JsonObjectBuilder;
14 11
import javax.json.JsonValue;
15 12
import org.apache.commons.lang3.StringUtils;
16 13
import org.apache.commons.lang3.builder.ToStringBuilder;
......
21 18
import org.gvsig.fmap.dal.feature.FeatureQueryOrder;
22 19
import org.gvsig.fmap.dal.feature.FeatureStore;
23 20
import org.gvsig.fmap.dal.feature.FeatureType;
21
import org.gvsig.json.Json;
22
import org.gvsig.json.JsonArrayBuilder;
23
import org.gvsig.json.JsonObjectBuilder;
24 24
import org.gvsig.report.lib.api.Report;
25 25
import org.gvsig.report.lib.api.ReportConfig;
26 26
import org.gvsig.report.lib.api.ReportDataSet;
......
84 84
            for (JsonValue jsonValue : arrayJson) {
85 85
                if (requiredFields == null) {
86 86
                    requiredFields = new ArrayList<String>();
87
                } else {
88
                    requiredFields.add(jsonValue.toString());
89 87
                }
90
            }
88
                requiredFields.add((Json.toObject(jsonValue).toString()));
89
            } 
91 90
        } else {
92 91
            this.requiredFields = null;
93 92
        }
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
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