Merge branch 'release/4.3.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / ModifierElement.java
index a213340408c8588c0322f01c6a7eafb8615c3ea5..f182ca831bd41415e9f39e8aaab596ec3e870a44 100644 (file)
@@ -11,6 +11,7 @@
 package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -20,6 +21,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.StateData;
+import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -58,18 +60,24 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
                this.entity = entity;
                if(getParentElement() instanceof ModifierSection){
                    ModifierSection parentSection = (ModifierSection) getParentElement();
+                   List<DefinedTerm> modifierTerms = new ArrayList<DefinedTerm>();
+            Set<TermVocabulary<DefinedTerm>> recommendedModifierEnumeration = new HashSet<TermVocabulary<DefinedTerm>>();
                    if(parentSection.getEntity() instanceof StateData){
                        StateData stateData = (StateData) parentSection.getEntity();
-                       List<DefinedTerm> modifierTerms = new ArrayList<DefinedTerm>();
-                       Set<TermVocabulary<DefinedTerm>> recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
-                       for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
-                           modifierTerms.addAll(termVocabulary.getTerms());
-                       }
-                       combo_modifier.setTerms(modifierTerms);
+                       recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
                    }
+                   if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
+                       StatisticalMeasurementValue statisticalMeasurementValue = (StatisticalMeasurementValue)parentSection.getEntity();
+                       recommendedModifierEnumeration = statisticalMeasurementValue.getQuantitativeData().getFeature().getRecommendedModifierEnumeration();
+                   }
+                   for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
+                       modifierTerms.addAll(termVocabulary.getTerms());
+                   }
+                   combo_modifier.setTerms(modifierTerms);
                }
         if(entity.getId()>0){
             combo_modifier.setSelection(entity);
+            combo_modifier.removeEmptyElement();
         }
        }
 
@@ -82,16 +90,24 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-           if(eventSource==combo_modifier){
-               if(getParentElement() instanceof ModifierSection){
-                   ModifierSection parentSection = (ModifierSection) getParentElement();
-                   if((parentSection).getEntity() instanceof StateData){
+           if(eventSource==combo_modifier && combo_modifier.getSelection()!=null){
+               combo_modifier.removeEmptyElement();
+               if(getParentElement() instanceof AbstractFormSection){
+                   AbstractFormSection<?> parentSection = (AbstractFormSection<?>) getParentElement();
+                   if(parentSection.getEntity() instanceof StateData){
                        StateData stateData = (StateData) parentSection.getEntity();
                        stateData.removeModifier(entity);
                        DefinedTerm term = combo_modifier.getSelection();
                        stateData.addModifier(term);
                        entity = term;
                    }
+                   else if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
+                       StatisticalMeasurementValue parentEntity = (StatisticalMeasurementValue) parentSection.getEntity();
+                       parentEntity.removeModifier(entity);
+                       DefinedTerm term = combo_modifier.getSelection();
+                       parentEntity.addModifier(term);
+                       entity = term;
+                   }
                }
            }
        }