- fixed TransientObjectException when adding and saving a scope for a TaxonDescripti...
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 11 Jun 2014 07:28:56 +0000 (07:28 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 11 Jun 2014 07:28:56 +0000 (07:28 +0000)
   - made use of AbstractUnboundEntityCollectionsection
   - a DefinedTerm will not be created but selected from a list of existing ones

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailElement.java

index e72d020348a855f895eea8dfedcc5c413af3db9b..8a576ef93f40c0b6b4d56d82efab4e349ade518a 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -50,7 +51,9 @@ public class ScopeElement extends AbstractEntityCollectionElement<DefinedTerm> {
        @Override
        public void setEntity(DefinedTerm entity) {
                this.entity = entity;
-               combo_scope.setSelection(entity);
+               if(!entity.getLabel().isEmpty()){
+                   combo_scope.setSelection(entity);
+               }
        }
 
        /** {@inheritDoc} */
@@ -62,8 +65,15 @@ public class ScopeElement extends AbstractEntityCollectionElement<DefinedTerm> {
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-
+           DefinedTerm scopeTerm = combo_scope.getSelection();
+           if(eventSource==combo_scope && scopeTerm!=null){
+               if(getParentElement() instanceof ScopeSection){
+                   TaxonDescription taxonDescription = ((ScopeSection)getParentElement()).getEntity();
+                   taxonDescription.removeScope(entity);
+                taxonDescription.addScope(scopeTerm);
+                entity = scopeTerm;
+               }
+           }
        }
 
-
 }
index 271687deaa8ea5ad3d192db003f657b4c0f434a5..0f882effba3cb37f60de8b437558f14a2794c142 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.
 */
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 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.occurrence.dna.AbstractUnboundEntityCollectionSection;
 
 /**
  * <p>ScopeSection class.</p>
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  * @created Mar 18, 2010
  * @version 1.0
  */
-public class ScopeSection extends AbstractEntityCollectionSection<TaxonDescription, DefinedTerm> {
+public class ScopeSection extends AbstractUnboundEntityCollectionSection<TaxonDescription, DefinedTerm> {
 
        /**
         * <p>Constructor for ScopeSection.</p>
@@ -40,7 +40,7 @@ public class ScopeSection extends AbstractEntityCollectionSection<TaxonDescripti
        public ScopeSection(CdmFormFactory cdmFormFactory, ConversationHolder conversation, ICdmFormElement parentElement, int style) {
                super(cdmFormFactory, conversation, parentElement, "Scope", style);
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public void addElement(DefinedTerm element) {
@@ -49,14 +49,8 @@ public class ScopeSection extends AbstractEntityCollectionSection<TaxonDescripti
 
        /** {@inheritDoc} */
        @Override
-       public DefinedTerm createNewElement() {         
-               return DefinedTerm.NewInstance(TermType.Scope,"","Untitled","");                                        
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public Collection<DefinedTerm> getCollection(TaxonDescription entity) {
-               return entity.getScopes();
+       public DefinedTerm createNewElement() {
+               return DefinedTerm.NewInstance(TermType.Scope,"","","");
        }
 
        /** {@inheritDoc} */
@@ -76,4 +70,12 @@ public class ScopeSection extends AbstractEntityCollectionSection<TaxonDescripti
        public void removeElement(DefinedTerm element) {
                getEntity().removeScope(element);
        }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractUnboundEntityCollectionSection#getEntityCollection(java.lang.Object)
+     */
+    @Override
+    protected Collection<DefinedTerm> getEntityCollection(TaxonDescription entity) {
+        return entity.getScopes();
+    }
 }
index d7293e362407d718fcce2cf09fd81c5d04fef343..a2bd6682895f9d67a23a098204c862a69eaf85f4 100644 (file)
@@ -26,11 +26,10 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @date 07.01.2014
  *
  */
-public class SequenceReferenceCollectionDetailElement extends AbstractEntityCollectionElement<Reference>{
+public class SequenceReferenceCollectionDetailElement extends AbstractEntityCollectionElement<Reference<?>>{
 
     protected EntitySelectionElement<Reference> selection_reference;
     protected TextWithLabelElement text_referenceDetail;
-    private Sequence sequence;
 
     /**
      * <p>
@@ -53,12 +52,9 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
      *            a T object.
      */
     public SequenceReferenceCollectionDetailElement(CdmFormFactory formFactory,
-            AbstractFormSection section, Reference entity,
+            AbstractFormSection<?> section, Reference<?> entity,
             SelectionListener removeListener, int style) {
         super(formFactory, section, entity, removeListener, null, style);
-        if(section instanceof SequenceReferenceCollectionDetailSection){
-            sequence = (Sequence) section.getEntity();
-        }
     }
 
     /*
@@ -88,7 +84,7 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
      *            a T object.
      */
     @Override
-    public void setEntity(Reference entity) {
+    public void setEntity(Reference<?> entity) {
         this.entity = entity;
         selection_reference.setEntity(entity);
         text_referenceDetail.setText(entity.getReferenceAbstract());
@@ -100,11 +96,15 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
     @Override
     public void handleEvent(Object eventSource) {
         if(eventSource==selection_reference){
-            sequence.removeCitation(entity);
-            Reference newCitation = selection_reference.getSelection();
-            sequence.addCitation(newCitation);
-            entity = newCitation;
-            text_referenceDetail.setEnabled(true);
+            if(getParentElement() instanceof SequenceReferenceCollectionDetailSection){
+                Sequence sequence = ((SequenceReferenceCollectionDetailSection) getParentElement()).getEntity();
+                sequence.removeCitation(entity);
+                Reference<?> newCitation = selection_reference.getSelection();
+                sequence.addCitation(newCitation);
+                entity = newCitation;
+
+                text_referenceDetail.setEnabled(true);
+            }
         } else if(eventSource==text_referenceDetail){
             entity.setReferenceAbstract(text_referenceDetail.getText());
         }