#5247 Fix duplicate entity issue for new entities by using the new merge service...
authorCherian Mathew <c.mathew@bgbm.org>
Thu, 24 Sep 2015 09:03:40 +0000 (11:03 +0200)
committerCherian Mathew <c.mathew@bgbm.org>
Thu, 24 Sep 2015 09:05:43 +0000 (11:05 +0200)
19 files changed:
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RemotingCreatePolytomousKeyNodeOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCollectionService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmDefaultOperation.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/RemotingCdmMergeOperation.java with 74% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyStatementElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java
eu.etaxonomy.taxeditor.test/server.properties [deleted file]
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java

index b6ca9645abd52bb6e75739fd5a5f90b63c2d3fe1..5eecbd208e2b59fa4769b599f4199f2fa82dc49f 100644 (file)
@@ -249,7 +249,7 @@ public class KeyEditor extends FormEditor implements IConversationEnabled,
      */
     @Override
     public void onChange(CdmChangeEvent event) {
      */
     @Override
     public void onChange(CdmChangeEvent event) {
-        //editorDirtyStateChanged();
+        editorDirtyStateChanged();
         IEditorPart activeEditor = getActiveEditor();
         if (activeEditor instanceof IDirtyMarkable) {
             for(CdmBase cdmBase : event.getChangedObjects()) {
         IEditorPart activeEditor = getActiveEditor();
         if (activeEditor instanceof IDirtyMarkable) {
             for(CdmBase cdmBase : event.getChangedObjects()) {
index a6555ce7d01e3f5ff8266f33ac90ed98995984f6..3cfc3e3ff962f117ab3ba7423a0400490eda9e6a 100644 (file)
@@ -4,7 +4,9 @@
 package eu.etaxonomy.taxeditor.editor.key.polytomous;
 
 import java.util.Arrays;
 package eu.etaxonomy.taxeditor.editor.key.polytomous;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -89,7 +91,18 @@ public class PolytomousKeyEditorInput extends AbstractIdentificationEditorInput<
      */
     @Override
     public void merge() {
      */
     @Override
     public void merge() {
-        key = CdmStore.getService(IPolytomousKeyService.class).merge(key);
+        key = CdmStore.getService(IPolytomousKeyService.class).merge(key,true);
+    }
+
+    @Override
+    public Map<Object, List<String>> getPropertyPathsMap() {
+        Map<Object,List<String>> propertyPathsMap = new HashMap<Object,List<String>>();
+
+        List<String> polytomousKeyNodePropertyPaths = Arrays.asList(new String[] {
+                "statement"
+        });
+         propertyPathsMap.put("children", polytomousKeyNodePropertyPaths);
+         return propertyPathsMap;
     }
 
 }
     }
 
 }
index 4ecb1498349d730772c315404ba17210eeacc432..56bd34ca6e2ce21118b42e42b59ea666f0689bd7 100644 (file)
@@ -10,6 +10,8 @@
 
 package eu.etaxonomy.taxeditor.editor.key.polytomous;
 
 
 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;
 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) {
         */
        @Override
        public void doSave(IProgressMonitor monitor) {
-
        }
 
        /*
        }
 
        /*
@@ -311,19 +312,18 @@ public class PolytomousKeyListEditor extends EditorPart implements
         */
        @Override
        public void changed(Object element) {
         */
        @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<PolytomousKeyNode> children = ((PolytomousKeyNode) element)
+                    .getParent().getChildren();
+            for (PolytomousKeyNode child : children) {
+                viewer.update(child, null);
+            }
+        }
+        viewer.refresh();
        }
 
     /* (non-Javadoc)
        }
 
     /* (non-Javadoc)
index 61c75bb8b9b71bebbe70a7daef0150b77f4b9ba0..c63350eea36c3a4c860ad8f0a1f6b214af254094 100644 (file)
@@ -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 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.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
  *
  */
 
 /**
  * @author cmathew
  * @date 21 Jul 2015
  *
  */
-public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmMergeOperation {
+public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmDefaultOperation {
 
     private final PolytomousKeyNode parentNode;
 
 
     private final PolytomousKeyNode parentNode;
 
@@ -35,15 +34,15 @@ public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmMergeOp
         super(LABEL, Action.Create, source, async);
         this.parentNode = parentNode;
     }
         super(LABEL, Action.Create, source, async);
         this.parentNode = parentNode;
     }
+
     /* (non-Javadoc)
     /* (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
      */
     @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;
     }
 
 }
     }
 
 }
index d3e4b123157f3f31a884686ceab7fda9bfb081ef..fc872f5dea5f6b4ccedf9f6c84e69555d490520a 100644 (file)
@@ -792,4 +792,12 @@ public class TransientAgentService implements IAgentService {
        return defaultService.merge(arg0);
     }
 
        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);
+    }
+
 }
 }
index 07fdcf242c6dcb7a32a98cd34f2f451152bed0e9..747d9ebae71b6733426d43d524bb94e77908b8c3 100644 (file)
@@ -950,6 +950,14 @@ public class TransientClassificationService implements IClassificationService {
         return defaultService.merge(arg0);
     }
 
         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);
+    }
+
 
 
 }
 
 
 }
index 64936020cd132d6288bea48dfbfb66d588988cfa..ba585ea97c72b876d6312a9b5af056ff11137c87 100644 (file)
@@ -726,4 +726,12 @@ public class TransientCollectionService implements ICollectionService {
         return defaultService.merge(arg0);
     }
 
         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);
+    }
+
 }
 }
index 4640d7e3a52c2de8bf037dcd0cbd6b81cd7fea3b..350d7b9098bbfc93e87e8069f2dc2c79911fdfd4 100644 (file)
@@ -1196,4 +1196,12 @@ public class TransientDescriptionService implements IDescriptionService {
         return defaultService.moveDescriptionElementsToDescription(arg0, arg1, arg2, arg3);
     }
 
         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);
+    }
+
 }
 }
index 579e6fce7b19568b4c9973d97fcaf8f75755bd9d..329dd9e17c540253f21864b28b11ccaec062d1a2 100644 (file)
@@ -1197,4 +1197,12 @@ public class TransientNameService implements INameService {
     public List<TaxonNameBase> merge(List<TaxonNameBase> arg0) {
         return defaultService.merge(arg0);
     }
     public List<TaxonNameBase> merge(List<TaxonNameBase> 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);
+    }
 }
 }
index bd8fca97e7b04a35a3b550d47d8bf3b37fbbf51f..81b7a980b672eea7bf4ca3d6e429d563bbdebca7 100644 (file)
@@ -1053,4 +1053,12 @@ public class TransientOccurenceService implements IOccurrenceService {
         return defaultService.moveSequence(arg0, arg1, arg2);
     }
 
         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);
+    }
+
 }
 }
index 550642d65cf02c00c8fd40c2b5cda77a1a68721e..4e9f29d564a09eaa3520e98db6fbc6ad6a968543 100644 (file)
@@ -733,4 +733,12 @@ public class TransientReferenceService implements IReferenceService {
     public List<Reference> merge(List<Reference> arg0) {
         return defaultService.merge(arg0);
     }
     public List<Reference> merge(List<Reference> 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);
+    }
 }
 }
index fd4154909e3c7574bbba44f2a807e57ac601d21a..7819a8cb966339dea6ff858ca33e0280caf6672d 100644 (file)
@@ -1525,4 +1525,12 @@ public class TransientTaxonService implements ITaxonService {
         return defaultService.changeSynonymToAcceptedTaxon(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
     }
 
         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);
+    }
+
 }
 }
index ec9867549b3a24e7700ee8931411f936eac742a3..40772762b22629c77b1255a95bbad34acb6f587a 100644 (file)
@@ -903,4 +903,12 @@ public class TransientTermService implements ITermService {
     public DeleteResult delete(UUID arg0, TermDeletionConfigurator arg1) {
         return defaultService.delete(arg0, arg1);
     }
     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);
+    }
 }
 }
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 b93937e9d3037efbd31b531bc019b8c58f120842..4ac9dc3a0b2e5347ecbbd236622cc30ab11aa099 100644 (file)
@@ -22,11 +22,11 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
  * @date 21 Jul 2015
  *
  */
  * @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)
         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 {
     @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;
     }
 
         } 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) {
 
     @Override
     protected void postExecute(boolean success) {
-        if(success && mergedCdmEntity != null) {
-            fireDataChangeEvent(mergedCdmEntity);
+        if(success && cdmEntity != null) {
+            fireDataChangeEvent(cdmEntity);
         }
 
     }
         }
 
     }
index 386a8a8cfe9ac5f36d44c30163a1f15f58f43069..b03b243b6af71c02525135c3f7e717c5c737cbb8 100644 (file)
@@ -12,8 +12,8 @@ package eu.etaxonomy.taxeditor.ui.element;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
 
 
 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.KeyStatement;
-import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 
 /**
  * @author n.hoffmann
 
 /**
  * @author n.hoffmann
@@ -49,20 +49,25 @@ public class KeyStatementElement extends MultilanguageTextElement {
        /**
         * @return the keyStatement
         */
        /**
         * @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 {
            } 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)
         *
        /*
         * (non-Javadoc)
         *
index 25ef4b2d13f90dc85db6896b8b4592542ca8ac65..4c4578719796d02838d45ea76fde4f4d018e27e1 100644 (file)
@@ -196,12 +196,6 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                this.multilanguageText = multilanguageText;
 
                if (multilanguageText != null) {
                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);
                        if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                                combo_language.setTerms(getLanguages());
                                button.setEnabled(false);
index 29cee3d5e2e0364b003f136a6476d0a09d8d8cf6..9bc9a078c570bafa95cb4db4029dd0f06f84acf7 100644 (file)
@@ -105,11 +105,9 @@ public class PolytomousKeyNodeDetailElement extends
        @Override
        public void handleEvent(Object eventSource) {
                if (eventSource == element_question) {
        @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) {
                } 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) {
                } 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 (file)
index daf19cd..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-httpPort=9090
-stopPort=9191
-stopKey=jetty-cdm-server
-user=admin
-password=00000
-
index 29a52b8f0ad7306d812a0b1dd1fccbc00654747d..c89201247332d6c9b26833c7380d92810f056520 100644 (file)
@@ -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");
     }
 
         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() {
 
     @Test
     public void addGreatGrandChildPolytomousKeyNode() {
 
@@ -175,6 +196,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
         rootChildNode.addChild(grandChildNode);
 
         PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
         rootChildNode.addChild(grandChildNode);
 
+
         grandChildNode = polytomousKeyNodeService.merge(grandChildNode);
 
         PolytomousKeyNode greatGrandChildNode = PolytomousKeyNode.NewInstance();
         grandChildNode = polytomousKeyNodeService.merge(grandChildNode);
 
         PolytomousKeyNode greatGrandChildNode = PolytomousKeyNode.NewInstance();