From bce766a128fd4241fd8673a5dd871056f893b404 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 13 Sep 2017 14:56:22 +0200 Subject: [PATCH] ref #6932 Refactor merge annotating --- .../bulkeditor/e4/AnnotatedTableItem.java | 60 ------------------- .../taxeditor/bulkeditor/e4/BulkEditorE4.java | 41 +++---------- .../e4/BulkEditorLabelProvider.java | 15 ++++- .../handler/ConvertPerson2TeamHandlerE4.java | 10 ++-- .../handler/ConvertTeam2PersonHandlerE4.java | 10 ++-- .../e4/handler/DeleteHandlerE4.java | 4 +- .../e4/handler/MergeGroupHandlerE4.java | 34 +++++------ .../RemoveMergeCandidateHandlerE4.java | 6 +- .../handler/SetMergeCandidateHandlerE4.java | 6 +- .../e4/handler/SetMergeTargetHandlerE4.java | 12 ++-- .../input/AbstractBulkEditorInput.java | 40 ++++++++++--- 11 files changed, 91 insertions(+), 147 deletions(-) delete mode 100644 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/AnnotatedTableItem.java diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/AnnotatedTableItem.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/AnnotatedTableItem.java deleted file mode 100644 index e4d8bc5e8..000000000 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/AnnotatedTableItem.java +++ /dev/null @@ -1,60 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2017 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ -package eu.etaxonomy.taxeditor.bulkeditor.e4; - -import eu.etaxonomy.cdm.model.common.CdmBase; - -/** - * @author pplitzner - * @date 12.09.2017 - * - */ -public class AnnotatedTableItem { - - private T element; - private boolean isMergeCandidate = false; - private boolean isMergeTarget = false; - - public AnnotatedTableItem(T element) { - super(); - this.element = element; - } - - public T getElement() { - return element; - } - - public void setMergeCandidate(boolean isMergeCandidate) { - this.isMergeCandidate = isMergeCandidate; - if(isMergeCandidate){ - this.isMergeTarget = false; - } - } - - public void setMergeTarget(boolean isMergeTarget) { - this.isMergeTarget = isMergeTarget; - if(isMergeTarget){ - this.isMergeCandidate = false; - } - } - - public boolean isMergeCandidate() { - return isMergeCandidate; - } - - public boolean isMergeTarget() { - return isMergeTarget; - } - - @Override - public String toString() { - return element.toString(); - } -} diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4.java index 866b2d3fd..17ce13faf 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4.java @@ -9,7 +9,6 @@ package eu.etaxonomy.taxeditor.bulkeditor.e4; -import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; @@ -112,7 +111,7 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable bottomComposite.setLayout(new FillLayout()); viewer = new TableViewer(bottomComposite); viewer.setContentProvider(new ArrayContentProvider()); - viewer.setLabelProvider(new BulkEditorLabelProvider()); + viewer.setLabelProvider(new BulkEditorLabelProvider(this)); //propagate selection @@ -126,17 +125,16 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable @Persist public void save() { + //FIXME E4 do the potential merging of groups + // commit the conversation and start a new transaction immediately conversation.commit(true); Object object = viewer.getInput(); if(object instanceof List){ for (Object item: (List)object) { - if(item instanceof AnnotatedTableItem){ - CdmBase cdmBase = ((AnnotatedTableItem) item).getElement(); - CdmStore.getService(cdmBase).merge(cdmBase, true); - } - + CdmBase cdmBase = (CdmBase) item; + CdmStore.getService(cdmBase).merge(cdmBase, true); } } dirty.setDirty(false); @@ -160,7 +158,7 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable getEditorInput().performSearch(query); - viewer.setInput(getEditorInput().getWrappedModel()); + viewer.setInput(getEditorInput().getModel()); refresh(); } } @@ -171,7 +169,7 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable public void refresh(boolean resetInput) { if(resetInput){ - viewer.setInput(getEditorInput().getWrappedModel()); + viewer.setInput(getEditorInput().getModel()); } viewer.refresh(); } @@ -192,30 +190,9 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable return input; } - public List getMergeCandidates(){ - List mergeCandidates = new ArrayList<>(); - for(AnnotatedTableItem item: (List)viewer.getInput()){ - if(item.isMergeCandidate()){ - mergeCandidates.add(item); - } - } - return mergeCandidates; - } - - public AnnotatedTableItem getMergeTarget(){ - for(AnnotatedTableItem item: (List)viewer.getInput()){ - if(item.isMergeTarget()){ - return item; - } - } - return null; - } - public void removeAllAnnotations(){ - for(AnnotatedTableItem item: (List)viewer.getInput()){ - item.setMergeCandidate(false); - item.setMergeTarget(false); - } + input.removeMergeTarget(); + input.removeMergeCandidates(); } /** diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorLabelProvider.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorLabelProvider.java index 2d47fd1c7..f7eb7e0d9 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorLabelProvider.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorLabelProvider.java @@ -18,6 +18,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; +import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput; import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin; import eu.etaxonomy.taxeditor.model.ImageResources; @@ -28,19 +29,27 @@ import eu.etaxonomy.taxeditor.model.ImageResources; */ public class BulkEditorLabelProvider extends LabelProvider { + private BulkEditorE4 editor; + + public BulkEditorLabelProvider(BulkEditorE4 editor) { + super(); + this.editor = editor; + } + /** * {@inheritDoc} */ @Override public Image getImage(Object element) { - AnnotatedTableItem item = (AnnotatedTableItem)element; + AbstractBulkEditorInput input = editor.getEditorInput(); + try { - if(item.isMergeCandidate()){ + if(input.getMergeCandidates().contains(element)){ IPath path = new Path("icons/merge_candidate.gif"); //$NON-NLS-1$ URL url = FileLocator.find(TaxeditorBulkeditorPlugin.getDefault().getBundle(), path, null); return ImageResources.getImage(url.toURI()); } - else if(item.isMergeTarget()){ + else if(input.getMergeTarget()!=null && input.getMergeTarget().equals(element)){ IPath path = new Path("icons/merge_target.gif"); //$NON-NLS-1$ URL url = FileLocator.find(TaxeditorBulkeditorPlugin.getDefault().getBundle(), path, null); return ImageResources.getImage(url.toURI()); diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertPerson2TeamHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertPerson2TeamHandlerE4.java index 328d7057c..f8d446933 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertPerson2TeamHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertPerson2TeamHandlerE4.java @@ -21,8 +21,8 @@ import eu.etaxonomy.cdm.api.service.IAgentService; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.strategy.merge.MergeException; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin; import eu.etaxonomy.taxeditor.model.MessagingUtils; @@ -37,7 +37,7 @@ public class ConvertPerson2TeamHandlerE4 { @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem item, + public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart) { BulkEditorE4 editor = (BulkEditorE4) activePart.getObject(); @@ -55,7 +55,7 @@ public class ConvertPerson2TeamHandlerE4 { Team team =null; UpdateResult result = null; try { - result = CdmStore.getService(IAgentService.class).convertPerson2Team(item.getElement().getUuid()); + result = CdmStore.getService(IAgentService.class).convertPerson2Team(selection.getUuid()); } catch (IllegalArgumentException e) { MessagingUtils.errorDialog("Can not convert Person into a Team", null, e.getLocalizedMessage(), TaxeditorBulkeditorPlugin.PLUGIN_ID,e, true); } catch (MergeException e) { @@ -70,11 +70,11 @@ public class ConvertPerson2TeamHandlerE4 { } @CanExecute - public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem selection, + public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart, MHandledMenuItem menuItem){ boolean canExecute = false; - canExecute = ((BulkEditorE4)activePart.getObject()).getEditorInput().isConvertingEnabled() && selection.getElement() instanceof Person; + canExecute = ((BulkEditorE4)activePart.getObject()).getEditorInput().isConvertingEnabled() && selection instanceof Person; menuItem.setVisible(canExecute); return canExecute; } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertTeam2PersonHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertTeam2PersonHandlerE4.java index bd54325bb..e9ecbcd50 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertTeam2PersonHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/ConvertTeam2PersonHandlerE4.java @@ -21,8 +21,8 @@ import eu.etaxonomy.cdm.api.service.IAgentService; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.strategy.merge.MergeException; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -35,7 +35,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore; public class ConvertTeam2PersonHandlerE4 { @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem item, + public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart) { BulkEditorE4 editor = (BulkEditorE4) activePart.getObject(); @@ -54,7 +54,7 @@ public class ConvertTeam2PersonHandlerE4 { UpdateResult result = null; try { - result = CdmStore.getService(IAgentService.class).convertTeam2Person(item.getElement().getUuid()); + result = CdmStore.getService(IAgentService.class).convertTeam2Person(selection.getUuid()); } catch (IllegalArgumentException e) { MessagingUtils.informationDialog("Can not convert Team to Person", e.getMessage()); } catch (MergeException e) { @@ -69,11 +69,11 @@ public class ConvertTeam2PersonHandlerE4 { } @CanExecute - public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem selection, + public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart, MHandledMenuItem menuItem){ boolean canExecute = false; - canExecute = ((BulkEditorE4)activePart.getObject()).getEditorInput().isConvertingEnabled() && selection.getElement() instanceof Team; + canExecute = ((BulkEditorE4)activePart.getObject()).getEditorInput().isConvertingEnabled() && selection instanceof Team; menuItem.setVisible(canExecute); return canExecute; } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/DeleteHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/DeleteHandlerE4.java index 3dca3dd8b..6e39daad6 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/DeleteHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/DeleteHandlerE4.java @@ -46,7 +46,6 @@ import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin; import eu.etaxonomy.taxeditor.l10n.Messages; @@ -83,7 +82,7 @@ public class DeleteHandlerE4 { private static final String CONFIRM_DELETION = Messages.DeleteHandler_CONFIRM; @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem item, + public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase object, @Named(IServiceConstants.ACTIVE_PART)MPart activePart, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) { @@ -98,7 +97,6 @@ public class DeleteHandlerE4 { DeleteConfiguratorBase config = null; DeleteResult result = new DeleteResult(); String errorMessage= OBJECT; - CdmBase object = item.getElement(); if (editor.isDirty()){ boolean proceed = MessageDialog.openQuestion(null, "Save changes", "You have made changes that must be saved before this query can be executed. Would you like to proceed?"); diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/MergeGroupHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/MergeGroupHandlerE4.java index 10aeb78a6..d2adbb653 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/MergeGroupHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/MergeGroupHandlerE4.java @@ -12,7 +12,6 @@ import java.util.List; import javax.inject.Named; -import org.apache.log4j.Logger; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.services.IServiceConstants; @@ -21,10 +20,11 @@ import org.eclipse.swt.widgets.Shell; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.strategy.merge.MergeException; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; +import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput; import eu.etaxonomy.taxeditor.store.CdmStore; /** @@ -34,18 +34,17 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * */ public class MergeGroupHandlerE4 { - private static final Logger logger = Logger - .getLogger(MergeGroupHandlerE4.class); @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)Object object, + public void execute( @Named(IServiceConstants.ACTIVE_PART)MPart activePart, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) { BulkEditorE4 editor = (BulkEditorE4) activePart.getObject(); + AbstractBulkEditorInput input = editor.getEditorInput(); // Check whether there are any group annotations - List mergeCandidates = editor.getMergeCandidates(); + List mergeCandidates = input.getMergeCandidates(); if (mergeCandidates.size() == 0) { MessageDialog.openWarning(shell, "No merge candidates", "No objects have been chosen for merging."); @@ -53,47 +52,46 @@ public class MergeGroupHandlerE4 { } // Check whether group merge target has been set - AnnotatedTableItem mergeTarget = editor.getMergeTarget(); + CdmBase mergeTarget = input.getMergeTarget(); if (mergeTarget == null) { MessageDialog.openWarning(shell, "No group merge target set", "No group merge target has been set."); return; } - Object targetEntity = mergeTarget.getElement(); TeamOrPersonBase teamOrPerson = null; Reference ref = null; - if (targetEntity instanceof TeamOrPersonBase){ - teamOrPerson = HibernateProxyHelper.deproxy(targetEntity, TeamOrPersonBase.class); - } else if(targetEntity instanceof Reference){ - ref = HibernateProxyHelper.deproxy(targetEntity, Reference.class); + if (mergeTarget instanceof TeamOrPersonBase){ + teamOrPerson = HibernateProxyHelper.deproxy(mergeTarget, TeamOrPersonBase.class); + } else if(mergeTarget instanceof Reference){ + ref = HibernateProxyHelper.deproxy(mergeTarget, Reference.class); } - for (AnnotatedTableItem item : mergeCandidates) { + for (CdmBase item : mergeCandidates) { //first check whether entities are mergeable try{ if (ref != null){ - Reference ref2 = HibernateProxyHelper.deproxy(item.getElement(), Reference.class); + Reference ref2 = HibernateProxyHelper.deproxy(item, Reference.class); if (!CdmStore.getCommonService().isMergeable(ref, ref2, null)){ MessageDialog.openWarning(shell, "No merge possible", "A merge of " + ref.getTitleCache() + " and " + ref2.getTitleCache() + " is not possible."); return; } + input.getModel().remove(item); } if (teamOrPerson != null){ - TeamOrPersonBase teamOrPerson2 = HibernateProxyHelper.deproxy(item.getElement(), TeamOrPersonBase.class); + TeamOrPersonBase teamOrPerson2 = HibernateProxyHelper.deproxy(item, TeamOrPersonBase.class); if (!CdmStore.getCommonService().isMergeable(teamOrPerson, teamOrPerson2, null)){ MessageDialog.openWarning(shell, "No merge possible", "A merge of " + teamOrPerson.getTitleCache() + " and " + teamOrPerson2.getTitleCache() + " is not possible."); return; } + input.getModel().remove(item); } }catch(MergeException e){ } - editor.removeAllAnnotations(); - editor.refresh(); // ((BulkEditor) editor).removeAnnotatedLine(item); // // // Mark entity container for merging with target entity @@ -107,5 +105,7 @@ public class MergeGroupHandlerE4 { // model.removeTypeFromAllAnnotations(IBulkEditorConstants.TYPE_MERGE_CANDIDATE); // model.removeTypeFromAllAnnotations(IBulkEditorConstants.TYPE_MERGE_TARGET); } + editor.setDirty(); + editor.refresh(); } } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/RemoveMergeCandidateHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/RemoveMergeCandidateHandlerE4.java index 453bf7e1f..b7f6e6e7e 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/RemoveMergeCandidateHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/RemoveMergeCandidateHandlerE4.java @@ -14,7 +14,7 @@ import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.services.IServiceConstants; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; /** @@ -27,10 +27,10 @@ public class RemoveMergeCandidateHandlerE4 { @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem item, + public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart) { BulkEditorE4 editor = (BulkEditorE4) activePart.getObject(); - item.setMergeCandidate(false); + editor.getEditorInput().removeMergeCandidate(selection); editor.refresh(); } } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeCandidateHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeCandidateHandlerE4.java index edc7bcf00..0a3f625b5 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeCandidateHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeCandidateHandlerE4.java @@ -14,7 +14,7 @@ import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.services.IServiceConstants; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; /** @@ -26,10 +26,10 @@ import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; public class SetMergeCandidateHandlerE4 { @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem item, + public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart) { BulkEditorE4 editor = (BulkEditorE4) activePart.getObject(); - item.setMergeCandidate(true); + editor.getEditorInput().addMergeCandidate(selection); editor.refresh(); } } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeTargetHandlerE4.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeTargetHandlerE4.java index 6edef7b9e..afe5091a2 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeTargetHandlerE4.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/handler/SetMergeTargetHandlerE4.java @@ -14,8 +14,9 @@ import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.services.IServiceConstants; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; +import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput; /** * @@ -26,14 +27,11 @@ import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4; public class SetMergeTargetHandlerE4 { @Execute - public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)AnnotatedTableItem item, + public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)CdmBase selection, @Named(IServiceConstants.ACTIVE_PART)MPart activePart) { BulkEditorE4 editor = (BulkEditorE4) activePart.getObject(); - AnnotatedTableItem mergeTarget = editor.getMergeTarget(); - if(mergeTarget!=null){ - mergeTarget.setMergeTarget(false); - } - item.setMergeTarget(true); + AbstractBulkEditorInput input = editor.getEditorInput(); + input.setMergeTarget(selection); editor.refresh(); } } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java index 0bd958bab..3abc2c97a 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java @@ -31,7 +31,6 @@ import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator; import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService; import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery; import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider; -import eu.etaxonomy.taxeditor.bulkeditor.e4.AnnotatedTableItem; import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.CdmBaseSortProvider; import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.TitleCacheComparator; import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin; @@ -52,6 +51,9 @@ public abstract class AbstractBulkEditorInput extends CdmEnti private List model = new ArrayList<>(); + private List mergeCandidates = new ArrayList<>(); + private T mergeTarget = null; + private IEntityCreator entityCreator; private final ConversationHolder conversation; @@ -80,6 +82,34 @@ public abstract class AbstractBulkEditorInput extends CdmEnti protected abstract T loadEntity(UUID entityUuid); + public void setMergeTarget(T t){ + mergeTarget = t; + } + + public List getMergeCandidates() { + return mergeCandidates; + } + + public T getMergeTarget() { + return mergeTarget; + } + + public void removeMergeTarget(){ + mergeTarget = null; + } + + public void addMergeCandidate(T t){ + mergeCandidates.add(t); + } + + public void removeMergeCandidate(T t){ + mergeCandidates.remove(t); + } + + public void removeMergeCandidates() { + mergeCandidates = new ArrayList<>(); + } + private void setEntityUuid(UUID entityUuid){ this.entityUuid = entityUuid; } @@ -222,14 +252,6 @@ public abstract class AbstractBulkEditorInput extends CdmEnti return model; } - public List> getWrappedModel() { - List> wrappetItems = new ArrayList<>(); - for(T t:model){ - wrappetItems.add(new AnnotatedTableItem(t)); - } - return wrappetItems; - } - protected boolean replaceInModel(T entity) { int index = model.indexOf(entity); if(index >= 0) { -- 2.34.1