ref #7086 Fix potential multiple representation exception
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / workingSet / WorkingSetEditor.java
index 9abb7bdded91ac918193b92c1fa145e56a005476..3e9d83e57c98b709740f1a168ed2de697fe7cd2a 100644 (file)
@@ -47,6 +47,7 @@ import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IWorkingSetService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
@@ -56,6 +57,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
@@ -198,9 +200,17 @@ IPartContentHasDetails, IDirtyMarkable {
         composite.getTxt_label().addModifyListener(labelModifyListener);
     }
 
-    public void addTaxonNode(TaxonNode taxonNode){
-        //load into WS editor session
-        taxonNode = getCdmEntitySession().load(taxonNode, false);
+    public void addTaxonNode(TaxonNodeDto taxonNodeDto){
+        TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid());
+        //check if node belongs to same classification
+        Set<TaxonNode> taxonSubtreeFilter = workingSet.getTaxonSubtreeFilter();
+        if(taxonSubtreeFilter!=null && !taxonSubtreeFilter.isEmpty()){
+            if(!taxonSubtreeFilter.iterator().next().getClassification().equals(taxonNode.getClassification())){
+                MessagingUtils.warningDialog(Messages.TaxonNodeDropAdapter_CLASSIFICATIONS_NO_MATCH, this.getClass(),
+                        Messages.TaxonNodeDropAdapter_CLASSIFICATIONS_NO_MATCH_MESSAGE);
+            }
+
+        }
         Viewer taxonTreeViewer = getTaxonTreeViewer();
         Object input = taxonTreeViewer.getInput();
         Collection<TaxonNode> treeNodes;