ref #8044: handle update result of moveTerm correctly
authorKatja Luther <k.luther@bgbm.org>
Mon, 9 Mar 2020 13:38:26 +0000 (14:38 +0100)
committerKatja Luther <k.luther@bgbm.org>
Mon, 9 Mar 2020 13:38:26 +0000 (14:38 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/MoveDefinedTermHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/MoveDefinedTermOperation.java

index 6656021e04a694bd1b562328f791006327d54209..30bb7310c07255a2f66169d8fc5706bd4027d036 100644 (file)
@@ -65,6 +65,8 @@ public class MoveDefinedTermHandler {
         List<AbstractTermDto> selectedTerms = new ArrayList<>();
         if (dialog.open() == IStatus.OK) {
             selectedTerms = wizard.getSelectedTerms();
+        }else {
+            return;
         }
 
         if(selectedTerms.size()!=1){
index 2bee2ee7c283c06a668bebe5e166b982143b1c7d..59518e36f3515349494d5acf9b848636aa76c456 100644 (file)
@@ -21,6 +21,10 @@ import org.eclipse.jface.viewers.ViewerDropAdapter;
 \r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.api.service.TermServiceImpl.TermMovePosition;\r
+import eu.etaxonomy.cdm.api.service.UpdateResult;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\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
@@ -64,6 +68,7 @@ public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {
        @Override\r
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
+           UpdateResult result = new UpdateResult();\r
            for(TermDto term:sourceTerms){\r
                sourceVocabularies.add(term.getVocabularyDto());\r
             UUID parentUuid = targetTermOrVocabulary.getUuid();\r
@@ -74,12 +79,23 @@ public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {
             else if(currentLocation == ViewerDropAdapter.LOCATION_AFTER) {\r
                 termMovePosition = TermMovePosition.AFTER;\r
             }\r
-            CdmStore.getService(ITermService.class).moveTerm(term, parentUuid, termMovePosition);\r
+            result.includeResult(CdmStore.getService(ITermService.class).moveTerm(term, parentUuid, termMovePosition));\r
         }\r
-           Collection<AbstractTermDto> affectedObjects = new HashSet<>(sourceTerms);\r
-           affectedObjects.addAll(sourceVocabularies);\r
-           affectedObjects.add(targetTermOrVocabulary);\r
-               return postExecute(affectedObjects);\r
+           Collection<CdmBase> affectedObjects = result.getUpdatedObjects();\r
+           Collection<AbstractTermDto> affectedDtos = new HashSet();\r
+           for (CdmBase base: affectedObjects){\r
+               if (base instanceof TermVocabulary){\r
+                   TermVocabularyDto dto = new TermVocabularyDto(base.getUuid(), ((TermVocabulary)base).getRepresentations(), ((TermVocabulary)base).getTermType());\r
+                   affectedDtos.add(dto);\r
+               }\r
+               if (base instanceof DefinedTermBase){\r
+                   TermDto dto = TermDto.fromTerm((DefinedTermBase)base);\r
+                affectedDtos.add(dto);\r
+               }\r
+           }\r
+\r
+\r
+               return postExecute(affectedDtos);\r
        }\r
 \r
        @Override\r