ref #8568: performance issues for term and voc preference pages
authorKatja Luther <k.luther@bgbm.org>
Thu, 26 Sep 2019 14:12:16 +0000 (16:12 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 26 Sep 2019 14:12:16 +0000 (16:12 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/GeneralTermPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/TermSelectionWizardPage.java [new file with mode: 0755]

index 5bb536a517f7a9d494d126f32adca468a716de38..703c5a36bef9ac309e8570d7e083b5040b17e3cd 100755 (executable)
@@ -16,7 +16,6 @@ import java.util.UUID;
 import org.apache.commons.lang.StringUtils;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -41,13 +40,15 @@ public class GeneralTermPreferencePage extends AbstractGeneralTermPreference<Ter
             termlist = termService.findByUUIDsAsDto(uuidList);
         }
 
-        if (listValue.isEmpty()){
-            List<DefinedTermBase> terms = CdmStore.getTermManager().getAllTerms(type, null);
-            for (DefinedTermBase term: terms){
-                if (!(term instanceof eu.etaxonomy.cdm.model.description.Character) && term != null){
-                    termlist.add(TermDto.fromTerm(term, true));
-                }
-            }
+        if (listValue == null || listValue.isEmpty() ){
+            termlist = termService.findByTitleAsDto("", type);
+//            if (terms != null){
+//                for (DefinedTermBase term: terms){
+//                    if (!(term instanceof eu.etaxonomy.cdm.model.description.Character) && term != null){
+//                        termlist.add(TermDto.fromTerm(term, true));
+//                    }
+//                }
+//            }
         }
 
         return new ArrayList(termlist);
index 4143defc60b0382bb8395d19a48a19e1aa605ece..9063f4248c8d8d1b9fde58e2ee95a721e6c444fa 100755 (executable)
@@ -90,7 +90,7 @@ public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto>
         initialiseVocabularies();
 
         treeComposite.getViewer().setInput(getVocabularies());
-
+        List<T> termsFromStringValues = null;
         if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
             String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
             String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
@@ -101,12 +101,17 @@ public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto>
             if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
                 checked = Arrays.asList(listCheckedComma);
             }
-            List<T> termsFromStringValues = getTermsFromStringValues(checked);
-            treeComposite.setCheckedElements(termsFromStringValues.toArray());
+            termsFromStringValues = getTermsFromStringValues(checked);
+            if (termsFromStringValues != null){
+                treeComposite.setCheckedElements(termsFromStringValues.toArray());
+            }
 
-        }else{
-            List<T> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
-            treeComposite.setCheckedElements(termsFromStringValues.toArray());
+        }
+        if (termsFromStringValues == null){
+            termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
+            if (termsFromStringValues != null){
+                treeComposite.setCheckedElements(termsFromStringValues.toArray());
+            }
         }
     }
 
index c68b1bbce4229980aaf2e2bf30d95871d899b3c4..7ae92e1a1027a53243c5ba4e21d9568b30a4e85f 100755 (executable)
@@ -15,7 +15,6 @@ import org.eclipse.swt.widgets.Composite;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.term.TermType;
-import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -27,7 +26,7 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  * @since 05.10.2018
  *
  */
-public class AvailableDistributionStatusPage extends AbstractTermSelectionWizardPage<TermDto> {
+public class AvailableDistributionStatusPage extends TermSelectionWizardPage {
 
 
 
@@ -60,22 +59,15 @@ public class AvailableDistributionStatusPage extends AbstractTermSelectionWizard
         return checkedValues;
     }
 
-
-
-    /**
-     * {@inheritDoc}
-     */
     @Override
     protected List<TermVocabularyDto> getVocabulariesFromPreference() {
         // TODO Auto-generated method stub
         return null;
     }
 
-    @Override
-    protected List<TermDto> getTermsFromStringValues(List<String> listValue) {
-        // TODO Auto-generated method stub
-        return null;
-    }
+
+
+
 
 
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/TermSelectionWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/TermSelectionWizardPage.java
new file mode 100755 (executable)
index 0000000..53cae61
--- /dev/null
@@ -0,0 +1,58 @@
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.preference.wizard;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 26.09.2019
+ */
+public abstract class TermSelectionWizardPage extends AbstractTermSelectionWizardPage<TermDto> {
+
+    /**
+     * @param pageName
+     * @param type
+     */
+    protected TermSelectionWizardPage(String pageName, TermType type) {
+        super(pageName, type);
+
+    }
+
+    @Override
+    protected List<TermDto> getTermsFromStringValues(List<String> listValue) {
+        Collection<TermDto> termlist = null ;
+        ITermService termService = CdmStore.getService(ITermService.class);
+        List<UUID> uuidList = new ArrayList();
+        for (String s : listValue) {
+            if (!StringUtils.isBlank(s)){
+                UUID uuid = UUID.fromString(s);
+                uuidList.add(uuid);
+            }
+        }
+        if (!uuidList.isEmpty()){
+            termlist = termService.findByUUIDsAsDto(uuidList);
+        }
+
+        if (listValue == null || listValue.isEmpty() ){
+            termlist = termService.findByTitleAsDto("", type);
+        }
+        return new ArrayList(termlist);
+    }
+}