ref #10316: TermNodeDto should not contain termtreedto, only some
authorKatja Luther <k.luther@bgbm.org>
Wed, 6 Sep 2023 20:25:14 +0000 (22:25 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 6 Sep 2023 20:25:14 +0000 (22:25 +0200)
attributes

16 files changed:
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermBasePropertyTester.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermDtoContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermTreeViewerComparator.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/CreateDefinedTermHandlerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/DeleteTermBaseHandlerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/TermNodeDtoDragListener.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/TermTreeDtoDropAdapter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/TermTreeEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/handler/AbstractAddTermHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/handler/AddChildTermHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/handler/CopyTermHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/RepresentationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/TermTreeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/TermTreeDetailElementForNode.java

index ef300b8c48aaddf47d0961a837de83c089a7cf75..50b8215b0f2625a33d4a65fad0d286546e6657e0 100644 (file)
@@ -71,7 +71,7 @@ public class TermBasePropertyTester extends PropertyTester {
             }\r
         }\r
         if (object instanceof TermNodeDto) {\r
-            if (((TermNodeDto) object).getTree().isManaged()) {\r
+            if (((TermNodeDto) object).isExternallyManaged()) {\r
                 return false;\r
             }\r
         }\r
index 5be880bdcd4da7ba6f4d2cf3a42b859b15890b22..3418979a040d82523cb479986cc7c427308142e3 100644 (file)
@@ -8,7 +8,6 @@
 */
 package eu.etaxonomy.taxeditor.editor.definedterm;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -106,8 +105,8 @@ public class TermDtoContentProvider extends TreeNodeContentProvider {
     public Collection<? extends TermDto> getChildTerms(TermCollectionDto voc) {
         Collection<TermDto> children = getVocabularyToChildTermMap().get(voc);
         if (children == null) {
-            children = new ArrayList<>(CdmStore.getService(IVocabularyService.class).getCompleteTermHierarchy(voc));
-            getVocabularyToChildTermMap().put(voc, children);
+           children = CdmStore.getService(IVocabularyService.class).getCompleteTermHierarchy(voc);
+           getVocabularyToChildTermMap().put(voc, children);
         }
         return children;
     }
index 70711a155e7bb31630f110ff12e2c4915fc27052..a1a7086e7dc6c71ab796c1a11a09f2f5171e7a61 100644 (file)
@@ -32,7 +32,7 @@ public class TermTreeViewerComparator extends ViewerComparator {
         String label2 = "";
 
         if (e1 instanceof TermNodeDto ){
-            if (((TermNodeDto)e1).getTree().isOrderRelevant()){
+            if (((TermNodeDto)e1).isOrderRelevant()){
                 return 0;
             }
         }else if (e1 instanceof TermNode){
index 5441f2f420961447da4285ae99ec24b1fa291f15..e2ca0443f6f83fe5075fdcd452b831062480a7cc 100644 (file)
@@ -50,7 +50,7 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
     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;
     public static final String  MOVE_FAILED_TO_MANAGED_VOC = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_TO_MANAGED_VOC;
-    public static final String  MOVE_FAILED_TO_MANAGED_TERM = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_TO_MANAGED_TERM;
+    public static final String  MOVE_FAILED_TO_MANAGED_TERM = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_MANAGED_TERM;
    
 
        private final DefinedTermEditorE4 editor;
@@ -166,7 +166,7 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
            if(target instanceof TermVocabularyDto && (getCurrentLocation()!=ViewerDropAdapter.LOCATION_ON || ((TermVocabularyDto)target).isManaged())){
                valid = false;
            }
-           if (target instanceof TermDto && ((((TermDto)target).getOrderIndex() == null && getCurrentLocation() == ViewerDropAdapter.LOCATION_AFTER)||(((TermDto)target).isManaged()))){
+           if (target instanceof TermDto && ((((TermDto)target).getOrderIndex() == null && getCurrentLocation() == ViewerDropAdapter.LOCATION_AFTER)||(((TermDto)target).isManaged()) || (((TermDto)target).getVocabularyDto().isManaged()))){
                valid = false;
            }
 
index 7de75db36735290291d22d265b38f50f6e894d7c..78f27cebf64afee4f206c7a9a147f2dab709c464 100644 (file)
@@ -80,7 +80,7 @@ public class CreateDefinedTermHandlerE4 {
         UUID vocabularyUuid = null;
 
         if(firstElement instanceof TermDto){
-            if (((TermDto)firstElement).isManaged()) {
+            if (((TermDto)firstElement).isManaged() || ((TermDto)firstElement).getVocabularyDto().isManaged()) {
                 return false;
             }
             vocabularyUuid = ((TermDto) firstElement).getVocabularyUuid();
index 9b553d351ff0a685f5e62739a14a7aa7fc517353..8e8bcba33cfd9d98ef5050c89ce3b08d61feaaff 100644 (file)
@@ -74,7 +74,7 @@ public class DeleteTermBaseHandlerE4 {
                  (firstElement instanceof AbstractTermDto);
         UUID vocabularyUuid = null;
         if(firstElement instanceof TermDto){
-            if (((TermDto)firstElement).isManaged()) {
+            if (((TermDto)firstElement).isManaged() || ((TermDto)firstElement).getVocabularyDto().isManaged()) {
                 return false;
             }
             vocabularyUuid = ((TermDto) firstElement).getVocabularyUuid();
index 95d1ab19d560bd181def7e1a62c41ca31fef0ce5..bfc6ac0c68b52be6ec8d63a93ded24112012553c 100644 (file)
@@ -77,6 +77,36 @@ public class TermManager {
         }
         return termBaseList;
     }
+    
+    public <T extends DefinedTermBase>List<TermDto> getPreferredTermsAsDto(TermType termType) {
+        List<?> terms = cachedTermMap.get(termType.getUuid());
+        List<TermDto> termsAsDto = new ArrayList<>();
+        if (terms == null || terms.isEmpty()) {
+            List<T> termBaseList = new ArrayList<>();
+            termBaseList = getFilteredTerms(TermStore.<T> getTerms(termType, null));
+            if (termBaseList != null) {
+                cachedTermMap.put(termType.getUuid(), termBaseList);
+            }
+            for (T term:termBaseList) {
+                termsAsDto.add(TermDto.fromTerm(term));
+            }
+        } else {
+            List<TermDto> termBaseList = new ArrayList<>();
+            Iterator<?> iterator = terms.iterator();
+            List<UUID> uuids = new ArrayList<>();
+            while (iterator.hasNext()) {
+                Object term = iterator.next();
+                if (term instanceof TermDto) {
+                    TermDto dto = (TermDto) term;
+                    termsAsDto.add(dto);
+                } else {
+                    termsAsDto.add(TermDto.fromTerm((T)term));
+                }
+            }
+            
+        }
+        return termsAsDto;
+    }
 
     public <T extends DefinedTermBase> List<T> getPreferredTerms(TermVocabulary<T> termVocabulary) {
         @SuppressWarnings("unchecked")
@@ -150,6 +180,20 @@ public class TermManager {
         }
         return terms;
     }
+    
+    public <T extends DefinedTermBase> List<TermDto> getPreferredTermsAsDto(Class<T> clazz) {
+        @SuppressWarnings("unchecked")
+        List<T> terms = cachedTermMap.get(clazz);
+        List<TermDto> termsAsDto = new ArrayList<>();
+        if (terms == null) {
+            terms = getFilteredTerms(TermStore.getTerms(clazz));
+            cachedTermMap.put(clazz, terms);
+        }
+        for (T term: terms) {
+            termsAsDto.add(TermDto.fromTerm(term));
+        }
+        return termsAsDto;
+    }
 
     /**
      * Generic method to get term preferences for a term vocabulary
@@ -201,6 +245,50 @@ public class TermManager {
 
         return filteredTerms;
     }
+    
+    /**
+     * Generic method to get term preferences for a term vocabulary
+     *
+     * @param initialTerms
+     *            a {@link java.util.List} object.
+     * @return a {@link java.util.List} object.
+     */
+    public <T extends DefinedTermBase> List<TermDto> getFilteredTermsAsDto(List<TermDto> initialTerms) {
+        List<TermDto> filteredTerms = new ArrayList<>();
+        if (initialTerms == null || initialTerms.isEmpty()) {
+            return filteredTerms;
+        }
+
+        for (TermDto term : initialTerms) {
+            if (PreferencesUtil.getBooleanValue(getPrefNameByDto(term), true)) {
+                filteredTerms.add(term);
+            }
+        }
+        if (filteredTerms.isEmpty()) {
+            // check for dtos
+            List<TermDto> preferredTerms = null;
+            if (initialTerms.get(0).getVocabularyUuid() != null) {
+                preferredTerms = cachedTermMap.get(initialTerms.get(0).getVocabularyUuid());
+            }
+            if (preferredTerms == null) {
+                preferredTerms = cachedTermMap.get(initialTerms.get(0).getTermType().getUuid());
+            }
+            if (preferredTerms == null) {
+                return initialTerms;
+            }
+            for (TermDto term : initialTerms) {
+                if (preferredTerms.contains(term)) {
+                    filteredTerms.add(term);
+                }
+            }
+            if (filteredTerms.isEmpty()) {
+                return initialTerms;
+            }
+        }
+
+        return filteredTerms;
+    }
+    
 
     public <T extends DefinedTermBase> List<T> createTermListFromString(String stringValue, TermType type) {
         List<String> checked = new ArrayList<>();
index ce1af6111af403a2daac0452d10ed0113eaf0273..c84a75658a170b669abcc1f5636eabed2a142471 100755 (executable)
@@ -54,7 +54,7 @@ public class TermNodeDtoDragListener extends DragSourceAdapter {
                     && ((IStructuredSelection) viewer.getSelection()).toList()
                     .stream().allMatch(element -> element instanceof TermNodeDto)
                     && ((IStructuredSelection) viewer.getSelection()).toList()
-                    .stream().allMatch(element -> !((TermNodeDto)element).getTree().isManaged());
+                    .stream().allMatch(element -> !((TermNodeDto)element).isExternallyManaged());
            }else {
                event.doit = !viewer.getSelection().isEmpty()
                     && ((IStructuredSelection) viewer.getSelection()).toList()
index 525a34f27b922425db5652e81c94ae7fa3b9ccc1..7953c0cd85b5ca9155fb6b6863d578a2aaa1e72b 100755 (executable)
@@ -72,7 +72,7 @@ public class TermTreeDtoDropAdapter extends ViewerDropAdapter {
                    target = ((TermTreeDto) currentTarget).getRoot();
                }
                else if(currentTarget instanceof TermNodeDto){
-                       if (((TermNodeDto) currentTarget).getTree().isManaged() ) {
+                       if (((TermNodeDto) currentTarget).isExternallyManaged() ) {
                                return false;
                        }
                    target = (TermNodeDto) currentTarget;
@@ -207,7 +207,7 @@ public class TermTreeDtoDropAdapter extends ViewerDropAdapter {
                        AddFeatureOperation operation = new AddFeatureOperation(
                                termDto.getUuid(),
                                target.getUuid(), position, editor, editor);
-                       TermNodeDto newDto = new TermNodeDto(termDto, target, position, target.getTree(), null, 0, null, null);
+                       TermNodeDto newDto = new TermNodeDto(termDto, target, position, null, null, 0, null, null);
 
                 editor.setDirty();
                        editor.addOperation(operation);
@@ -264,7 +264,8 @@ public class TermTreeDtoDropAdapter extends ViewerDropAdapter {
         TermTreeDto rootTree = null;
         if (getSelectedObject() instanceof TermNodeDto){
             TermNodeDto selectedNode = (TermNodeDto)getSelectedObject();
-            rootTree = selectedNode.getTree();
+            rootTree = (TermTreeDto) editor.getTreeDtoForUuid(selectedNode.getTreeUuid());
+            
         }
         if(target instanceof TermTreeDto && getCurrentLocation()!=ViewerDropAdapter.LOCATION_ON){
             return false;
@@ -272,7 +273,7 @@ public class TermTreeDtoDropAdapter extends ViewerDropAdapter {
         if (target == null){
             return false;
         }
-        if (target instanceof TermNodeDto && ((TermNodeDto)target).getTree().isFlat() && getCurrentLocation() == LOCATION_ON){
+        if (target instanceof TermNodeDto && ((TermNodeDto)target).isFlat() && getCurrentLocation() == LOCATION_ON){
             return false;
         }
         TermDto term = null;
@@ -295,7 +296,7 @@ public class TermTreeDtoDropAdapter extends ViewerDropAdapter {
     private boolean checkDuplication(Object target, TermTreeDto rootTree, TermDto term) {
         TermTreeDto targetTree = null;
         if (target instanceof TermNodeDto){
-            targetTree = ((TermNodeDto)target).getTree();
+            targetTree = (TermTreeDto) editor.getTreeDtoForUuid(((TermNodeDto)target).getTreeUuid());
         }else if (target instanceof TermTreeDto){
             targetTree = (TermTreeDto)target;
         }
index 991c59b68475357bb4e9bb9a4e1db6d68fa7c79a..3089844ce5fcc67f4c9e6df1d11945eadc7f72e0 100644 (file)
@@ -191,14 +191,14 @@ public class TermTreeEditor<T extends DefinedTermBase> implements ITermTreeEdito
         if (parentNode != null) {
 
             TermNodeDto copiedNode = (TermNodeDto) ((IStructuredSelection) clipBoardSelection).getFirstElement();
-            boolean isDuplicate = this.checkDuplicates(copiedNode.getTerm().getUuid(), parentNode.getTree().getUuid());
-            if (isDuplicate && !parentNode.getTree().isAllowDuplicate()) {
+            boolean isDuplicate = this.checkDuplicates(copiedNode.getTerm().getUuid(), parentNode.getTreeUuid());
+            if (isDuplicate && !parentNode.isAllowsDuplicats()) {
                 MessagingUtils.informationDialog(Messages.AddFeatureHandler_Duplicates_not_allowed,
                         Messages.AddFeatureHandler_Duplicates_not_allowed_message + "\n"
                                 + copiedNode.getTerm().getTitleCache());
                 return;
             }
-            TermNodeDto newDto = new TermNodeDto(copiedNode.getTerm(), parentNode, 0, parentNode.getTree(), null, 0,
+            TermNodeDto newDto = new TermNodeDto(copiedNode.getTerm(), parentNode, 0, null, null, 0,
                     null, null);
             this.refresh();
             this.setDirty();
index 0e10c6ea31868503677e65578687d92a7811fef6..9d2331d8b87e8b6dc9f1dafdca350c2a4b318807 100755 (executable)
@@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.persistence.dto.CharacterDto;
 import eu.etaxonomy.cdm.persistence.dto.CharacterNodeDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
+import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.termtree.AvailableTermsWizard;
@@ -53,7 +54,7 @@ public abstract class AbstractAddTermHandler {
         TermNodeDto parent = getParent(selection);
         TermType type = null;
         if (parent.getTerm() == null){
-            type = parent.getTree().getTermType();
+            type = parent.getType();
         }else{
             type = parent.getTerm().getTermType();
         }
@@ -66,8 +67,8 @@ public abstract class AbstractAddTermHandler {
             for (DefinedTermBase term : additionalTerms) {
 
                 boolean isDuplicate = false;
-                if (!parent.getTree().isAllowDuplicate()){
-                    isDuplicate = editor.checkDuplicates(term.getUuid(), parent.getTree().getUuid());
+                if (!parent.isAllowsDuplicats()){
+                    isDuplicate = editor.checkDuplicates(term.getUuid(), parent.getTreeUuid());
                     if (isDuplicate){
                         duplicates.add(term);
                     }
@@ -81,9 +82,9 @@ public abstract class AbstractAddTermHandler {
                 editor.setDirty();
 
                 if (editor instanceof ICharacterEditor){
-                    CharacterNodeDto newDto = new CharacterNodeDto(CharacterDto.fromCharacter((Character)term), parent, 0, parent.getTree(), null, 0, null, null);
+                    CharacterNodeDto newDto = new CharacterNodeDto(CharacterDto.fromCharacter((Character)term), parent, 0, (TermTreeDto) ((ICharacterEditor)editor).getTreeDtoForUuid(parent.getTreeUuid()), null, 0, null, null);
                 }else{
-                    TermNodeDto newDto = new TermNodeDto(TermDto.fromTerm(term), parent, 0, parent.getTree(), null, 0, null, null);
+                    TermNodeDto newDto = new TermNodeDto(TermDto.fromTerm(term), parent, 0, (TermTreeDto)editor.getTreeDtoForUuid(parent.getTreeUuid()), null, 0, null, null);
                 }
 
 //                ((AbstractTermTreeEditor)editor).getViewer().refresh();
index 614ffbd15315dd35e747b567550bf214c3553ee2..8c015a1b941f577fb8577fabb87c6fefb7188688 100644 (file)
@@ -36,8 +36,8 @@ public class AddChildTermHandler extends AbstractAddTermHandler{
                 && selection!=null
                 && selection.size()==1
                 && selection.getFirstElement() instanceof TermNodeDto
-                && !((TermNodeDto)selection.getFirstElement()).getTree().isFlat()
-                       && !((TermNodeDto)selection).getTree().isManaged();
+                && !((TermNodeDto)selection.getFirstElement()).isFlat()
+                       && !((TermNodeDto)selection).isExternallyManaged();
         menuItem.setVisible(canExecute);
         return canExecute;
     }
index bef369e55dcc5745fc9ed04785bc756072846563..b83d9446070a46a73bbfc12f6b0b3f61a9e5f364 100644 (file)
@@ -31,7 +31,7 @@ public class CopyTermHandler {
                 && selection!=null
                 && selection.size()==1
                 && selection.getFirstElement() instanceof TermNodeDto
-                && !((TermNodeDto)selection.getFirstElement()).getTree().isManaged();
+                && !((TermNodeDto)selection.getFirstElement()).isExternallyManaged();
         menuItem.setVisible(canExecute);
         return canExecute;
     }
index bdd4752c4a703db0548efb197ccf7db69d65bddf..00397d71bae1a1fad4f968c82d981cbb592ef15d 100644 (file)
@@ -98,9 +98,9 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
             element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
             if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                 createRepresentationEditingElements(formElement, style);
-                setTermDto(term, fill);
+                
             }
-           
+            setTermDto(term, fill);
             if(representation!=null){
                 setSelectedRepresentation(representation);
             }
@@ -177,7 +177,7 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                 term.addRepresentation(rep);
             }
 
-            if (selectedRepresentation != null) {
+            if (selectedRepresentation != null && combo_language != null) {
                combo_language.setTerms(getLanguages());
 
             } 
index 4910a83a53c8db3babb15e62f815e2c1c6c14e18..d185b02c1137224375ff37655e8fd90f16dc0b94 100644 (file)
@@ -70,7 +70,7 @@ public class TermTreeDetailElement extends AbstractCdmDetailElement<TermTreeDto>
        }
 
        @Override
-       protected void updateControlStates() {
+       public void updateControlStates() {
            super.updateControlStates();
        }
 
index 526f9bd4fc952276777885b91088a53268cd3b3b..19c0db08c9e1d9a2f6c4fc93286d1ed813986f93 100644 (file)
@@ -22,7 +22,6 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
-import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -70,7 +69,7 @@ public class TermTreeDetailElementForNode extends AbstractCdmDetailElement<TermT
     }
 
        @Override
-       protected void updateControlStates() {
+       public void updateControlStates() {
            super.updateControlStates();
 //         toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
        }