Revision 7f1d6816
Added by Patrick Plitzner about 6 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/AggregationConfiguration.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.taxeditor.editor.workingSet.matrix; |
10 | 10 |
|
11 |
import java.util.HashSet; |
|
12 |
import java.util.Set; |
|
13 |
|
|
14 |
import org.apache.commons.lang.StringUtils; |
|
11 | 15 |
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; |
12 | 16 |
import org.eclipse.nebula.widgets.nattable.data.IDataProvider; |
13 | 17 |
import org.eclipse.nebula.widgets.nattable.style.DisplayMode; |
... | ... | |
20 | 24 |
import eu.etaxonomy.cdm.model.description.CategoricalData; |
21 | 25 |
import eu.etaxonomy.cdm.model.description.Feature; |
22 | 26 |
import eu.etaxonomy.cdm.model.description.QuantitativeData; |
23 |
import eu.etaxonomy.taxeditor.model.DescriptionHelper;
|
|
27 |
import eu.etaxonomy.cdm.model.description.State;
|
|
24 | 28 |
|
25 | 29 |
/** |
26 | 30 |
* @author pplitzner |
... | ... | |
79 | 83 |
} |
80 | 84 |
} |
81 | 85 |
} |
82 |
String summaryString = ""; |
|
83 |
if(minTotal!=null){ |
|
84 |
summaryString += "from "+minTotal; |
|
85 |
} |
|
86 |
if(maxTotal!=null){ |
|
87 |
summaryString += " up to "+maxTotal; |
|
88 |
} |
|
86 |
String summaryString = (minTotal==null?"?":minTotal.toString()) |
|
87 |
+" - " |
|
88 |
+(maxTotal==null?"?":maxTotal.toString()); |
|
89 | 89 |
return summaryString; |
90 | 90 |
} |
91 | 91 |
} |
... | ... | |
93 | 93 |
private class CategoricalSummaryProvider implements ISummaryProvider { |
94 | 94 |
@Override |
95 | 95 |
public Object summarize(int columnIndex) { |
96 |
String summaryString = ""; |
|
97 |
String separator = ", "; |
|
98 | 96 |
int rowCount = AggregationConfiguration.this.dataProvider.getRowCount(); |
97 |
Set<State> states = new HashSet<>(); |
|
99 | 98 |
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { |
100 | 99 |
Object dataValue = AggregationConfiguration.this.dataProvider.getDataValue(columnIndex, |
101 | 100 |
rowIndex); |
102 | 101 |
if(dataValue instanceof CategoricalData){ |
103 | 102 |
CategoricalData categoricalData = (CategoricalData)dataValue; |
104 |
summaryString += DescriptionHelper.getLabel(categoricalData)+separator;
|
|
103 |
states.addAll(categoricalData.getStatesOnly());
|
|
105 | 104 |
} |
106 | 105 |
} |
107 |
if(summaryString.length()>separator.length()){ |
|
108 |
summaryString = summaryString.substring(0, summaryString.length()-separator.length()); |
|
109 |
} |
|
110 |
return summaryString; |
|
106 |
return StringUtils.join(states, ", "); |
|
111 | 107 |
} |
112 | 108 |
} |
113 |
|
|
114 | 109 |
} |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/DescriptionElementCompareWrapper.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.taxeditor.editor.workingSet.matrix; |
10 | 10 |
|
11 |
import java.util.HashSet; |
|
12 |
import java.util.Set; |
|
13 |
import java.util.UUID; |
|
14 |
|
|
11 | 15 |
import eu.etaxonomy.cdm.model.description.CategoricalData; |
12 | 16 |
import eu.etaxonomy.cdm.model.description.DescriptionElementBase; |
13 | 17 |
import eu.etaxonomy.cdm.model.description.QuantitativeData; |
... | ... | |
20 | 24 |
public class DescriptionElementCompareWrapper { |
21 | 25 |
|
22 | 26 |
private DescriptionElementBase element; |
27 |
private Set<UUID> stateUuids = new HashSet<>(); |
|
28 |
private Float min = null; |
|
29 |
private Float max = null; |
|
23 | 30 |
|
24 | 31 |
public DescriptionElementCompareWrapper(DescriptionElementBase element) { |
25 | 32 |
this.element = element; |
33 |
if(element.isInstanceOf(CategoricalData.class)){ |
|
34 |
CategoricalData elementData = (CategoricalData)element; |
|
35 |
elementData.getStatesOnly().forEach(state->stateUuids.add(state.getUuid())); |
|
36 |
} |
|
37 |
else if(element.isInstanceOf(QuantitativeData.class)){ |
|
38 |
QuantitativeData elementData = (QuantitativeData)element; |
|
39 |
min = elementData.getMin(); |
|
40 |
max = elementData.getMax(); |
|
41 |
} |
|
26 | 42 |
} |
27 | 43 |
|
28 | 44 |
public DescriptionElementBase unwrap() { |
29 | 45 |
return element; |
30 | 46 |
} |
31 | 47 |
|
32 |
public boolean equals(DescriptionElementCompareWrapper other) { |
|
33 |
DescriptionElementBase otherElement = other.unwrap(); |
|
34 |
//TODO: Implement more elaborate equals() method |
|
35 |
if(element.isInstanceOf(CategoricalData.class) && otherElement instanceof CategoricalData){ |
|
36 |
boolean equal = true; |
|
37 |
CategoricalData otherData = (CategoricalData)otherElement; |
|
38 |
CategoricalData elementData = (CategoricalData)element; |
|
39 |
equal &= elementData.getStatesOnly().equals(otherData.getStatesOnly()); |
|
40 |
return equal; |
|
48 |
/** |
|
49 |
* {@inheritDoc} |
|
50 |
*/ |
|
51 |
@Override |
|
52 |
public int hashCode() { |
|
53 |
final int prime = 31; |
|
54 |
int result = 1; |
|
55 |
result = prime * result + ((max == null) ? 0 : max.hashCode()); |
|
56 |
result = prime * result + ((min == null) ? 0 : min.hashCode()); |
|
57 |
result = prime * result + ((stateUuids == null) ? 0 : stateUuids.hashCode()); |
|
58 |
return result; |
|
59 |
} |
|
60 |
|
|
61 |
/** |
|
62 |
* {@inheritDoc} |
|
63 |
*/ |
|
64 |
@Override |
|
65 |
public boolean equals(Object obj) { |
|
66 |
if (this == obj) { |
|
67 |
return true; |
|
41 | 68 |
} |
42 |
if(element.isInstanceOf(QuantitativeData.class) && otherElement instanceof QuantitativeData){ |
|
43 |
boolean equal = true; |
|
44 |
QuantitativeData otherData = (QuantitativeData)otherElement; |
|
45 |
QuantitativeData elementData = (QuantitativeData)element; |
|
46 |
if(elementData.getMin()!=null && otherData.getMin()==null){ |
|
47 |
return false; |
|
48 |
} |
|
49 |
if(elementData.getMin()==null && otherData.getMin()!=null){ |
|
69 |
if (obj == null) { |
|
70 |
return false; |
|
71 |
} |
|
72 |
if (getClass() != obj.getClass()) { |
|
73 |
return false; |
|
74 |
} |
|
75 |
DescriptionElementCompareWrapper other = (DescriptionElementCompareWrapper) obj; |
|
76 |
if (max == null) { |
|
77 |
if (other.max != null) { |
|
50 | 78 |
return false; |
51 | 79 |
} |
52 |
if(elementData.getMax()==null && otherData.getMax()!=null){ |
|
80 |
} else if (!max.equals(other.max)) { |
|
81 |
return false; |
|
82 |
} |
|
83 |
if (min == null) { |
|
84 |
if (other.min != null) { |
|
53 | 85 |
return false; |
54 | 86 |
} |
55 |
if(elementData.getMax()!=null && otherData.getMax()==null){ |
|
87 |
} else if (!min.equals(other.min)) { |
|
88 |
return false; |
|
89 |
} |
|
90 |
if (stateUuids == null) { |
|
91 |
if (other.stateUuids != null) { |
|
56 | 92 |
return false; |
57 | 93 |
} |
58 |
if(elementData.getMin()!=null && otherData.getMin()!=null){ |
|
59 |
equal &= elementData.getMin().equals(otherData.getMin()); |
|
60 |
} |
|
61 |
if(elementData.getMax()!=null && otherData.getMax()!=null){ |
|
62 |
equal &= elementData.getMax().equals(otherData.getMax()); |
|
63 |
} |
|
64 |
return equal; |
|
94 |
} else if (!stateUuids.equals(other.stateUuids)) { |
|
95 |
return false; |
|
65 | 96 |
} |
66 |
return false;
|
|
97 |
return true;
|
|
67 | 98 |
} |
68 | 99 |
|
69 | 100 |
} |
Also available in: Unified diff
ref #7095 Optimize aggregation and display of description elements