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
;
36 protected Class entityType
;
38 public RemotingCdmOperation(String label
, Action action
, Object source
, boolean async
) {
46 * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
49 public IStatus
execute(IProgressMonitor monitor
, IAdaptable info
) throws ExecutionException
{
51 boolean success
= doExecute(monitor
, info
);
53 return onComplete(success
);
56 protected abstract boolean doExecute(IProgressMonitor monitor
, IAdaptable info
);
58 protected void postExecute(boolean success
) {}
60 protected abstract IStatus
onComplete(boolean success
);
62 protected void fireDataChangeEvent(Set
<CdmBase
> changedObjects
) {
63 if(changedObjects
!= null && !changedObjects
.isEmpty()) {
64 CdmApplicationState
.getCurrentDataChangeService().fireChangeEvent(new CdmChangeEvent(action
, changedObjects
, source
.getClass()), async
);
68 protected void fireDataChangeEvent(UpdateResult updateResult
) {
69 Set
<CdmBase
> updatedObjects
= updateResult
.getUpdatedObjects();
70 CdmApplicationState
.getCurrentDataChangeService()
71 .fireChangeEvent(new CdmChangeEvent(action
, updatedObjects
, source
.getClass(), entityType
), async
);
74 protected void fireDataChangeEvent(CdmBase cdmBase
) {
76 CdmApplicationState
.getCurrentDataChangeService().fireChangeEvent(new CdmChangeEvent(action
, cdmBase
, source
.getClass()), async
);
81 * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
84 public IStatus
redo(IProgressMonitor monitor
, IAdaptable info
) throws ExecutionException
{
85 // TODO Auto-generated method stub
90 * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
93 public IStatus
undo(IProgressMonitor monitor
, IAdaptable info
) throws ExecutionException
{
94 // TODO Auto-generated method stub