ref #8774: fix AOOB Exception in termtree editor
authorKatja Luther <k.luther@bgbm.org>
Wed, 2 Dec 2020 13:05:13 +0000 (14:05 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 2 Dec 2020 13:06:09 +0000 (14:06 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/AbstractTermTreeEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/CharacterTreeEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeDtoDropAdapter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/IFeatureTreeEditor.java

index 212e3020775352c9a9b59ba21ea0ee4df0d69193..a0438684a27c062f2786575510ec2114b08eee34 100644 (file)
@@ -649,6 +649,18 @@ public class CharacterEditor implements ICharacterEditor, IConversationEnabled,
         return false;
     }
 
+    @Override
+    public void setNodeDtoForUuid(TermNodeDto node) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setTreeDtoForUuid(TermTreeDto tree) {
+        // TODO Auto-generated method stub
+
+    }
+
 
 
 
index 9f8ff9c6379a75b164e83aff4a55e3c3ca19e9d4..db35ca668c1ffe616a726a39e4d4a93f36abc489 100644 (file)
@@ -481,6 +481,16 @@ public abstract class AbstractTermTreeEditor<T extends DefinedTermBase> implemen
         return trees.get(treeUuid);
     }
 
+    @Override
+    public void setTreeDtoForUuid(TermTreeDto tree){
+        trees.put(tree.getUuid(), tree);
+    }
+
+    @Override
+    public void setNodeDtoForUuid(TermNodeDto node){
+        this.uuidTermMap.put(node.getUuid(), node);
+    }
+
     @Override
     public void addOperation(AbstractPostOperation operation) {
         operationList.add(operation);
index cd8394e7c7f67c8186eba3345bc109b665c0f11d..9daaff8aeb686a2cc351e6c8a05651811bf17d54 100755 (executable)
@@ -137,7 +137,7 @@ public class FeatureTreeDtoDropAdapter extends ViewerDropAdapter {
                                return false;
                            }
                        }
-                       TermNodeDto droppedNode = (TermNodeDto) droppedObject;
+                       TermNodeDto droppedNode = editor.getNodeDtoForUuid(((TermNodeDto) droppedObject).getUuid());
                        TermNodeDto oldParent = editor.getNodeDtoForUuid(droppedNode.getParentUuid());
                        int currentPosition = oldParent.getIndex(droppedNode);
 
@@ -149,6 +149,9 @@ public class FeatureTreeDtoDropAdapter extends ViewerDropAdapter {
                        Object o = oldParent.getChildren().remove(currentPosition);
                        target.getChildren().add(position, droppedNode);
                        droppedNode.setParentUuid(target.getUuid());
+                       editor.setNodeDtoForUuid(droppedNode);
+                       editor.setNodeDtoForUuid(target);
+                       editor.setNodeDtoForUuid(oldParent);
                        editor.setDirty();
                        editor.addOperation(operation);
                    }
index 0910b69fc763716772738ffccc53a502c343fae0..d0a16349b8851c6092452dc1f9352fd56d13e612 100644 (file)
@@ -33,6 +33,8 @@ public interface IFeatureTreeEditor<T extends DefinedTermBase> extends IPostOper
 
     public TermNodeDto getNodeDtoForUuid(UUID nodeUuid);
     public TermTreeDto getTreeDtoForUuid(UUID treeUuid);
+    public void setNodeDtoForUuid(TermNodeDto node);
+    public void setTreeDtoForUuid(TermTreeDto tree);
     public boolean checkDuplicates(UUID termUuid, UUID treeUuid) ;