ref #9340: add sec check for move synonym to another taxon
authorKatja Luther <k.luther@bgbm.org>
Wed, 3 Mar 2021 11:44:14 +0000 (12:44 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 3 Mar 2021 11:44:14 +0000 (12:44 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/Messages.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/messages.properties
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/messages_de.properties
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/handler/MoveSynonymToAnotherAcceptedTaxonHandlerE4.java

index 5fdf927b428e1c71057f0194dc710435099e59e3..5983a621418c32d5867a9ddce170f082d54888b2 100644 (file)
@@ -332,6 +332,7 @@ public class Messages extends NLS {
     public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent;
     public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select;
     public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep;
+    public static String MoveSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message;
 
 
     static {
index 3cf502532ad657dd5b0178ab3fb6568dc7b7545d..5b1b246302a877525c718fc04fac62a3c4c31215 100644 (file)
@@ -305,9 +305,10 @@ FactualDataView_Lable=Factual Data
 NameFactsDataView_Lable=Name Facts
 DeleteDescriptiveDatasetHandler_Exception_Message=Descriptive Dataset could not be deleted.
 DeleteDescriptiveDatasetHandler_Warning_Message=Deletion was successful but with warnings. 
-ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message=Select secundum reference
-ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title=The secundum reference of the selected parent is different to the secundum of the synonym. Please select which secundum should be used for the accepted taxon.
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title=Select secundum reference
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message=The secundum reference of the selected parent is different to the secundum of the synonym. Please select which secundum should be used for the accepted taxon.
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent=Parent secundum
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select=Select new
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep=Keep secundum
-ChangeSynonymToAcceptedHandler_Different_Publish_Flag=The selected parent taxon and the new taxon have different pubish flags. Maybe one of them should be adapted.
\ No newline at end of file
+ChangeSynonymToAcceptedHandler_Different_Publish_Flag=The selected parent taxon and the new taxon have different pubish flags. Maybe one of them should be adapted.
+MoveSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message= Secundum reference of synonym and new accepted taxon are different. Please select the reference used as secundum.
\ No newline at end of file
index b03dd3b3886f1713f476c3c6015f044c563e510d..1a1b5eee2405cae66218c49380ed1c23d9a34538 100644 (file)
@@ -306,7 +306,8 @@ DeleteDescriptiveDatasetHandler_Exception_Message=Das Descriptive Dataset konnte
 DeleteDescriptiveDatasetHandler_Warning_Message=Das Löschen war erfolgreich, es gibt aber Warnungen.
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message=Auswahl der Sekundum Referenz
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title=Die Sekundum Referenzen des gewählten Eltern und des alten akzeptierten Taxons unterscheiden sich, bitte wählen Sie welche Sekundum Referenz für das neue Synonym verwendet werden soll
-ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent=Eltern Secundum
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent=Eltern Sekundum
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select=Neue auswählen
 ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep=Secundum beibehalten
-ChangeSynonymToAcceptedHandler_Different_Publish_Flag=Das gewählte Elterntaxon und das neue Taxon haben unterschiedliche Publikationsstatus. Eventuell sollten sie angepasst werden.
\ No newline at end of file
+ChangeSynonymToAcceptedHandler_Different_Publish_Flag=Das gewählte Elterntaxon und das neue Taxon haben unterschiedliche Publikationsstatus. Eventuell sollten sie angepasst werden.
+MoveSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message=Die Sekundum Referenz des Synonyms und des neuen akzeptierten Taxons unterscheiden sich, bitte wählen Sie, welche Referenz verwendet werden soll.
\ No newline at end of file
index adca017e509190a7591d102040e9580b9adecd67..68127e2a98e4049c56f7bdb1c59691a315f227ce 100644 (file)
@@ -20,6 +20,8 @@ import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Shell;
 
+import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -31,6 +33,8 @@ import eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 
 public class MoveSynonymToAnotherAcceptedTaxonHandlerE4 implements IPostOperationEnabled{
@@ -82,7 +86,30 @@ public class MoveSynonymToAnotherAcceptedTaxonHandlerE4 implements IPostOperatio
 
 
                newParentNode = TaxonNodeSelectionDialog.select(shell, Messages.MoveSynonymToAnotherAcceptedTaxonHandler_SELECT_ACC_TAXON, excludeTaxa,  input.getTaxonNode(), input.getTaxonNode().getClassification().getUuid());
+               SecReferenceHandlingEnum secHandling = PreferencesUtil.getSecReferenceHandlingPreference();
+        UUID newSecUuid = null;
+
+        Reference synSecRef = synonym.getSec();
+        Reference parentSecRef = newParentNode.getTaxon() != null? newParentNode.getTaxon().getSec():null;
+        if ((synSecRef != parentSecRef && secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame) )|| secHandling.equals(SecReferenceHandlingEnum.WarningSelect)){
+
+            if ((parentSecRef != synSecRef && secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame) )|| secHandling.equals(SecReferenceHandlingEnum.WarningSelect)){
+                int result = MessagingUtils.confirmDialog(Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title, Messages.MoveSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message,
+                        new String[]{Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep, Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent, Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select});
+                if (result == 2){
+                    Reference sec = ReferenceSelectionDialog.select(shell, null);
+                    newSecUuid = sec != null? sec.getUuid(): null;
+                }else if (result == 1){
+                    newSecUuid = parentSecRef != null? parentSecRef.getUuid(): null;
+                }else if (result == 0){
+                    newSecUuid = synSecRef != null? synSecRef.getUuid(): null;
+                }else{
+                    return ;
+                }
+
+            }
 
+        }
                if (synonym.isPublish() != newParentNode.getTaxon().isPublish()){
             MessagingUtils.warningDialog("Publish flag", this,Messages.ChangeSynonymToAcceptedHandler_Different_Publish_Flag);
         }