+++ /dev/null
-// $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 <T extends CdmBase> {
-
- 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();
- }
-}
package eu.etaxonomy.taxeditor.bulkeditor.e4;
-import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
bottomComposite.setLayout(new FillLayout());
viewer = new TableViewer(bottomComposite);
viewer.setContentProvider(new ArrayContentProvider());
- viewer.setLabelProvider(new BulkEditorLabelProvider());
+ viewer.setLabelProvider(new BulkEditorLabelProvider(this));
//propagate selection
@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);
getEditorInput().performSearch(query);
- viewer.setInput(getEditorInput().getWrappedModel());
+ viewer.setInput(getEditorInput().getModel());
refresh();
}
}
public void refresh(boolean resetInput) {
if(resetInput){
- viewer.setInput(getEditorInput().getWrappedModel());
+ viewer.setInput(getEditorInput().getModel());
}
viewer.refresh();
}
return input;
}
- public List<AnnotatedTableItem> getMergeCandidates(){
- List<AnnotatedTableItem> mergeCandidates = new ArrayList<>();
- for(AnnotatedTableItem item: (List<AnnotatedTableItem>)viewer.getInput()){
- if(item.isMergeCandidate()){
- mergeCandidates.add(item);
- }
- }
- return mergeCandidates;
- }
-
- public AnnotatedTableItem getMergeTarget(){
- for(AnnotatedTableItem item: (List<AnnotatedTableItem>)viewer.getInput()){
- if(item.isMergeTarget()){
- return item;
- }
- }
- return null;
- }
-
public void removeAllAnnotations(){
- for(AnnotatedTableItem item: (List<AnnotatedTableItem>)viewer.getInput()){
- item.setMergeCandidate(false);
- item.setMergeTarget(false);
- }
+ input.removeMergeTarget();
+ input.removeMergeCandidates();
}
/**
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;
*/
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());
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;
@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();
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) {
}
@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;
}
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;
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();
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) {
}
@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;
}
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;
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) {
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?");
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;
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;
/**
*
*/
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<AnnotatedTableItem> mergeCandidates = editor.getMergeCandidates();
+ List<CdmBase> mergeCandidates = input.getMergeCandidates();
if (mergeCandidates.size() == 0) {
MessageDialog.openWarning(shell,
"No merge candidates", "No objects have been chosen for merging.");
}
// 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
// model.removeTypeFromAllAnnotations(IBulkEditorConstants.TYPE_MERGE_CANDIDATE);
// model.removeTypeFromAllAnnotations(IBulkEditorConstants.TYPE_MERGE_TARGET);
}
+ editor.setDirty();
+ editor.refresh();
}
}
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;
/**
@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();
}
}
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;
/**
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();
}
}
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;
/**
*
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();
}
}
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;
private List<T> model = new ArrayList<>();
+ private List<T> mergeCandidates = new ArrayList<>();
+ private T mergeTarget = null;
+
private IEntityCreator<T> entityCreator;
private final ConversationHolder conversation;
protected abstract T loadEntity(UUID entityUuid);
+ public void setMergeTarget(T t){
+ mergeTarget = t;
+ }
+
+ public List<T> 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;
}
return model;
}
- public List<AnnotatedTableItem<T>> getWrappedModel() {
- List<AnnotatedTableItem<T>> wrappetItems = new ArrayList<>();
- for(T t:model){
- wrappetItems.add(new AnnotatedTableItem<T>(t));
- }
- return wrappetItems;
- }
-
protected boolean replaceInModel(T entity) {
int index = model.indexOf(entity);
if(index >= 0) {