fix #7207 NomenclaturalTitle, Collector titel and bibliographic title for TeamOrPerso...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Fri, 9 Feb 2018 11:36:43 +0000 (12:36 +0100)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Fri, 9 Feb 2018 11:36:43 +0000 (12:36 +0100)
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/TeamOrPersonField.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/TeamOrPersonBaseCaptionGenerator.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetPopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/StatusPresenterTest.java

index 92a7c37224929ecd1b1a79ba74aa231877a77452..7ada50e9301de93d8533f65db4aa3b31cb402cc9 100644 (file)
@@ -34,11 +34,12 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
 import eu.etaxonomy.cdm.vaadin.security.UserHelper;
-import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.CdmBaseDeproxyConverter;
 import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
 import eu.etaxonomy.vaadin.component.CompositeCustomField;
 import eu.etaxonomy.vaadin.component.EntityFieldInstantiator;
+import eu.etaxonomy.vaadin.component.ReloadableLazyComboBox;
 import eu.etaxonomy.vaadin.component.SwitchableTextField;
 import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesListSelect;
 
@@ -57,7 +58,7 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
     private CssLayout toolBar= new CssLayout();
     private CssLayout compositeWrapper = new CssLayout();
 
-    private LazyComboBox<TeamOrPersonBase> teamOrPersonSelect = new LazyComboBox<TeamOrPersonBase>(TeamOrPersonBase.class);
+    private ReloadableLazyComboBox<TeamOrPersonBase> teamOrPersonSelect = new ReloadableLazyComboBox<TeamOrPersonBase>(TeamOrPersonBase.class);
 
     private Button selectConfirmButton = new Button("OK");
     private Button removeButton = new Button(FontAwesome.REMOVE);
@@ -76,11 +77,14 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
 
     private CdmFilterablePagingProvider<AgentBase, Person> pagingProviderPerson;
 
-    public TeamOrPersonField(String caption){
+    private TeamOrPersonBaseCaptionGenerator.CacheType cacheType;
+
+    public TeamOrPersonField(String caption, TeamOrPersonBaseCaptionGenerator.CacheType cacheType){
 
         setCaption(caption);
 
-        teamOrPersonSelect.setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TeamOrPersonBase>());
+        this.cacheType = cacheType;
+        teamOrPersonSelect.setCaptionGenerator(new TeamOrPersonBaseCaptionGenerator<TeamOrPersonBase>(cacheType));
 
 
         addStyledComponent(teamOrPersonSelect);
@@ -329,7 +333,7 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
                 PersonField f = new PersonField();
                 f.setAllowNewEmptyEntity(true); // otherwise new entities can not be added to the personsListEditor
                 f.getPersonSelect().loadFrom(pagingProvider, pagingProvider, pagingProvider.getPageSize());
-                f.getPersonSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Person>());
+                f.getPersonSelect().setCaptionGenerator(new TeamOrPersonBaseCaptionGenerator<Person>(cacheType));
                 f.getPersonSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Person>(f.getPersonSelect(), cachingPresenter));
                 return f;
             }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/TeamOrPersonBaseCaptionGenerator.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/TeamOrPersonBaseCaptionGenerator.java
new file mode 100644 (file)
index 0000000..95cc366
--- /dev/null
@@ -0,0 +1,48 @@
+/**
+* Copyright (C) 2017 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.cdm.vaadin.util;
+
+import org.vaadin.viritin.fields.CaptionGenerator;
+
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+
+/**
+ * @author a.kohlbecker
+ * @since Jun 7, 2017
+ *
+ */
+public final class TeamOrPersonBaseCaptionGenerator<T extends TeamOrPersonBase<?>> implements CaptionGenerator<T> {
+
+    public enum CacheType {
+        NOMENCLATURAL_TITLE,
+        COLLECTOR_TITLE,
+        BIBLIOGRAPHIC_TITLE;
+    }
+
+    CacheType cacheType;
+
+    private static final long serialVersionUID = 116448502301429773L;
+
+    public TeamOrPersonBaseCaptionGenerator(CacheType cacheType){
+        this.cacheType = cacheType;
+    }
+
+    @Override
+    public String getCaption(T option) {
+        switch(cacheType){
+        case NOMENCLATURAL_TITLE:
+            return option.getNomenclaturalTitle();
+        case COLLECTOR_TITLE:
+            // return option.getCollectorTitle(); // enable once #4311 is solved
+        case BIBLIOGRAPHIC_TITLE:
+        default:
+            return option.getTitleCache();
+        }
+    }
+}
\ No newline at end of file
index 0a41853bb052b258427cf56bdcbb75775137c5b0..f1d5af973781e572e3e16ae9d8ddcf31d12b338b 100644 (file)
@@ -219,6 +219,7 @@ public class NameTypeDesignationPresenter
     }
 
 
+
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
     public void onTaxonNameEditorActionAdd(TaxonNameEditorAction action){
 
index 9ae801bdd9751403a4a723cb717eb05246580c68..cd34bb53250dd6850b8ec47d4a97bcfae536c045 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
 import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.view.PerEntityAuthorityGrantingEditor;
 import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
 
@@ -144,7 +145,7 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         bindField(distanceToGroundMinMax.getTextField(), "distanceToGroundText");
 
         row++;
-        collectorField = new TeamOrPersonField("Collector");
+        collectorField = new TeamOrPersonField("Collector", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         addField(collectorField, "collector", 0, row, 2, row);
 
         row++;
index cc45026958e713f3cb7a1cda6e205964a46f5ee2..144da85c950e2c34e9b068855074c419d4820463 100644 (file)
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
 import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
 import eu.etaxonomy.vaadin.component.SwitchableTextField;
 import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
@@ -252,7 +253,7 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         grid.addComponent(new Label("Hint: <i>Edit nomenclatural authors in the nomenclatural reference.</i>", ContentMode.HTML), 0, row, 3, row);
 
         row++;
-        combinationAuthorshipField = new TeamOrPersonField("combination author(s)");
+        combinationAuthorshipField = new TeamOrPersonField("combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         combinationAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(combinationAuthorshipField, "combinationAuthorship", 0, row, GRID_COLS-1, row);
 
@@ -280,7 +281,7 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         nomenclaturalReferenceDetail.setWidth(100, Unit.PIXELS);
 
         row++;
-        exCombinationAuthorshipField = new TeamOrPersonField("Ex-combination author(s)");
+        exCombinationAuthorshipField = new TeamOrPersonField("Ex-combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         exCombinationAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(exCombinationAuthorshipField, "exCombinationAuthorship", 0, row, GRID_COLS-1, row);
 
@@ -310,11 +311,11 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         });
         grid.setComponentAlignment(basionymsComboboxSelect, Alignment.TOP_RIGHT);
         row++;
-        basionymAuthorshipField = new TeamOrPersonField("Basionym author(s)");
+        basionymAuthorshipField = new TeamOrPersonField("Basionym author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         basionymAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(basionymAuthorshipField, "basionymAuthorship", 0, row, GRID_COLS-1, row);
         row++;
-        exBasionymAuthorshipField = new TeamOrPersonField("Ex-basionym author(s)");
+        exBasionymAuthorshipField = new TeamOrPersonField("Ex-basionym author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         exBasionymAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(exBasionymAuthorshipField, "exBasionymAuthorship", 0, row, GRID_COLS-1, row);
 
index 2369f20ee0a587fd5e253394b0eb5dd21ed6c5d3..757410f3a082ffb0245fc8eed85a0dac93527b17 100644 (file)
@@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
 import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.DoiConverter;
 import eu.etaxonomy.cdm.vaadin.util.converter.UriConverter;
 import eu.etaxonomy.vaadin.component.SwitchableTextField;
@@ -119,7 +120,7 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor<Reference, Refe
         row++;
         addTextField("Nomenclatural title", "abbrevTitle", 0, row, GRID_COLS-1, row).setWidth(100, Unit.PERCENTAGE);
         row++;
-        authorshipField = new TeamOrPersonField("Author(s)");
+        authorshipField = new TeamOrPersonField("Author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.BIBLIOGRAPHIC_TITLE);
         authorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(authorshipField, "authorship", 0, row, 3, row);
         row++;
index ed4a4a99ae155c8f4125dfe68e1dc6c85b2d7904..e399d100fad076e3a71c3ff4bb8260b54c5f6bda 100644 (file)
@@ -125,7 +125,7 @@ public class StatusPresenterTest extends CdmVaadinBaseTest {
 
             String uuid = (String)item.getItemProperty("UUID").getValue();
             Assert.assertEquals(uuids[count], uuid);
-            String titleCache = (String)item.getItemProperty("TITLECACHE").getValue();
+            String titleCache = (String)item.getItemProperty("BIBLIOGRAPHIC_TITLE").getValue();
             logger.info("titleCache : " + titleCache);
             count++;