improve performance by first testing type before loading uuidAndTitle for property...
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 2 Apr 2021 01:14:05 +0000 (03:14 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 2 Apr 2021 01:14:05 +0000 (03:14 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java

index 7618aa97e3465e19908e0acf51f4df5667fc5d17..af68394f3f763d371274396d7c3e0bdb2fa4c467 100755 (executable)
@@ -60,18 +60,23 @@ public class NameEditorMenuPropertyTester extends PropertyTester {
                        IStructuredSelection selection = (IStructuredSelection) receiver;
 
                        Object selectedElement = selection.getFirstElement();
+                       Class<?> type = selectedElement.getClass();
                        if(selectedElement instanceof UuidAndTitleCache){
                            UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache<?>)selectedElement;
-                           CdmBase cdmBase = CdmStore.getCommonService().find(uuidAndTitleCache.getType(), uuidAndTitleCache.getUuid());
-                           selectedElement = cdmBase;
+                           type = uuidAndTitleCache.getType();
                        }
             if(EMPTY_NAMES.equals(property)){
                 return hasEmptyNames(receiver);
             }
-            else if(!(selectedElement instanceof TaxonBase)){
+            else if(!(TaxonBase.class.isAssignableFrom(type))){
                 return false;
             }
-            else if(NOT_ACCEPTED.equals(property)){
+            if(selectedElement instanceof UuidAndTitleCache){
+                UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache<?>)selectedElement;
+                CdmBase cdmBase = CdmStore.getCommonService().find(uuidAndTitleCache.getType(), uuidAndTitleCache.getUuid());
+                selectedElement = cdmBase;
+            }
+            if(NOT_ACCEPTED.equals(property)){
                 return !isAccepted(selectedElement);
             }
                        else if(ACCEPTED.equals(property)){