ref #8774: adapt term tree editors to usage of termDtos
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / feature / FeatureStateWizardPage.java
index 44e9cd2d46d7a93847f8a18bc0a9b786039b1420..d2163d7c59ebe02a7dda767a2f57aef94e46b26b 100644 (file)
@@ -13,6 +13,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.util.PropertyChangeEvent;
@@ -27,15 +28,18 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
+import eu.etaxonomy.cdm.api.service.ITermNodeService;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureState;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermNode;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
 import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage;
 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -51,12 +55,12 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar
     private TermComboElement<Feature> comboFeature;
     private Button btnSelectState;
 
-    private TermNode<? extends Feature> termNode;
+    private TermNodeDto<? extends Feature> termNode;
     private State selectedState = null;
     private List<TermVocabularyDto> stateVocabulariesDtos = new ArrayList<>();
     private Text text;
 
-    protected FeatureStateWizardPage(String pageName, TermNode<? extends Feature> termNode, CdmFormFactory formFactory) {
+    protected FeatureStateWizardPage(String pageName, TermNodeDto<? extends Feature> termNode, CdmFormFactory formFactory) {
         super(pageName, formFactory);
         this.termNode = termNode;
         setTitle("Create Feature State");
@@ -92,6 +96,7 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar
                     if(additionalTerms.size()==1){
                         selectedState = (State) additionalTerms.iterator().next();
                         text.setText(selectedState.getLabel());
+                        FeatureStateWizardPage.this.getWizard().getContainer().updateButtons();
                     }
                 }
             }
@@ -108,21 +113,25 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar
 
     private void updateFeatureCombo(){
         List<Feature> features = new ArrayList<>();
-        TermNode<? extends Feature> parent = termNode.getParent();
-        while(parent!=null){
-            Feature parentTerm = parent.getTerm();
-            if(parentTerm!=null
-                    && parentTerm.isSupportsCategoricalData()
-                    && !parentTerm.getSupportedCategoricalEnumerations().isEmpty()){
-                features.add(parentTerm);
+        UUID parentUuid = termNode.getParentUuid();
+        if (parentUuid != null){
+            TermNode<? extends Feature> parent = CdmStore.getService(ITermNodeService.class).load(parentUuid);
+            while(parent!=null){
+                Feature parentTerm = parent.getTerm();
+                if(parentTerm!=null
+                        && parentTerm.isSupportsCategoricalData()
+                        && !parentTerm.getSupportedCategoricalEnumerations().isEmpty()){
+                    features.add(parentTerm);
+                }
+                parent = parent.getParent();
             }
-            parent = parent.getParent();
         }
         comboFeature.setTerms(features);
         if(features.size()==1){
             Feature feature = features.get(0);
             comboFeature.setSelection(feature);
             updateStateCombo(feature);
+            comboFeature.removeEmptyElement();
         }
     }
 
@@ -133,7 +142,7 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar
         if(feature!=null){
             Set<TermVocabulary<State>> stateVocabularies = feature.getSupportedCategoricalEnumerations();
             for (TermVocabulary<State> termVocabulary : stateVocabularies) {
-                stateVocabulariesDtos.add(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations(), termVocabulary.getTermType()));
+                stateVocabulariesDtos.add(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations(), termVocabulary.getTermType(), termVocabulary.getTitleCache(), termVocabulary.isAllowDuplicates(), termVocabulary.isOrderRelevant(), termVocabulary.isFlat()));
             }
         }
     }
@@ -148,6 +157,7 @@ public class FeatureStateWizardPage extends AbstractEntityCollectionElementWizar
         if(event.getSource()==comboFeature){
             Feature feature = comboFeature.getSelection();
             updateStateCombo(feature);
+            comboFeature.removeEmptyElement();
         }
         getWizard().getContainer().updateButtons();
     }