From abebca79a613b7eb67fd3df1d91a6167b9dda525 Mon Sep 17 00:00:00 2001 From: Cherian Mathew Date: Thu, 24 Sep 2015 11:03:40 +0200 Subject: [PATCH] #5247 Fix duplicate entity issue for new entities by using the new merge service method which returns the input transient object --- .../taxeditor/editor/key/KeyEditor.java | 2 +- .../polytomous/PolytomousKeyEditorInput.java | 15 ++++++++++- .../polytomous/PolytomousKeyListEditor.java | 26 +++++++++---------- ...otingCreatePolytomousKeyNodeOperation.java | 17 ++++++------ .../TransientAgentService.java | 8 ++++++ .../TransientClassificationService.java | 8 ++++++ .../TransientCollectionService.java | 8 ++++++ .../TransientDescriptionService.java | 8 ++++++ .../TransientNameService.java | 8 ++++++ .../TransientOccurenceService.java | 8 ++++++ .../TransientReferenceService.java | 8 ++++++ .../TransientTaxonService.java | 8 ++++++ .../TransientTermService.java | 8 ++++++ ....java => RemotingCdmDefaultOperation.java} | 14 +++++----- .../ui/element/KeyStatementElement.java | 25 +++++++++++------- .../ui/element/MultilanguageTextElement.java | 6 ----- .../key/PolytomousKeyNodeDetailElement.java | 6 ++--- eu.etaxonomy.taxeditor.test/server.properties | 6 ----- .../session/CdmEntitySessionAwareTest.java | 22 ++++++++++++++++ 19 files changed, 154 insertions(+), 57 deletions(-) rename eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/{RemotingCdmMergeOperation.java => RemotingCdmDefaultOperation.java} (74%) delete mode 100644 eu.etaxonomy.taxeditor.test/server.properties diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java index b6ca9645a..5eecbd208 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java @@ -249,7 +249,7 @@ public class KeyEditor extends FormEditor implements IConversationEnabled, */ @Override public void onChange(CdmChangeEvent event) { - //editorDirtyStateChanged(); + editorDirtyStateChanged(); IEditorPart activeEditor = getActiveEditor(); if (activeEditor instanceof IDirtyMarkable) { for(CdmBase cdmBase : event.getChangedObjects()) { diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java index a6555ce7d..3cfc3e3ff 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java @@ -4,7 +4,9 @@ package eu.etaxonomy.taxeditor.editor.key.polytomous; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; @@ -89,7 +91,18 @@ public class PolytomousKeyEditorInput extends AbstractIdentificationEditorInput< */ @Override public void merge() { - key = CdmStore.getService(IPolytomousKeyService.class).merge(key); + key = CdmStore.getService(IPolytomousKeyService.class).merge(key,true); + } + + @Override + public Map> getPropertyPathsMap() { + Map> propertyPathsMap = new HashMap>(); + + List polytomousKeyNodePropertyPaths = Arrays.asList(new String[] { + "statement" + }); + propertyPathsMap.put("children", polytomousKeyNodePropertyPaths); + return propertyPathsMap; } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java index 4ecb14983..56bd34ca6 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java @@ -10,6 +10,8 @@ package eu.etaxonomy.taxeditor.editor.key.polytomous; +import java.util.List; + import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.MenuManager; @@ -171,7 +173,6 @@ public class PolytomousKeyListEditor extends EditorPart implements */ @Override public void doSave(IProgressMonitor monitor) { - } /* @@ -311,19 +312,18 @@ public class PolytomousKeyListEditor extends EditorPart implements */ @Override public void changed(Object element) { - if(element != null) { - viewer.update(element, null); - } - - if (element instanceof PolytomousKeyNode) { - PolytomousKeyNode node = (PolytomousKeyNode) element; - viewer.update(node, null); - for (PolytomousKeyNode child : node.getChildren()) { - viewer.update(child, null); - } + if(element != null) { + viewer.update(element, null); + } - } - viewer.refresh(); + if (element instanceof PolytomousKeyNode) { + List children = ((PolytomousKeyNode) element) + .getParent().getChildren(); + for (PolytomousKeyNode child : children) { + viewer.update(child, null); + } + } + viewer.refresh(); } /* (non-Javadoc) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RemotingCreatePolytomousKeyNodeOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RemotingCreatePolytomousKeyNodeOperation.java index 61c75bb8b..c63350eea 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RemotingCreatePolytomousKeyNodeOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RemotingCreatePolytomousKeyNodeOperation.java @@ -12,18 +12,17 @@ package eu.etaxonomy.taxeditor.editor.key.polytomous.operation; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; -import eu.etaxonomy.cdm.api.application.CdmApplicationState; import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; -import eu.etaxonomy.taxeditor.operation.RemotingCdmMergeOperation; +import eu.etaxonomy.taxeditor.operation.RemotingCdmDefaultOperation; /** * @author cmathew * @date 21 Jul 2015 * */ -public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmMergeOperation { +public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmDefaultOperation { private final PolytomousKeyNode parentNode; @@ -35,15 +34,15 @@ public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmMergeOp super(LABEL, Action.Create, source, async); this.parentNode = parentNode; } + /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.operation.RemotingCdmMergeOperation#doMergeExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + * @see eu.etaxonomy.taxeditor.operation.RemotingCdmSimpleOperation#doSimpleExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) */ @Override - protected CdmBase doMergeExecute(IProgressMonitor monitor, IAdaptable info) throws Exception { - PolytomousKeyNode childNode = PolytomousKeyNode.NewInstance(); - parentNode.addChild(childNode); - //childNode.getModifyingText().put(CdmStore.getDefaultLanguage(),LanguageString.NewInstance("",CdmStore.getDefaultLanguage())); - return CdmApplicationState.getCurrentAppConfig().getPolytomousKeyNodeService().merge(parentNode); + protected CdmBase doSimpleExecute(IProgressMonitor monitor, IAdaptable info) throws Exception { + PolytomousKeyNode childNode = PolytomousKeyNode.NewInstance(); + parentNode.addChild(childNode); + return childNode; } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java index d3e4b1231..fc872f5de 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java @@ -792,4 +792,12 @@ public class TransientAgentService implements IAgentService { return defaultService.merge(arg0); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public AgentBase merge(AgentBase arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java index 07fdcf242..747d9ebae 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java @@ -950,6 +950,14 @@ public class TransientClassificationService implements IClassificationService { return defaultService.merge(arg0); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public Classification merge(Classification arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCollectionService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCollectionService.java index 64936020c..ba585ea97 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCollectionService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCollectionService.java @@ -726,4 +726,12 @@ public class TransientCollectionService implements ICollectionService { return defaultService.merge(arg0); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public Collection merge(Collection arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java index 4640d7e3a..350d7b909 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java @@ -1196,4 +1196,12 @@ public class TransientDescriptionService implements IDescriptionService { return defaultService.moveDescriptionElementsToDescription(arg0, arg1, arg2, arg3); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public DescriptionBase merge(DescriptionBase arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java index 579e6fce7..329dd9e17 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java @@ -1197,4 +1197,12 @@ public class TransientNameService implements INameService { public List merge(List arg0) { return defaultService.merge(arg0); } + + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public TaxonNameBase merge(TaxonNameBase arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java index bd8fca97e..81b7a980b 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java @@ -1053,4 +1053,12 @@ public class TransientOccurenceService implements IOccurrenceService { return defaultService.moveSequence(arg0, arg1, arg2); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public SpecimenOrObservationBase merge(SpecimenOrObservationBase arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java index 550642d65..4e9f29d56 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java @@ -733,4 +733,12 @@ public class TransientReferenceService implements IReferenceService { public List merge(List arg0) { return defaultService.merge(arg0); } + + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public Reference merge(Reference arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java index fd4154909..7819a8cb9 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java @@ -1525,4 +1525,12 @@ public class TransientTaxonService implements ITaxonService { return defaultService.changeSynonymToAcceptedTaxon(arg0, arg1, arg2, arg3, arg4, arg5, arg6); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public TaxonBase merge(TaxonBase arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java index ec9867549..40772762b 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java @@ -903,4 +903,12 @@ public class TransientTermService implements ITermService { public DeleteResult delete(UUID arg0, TermDeletionConfigurator arg1) { return defaultService.delete(arg0, arg1); } + + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean) + */ + @Override + public DefinedTermBase merge(DefinedTermBase arg0, boolean arg1) { + return defaultService.merge(arg0, arg1); + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmMergeOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmDefaultOperation.java similarity index 74% rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmMergeOperation.java rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmDefaultOperation.java index b93937e9d..4ac9dc3a0 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmMergeOperation.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmDefaultOperation.java @@ -22,11 +22,11 @@ import eu.etaxonomy.cdm.model.common.CdmBase; * @date 21 Jul 2015 * */ -public abstract class RemotingCdmMergeOperation extends RemotingCdmOperation { +public abstract class RemotingCdmDefaultOperation extends RemotingCdmOperation { - private CdmBase mergedCdmEntity; + private CdmBase cdmEntity; - public RemotingCdmMergeOperation(String label, Action action, Object source, boolean async) { + public RemotingCdmDefaultOperation(String label, Action action, Object source, boolean async) { super(label, action, source, async); } /* (non-Javadoc) @@ -35,19 +35,19 @@ public abstract class RemotingCdmMergeOperation extends RemotingCdmOperation { @Override protected boolean doExecute(IProgressMonitor monitor, IAdaptable info) { try { - mergedCdmEntity = doMergeExecute(monitor, info); + cdmEntity = doSimpleExecute(monitor, info); } catch (Exception e) { throw new RuntimeException(e); } return true; } - protected abstract CdmBase doMergeExecute(IProgressMonitor monitor, IAdaptable info) throws Exception; + protected abstract CdmBase doSimpleExecute(IProgressMonitor monitor, IAdaptable info) throws Exception; @Override protected void postExecute(boolean success) { - if(success && mergedCdmEntity != null) { - fireDataChangeEvent(mergedCdmEntity); + if(success && cdmEntity != null) { + fireDataChangeEvent(cdmEntity); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyStatementElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyStatementElement.java index 386a8a8cf..b03b243b6 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyStatementElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyStatementElement.java @@ -12,8 +12,8 @@ package eu.etaxonomy.taxeditor.ui.element; import org.eclipse.jface.util.PropertyChangeEvent; +import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.description.KeyStatement; -import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; /** * @author n.hoffmann @@ -49,20 +49,25 @@ public class KeyStatementElement extends MultilanguageTextElement { /** * @return the keyStatement */ - public KeyStatement getKeyStatement() { - return keyStatement; - } + public KeyStatement updateKeyStatement(KeyStatement ks) { + keyStatement = ks; + if(keyStatement == null) { + keyStatement = KeyStatement.NewInstance(element_languageString.getLanguageString().getLanguage(), + element_languageString.getLanguageString().getText()); - public void update(PolytomousKeyNode node) { - if(node.getStatement() == null) { - node.setStatement(KeyStatement.NewInstance(element_languageString.getLanguageString().getLanguage(), - element_languageString.getLanguageString().getText())); } else { - node.getStatement().getLabel().put(element_languageString.getLanguageString().getLanguage(), - element_languageString.getLanguageString()); + LanguageString languageString = keyStatement.getLabel().get(element_languageString.getLanguageString().getLanguage()); + if(languageString != null) { + languageString.setText(element_languageString.getText()); + } else { + keyStatement.getLabel().put(element_languageString.getLanguageString().getLanguage(), + element_languageString.getLanguageString()); + } } + return keyStatement; } + /* * (non-Javadoc) * diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java index 25ef4b2d1..4c4578719 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java @@ -196,12 +196,6 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements this.multilanguageText = multilanguageText; if (multilanguageText != null) { - if (multilanguageText.isEmpty()) { -// multilanguageText.put( -// CdmStore.getDefaultLanguage(), -// LanguageString.NewInstance("", -// CdmStore.getDefaultLanguage())); - } if (PreferencesUtil.isMultilanguageTextEditingCapability()) { combo_language.setTerms(getLanguages()); button.setEnabled(false); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java index 29cee3d5e..9bc9a078c 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java @@ -105,11 +105,9 @@ public class PolytomousKeyNodeDetailElement extends @Override public void handleEvent(Object eventSource) { if (eventSource == element_question) { - getEntity().getParent().setQuestion( - element_question.getKeyStatement()); + getEntity().getParent().setQuestion(element_question.updateKeyStatement(getEntity().getQuestion())); } else if (eventSource == element_statement) { - //getEntity().setStatement(element_statement.getKeyStatement()); - element_statement.update(getEntity()); + getEntity().getParent().setStatement(element_statement.updateKeyStatement(getEntity().getStatement())); } else if (eventSource == selection_feature) { getEntity().getParent().setFeature(selection_feature.getEntity()); } else if (eventSource == selection_taxon) { diff --git a/eu.etaxonomy.taxeditor.test/server.properties b/eu.etaxonomy.taxeditor.test/server.properties deleted file mode 100644 index daf19cd45..000000000 --- a/eu.etaxonomy.taxeditor.test/server.properties +++ /dev/null @@ -1,6 +0,0 @@ -httpPort=9090 -stopPort=9191 -stopKey=jetty-cdm-server -user=admin -password=00000 - diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java index 29a52b8f0..c89201247 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java @@ -167,6 +167,27 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest { Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getChildAt(0).getTaxon().getTitleCache(), "Achillea arabica Kotschy sec. Cyprus"); } + @Test + public void addGrandChildPolytomousKeyNode() { + + PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class); + PolytomousKeyNode rootChildNode = pKey.getRoot().getChildAt(0); + PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance(); + rootChildNode.addChild(grandChildNode); + + pKey = polytomousKeyService.merge(pKey, true); + grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0); + Assert.assertTrue(0 != grandChildNode.getId()); + + grandChildNode.setStatement(KeyStatement.NewInstance("test")); + pKey = polytomousKeyService.merge(pKey, true); + + grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0); + KeyStatement ks = grandChildNode.getStatement(); + Assert.assertTrue(0 != ks.getId()); + + } + @Test public void addGreatGrandChildPolytomousKeyNode() { @@ -175,6 +196,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest { PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance(); rootChildNode.addChild(grandChildNode); + grandChildNode = polytomousKeyNodeService.merge(grandChildNode); PolytomousKeyNode greatGrandChildNode = PolytomousKeyNode.NewInstance(); -- 2.34.1