From 80a0c0dc788e2a91a8e8fb380325a4bfd73e1ea3 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 11 Apr 2018 11:56:22 +0200 Subject: [PATCH] ref #7086 Fix potential multiple representation exception --- .../workingSet/TaxonNodeDropAdapter.java | 20 +------------------ .../editor/workingSet/WorkingSetEditor.java | 16 ++++++++++++--- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/TaxonNodeDropAdapter.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/TaxonNodeDropAdapter.java index 4f2bdf82a..1d9f5f7ed 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/TaxonNodeDropAdapter.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/TaxonNodeDropAdapter.java @@ -8,8 +8,6 @@ */ package eu.etaxonomy.taxeditor.editor.workingSet; -import java.util.Set; - import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; @@ -17,12 +15,7 @@ import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.ViewerDropAdapter; import org.eclipse.swt.dnd.TransferData; -import eu.etaxonomy.cdm.api.service.ITaxonNodeService; -import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto; -import eu.etaxonomy.taxeditor.editor.l10n.Messages; -import eu.etaxonomy.taxeditor.model.MessagingUtils; -import eu.etaxonomy.taxeditor.store.CdmStore; /** * @author pplitzner @@ -44,18 +37,7 @@ public class TaxonNodeDropAdapter extends ViewerDropAdapter { @Override public boolean performDrop(Object data) { TaxonNodeDto taxonNodeDto = (TaxonNodeDto) ((ITreeSelection) data).getFirstElement(); - TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid()); - //check if node belongs to same classification - Set taxonSubtreeFilter = workingSetEditor.getWorkingSet().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); - return false; - } - - } - workingSetEditor.addTaxonNode(taxonNode); + workingSetEditor.addTaxonNode(taxonNodeDto); return true; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetEditor.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetEditor.java index 9abb7bdde..3e9d83e57 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetEditor.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetEditor.java @@ -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 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 treeNodes; -- 2.34.1