From d0e36b2134f32d1c02ad5855e1d62b2cc17c1a1f Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Wed, 11 Jun 2014 07:28:56 +0000 Subject: [PATCH] - fixed TransientObjectException when adding and saving a scope for a TaxonDescription (fixes #2607) - made use of AbstractUnboundEntityCollectionsection - a DefinedTerm will not be created but selected from a list of existing ones --- .../ui/section/description/ScopeElement.java | 16 +++++++++-- .../ui/section/description/ScopeSection.java | 28 ++++++++++--------- ...uenceReferenceCollectionDetailElement.java | 24 ++++++++-------- 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeElement.java index e72d02034..8a576ef93 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeElement.java @@ -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 { @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 { /** {@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; + } + } } - } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java index 271687dea..0f882effb 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java @@ -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; /** *

ScopeSection class.

@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection; * @created Mar 18, 2010 * @version 1.0 */ -public class ScopeSection extends AbstractEntityCollectionSection { +public class ScopeSection extends AbstractUnboundEntityCollectionSection { /** *

Constructor for ScopeSection.

@@ -40,7 +40,7 @@ public class ScopeSection extends AbstractEntityCollectionSection getCollection(TaxonDescription entity) { - return entity.getScopes(); + public DefinedTerm createNewElement() { + return DefinedTerm.NewInstance(TermType.Scope,"","",""); } /** {@inheritDoc} */ @@ -76,4 +70,12 @@ public class ScopeSection extends AbstractEntityCollectionSection getEntityCollection(TaxonDescription entity) { + return entity.getScopes(); + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailElement.java index d7293e362..a2bd66828 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailElement.java @@ -26,11 +26,10 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; * @date 07.01.2014 * */ -public class SequenceReferenceCollectionDetailElement extends AbstractEntityCollectionElement{ +public class SequenceReferenceCollectionDetailElement extends AbstractEntityCollectionElement>{ protected EntitySelectionElement selection_reference; protected TextWithLabelElement text_referenceDetail; - private Sequence sequence; /** *

@@ -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()); } -- 2.34.1