Project

General

Profile

Download (3.69 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2015 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
10

    
11
import java.util.Set;
12
import java.util.UUID;
13

    
14
import org.eclipse.core.runtime.IAdaptable;
15
import org.eclipse.core.runtime.IProgressMonitor;
16
import org.eclipse.swt.widgets.Display;
17

    
18
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
19
import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
20
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
21
import eu.etaxonomy.cdm.api.service.UpdateResult;
22
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
23
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
24
import eu.etaxonomy.taxeditor.event.EventUtility;
25
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
26
import eu.etaxonomy.taxeditor.model.AbstractUtility;
27
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
28
import eu.etaxonomy.taxeditor.navigation.navigator.e4.TreeNodeDropAdapterE4.MovingType;
29
import eu.etaxonomy.taxeditor.operation.CdmUpdateOperation;
30
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
31
import eu.etaxonomy.taxeditor.store.CdmStore;
32

    
33
/**
34
 * @author cmathew
35
 * @date 19 Jun 2015
36
 */
37
public class MoveTaxonOperation extends CdmUpdateOperation implements IPostMoniteredOperationEnabled {
38

    
39
    private final static String LABEL = Messages.RemotingMoveTaxonOperation_MOVE_OP;
40

    
41
    private Set<UUID> taxonNodesToMoveUuid;
42
    private final UUID newParentTreeNodeUuid;
43
    private final MovingType moveToParentNode;
44

    
45
    public MoveTaxonOperation(Object source,
46
            boolean async,
47
            Set<UUID> taxonNodeToMoveUuid,
48
            UUID newParentTreeNodeUuid,
49
            MovingType moveToParentNode) {
50
        super(LABEL, Action.Update, source,async);
51
        taxonNodesToMoveUuid = taxonNodeToMoveUuid;
52
        this.newParentTreeNodeUuid = newParentTreeNodeUuid;
53
        this.moveToParentNode = moveToParentNode;
54
    }
55

    
56
    @Override
57
    protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
58

    
59
        final UUID uuid;
60
        int movingTypeInt = -1;
61
        switch (this.moveToParentNode) {
62
        case CHILD:
63
            movingTypeInt = 0;
64
            break;
65
        case BEHIND:
66
            movingTypeInt = 2;
67
            break;
68
        default:
69
            updateResult = new UpdateResult();
70
            updateResult.setAbort();
71
            updateResult.addException(new Exception("The moving type is invalid.")); //$NON-NLS-1$
72
        }
73

    
74
        if (movingTypeInt >-1){
75
            uuid = CdmApplicationState.getLongRunningTasksService().monitLongRunningTask(taxonNodesToMoveUuid,
76
                newParentTreeNodeUuid, movingTypeInt);
77

    
78
                Display.getDefault().asyncExec(()->{
79
                        AbstractUtility.executeMoniteredOperation("Move Taxon to new parent: ",
80
                                uuid,
81
                                500,
82
                                false,
83
                                MoveTaxonOperation.this,
84
                                null,
85
                                false, true);
86
                });
87
        }
88
        return updateResult;
89
    }
90

    
91
    @Override
92
    public void postOperation(IRemotingProgressMonitor monitor) {
93
        monitor.done();
94
        TaxonNodeDto parentDto = CdmStore.getService(ITaxonNodeService.class).dto(newParentTreeNodeUuid);
95
        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, parentDto);
96
    }
97
}
(6-6/10)