Refactor character matrix
authorPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 9 Jul 2018 14:26:15 +0000 (16:26 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 9 Jul 2018 14:26:15 +0000 (16:26 +0200)
 - unify summary row configs

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/AggregationConfiguration.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrix.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/SummaryRowConfiguration.java [deleted file]

index 88c4ae196833ae9ba29ba3e25b75b4be0676550f..6db4142f0e1c67d1604267ca3ee0b807e94b5ddb 100644 (file)
@@ -13,13 +13,11 @@ import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
-import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
 import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
 import org.eclipse.nebula.widgets.nattable.summaryrow.DefaultSummaryRowConfiguration;
 import org.eclipse.nebula.widgets.nattable.summaryrow.ISummaryProvider;
 import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowConfigAttributes;
 import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowLayer;
-import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
@@ -35,31 +33,40 @@ import eu.etaxonomy.cdm.model.description.QuantitativeData;
  */
 public class AggregationConfiguration extends DefaultSummaryRowConfiguration {
 
-    private final IDataProvider dataProvider;
-    private Feature feature;
+    private CharacterMatrix matrix;
 
-    public AggregationConfiguration(IDataProvider dataProvider, Feature feature) {
-        this.dataProvider = dataProvider;
-        this.feature = feature;
-        this.summaryRowBgColor = GUIHelper.COLOR_BLUE;
-        this.summaryRowFgColor = GUIHelper.COLOR_WHITE;
+    public AggregationConfiguration(CharacterMatrix matrix) {
+        this.matrix = matrix;
     }
 
     @Override
     public void addSummaryProviderConfig(IConfigRegistry configRegistry) {
-        if(feature.isSupportsQuantitativeData()){
-            configRegistry.registerConfigAttribute(
-                    SummaryRowConfigAttributes.SUMMARY_PROVIDER,
-                    new QuantitativeSummaryProvider(),
-                    DisplayMode.NORMAL,
-                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
-        }
-        if(feature.isSupportsCategoricalData()){
-            configRegistry.registerConfigAttribute(
-                    SummaryRowConfigAttributes.SUMMARY_PROVIDER,
-                    new CategoricalSummaryProvider(),
-                    DisplayMode.NORMAL,
-                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
+        for(int i=0;i<matrix.getFeatures().size();i++){
+            //no summary for the supplemental columns
+            if(i<CharacterMatrix.LEADING_COLUMN_COUNT){
+                int index = i;
+                configRegistry.registerConfigAttribute(
+                        SummaryRowConfigAttributes.SUMMARY_PROVIDER,
+                        columnIndex -> "",
+                        DisplayMode.NORMAL,
+                        SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+index);
+            }
+            //register aggregation configuration for each feature
+            Feature feature = matrix.getFeatures().get(i);
+            if(feature.isSupportsQuantitativeData()){
+                configRegistry.registerConfigAttribute(
+                        SummaryRowConfigAttributes.SUMMARY_PROVIDER,
+                        new QuantitativeSummaryProvider(),
+                        DisplayMode.NORMAL,
+                        SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
+            }
+            if(feature.isSupportsCategoricalData()){
+                configRegistry.registerConfigAttribute(
+                        SummaryRowConfigAttributes.SUMMARY_PROVIDER,
+                        new CategoricalSummaryProvider(),
+                        DisplayMode.NORMAL,
+                        SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
+            }
         }
     }
 
@@ -68,10 +75,10 @@ public class AggregationConfiguration extends DefaultSummaryRowConfiguration {
         public Object summarize(int columnIndex) {
             Float minTotal = null;
             Float maxTotal = null;
-            int rowCount = AggregationConfiguration.this.dataProvider.getRowCount();
+            int rowCount = AggregationConfiguration.this.matrix.getBodyDataProvider().getRowCount();
 
             for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
-                Object dataValue = AggregationConfiguration.this.dataProvider.getDataValue(columnIndex,
+                Object dataValue = AggregationConfiguration.this.matrix.getBodyDataProvider().getDataValue(columnIndex,
                         rowIndex);
                 if(HibernateProxyHelper.isInstanceOf(dataValue, QuantitativeData.class)){
                     QuantitativeData quantitativeData = HibernateProxyHelper.deproxy(dataValue, QuantitativeData.class);
@@ -94,10 +101,10 @@ public class AggregationConfiguration extends DefaultSummaryRowConfiguration {
     private class CategoricalSummaryProvider implements ISummaryProvider {
         @Override
         public Object summarize(int columnIndex) {
-            int rowCount = AggregationConfiguration.this.dataProvider.getRowCount();
+            int rowCount = AggregationConfiguration.this.matrix.getBodyDataProvider().getRowCount();
             Set states = new HashSet<>();
             for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
-                Object dataValue = AggregationConfiguration.this.dataProvider.getDataValue(columnIndex,
+                Object dataValue = AggregationConfiguration.this.matrix.getBodyDataProvider().getDataValue(columnIndex,
                         rowIndex);
                 if(dataValue instanceof CategoricalData){
                     states.addAll(((CategoricalData) dataValue).getStatesOnly());
index 9b405152a424bc8fe8b2dce847f7daeaf8739273..ad02535a67d8304fb7c6b9d358a04883a80e088b 100644 (file)
@@ -451,11 +451,8 @@ public class CharacterMatrix extends Composite {
         // add custom configuration for data conversion and add column labels to viewport layer
         topMostLayer.addConfiguration(new DataConversionConfiguration(this));
 
-        //no summary for the supplemental columns
-        summaryRowLayer.addConfiguration(new SummaryRowConfiguration());
-
-        //register aggregation configuration for each feature
-        features.forEach(feature->summaryRowLayer.addConfiguration(new AggregationConfiguration(bodyDataProvider, feature)));
+        //register aggregation configuration
+        summaryRowLayer.addConfiguration(new AggregationConfiguration(this));
 
         natTable.configure();
     }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/SummaryRowConfiguration.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/SummaryRowConfiguration.java
deleted file mode 100644 (file)
index ac3451b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-// $Id$
-/**
-* Copyright (C) 2018 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix;
-
-import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
-import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
-import org.eclipse.nebula.widgets.nattable.summaryrow.DefaultSummaryRowConfiguration;
-import org.eclipse.nebula.widgets.nattable.summaryrow.ISummaryProvider;
-import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowConfigAttributes;
-import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowLayer;
-
-/**
- * @author pplitzner
- * @date 09.07.2018
- *
- */
-final class SummaryRowConfiguration extends DefaultSummaryRowConfiguration {
-
-    public SummaryRowConfiguration() {
-        super();
-    }
-
-
-    @Override
-    public void addSummaryProviderConfig(IConfigRegistry configRegistry) {
-        for(int i=0;i<CharacterMatrix.LEADING_COLUMN_COUNT;i++){
-            int index = i;
-            configRegistry.registerConfigAttribute(
-                    SummaryRowConfigAttributes.SUMMARY_PROVIDER,
-                    new ISummaryProvider() {
-
-                        @Override
-                        public Object summarize(int columnIndex) {
-                            return "";
-                        }
-                    },
-                    DisplayMode.NORMAL,
-                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+index);
-        }
-    }
-}