ref # #7283: add preference to configure search for identifier
authorKatja Luther <k.luther@bgbm.org>
Tue, 16 Oct 2018 09:38:11 +0000 (11:38 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 16 Oct 2018 09:38:11 +0000 (11:38 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SearchPreferences.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ReferenceSelectionDialog.java

index a6a61e5bc54156a762fbda29686a35fd54394355..b72b4b342af3e159a4d664bdd937a0141e2b4f46 100644 (file)
@@ -250,7 +250,8 @@ public interface IPreferenceKeys {
     public static final String SHOW_MEDIA = "eu.etaxonomy.taxeditor.view.showMedia";
     public static final String SHOW_CHECKLIST_PERSPECTIVE = "eu.etaxonomy.taxeditor.perspective.showChecklist";
     public static final String SHOW_TAXONNODE_WIZARD = "eu.etaxonomy.taxeditor.menu.showTaxonNodeWizard";
-
+    public static final String IS_SEARCH_FOR_IDENTIFIER_AS_DEFAULT = "eu.etaxonomy.taxeditor.search.reference.defaultIdentifier";
+    public static final String SEARCH_FOR_IDENTIFIER_AND_TITLECACHE = "eu.etaxonomy.taxeditor.search.reference.identifierAndTitleCache";
 
 
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SearchPreferences.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SearchPreferences.java
new file mode 100755 (executable)
index 0000000..1b9d93b
--- /dev/null
@@ -0,0 +1,39 @@
+/**
+* Copyright (C) 2018 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;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
+
+/**
+ * @author k.luther
+ * @since 16.10.2018
+ *
+ */
+public class SearchPreferences extends FieldEditorPreferencePageE4 {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void createFieldEditors() {
+
+        addField(new BooleanFieldEditor(IPreferenceKeys.IS_SEARCH_FOR_IDENTIFIER_AS_DEFAULT,
+                "Set search for Identifier as default.",
+                getFieldEditorParent()));
+        addField(new BooleanFieldEditor(IPreferenceKeys.SEARCH_FOR_IDENTIFIER_AND_TITLECACHE,
+                "Search for identifier and titleCache, if identifier search is enabled",
+                getFieldEditorParent()));
+
+
+
+    }
+
+}
index b4a93af86c09d2df35e4f28dfa482458cb0ebb89..f8a137409822e7597d2bb21c53b19f9c5c81aef7 100644 (file)
@@ -179,7 +179,20 @@ public class ReferenceSelectionDialog extends AbstractFilteredCdmResourceSelecti
             }
 
         }else{
-            if (isUseIdentifier()){
+            if (isUseIdentifier() && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SEARCH_FOR_IDENTIFIER_AND_TITLECACHE)){
+                List<IdentifiedEntityDTO<Reference>> list = CdmStore.getService(IReferenceService.class).listByIdentifierAndTitleCacheAbbrev(pattern, null, MatchMode.BEGINNING, limitOfInitialElements);
+                if (model!= null){
+                    model.clear();
+                }
+                identifierMap = new HashMap();
+                for (IdentifiedEntityDTO dto: list){
+                    if (dto.getIdentifier() != null){
+                        identifierMap.put(dto.getCdmEntity().getUuid(), dto.getIdentifier());
+                    }
+                    model.add(dto.getCdmEntity());
+
+                }
+            }else if (isUseIdentifier() ){
                 List<IdentifiedEntityDTO<Reference>> list = CdmStore.getService(IReferenceService.class).listByIdentifierAbbrev(pattern, null, MatchMode.BEGINNING, limitOfInitialElements);
                 if (model!= null){
                     model.clear();
@@ -190,7 +203,7 @@ public class ReferenceSelectionDialog extends AbstractFilteredCdmResourceSelecti
                     model.add(dto.getCdmEntity());
 
                 }
-            }else{
+            }else {
                 model = CdmStore.getService(IReferenceService.class).getUuidAndTitleCache(limitOfInitialElements,pattern);
             }
 
@@ -202,6 +215,10 @@ public class ReferenceSelectionDialog extends AbstractFilteredCdmResourceSelecti
     protected void addIdentifierCheckButton(Composite searchAndFilter) {
         Button btnCheckButton = new Button(searchAndFilter, SWT.CHECK);
         btnCheckButton.setText("Use Identifier");
+        if (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_SEARCH_FOR_IDENTIFIER_AS_DEFAULT)){
+            btnCheckButton.setSelection(true);
+            useIdentifier = true;
+        }
         btnCheckButton.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent e) {
@@ -263,8 +280,15 @@ public class ReferenceSelectionDialog extends AbstractFilteredCdmResourceSelecti
                 titleCache += " ["+uuidAndTitleCache.getId()+"]";
             }
             if (isUseIdentifier()){
-                AlternativeIdentifier identifier = identifierMap.get(uuidAndTitleCache.getUuid());
-                titleCache += " (" + identifier.getTypeLabel() +": " + identifier.getIdentifier() + ")";
+                if (identifierMap != null){
+                    AlternativeIdentifier identifier = identifierMap.get(uuidAndTitleCache.getUuid());
+                    if (identifier != null){
+                        titleCache += " (" + identifier.getTypeLabel() +": " + identifier.getIdentifier() + ")";
+                    }else{
+                        titleCache += " (-)";
+                    }
+                }
+
             }
 
             return titleCache;