ref #9939: implement occurrence status in taxEditor - first implementation
authorKatja Luther <k.luther@bgbm.org>
Tue, 22 Mar 2022 14:44:12 +0000 (15:44 +0100)
committerKatja Luther <k.luther@bgbm.org>
Tue, 22 Mar 2022 14:44:12 +0000 (15:44 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/OccurrenceStatusElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/StatusCollectionDetailSection.java [new file with mode: 0644]

index fd07cb29ae8d26b1454b82709319eb4240fedc93..c6c9baf0d983438de82ac419246d64400a963b83 100644 (file)
@@ -114,6 +114,7 @@ import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TextualTypeDesignation;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
+import eu.etaxonomy.cdm.model.occurrence.OccurrenceStatus;
 import eu.etaxonomy.cdm.model.permission.GrantedAuthorityImpl;
 import eu.etaxonomy.cdm.model.permission.Group;
 import eu.etaxonomy.cdm.model.permission.User;
@@ -290,10 +291,12 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GeoScopeDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GeoScopePolyKeyDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.OccurrenceStatusElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.OriginalLabelDataSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SourceCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.StatusCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailElement;
@@ -2943,6 +2946,12 @@ public class CdmFormFactory extends FormToolkit {
         addAndAdaptSection(parentElement, section);
         return section;
     }
+    
+    public StatusCollectionDetailSection createStatusCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        StatusCollectionDetailSection section = new StatusCollectionDetailSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
 
     public ScopeRestrictionSection createScopeRestrictionSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         ScopeRestrictionSection section = new ScopeRestrictionSection(this, conversation, parentElement, style);
@@ -3184,6 +3193,8 @@ public class CdmFormFactory extends FormToolkit {
                element = new InapplicableIfCollectionElementForDto(this, parentElement, (FeatureStateDto) entity, removeListener, backgroundColor, style);
            } else if (entity instanceof FeatureStateDto && parentElement instanceof OnlyApplicableIfEntityCollectionSection) {
                element = new OnlyApplicableIfCollectionElementForDto(this, parentElement, (FeatureStateDto) entity, removeListener, backgroundColor, style);
+           }else if (entity instanceof OccurrenceStatus) {
+               element = new OccurrenceStatusElement(this, parentElement, (OccurrenceStatus) entity, removeListener, backgroundColor, style);
            }
 
         //check for parent section when entity is null
index 43119397079f591dfb30507fd8b5a175e8bbabfc..c233e8a07dc11eb4ad4f26cf95dc5fb19e365ee1 100644 (file)
@@ -61,7 +61,7 @@ public class DerivedUnitBaseDetailElement extends
     private OriginalLabelDataElement textOriginalLabel;
 
     private DerivedUnitMediaSection mediaDetailElement;
-
+    private StatusCollectionDetailSection section_status;
 
 
        /**
@@ -133,8 +133,12 @@ public class DerivedUnitBaseDetailElement extends
 
 
                super.createControls(formElement, entity, style);
-
-        section_source = formFactory.createSourceCollectionDetailSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(SourceCollectionDetailSection.class, entity.getClass().getCanonicalName()));
+               
+               section_status = formFactory.createStatusCollectionDetailSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(SourceCollectionDetailSection.class, entity.getClass().getCanonicalName()));
+               section_status.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+               section_status.setEntity(entity);
+               
+               section_source = formFactory.createSourceCollectionDetailSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(SourceCollectionDetailSection.class, entity.getClass().getCanonicalName()));
                section_source.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
                section_source.setEntity(entity);
 
index caec7352978e993caf296cfe98fa957995c56928..2181c4ea592734d719e37521dc281b56ca44f25b 100644 (file)
@@ -16,10 +16,14 @@ import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.OccurrenceStatus;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.GatheringEventUnitElement;
@@ -65,6 +69,7 @@ public class DerivedUnitGeneralDetailElement extends
        private GatheringEventUnitElement element_elevation;
        private UriWithLabelElement uriPreferredStableUri;
        private CheckboxElement checkIsPublish;
+       private TermComboElement<DefinedTermBase> combo_status;
 
 
        public DerivedUnitGeneralDetailElement(CdmFormFactory formFactory,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/OccurrenceStatusElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/OccurrenceStatusElement.java
new file mode 100644 (file)
index 0000000..70c0dbd
--- /dev/null
@@ -0,0 +1,62 @@
+package eu.etaxonomy.taxeditor.ui.section.occurrence;
+
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.ExtensionType;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.OccurrenceStatus;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+
+public class OccurrenceStatusElement extends AbstractEntityCollectionElement<OccurrenceStatus>{
+
+       private TermComboElement<DefinedTerm> combo_statusType; 
+
+       
+       public OccurrenceStatusElement(CdmFormFactory formFactory, AbstractFormSection section,
+                       OccurrenceStatus entity, SelectionListener removeListener, Color backgroundColor, int style) {
+               super(formFactory, section, entity, removeListener, backgroundColor, style);
+       
+               
+       }
+
+       @Override
+       public void setEntity(OccurrenceStatus entity) {
+               this.entity = entity;
+               if (combo_statusType != null){
+                       DefinedTerm statusType = HibernateProxyHelper.deproxy(entity.getType());
+                       combo_statusType.setSelection(statusType);
+                       
+               }
+               
+       }
+
+       @Override
+       public void createControls(ICdmFormElement element, int style) {
+               combo_statusType = formFactory.createDefinedTermComboElement(TermType.OccurrenceStatusType, element, "Type", null, style);
+               if (entity != null){
+                       setEntity(entity);
+               }
+               
+       }
+
+       @Override
+       public void handleEvent(Object eventSource) {
+               if(eventSource == combo_statusType){
+                       entity.setType(combo_statusType.getSelection());
+               }
+               
+       }
+
+       
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/StatusCollectionDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/StatusCollectionDetailSection.java
new file mode 100644 (file)
index 0000000..15c39ae
--- /dev/null
@@ -0,0 +1,127 @@
+/**
+* Copyright (C) 2007 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.ui.section.occurrence;
+
+import java.util.Collection;
+import java.util.Comparator;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.OccurrenceStatus;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
+import eu.etaxonomy.taxeditor.ui.section.DefaultCdmBaseComparator;
+
+/**
+ * <p>SourceCollectionDetailSection class.</p>
+ *
+ * @author n.hoffmann
+ * @created Oct 15, 2010
+ * @version 1.0
+ */
+public class StatusCollectionDetailSection extends
+               AbstractEntityCollectionSection<DerivedUnitFacade, OccurrenceStatus> {
+
+       /**
+        * <p>Constructor for SourceCollectionDetailSection.</p>
+        *
+        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+        * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+        * @param style a int.
+        */
+       public StatusCollectionDetailSection(CdmFormFactory formFactory,
+                       ConversationHolder conversation, ICdmFormElement parentElement, int style) {
+               super(formFactory, conversation, parentElement, "Status", style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getCollection(java.lang.Object)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public Collection<OccurrenceStatus> getCollection(DerivedUnitFacade entity) {
+               if (entity.baseUnit() instanceof DerivedUnit){
+                       return ((DerivedUnit)entity.baseUnit()).getStatus();
+               }
+               return null;
+       }
+
+       @Override
+       public Comparator<OccurrenceStatus> getComparator() {
+        return new DefaultCdmBaseComparator<>();
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#createNewElement()
+        */
+       /** {@inheritDoc} */
+       @Override
+       public OccurrenceStatus createNewElement() {
+               return OccurrenceStatus.NewInstance(null);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#addElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public void addElement(OccurrenceStatus element) {
+                ((DerivedUnit)getEntity().baseUnit()).addStatus(element);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#removeElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public void removeElement(OccurrenceStatus element) {
+               ((DerivedUnit)getEntity().baseUnit()).removeStatus(element);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getEmptyString()
+        */
+       /** {@inheritDoc} */
+       @Override
+       public String getEmptyString() {
+               return "No status yet.";
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected String getTooltipString() {
+               return "Add status";
+       }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public OccurrenceStatus addExisting() {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean allowAddExisting() {
+        return false;
+    }
+
+}