3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.operation
;
14 import org
.eclipse
.core
.commands
.ExecutionException
;
15 import org
.eclipse
.core
.commands
.operations
.AbstractOperation
;
16 import org
.eclipse
.core
.runtime
.IAdaptable
;
17 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
18 import org
.eclipse
.core
.runtime
.IStatus
;
20 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationState
;
21 import eu
.etaxonomy
.cdm
.api
.application
.CdmChangeEvent
;
22 import eu
.etaxonomy
.cdm
.api
.application
.CdmChangeEvent
.Action
;
23 import eu
.etaxonomy
.cdm
.api
.service
.UpdateResult
;
24 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
31 public abstract class RemotingCdmOperation
extends AbstractOperation
{
33 private final Object source
;
34 private final Action action
;
35 private final boolean async
;
37 public RemotingCdmOperation(String label
, Action action
, Object source
, boolean async
) {
45 * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
48 public IStatus
execute(IProgressMonitor monitor
, IAdaptable info
) throws ExecutionException
{
50 boolean success
= doExecute(monitor
, info
);
52 return onComplete(success
);
55 protected abstract boolean doExecute(IProgressMonitor monitor
, IAdaptable info
);
57 protected void postExecute(boolean success
) {}
59 protected abstract IStatus
onComplete(boolean success
);
61 protected void fireDataChangeEvent(Set
<?
extends CdmBase
> changedObjects
) {
62 if(changedObjects
!= null && !changedObjects
.isEmpty()) {
63 CdmApplicationState
.getCurrentDataChangeService().fireChangeEvent(new CdmChangeEvent(action
, changedObjects
, source
.getClass()), async
);
67 protected void fireDataChangeEvent(UpdateResult updateResult
) {
68 Set
<CdmBase
> updatedObjects
= updateResult
.getUpdatedObjects();
69 if(updatedObjects
!= null && !updatedObjects
.isEmpty()) {
70 CdmApplicationState
.getCurrentDataChangeService().fireChangeEvent(new CdmChangeEvent(action
, updatedObjects
, source
.getClass()), async
);
75 * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
78 public IStatus
redo(IProgressMonitor monitor
, IAdaptable info
) throws ExecutionException
{
79 // TODO Auto-generated method stub
84 * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
87 public IStatus
undo(IProgressMonitor monitor
, IAdaptable info
) throws ExecutionException
{
88 // TODO Auto-generated method stub