Project

General

Profile

« Previous | Next » 

Revision bbed9d01

Added by Patrick Plitzner almost 6 years ago

Refactor character matrix

  • unify summary row configs

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/AggregationConfiguration.java
13 13

  
14 14
import org.apache.commons.lang.StringUtils;
15 15
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
16
import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
17 16
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
18 17
import org.eclipse.nebula.widgets.nattable.summaryrow.DefaultSummaryRowConfiguration;
19 18
import org.eclipse.nebula.widgets.nattable.summaryrow.ISummaryProvider;
20 19
import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowConfigAttributes;
21 20
import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowLayer;
22
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
23 21

  
24 22
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
25 23
import eu.etaxonomy.cdm.model.description.CategoricalData;
......
35 33
 */
36 34
public class AggregationConfiguration extends DefaultSummaryRowConfiguration {
37 35

  
38
    private final IDataProvider dataProvider;
39
    private Feature feature;
36
    private CharacterMatrix matrix;
40 37

  
41
    public AggregationConfiguration(IDataProvider dataProvider, Feature feature) {
42
        this.dataProvider = dataProvider;
43
        this.feature = feature;
44
        this.summaryRowBgColor = GUIHelper.COLOR_BLUE;
45
        this.summaryRowFgColor = GUIHelper.COLOR_WHITE;
38
    public AggregationConfiguration(CharacterMatrix matrix) {
39
        this.matrix = matrix;
46 40
    }
47 41

  
48 42
    @Override
49 43
    public void addSummaryProviderConfig(IConfigRegistry configRegistry) {
50
        if(feature.isSupportsQuantitativeData()){
51
            configRegistry.registerConfigAttribute(
52
                    SummaryRowConfigAttributes.SUMMARY_PROVIDER,
53
                    new QuantitativeSummaryProvider(),
54
                    DisplayMode.NORMAL,
55
                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
56
        }
57
        if(feature.isSupportsCategoricalData()){
58
            configRegistry.registerConfigAttribute(
59
                    SummaryRowConfigAttributes.SUMMARY_PROVIDER,
60
                    new CategoricalSummaryProvider(),
61
                    DisplayMode.NORMAL,
62
                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
44
        for(int i=0;i<matrix.getFeatures().size();i++){
45
            //no summary for the supplemental columns
46
            if(i<CharacterMatrix.LEADING_COLUMN_COUNT){
47
                int index = i;
48
                configRegistry.registerConfigAttribute(
49
                        SummaryRowConfigAttributes.SUMMARY_PROVIDER,
50
                        columnIndex -> "",
51
                        DisplayMode.NORMAL,
52
                        SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+index);
53
            }
54
            //register aggregation configuration for each feature
55
            Feature feature = matrix.getFeatures().get(i);
56
            if(feature.isSupportsQuantitativeData()){
57
                configRegistry.registerConfigAttribute(
58
                        SummaryRowConfigAttributes.SUMMARY_PROVIDER,
59
                        new QuantitativeSummaryProvider(),
60
                        DisplayMode.NORMAL,
61
                        SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
62
            }
63
            if(feature.isSupportsCategoricalData()){
64
                configRegistry.registerConfigAttribute(
65
                        SummaryRowConfigAttributes.SUMMARY_PROVIDER,
66
                        new CategoricalSummaryProvider(),
67
                        DisplayMode.NORMAL,
68
                        SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
69
            }
63 70
        }
64 71
    }
65 72

  
......
68 75
        public Object summarize(int columnIndex) {
69 76
            Float minTotal = null;
70 77
            Float maxTotal = null;
71
            int rowCount = AggregationConfiguration.this.dataProvider.getRowCount();
78
            int rowCount = AggregationConfiguration.this.matrix.getBodyDataProvider().getRowCount();
72 79

  
73 80
            for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
74
                Object dataValue = AggregationConfiguration.this.dataProvider.getDataValue(columnIndex,
81
                Object dataValue = AggregationConfiguration.this.matrix.getBodyDataProvider().getDataValue(columnIndex,
75 82
                        rowIndex);
76 83
                if(HibernateProxyHelper.isInstanceOf(dataValue, QuantitativeData.class)){
77 84
                    QuantitativeData quantitativeData = HibernateProxyHelper.deproxy(dataValue, QuantitativeData.class);
......
94 101
    private class CategoricalSummaryProvider implements ISummaryProvider {
95 102
        @Override
96 103
        public Object summarize(int columnIndex) {
97
            int rowCount = AggregationConfiguration.this.dataProvider.getRowCount();
104
            int rowCount = AggregationConfiguration.this.matrix.getBodyDataProvider().getRowCount();
98 105
            Set states = new HashSet<>();
99 106
            for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
100
                Object dataValue = AggregationConfiguration.this.dataProvider.getDataValue(columnIndex,
107
                Object dataValue = AggregationConfiguration.this.matrix.getBodyDataProvider().getDataValue(columnIndex,
101 108
                        rowIndex);
102 109
                if(dataValue instanceof CategoricalData){
103 110
                    states.addAll(((CategoricalData) dataValue).getStatesOnly());
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrix.java
451 451
        // add custom configuration for data conversion and add column labels to viewport layer
452 452
        topMostLayer.addConfiguration(new DataConversionConfiguration(this));
453 453

  
454
        //no summary for the supplemental columns
455
        summaryRowLayer.addConfiguration(new SummaryRowConfiguration());
456

  
457
        //register aggregation configuration for each feature
458
        features.forEach(feature->summaryRowLayer.addConfiguration(new AggregationConfiguration(bodyDataProvider, feature)));
454
        //register aggregation configuration
455
        summaryRowLayer.addConfiguration(new AggregationConfiguration(this));
459 456

  
460 457
        natTable.configure();
461 458
    }
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/SummaryRowConfiguration.java
1
// $Id$
2
/**
3
* Copyright (C) 2018 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix;
11

  
12
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
13
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
14
import org.eclipse.nebula.widgets.nattable.summaryrow.DefaultSummaryRowConfiguration;
15
import org.eclipse.nebula.widgets.nattable.summaryrow.ISummaryProvider;
16
import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowConfigAttributes;
17
import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowLayer;
18

  
19
/**
20
 * @author pplitzner
21
 * @date 09.07.2018
22
 *
23
 */
24
final class SummaryRowConfiguration extends DefaultSummaryRowConfiguration {
25

  
26
    public SummaryRowConfiguration() {
27
        super();
28
    }
29

  
30

  
31
    @Override
32
    public void addSummaryProviderConfig(IConfigRegistry configRegistry) {
33
        for(int i=0;i<CharacterMatrix.LEADING_COLUMN_COUNT;i++){
34
            int index = i;
35
            configRegistry.registerConfigAttribute(
36
                    SummaryRowConfigAttributes.SUMMARY_PROVIDER,
37
                    new ISummaryProvider() {
38

  
39
                        @Override
40
                        public Object summarize(int columnIndex) {
41
                            return "";
42
                        }
43
                    },
44
                    DisplayMode.NORMAL,
45
                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+index);
46
        }
47
    }
48
}

Also available in: Unified diff