ref #9033: handling of status notes
authorKatja Luther <k.luther@bgbm.org>
Thu, 11 Jun 2020 10:05:04 +0000 (12:05 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 11 Jun 2020 10:05:04 +0000 (12:05 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java

index ae40775d8c33661f629587ab89541e9d1b8ea574..de988d2cfd06bb3d543cb23f74bab4eda306454a 100644 (file)
@@ -67,6 +67,7 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizardParentChild<Taxon
             try{
                UpdateResult result;
                TaxonNode parent = getParentEntity();
+
                Map<Language, LanguageString> nodes = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getMultiLanguageTextExcludedNotes();
                UUID refUuid = parent.getReference() != null? parent.getReference().getUuid(): null;
 
@@ -78,6 +79,9 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizardParentChild<Taxon
                }else if (((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isExcluded()){
                    status = TaxonNodeStatus.EXCLUDED;
                }
+               if (status == null){
+                   nodes = null;
+               }
                result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, refUuid, parent.getMicroReference(),
                         status, nodes);
 
index a8ad27ae7e8ef0ec15b25ec0ddc0d5dd2abbe6bf..fc9462d4780777aa002ae3745fbec37c37044883 100644 (file)
@@ -299,6 +299,9 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
     public void widgetSelected(SelectionEvent e) {
 
         int index = combo.getSelectionIndex();
+        if (index == -2){
+            return;
+        }
         if (hasNullValue ){
             index--;
         }
index e329ff119155e0aaf7f25fd781fed0190b649ad6..6a4251de86e5c4216046d493aac978fce0ce6f89 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.taxeditor.ui.element;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -211,6 +212,17 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                        }
                        updateControls();
                }
+
+       }
+
+       @Override
+       public void refresh(){
+           Language lang = combo_language.getSelection();
+           if (multilanguageText.get(lang)!= null){
+               this.element_languageString.setText(multilanguageText.get(combo_language.getSelection()).getText());
+           }else{
+               this.element_languageString.setText(null);
+           }
        }
 
        /**
@@ -258,6 +270,9 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                if (eventSource == element_languageString) {
                        LanguageString languageString = ((LanguageStringWithLabelElement) eventSource)
                                        .getLanguageString();
+                       if (multilanguageText == null){
+                           multilanguageText = new HashMap<>();
+                       }
                        multilanguageText.put(languageString.getLanguage(), languageString);
                        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
                }
index 2f03223663eefebf42ff54e4913745968037d658..542ca438d6ad5dd97e0d3ef906dd648631195797 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.classification;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
@@ -83,6 +84,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
 //     private CheckboxElement checkbox_placementDoubtful;
 
     private MultilanguageTextElement multiLanguageTextStatusNotes;
+    private Map<Language, LanguageString> multilanguageTextCache;
 
 
        private boolean complete;
@@ -103,18 +105,27 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
 
 
     public boolean isExcluded() {
+        if (status == null){
+            return false;
+        }
         return status.equals(TaxonNodeStatus.EXCLUDED);
     }
 
 
 
     public boolean isUnplaced() {
+        if (status == null){
+            return false;
+        }
         return status.equals(TaxonNodeStatus.UNPLACED);
     }
 
 
 
     public boolean isPlacementDoubtful() {
+        if (status == null){
+            return false;
+        }
         return status.equals(TaxonNodeStatus.DOUBTFUL);
     }
 
@@ -222,7 +233,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
         checkbox_publish.setEnabled(isCreateNew());
 
         combo_status = formFactory.createEnumComboElement(TaxonNodeStatus.class, formElement, style, true);
-        combo_status.setSelection(entity.getStatus());
+        if (!isCreateNew()){
+            combo_status.setSelection(entity.getStatus());
+        }
 
         if(isCreateNew()){
 
@@ -251,8 +264,12 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
                }
 
 
-           multiLanguageTextStatusNotes = formFactory.createMultiLanguageTextElement(formElement, "Status Notes", entity.getStatusNote(), 50, style);
-           multiLanguageTextStatusNotes.setEnabled(entity.getStatus() != null);
+           multiLanguageTextStatusNotes = formFactory.createMultiLanguageTextElement(formElement, "Status Notes", null, 50, style);
+           if (!isCreateNew()){
+               multiLanguageTextStatusNotes.setMultilanguageText(entity.getStatusNote());
+               multiLanguageTextStatusNotes.setEnabled(entity.getStatus() != null);
+           }
+
 
                if (!isCreateNew()){
                    selectionNodeAgentRelation = formFactory.createTaxonNodeAgentRelationCollectionSection(formElement, getConversationHolder(), StoreUtil.getSectionStyle(TaxonNodeAgentRelationCollectionSection.class, entity.getClass().getCanonicalName()));
@@ -354,9 +371,32 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
             status = (TaxonNodeStatus) combo_status.getSelection();
             if (!isCreateNew()){
                 getEntity().setStatus(status);
+                if (status == null){
+                    getEntity().getStatusNote().clear();
+                    multiLanguageTextStatusNotes.setMultilanguageText(new HashMap<>());
+                    multiLanguageTextStatusNotes.refresh();
+                }else{
+                    if (multiLanguageTextStatusNotes.getMultilanguageText() != null){
+                        for (LanguageString lang:multiLanguageTextStatusNotes.getMultilanguageText().values()){
+                            getEntity().putStatusNote(lang);
+                        }
+                    }
+                }
             }
 
+            if (status == null){
+                if (multiLanguageTextStatusNotes.getMultilanguageText() != null && !multiLanguageTextStatusNotes.getMultilanguageText().isEmpty()){
+                    multilanguageTextCache = multiLanguageTextStatusNotes.getMultilanguageText();
+                }
+                multiLanguageTextStatusNotes.setMultilanguageText(new HashMap<>());
+                multiLanguageTextStatusNotes.refresh();
+
+            }else if (multilanguageTextCache != null ){
+                multiLanguageTextStatusNotes.setMultilanguageText(multilanguageTextCache);
+                multilanguageTextCache = null;
+            }
             multiLanguageTextStatusNotes.setEnabled(status != null);
+
             complete = true;
         }