Project

General

Profile

« Previous | Next » 

Revision 94465d21

Added by Patrick Plitzner almost 9 years ago

Fix deletion of single reads in Derivative Editor

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java
72 72
                        boolean deepDelete = event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivate.deepDelete");
73 73
                        config.setDeleteChildren(deepDelete);
74 74
                        config.setDeleteMolecularData(deepDelete);
75
                        DeleteDerivateOperation deleteDerivateOperation = new DeleteDerivateOperation(label, undoContext, (CdmBase) value, postOperationEnabled, config);
75
                        DeleteDerivateOperation deleteDerivateOperation = new DeleteDerivateOperation(label, undoContext, (CdmBase) value, (TreeNode) object, postOperationEnabled, config);
76 76
                        AbstractUtility.executeOperation(deleteDerivateOperation);
77 77
                    }
78 78
                }
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java
15 15
import org.eclipse.core.runtime.IProgressMonitor;
16 16
import org.eclipse.core.runtime.IStatus;
17 17
import org.eclipse.core.runtime.Status;
18
import org.eclipse.jface.viewers.TreeNode;
18 19
import org.eclipse.ui.ISaveablePart;
19 20

  
20 21
import eu.etaxonomy.cdm.api.service.DeleteResult;
21 22
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
22 23
import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
23 24
import eu.etaxonomy.cdm.model.common.CdmBase;
25
import eu.etaxonomy.cdm.model.molecular.Sequence;
26
import eu.etaxonomy.cdm.model.molecular.SingleRead;
24 27
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
25 28
import eu.etaxonomy.taxeditor.model.AbstractUtility;
26 29
import eu.etaxonomy.taxeditor.model.MessagingUtils;
......
38 41
public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
39 42

  
40 43
    private final SpecimenDeleteConfigurator deleteConfigurator;
44
    private final TreeNode treeNode;
41 45

  
42
    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element,
46
    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element, TreeNode treeNode,
43 47
            IPostOperationEnabled postOperationEnabled) {
44
        this(label, undoContext, element, postOperationEnabled, new SpecimenDeleteConfigurator());
48
        this(label, undoContext, element, treeNode, postOperationEnabled, new SpecimenDeleteConfigurator());
45 49
    }
46 50

  
47
    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element,
51
    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element, TreeNode treeNode,
48 52
            IPostOperationEnabled postOperationEnabled, SpecimenDeleteConfigurator config) {
49 53
        super(label, undoContext, element, postOperationEnabled);
50 54
        this.deleteConfigurator = config;
55
        this.treeNode = treeNode;
51 56
    }
52 57

  
53 58

  
54
    /*
55
     * (non-Javadoc)
56
     *
57
     * @see
58
     * org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse
59
     * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
60
     */
61 59
    /** {@inheritDoc} */
62 60
    @Override
63 61
    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
......
75 73
                return Status.CANCEL_STATUS;
76 74
            }
77 75
        }
78
        DeleteResult deleteResult = CdmStore.getService(IOccurrenceService.class).deleteDerivateHierarchy(element, deleteConfigurator);
76
        DeleteResult deleteResult;
77
        if(element instanceof SingleRead && treeNode!=null
78
                && treeNode.getValue().equals(element)
79
                && treeNode.getParent()!=null
80
                && treeNode.getParent().getValue() instanceof Sequence){
81
            deleteResult = CdmStore.getService(IOccurrenceService.class).deleteSingleRead((SingleRead)element, (Sequence) treeNode.getParent().getValue());
82
        }
83
        else{
84
            deleteResult = CdmStore.getService(IOccurrenceService.class).deleteDerivateHierarchy(element, deleteConfigurator);
85
        }
79 86
        if(deleteResult.isOk()){
80 87
            if(getPostOperationEnabled() instanceof DerivateView){
81 88
                DerivateView derivateView = (DerivateView) getPostOperationEnabled();
......
96 103
        return Status.OK_STATUS;
97 104
    }
98 105

  
99
    /*
100
     * (non-Javadoc)
101
     *
102
     * @see
103
     * org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse
104
     * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
105
     */
106 106
    /** {@inheritDoc} */
107 107
    @Override
108 108
    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
......
110 110
        return Status.CANCEL_STATUS ;
111 111
    }
112 112

  
113
    /*
114
     * (non-Javadoc)
115
     *
116
     * @see
117
     * org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse
118
     * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
119
     */
120 113
    /** {@inheritDoc} */
121 114
    @Override
122 115
    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {

Also available in: Unified diff