ref #9173: missing changes to avoid NPE when moving syn in homotypic group
authorKatja Luther <k.luther@bgbm.org>
Wed, 12 Aug 2020 12:43:33 +0000 (14:43 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 12 Aug 2020 12:43:33 +0000 (14:43 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/dnd/NameEditorDropTargetListenerE4.java

index 7981f944601bd384a0880ab46c81b3cf8a701710..3dd2472a237538de261aab71c413bcc7f4be6ee6 100644 (file)
@@ -80,12 +80,18 @@ public class NameEditorDropTargetListenerE4 extends DropTargetAdapter {
                } else {
                        AbstractUtility.executeOperation(operation, target.getContext().get(UISynchronize.class));
                }
-               target.getEditor().getConversationHolder().commit();
-               if (!target.equals(EventUtility.getTaxonEditor())){
-                   ((TaxonNameEditorE4)EventUtility.getTaxonEditor()).redraw();
-                       ((TaxonNameEditorE4)EventUtility.getTaxonEditor()).getConversationHolder().commit();
-
-               }
+//             target.getEditor().getConversationHolder().commit();
+
+//             if (!target.getEditor().equals(EventUtility.getTaxonEditor())){
+//                 EditorUtil.updateEditor(target.getEditor().getTaxonNode(), target.getEditor());
+//                 if (taxonBase instanceof Synonym){
+//                     Synonym syn = (Synonym)taxonBase;
+//                     EditorUtil.updateEditor(((Synonym) taxonBase).getAcceptedTaxon());
+//                 }
+//                // ((TaxonNameEditorE4)EventUtility.getTaxonEditor()).redraw();
+//                     ((TaxonNameEditorE4)EventUtility.getTaxonEditor()).getConversationHolder().commit();
+//
+//             }
 //             target.getEditor().redraw();
 
 //             target.getEditor().getContainer(taxonBase).setFocus();
@@ -99,18 +105,31 @@ public class NameEditorDropTargetListenerE4 extends DropTargetAdapter {
 
                        if(target instanceof AbstractHomotypicalGroupContainerE4){
                                HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainerE4) target).getGroup();
+                               if (((AbstractHomotypicalGroupContainerE4) target).getEditor().getTaxon().equals(synonym.getAcceptedTaxon())){
+                                   //the actual accepted taxon is the same as the taxon of the target editor
+                                   try{
+                                       return new ChangeHomotypicGroupOperation(Messages.NameEditorDropTargetListener_CHANGE_HOMOTYPICAL_GROUP, getEditor().getUndoContext(),
+                                                                           ((AbstractHomotypicalGroupContainerE4) target).getEditor().getTaxon(), synonym, homotypicalGroup, target);
+                                   }catch (NullPointerException e){
+                                       return null;
+                                   }
+                                } else{
+                    getEditor().getConversationHolder().commit();
+                    ((TaxonNameEditorE4) target).getConversationHolder().commit();
+
+                    return new MoveSynonymToAnotherAcceptedTaxonOperationE4(Messages.NameEditorDropTargetListener_CHANGE_ACC_TAXON, getEditor().getUndoContext(), synonym.getUuid(), ((TaxonNameEditorE4) target).getTaxon(), (TaxonNameEditorE4) target, (TaxonNameEditorE4) target);
+
+                }
 
-                               return new ChangeHomotypicGroupOperation(Messages.NameEditorDropTargetListener_CHANGE_HOMOTYPICAL_GROUP, getEditor().getUndoContext(),
-                                               getEditor().getTaxon(), synonym, homotypicalGroup, target);
                        }
                        else if(target instanceof MisappliedGroupE4){
                                return new ChangeSynonymToMisapplicationOperation(Messages.NameEditorDropTargetListener_CHANGE_SYNONYM_TO_MISAPP, getEditor().getUndoContext(),
                                                getEditor().getTaxon(), synonym, target);
                        }
                        else if(target instanceof TaxonNameEditorE4){
-                               if (target.equals(getEditor())){
+                               if (((TaxonNameEditorE4) target).getTaxon().equals(synonym.getAcceptedTaxon())){
                                        return new ChangeHomotypicGroupOperation(Messages.NameEditorDropTargetListener_CHANGE_HOMOTYPICAL_GROUP, getEditor().getUndoContext(),
-                                               getEditor().getTaxon(), synonym, null, target);
+                                               ((TaxonNameEditorE4) target).getTaxon(), synonym, null, target);
                                } else{
                                        getEditor().getConversationHolder().commit();
                                        ((TaxonNameEditorE4) target).getConversationHolder().commit();