ref #7458 implementation of the note field for the TypeSpecimenEditor
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Mon, 25 Jun 2018 20:26:06 +0000 (22:26 +0200)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Mon, 25 Jun 2018 20:26:32 +0000 (22:26 +0200)
src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java
src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/SpecimenTypeDesignationWorkingSetDTO.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUIDefaults.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/AnnotationsEditor.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetPopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetPopupEditorView.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorView.java

index fe1674d7a56eb33af81d2e1a8f24a83245fcca4f..93c907e35411496e08cdbf14183d439b7b49bd17 100644 (file)
@@ -98,6 +98,7 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
    */
   private List<String> FIELDUNIT_INIT_STRATEGY = Arrays.asList(new String[]{
           "$",
+          "annotations.*", // * is needed as log as we are using a table in FilterableAnnotationsField
           "gatheringEvent.$",
           "gatheringEvent.country",
           "gatheringEvent.collectingAreas",
index 27c651db38452352b8106e77448a7328e007a306..7a0a5a20b7cd08388d5f82161e803ea9adff391a 100644 (file)
@@ -16,6 +16,7 @@ import java.util.Set;
 import org.joda.time.Partial;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
@@ -23,7 +24,6 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.Point;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -336,4 +336,34 @@ public class SpecimenTypeDesignationWorkingSetDTO<OWNER extends VersionableEntit
         return deletedEntities;
     }
 
+    public Set<Annotation> getAnnotations() {
+        if(fieldUnit != null){
+            return fieldUnit.getAnnotations();
+        } else {
+            return null;
+        }
+    }
+
+    public void setAnnotations(Set<Annotation> annotations) {
+
+        if(fieldUnit != null){
+            List<Annotation> currentAnnotations = new ArrayList<>(fieldUnit.getAnnotations());
+            List<Annotation> annotationsSeen = new ArrayList<>();
+            for(Annotation a : annotations){
+                if(a == null){
+                    continue;
+                }
+                if(!currentAnnotations.contains(a)){
+                    fieldUnit.addAnnotation(a);
+                }
+                annotationsSeen.add(a);
+            }
+            for(Annotation a : currentAnnotations){
+                if(!annotationsSeen.contains(a)){
+                    fieldUnit.removeAnnotation(a);
+                }
+            }
+        }
+    }
+
 }
index bbd5829f5565592a6cbb221c61410ea597fd83b3..e027a5a5293bdca0eecba916f0294034647c02f3 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.ui;
 
 import java.util.EnumSet;
 
+import eu.etaxonomy.cdm.model.common.AnnotationType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 
@@ -52,5 +53,11 @@ public class RegistrationUIDefaults {
      */
     public static final NomenclaturalCode NOMENCLATURAL_CODE = NomenclaturalCode.ICNAFP;
 
+    /**
+     * should be configurable per UI
+     */
+    public static final AnnotationType[] EDITABLE_ANOTATION_TYPES = new AnnotationType[]{AnnotationType.EDITORIAL()};
+
+
     public static final String ERROR_CONTACT_MESSAGE_LINE = "Please contact <a href=\"mailto:editsupport@bgbm.org\">editsupport@bgbm.org</a> for support and more information.";
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/AnnotationsEditor.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/AnnotationsEditor.java
new file mode 100644 (file)
index 0000000..65511b8
--- /dev/null
@@ -0,0 +1,38 @@
+/**
+* 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.cdm.vaadin.view;
+
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
+
+/**
+ * @author a.kohlbecker
+ * @since Jun 25, 2018
+ *
+ */
+public interface AnnotationsEditor {
+
+    /**
+     *
+     * @return the EDITABLE_ANOTATION_TYPES
+     */
+    public AnnotationType[] getEditableAnotationTypes();
+
+    /**
+     *
+     * @param EDITABLE_ANOTATION_TYPES the EDITABLE_ANOTATION_TYPES to set
+     */
+    public void setEditableAnotationTypes(AnnotationType... editableAnotationTypes);
+
+    /**
+     * @return
+     */
+    public FilterableAnnotationsField getAnnotationsField();
+
+}
\ No newline at end of file
index fa00cbb2bf256f688792907715c6053bb68280c1..f6199c6d76ad7333ca413dafe5ee1cc817c1f1fa 100644 (file)
@@ -24,15 +24,18 @@ import com.vaadin.ui.ListSelect;
 import com.vaadin.ui.Panel;
 import com.vaadin.ui.TextArea;
 
+import eu.etaxonomy.cdm.model.common.AnnotationType;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.vaadin.component.CollectionRowRepresentative;
 import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
+import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
 import eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField;
 import eu.etaxonomy.cdm.vaadin.component.common.MinMaxTextField;
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
 import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
 import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.DoubleConverter;
 import eu.etaxonomy.cdm.vaadin.util.converter.IntegerConverter;
@@ -75,6 +78,10 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
 
     private TeamOrPersonField collectorField;
 
+    private FilterableAnnotationsField annotationsListField;
+
+    private AnnotationType[] editableAnotationTypes = RegistrationUIDefaults.EDITABLE_ANOTATION_TYPES;
+
     /**
      * @return the countrySelectField
      */
@@ -93,7 +100,7 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         grid.setSpacing(true);
         grid.setMargin(true);
         grid.setColumns(3);
-        grid.setRows(9);
+        grid.setRows(10);
 
         //TODO typifyingAuthors
 
@@ -201,6 +208,12 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         bindField(typeDesignationsCollectionField, "specimenTypeDesignationDTOs");
         addComponent(scrollPanel, 0, row, 2, row);
 
+        row++;
+        annotationsListField = new FilterableAnnotationsField("Editorial notes");
+        annotationsListField.setWidth(100, Unit.PERCENTAGE);
+        annotationsListField.setAnnotationTypesVisible(editableAnotationTypes);
+        addField(annotationsListField, "annotations", 0, row, 2, row);
+
      }
 
 
@@ -334,6 +347,35 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         return collectorField;
     }
 
+    /**
+     * By default  AnnotationType.EDITORIAL() is enabled.
+     *
+     * @return the editableAnotationTypes
+     */
+    @Override
+    public AnnotationType[] getEditableAnotationTypes() {
+        return editableAnotationTypes;
+    }
+
+    /**
+     * By default  AnnotationType.EDITORIAL() is enabled.
+     *
+     *
+     * @param editableAnotationTypes the editableAnotationTypes to set
+     */
+    @Override
+    public void setEditableAnotationTypes(AnnotationType ... editableAnotationTypes) {
+        this.editableAnotationTypes = editableAnotationTypes;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public FilterableAnnotationsField getAnnotationsField() {
+        return annotationsListField;
+    }
+
 
 
 }
index 6140faa0281128064f7e84708c322012d83e1abd..1e4fae8ee6f7e2577f2f96b037acce6fb7c164b5 100644 (file)
@@ -15,6 +15,7 @@ import com.vaadin.ui.ListSelect;
 
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
+import eu.etaxonomy.cdm.vaadin.view.AnnotationsEditor;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
 
 /**
@@ -22,7 +23,8 @@ import eu.etaxonomy.vaadin.mvp.ApplicationView;
  * @since Jun 13, 2017
  *
  */
-public interface SpecimenTypeDesignationWorkingsetPopupEditorView extends ApplicationView<SpecimenTypeDesignationWorkingsetEditorPresenter> {
+public interface SpecimenTypeDesignationWorkingsetPopupEditorView extends ApplicationView<SpecimenTypeDesignationWorkingsetEditorPresenter>,
+    AnnotationsEditor {
 
     public ListSelect getCountrySelectField();
 
index 8fc0621d75b425ed5383fe3274003912252885ad..6c41d552360a3585952308492ce642b7d500a8be 100644 (file)
@@ -50,6 +50,7 @@ import eu.etaxonomy.cdm.vaadin.model.name.NameRelationshipDTO;
 import eu.etaxonomy.cdm.vaadin.model.name.TaxonNameDTO;
 import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.permission.CdmEditDeletePermissionTester;
+import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
 import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
 import eu.etaxonomy.vaadin.component.NameRelationField;
@@ -68,7 +69,7 @@ import eu.etaxonomy.vaadin.mvp.AbstractCdmDTOPopupEditor;
 @SpringComponent
 @Scope("prototype")
 public class TaxonNamePopupEditor extends AbstractCdmDTOPopupEditor<TaxonNameDTO, TaxonName, TaxonNameEditorPresenter>
-    implements TaxonNamePopupEditorView, AccessRestrictedView {
+    implements TaxonNamePopupEditorView, AccessRestrictedView{
 
     private static final long serialVersionUID = -7037436241474466359L;
 
@@ -134,14 +135,14 @@ public class TaxonNamePopupEditor extends AbstractCdmDTOPopupEditor<TaxonNameDTO
 
     private FilterableAnnotationsField annotationsListField;
 
-    private AnnotationType[] editableAnotationTypes = new AnnotationType[]{AnnotationType.EDITORIAL()};
-
+    private AnnotationType[] editableAnotationTypes = RegistrationUIDefaults.EDITABLE_ANOTATION_TYPES;
 
     /**
      * By default  AnnotationType.EDITORIAL() is enabled.
      *
      * @return the editableAnotationTypes
      */
+    @Override
     public AnnotationType[] getEditableAnotationTypes() {
         return editableAnotationTypes;
     }
@@ -152,6 +153,7 @@ public class TaxonNamePopupEditor extends AbstractCdmDTOPopupEditor<TaxonNameDTO
      *
      * @param editableAnotationTypes the editableAnotationTypes to set
      */
+    @Override
     public void setEditableAnotationTypes(AnnotationType ... editableAnotationTypes) {
         this.editableAnotationTypes = editableAnotationTypes;
     }
index b5b8a9d83268c07895903af2f248e8f9668c8899..1b07c187a059b92e5e83655bd5817d70b5ad6764 100644 (file)
@@ -16,8 +16,8 @@ import com.vaadin.ui.ListSelect;
 
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
+import eu.etaxonomy.cdm.vaadin.view.AnnotationsEditor;
 import eu.etaxonomy.vaadin.component.NameRelationField;
 import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
@@ -28,7 +28,7 @@ import eu.etaxonomy.vaadin.mvp.ApplicationView;
  * @since May 22, 2017
  *
  */
-public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEditorPresenter> {
+public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEditorPresenter>, AnnotationsEditor {
 
     /**
      * @return
@@ -116,9 +116,5 @@ public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEdito
      */
     public AbstractField<String> getInfraSpecificEpithetField();
 
-    /**
-     * @return
-     */
-    FilterableAnnotationsField getAnnotationsField();
 
 }