From 9dfd3706bcc09730a3b64d6b12a264b587c52a2e Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Mon, 20 Feb 2017 18:20:33 +0100
Subject: [PATCH] fix #3603 Avoid creation of dummy DefinedTerm
---
.../taxeditor/ui/element/CdmFormFactory.java | 19 +++++++++++++++++++
.../section/description/ModifierElement.java | 2 +-
.../section/description/ModifierSection.java | 3 +--
.../ui/section/description/ScopeElement.java | 10 +++++++++-
.../ui/section/description/ScopeSection.java | 3 +--
.../section/key/ScopeRestrictionSection.java | 9 ++++-----
6 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
index ef9204b73..be66a75fa 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
@@ -2718,6 +2718,25 @@ public class CdmFormFactory extends FormToolkit {
element = new StatisticalMeasureCollectionElement(this, parentElement, (StatisticalMeasure) entity, removeListener, backgroundColor, style);
}
+ //check for parent section when entity is null
+ //this happens when AbstractUnboundEntityCollectionSection is used
+ if(entity==null){
+ if(parentElement instanceof ScopeSection || parentElement instanceof ScopeRestrictionSection){
+ element = new ScopeElement(this,
+ parentElement,
+ (DefinedTerm) entity,
+ removeListener,
+ style);
+ }
+ else if(parentElement instanceof ModifierSection){
+ element = new ModifierElement(this,
+ parentElement,
+ (DefinedTerm) entity,
+ removeListener,
+ style);
+ }
+ }
+
if (element == null) {
MessagingUtils.messageDialog("No element for entity", this,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
index be5f37828..cc6b3f4aa 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
@@ -74,7 +74,7 @@ public class ModifierElement extends AbstractEntityCollectionElement0){
+ if(entity!=null && entity.getId()>0){
combo_modifier.setSelection(entity);
combo_modifier.removeEmptyElement();
}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
index b4ad1c9bb..ec09e802c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
@@ -13,7 +13,6 @@ import java.util.Collection;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.description.IModifiable;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -45,7 +44,7 @@ public class ModifierSection extends AbstractUnboundEntityCollectionSection {
@Override
public void setEntity(DefinedTerm entity) {
this.entity = entity;
- if(entity.getId()!=0){
+ if(entity!=null && entity.getId()!=0){
combo_scope.setSelection(entity);
combo_scope.removeEmptyElement();
}
@@ -74,6 +75,13 @@ public class ScopeElement extends AbstractEntityCollectionElement {
key.addScopeRestriction(scopeTerm);
entity = scopeTerm;
}
+ else if(getParentElement() instanceof ScopeSection){
+ TaxonDescription description = ((ScopeSection)getParentElement()).getEntity();
+ description.removeScope(entity);
+ description.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 566f76a2d..6aae3f43b 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
@@ -13,7 +13,6 @@ import java.util.Collection;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
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.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -49,7 +48,7 @@ public class ScopeSection extends AbstractUnboundEntityCollectionSection