ref #8263 Fix refresh of source vocabulary after moving terms
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / editor / definedterm / operation / MoveDefinedTermOperation.java
index ee40c976b1ff16776d0058bc897c3063314d843b..2bee2ee7c283c06a668bebe5e166b982143b1c7d 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.taxeditor.editor.definedterm.operation;\r
 \r
 import java.util.Collection;\r
+import java.util.HashSet;\r
 import java.util.UUID;\r
 \r
 import org.eclipse.core.commands.ExecutionException;\r
@@ -22,6 +23,7 @@ import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.TermServiceImpl.TermMovePosition;\r
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;\r
 import eu.etaxonomy.cdm.persistence.dto.TermDto;\r
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
@@ -34,6 +36,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {\r
 \r
        private final Collection<TermDto> sourceTerms;// the actual DefinedTermBase(s) we are moving\r
+       private final Collection<TermVocabularyDto> sourceVocabularies;\r
        private final AbstractTermDto targetTermOrVocabulary;// the target VOCABULARY or DefinedTerm we are moving these to\r
        private final int currentLocation;\r
 \r
@@ -55,13 +58,14 @@ public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {
                this.targetTermOrVocabulary = target;\r
                this.sourceTerms = sourceTerms;\r
                this.currentLocation = currentLocation;\r
+               sourceVocabularies = new HashSet<>();\r
        }\r
 \r
        @Override\r
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
-           sourceTerms.forEach(term->\r
-           {\r
+           for(TermDto term:sourceTerms){\r
+               sourceVocabularies.add(term.getVocabularyDto());\r
             UUID parentUuid = targetTermOrVocabulary.getUuid();\r
             TermMovePosition termMovePosition = TermMovePosition.ON;\r
             if(currentLocation == ViewerDropAdapter.LOCATION_BEFORE) {\r
@@ -71,8 +75,11 @@ public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {
                 termMovePosition = TermMovePosition.AFTER;\r
             }\r
             CdmStore.getService(ITermService.class).moveTerm(term, parentUuid, termMovePosition);\r
-        });\r
-               return postExecute(targetTermOrVocabulary);\r
+        }\r
+           Collection<AbstractTermDto> affectedObjects = new HashSet<>(sourceTerms);\r
+           affectedObjects.addAll(sourceVocabularies);\r
+           affectedObjects.add(targetTermOrVocabulary);\r
+               return postExecute(affectedObjects);\r
        }\r
 \r
        @Override\r