ref #9766: do not show standard vocabularies for moving term to
authorKatja Luther <k.luther@bgbm.org>
Wed, 22 Mar 2023 08:45:46 +0000 (09:45 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 22 Mar 2023 08:45:46 +0000 (09:45 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermDragListenerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermDropAdapterE4.java
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/l10n/Messages.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages_de.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/TermChooseWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/TermChooseWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchController.java

index 2284ba2a7037d9921e15fbe815afeb5155b60451..d307deabc11d9e95a41c55e19677c21474d57ecd 100644 (file)
@@ -17,8 +17,10 @@ import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.dnd.DragSourceAdapter;
 import org.eclipse.swt.dnd.DragSourceEvent;
 
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 
 /**
  *
@@ -42,6 +44,11 @@ public class DefinedTermDragListenerE4 extends DragSourceAdapter {
             if(!(object instanceof TermDto)){
                 event.doit = false;
                 return;
+            }else {
+               if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto) object).getVocabularyUuid()) != null) {
+                       event.doit = false;
+                    return;
+               }
             }
             
         }
index e6d63185543005f1c693bdf26d0a53a30543105a..39c9709c8a5aebd0b918666dfb6d2fe5043570d3 100644 (file)
@@ -49,6 +49,7 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
     private static final String MOVE_FAILED_MESSAGE = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE;
 
     public static final String MOVE_FAILED_STANDARD_TERM = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM;
+    public static final String  MOVE_FAILED_TO_STANDARD_VOC = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC;
 
    
 
@@ -92,8 +93,8 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
                 return false;
             }
            
-            if(droppedObject instanceof FeatureDto ) {
-               if ((((FeatureDto) droppedObject).getVocabularyUuid().equals(VocabularyEnum.Feature.getUuid())|| ((FeatureDto) droppedObject).getVocabularyUuid().equals(VocabularyEnum.NameFeature.getUuid()))){
+            if(droppedObject instanceof TermDto ) {
+               if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto) droppedObject).getVocabularyUuid()) != null) {
                        MessagingUtils.warningDialog(MOVE_FAILED, this, MOVE_FAILED_STANDARD_TERM);
                        return false;
                }
@@ -102,6 +103,10 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
             if(target instanceof TermDto){
                 TermDto parentTerm = (TermDto)target;
                 //check term type compatibility
+                if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto) target).getVocabularyUuid()) != null) {
+                       MessagingUtils.warningDialog(MOVE_FAILED, this, MOVE_FAILED_TO_STANDARD_VOC);
+                       return false;
+               }
                 if(droppedObject instanceof TermDto && !((TermDto) droppedObject).getTermType().equals(parentTerm.getTermType())){
                     MessagingUtils.warningDialog(TERM_TYPE_ERROR_TITLE, this, TERM_TYPE_ERROR_MESSAGE);
                     return false;
index 3229dd0efccc00c5aebb84e3734f08775d82fc69..aada698dba8f79eedca0b44b79f554f18b7f327f 100644 (file)
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.model.location.Country;
 import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
 import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -63,7 +64,7 @@ public class MoveDefinedTermHandler {
 
         TermDto selectedTerm = (TermDto) selection.getFirstElement();
 
-        TermChooseWizard wizard = new TermChooseWizard(selectedTerm);
+        TermChooseWizard wizard = new TermChooseWizard(selectedTerm, true);
         WizardDialog dialog = new WizardDialog(shell, wizard);
 
         List<AbstractTermDto> selectedTerms = new ArrayList<>();
@@ -78,6 +79,18 @@ public class MoveDefinedTermHandler {
             return;
         }
 
+        if(selectedTerms.size()==1){
+               if (selectedTerms.get(0) instanceof TermVocabularyDto) {
+                       if (VocabularyEnum.getVocabularyEnumByUuid(((TermVocabularyDto)selectedTerms.get(0)).getUuid()) != null)
+                   MessagingUtils.warningDialog("Move not possible", this, "Standard Vocabularies should not be changed");
+                   return;
+               }
+               if (selectedTerms.get(0) instanceof TermDto) {
+                       if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto)selectedTerms.get(0)).getVocabularyUuid()) != null)
+                   MessagingUtils.warningDialog("Move not possible", this, "Standard Vocabularies should not be changed");
+                   return;
+               }
+        }      
         AbstractTermDto target = selectedTerms.get(0);
         String label = menuItem.getLocalizedLabel();
         IUndoContext undoContext = StoreUtil.getUndoContext();
index 311ebc2f30f4004b7aa036476064aa676ddd9467..7f7944bdb7407260b52f03921a674d22e037bab9 100644 (file)
@@ -137,6 +137,7 @@ public class Messages extends NLS {
     public static String DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE;
     public static String DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE;
     public static String DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM;
+    public static String DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC;
 
     public static String DebugPreferences_0;
     public static String DebugPreferences_1;
index f080d8e7c4c93363cd3abfa059e3b73f86793a7a..a50e1e194bc8d36a6e8eeb2fd3e14fe1e1bb266d 100644 (file)
@@ -179,7 +179,8 @@ DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE=Cannot move term onto itself or its
 DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Moving the term failed. Try saving before.
 DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=The term type of the dropped term does not match the target term type.
 DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Term types do not match
-DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM=Standard terms are not allowed to move.
+DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM=Standard terms are not allowed to move
+DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC=Terms are not allowed to moved to standard vocabularies
 
 DebugPreferences_0=Show up widget is disposed error messages
 DebugPreferences_1=Disable services api timestamp check
index 68f87775b6c5e171eecdeeefd62cc3d4cdf3de68..54e349772dc48b1122dd1d9870dab3cabbc5c738 100644 (file)
@@ -179,6 +179,7 @@ DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Das Verschieben des Terms ist
 DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=Der Termtyp des verschobenen Terms stimmt nicht mit dem des Ziels überein.
 DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Termtypen stimmen nicht überein
 DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM=Standard Terme können nicht verschoben werden
+DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC=Terme dürfen nich in Standard Vokabulare verschoben werden
 
 
 DebugPreferences_0=\"Widget is disposed\" Fehler Meldungen anzeigen
index 3ce8c204339daa48a355ce7cbc5ed421723676a2..d42679d17f2ff2788b504940245a4f5aa480b0fe 100644 (file)
@@ -29,20 +29,31 @@ public class TermChooseWizard extends Wizard {
        private List<AbstractTermDto> selectedTerms;
 
     private TermDto term;
+    private boolean skipStandartVocs = false;
 
        public TermChooseWizard(TermDto term){
            this.term = term;
-
-
        }
 
+       public TermChooseWizard(TermDto term, boolean skipStandartVocs){
+           this.term = term;
+           this.skipStandartVocs = skipStandartVocs;
+       }
+       
     public List<AbstractTermDto> getSelectedTerms() {
         return selectedTerms;
     }
+    public boolean isSkipStandartVocs() {
+               return skipStandartVocs;
+       }
+
+       public void setSkipStandartVocs(boolean skipStandartVocs) {
+               this.skipStandartVocs = skipStandartVocs;
+       }
 
        @Override
        public void addPages() {
-               page = new TermChooseWizardPage(term);
+               page = new TermChooseWizardPage(term, skipStandartVocs);
                page.setPageComplete(false);
                addPage(page);
        }
index c0c725971d3a7c191f661b01481816098bcc6962..333c862560d8411136ac18b0ecd716436654ef6a 100644 (file)
@@ -29,12 +29,22 @@ public class TermChooseWizardPage extends WizardPage {
 
     private TermSearchController controller;
     private TermDto term;
+    private boolean skipStandartVocs;
 
-       protected TermChooseWizardPage(TermDto term) {
+       protected TermChooseWizardPage(TermDto term, boolean skipStandardVocs) {
                super("Term Choose Wizard");
                setTitle("Choose Parent");
                setDescription("Please search and select the parent term or vocabulary (if you want to move the term as root).");
                this.term = term;
+               this.skipStandartVocs = skipStandardVocs;
+       }
+
+       public boolean isSkipStandartVocs() {
+               return skipStandartVocs;
+       }
+
+       public void setSkipStandartVocs(boolean skipStandartVocs) {
+               this.skipStandartVocs = skipStandartVocs;
        }
 
        @Override
index 4b002da21a4fa48c33994e60202f1f5ef6c0e63c..2bd9e7d6d259fc7026930f229bafff1e16cd1898 100644 (file)
@@ -11,7 +11,9 @@ package eu.etaxonomy.taxeditor.view.search.facet.term;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.HashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
@@ -23,6 +25,7 @@ import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
@@ -72,9 +75,26 @@ public class TermSearchController extends SearchController<TermSearchResult, Abs
             TermType type = term!= null ? term.getTermType():null;
             Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDtoWithVocDto(searchString, type);
             dtos.remove(term);
+           
+            if (this.page.isSkipStandartVocs()) {
+                   Collection<TermDto> filteredDtos = dtos
+                                 .stream()
+                                 .filter(c -> VocabularyEnum.getVocabularyEnumByUuid(c.getVocabularyUuid()) != null).collect(Collectors.toSet());
+                         
+                   dtos = filteredDtos;
+            }
+            
             dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
             if (page != null){
                 Collection<TermVocabularyDto> vocDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypeAndPattern(searchString, type);
+                if (this.page.isSkipStandartVocs()) {
+                   Collection<TermVocabularyDto> filteredDtos = vocDtos
+                                 .stream()
+                                 .filter(c -> VocabularyEnum.getVocabularyEnumByUuid(c.getUuid()) == null).collect(Collectors.toSet());
+                                 
+                   vocDtos = filteredDtos;
+                }
+                
                 vocDtos.stream().forEach(vocDto->searchResults.add(new TermSearchResult(vocDto)));
             }
         }