Project

General

Profile

Download (5.26 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
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.
9
*/
10

    
11
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
12

    
13
import org.eclipse.core.commands.ExecutionException;
14
import org.eclipse.core.commands.operations.IUndoContext;
15
import org.eclipse.core.runtime.IAdaptable;
16
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.Status;
19

    
20
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
21
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
22
import eu.etaxonomy.cdm.api.service.UpdateResult;
23
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
24
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
25
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
26
import eu.etaxonomy.cdm.model.taxon.Taxon;
27
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
28
import eu.etaxonomy.taxeditor.model.MessagingUtils;
29
import eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin;
30
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
31
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
32
import eu.etaxonomy.taxeditor.store.CdmStore;
33

    
34
/**
35
 * <p>ChangeAcceptedTaxonToSynonymOperation class.</p>
36
 *
37
 * @author n.hoffmann
38
 * @created Jan 4, 2010
39
 * @version 1.0
40
 */
41
public class ChangeAcceptedTaxonToSynonymOperation extends
42
	DeleteOperation {
43

    
44
	private final TaxonNode newAcceptedTaxonNode;
45
	private final ICdmEntitySessionEnabled cdmEntitySessionEnabled;
46

    
47

    
48
	//private TaxonNode oldTaxonNode;
49

    
50
	/**
51
	 * <p>Constructor for ChangeAcceptedTaxonToSynonymOperation.</p>
52
	 *
53
	 * @param label a {@link java.lang.String} object.
54
	 * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
55
	 * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
56
	 * @param oldTaxonNode a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
57
	 * @param newAcceptedTaxonNode a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
58
	 * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object.
59
	 */
60
	public ChangeAcceptedTaxonToSynonymOperation(String label,
61
			IUndoContext undoContext,
62
			ITaxonTreeNode oldTaxonNode,
63
			TaxonNode newAcceptedTaxonNode,
64
			IPostOperationEnabled postOperationEnabled,
65
			IConversationEnabled conversationEnabled,
66
            ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
67
		super(label, undoContext, oldTaxonNode, new TaxonDeletionConfigurator(),postOperationEnabled, conversationEnabled, cdmEntitySessionEnabled);
68
		this.newAcceptedTaxonNode = newAcceptedTaxonNode;
69
		this.cdmEntitySessionEnabled = cdmEntitySessionEnabled;
70
	}
71

    
72

    
73
	/* (non-Javadoc)
74
	 * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
75
	 */
76
	/** {@inheritDoc} */
77
	@Override
78
	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
79
			throws ExecutionException {
80

    
81
		monitor.worked(20);
82
		bind();
83

    
84
    	Taxon oldTaxon = HibernateProxyHelper.deproxy(((TaxonNode) taxonNode).getTaxon(), Taxon.class);
85
    	Taxon newAcceptedTaxon = HibernateProxyHelper.deproxy(newAcceptedTaxonNode.getTaxon(), Taxon.class);
86

    
87
		try {
88
		    UpdateResult result = CdmStore.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode(taxonNode.getUuid(), newAcceptedTaxonNode.getUuid(), null, null, null);
89

    
90

    
91
		    if (!result.getExceptions().isEmpty() && result.isOk()){
92
		    	String separator = ", ";
93
			    String exceptionString = "";
94
			    int count = result.getExceptions().size();
95
			    int n = 0;
96
			    for (Exception exception : result.getExceptions()) {
97
			        n++;
98
		            exceptionString += exception.getLocalizedMessage();
99
		            if (n<count){
100
		                exceptionString += separator;
101
		            }
102
		        }
103

    
104
		    	MessagingUtils.informationDialog("Synonym created but taxon deletion not possible.", exceptionString);
105
		    } else if (result.isAbort() || result.isError()){
106
		    	MessagingUtils.errorDialog("Synonym creation not possible", null, result.toString(), TaxeditorNavigationPlugin.PLUGIN_ID, null, true);
107
		    }
108
		} catch (IllegalArgumentException e) {
109
            MessagingUtils.errorDialog("Operation failed", this, e.getMessage(), TaxeditorNavigationPlugin.PLUGIN_ID, e, false);
110
            return Status.CANCEL_STATUS;
111
        }
112

    
113
		monitor.worked(40);
114

    
115
		return postExecute(oldTaxon);
116
	}
117

    
118
	/* (non-Javadoc)
119
	 * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
120
	 */
121
	/** {@inheritDoc} */
122
	@Override
123
	public IStatus redo(IProgressMonitor monitor, IAdaptable info)
124
			throws ExecutionException {
125
		// TODO Auto-generated method stub
126
		return null;
127
	}
128

    
129
	/* (non-Javadoc)
130
	 * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
131
	 */
132
	/** {@inheritDoc} */
133
	@Override
134
	public IStatus undo(IProgressMonitor monitor, IAdaptable info)
135
			throws ExecutionException {
136
		// TODO Auto-generated method stub
137
		return null;
138
	}
139
}
(1-1/9)