Project

General

Profile

Download (6.11 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.bulkeditor.handler;
12

    
13
import java.util.UUID;
14

    
15
import org.eclipse.core.commands.AbstractHandler;
16
import org.eclipse.core.commands.ExecutionEvent;
17
import org.eclipse.core.commands.ExecutionException;
18
import org.eclipse.jface.viewers.ISelection;
19
import org.eclipse.jface.viewers.IStructuredSelection;
20
import org.eclipse.ui.IEditorInput;
21
import org.eclipse.ui.IEditorPart;
22
import org.eclipse.ui.handlers.HandlerUtil;
23
import org.eclipse.ui.texteditor.IDocumentProvider;
24

    
25
import eu.etaxonomy.cdm.api.service.DeleteResult;
26
import eu.etaxonomy.cdm.api.service.IAgentService;
27
import eu.etaxonomy.cdm.api.service.IGroupService;
28
import eu.etaxonomy.cdm.api.service.INameService;
29
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
30
import eu.etaxonomy.cdm.api.service.IReferenceService;
31
import eu.etaxonomy.cdm.api.service.ITaxonService;
32
import eu.etaxonomy.cdm.api.service.IUserService;
33
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
34
import eu.etaxonomy.cdm.model.common.Group;
35
import eu.etaxonomy.cdm.model.common.User;
36

    
37
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
38
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
39
import eu.etaxonomy.cdm.model.reference.Reference;
40
import eu.etaxonomy.cdm.model.taxon.Synonym;
41
import eu.etaxonomy.cdm.model.taxon.Taxon;
42
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
43
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
44
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;
45
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
46
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
47
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
48

    
49
import eu.etaxonomy.taxeditor.model.MessagingUtils;
50
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
51
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
52
import eu.etaxonomy.taxeditor.store.CdmStore;
53

    
54
/**
55
 * @author n.hoffmann
56
 * @created Mar 11, 2011
57
 * @version 1.0
58
 */
59
public class DeleteHandler extends AbstractHandler {
60

    
61
	/* (non-Javadoc)
62
	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
63
	 */
64
	@Override
65
	public Object execute(ExecutionEvent event) throws ExecutionException {
66
		
67
		if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES)){
68
			ISelection selection = HandlerUtil.getCurrentSelection(event);
69
			
70
			IEditorPart editor = HandlerUtil.getActiveEditor(event);
71
			
72
			IEditorInput input = editor.getEditorInput();
73
			
74
			if((input instanceof IEntityPersistenceService) && (selection instanceof IStructuredSelection)){
75
				
76
				
77
				IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();
78
				LineAnnotationModel model = 
79
						(LineAnnotationModel) provider.getAnnotationModel(input);
80
				
81
				
82
				IStructuredSelection structuredSelection = (IStructuredSelection) selection;
83
				
84
				IEntityPersistenceService persistenceService = (IEntityPersistenceService) input;
85
				
86
				for(Object object : structuredSelection.toList()){
87
					
88
					LineAnnotation annotation = (LineAnnotation) model.getAnnotation(object);
89
					DeleteResult result = new DeleteResult();	
90
					//result.setError();
91
					try {
92
						ICdmApplicationConfiguration controller;
93
						controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
94
						//persistenceService.delete(object);
95
						if (object instanceof SpecimenOrObservationBase){
96
							
97
							IOccurrenceService service = controller.getOccurrenceService();
98
							service.load(((SpecimenOrObservationBase) object).getUuid());
99
							result = service.delete((SpecimenOrObservationBase)object);
100
						} else if (object instanceof Reference){
101
							IReferenceService service = controller.getReferenceService();
102
							service.load(((Reference) object).getUuid());
103
							result = service.delete((Reference)object);
104
						} else if (object instanceof Group){
105
							IGroupService service = controller.getGroupService();
106
							service.load(((Group) object).getUuid());
107
							result = service.delete((Group) object);
108
						}else if (object instanceof User){
109
							IUserService service = controller.getUserService();
110
							service.load(((User) object).getUuid());
111
							result = service.delete((User) object);
112
						} else if (object instanceof TaxonNameBase){
113
							INameService service = controller.getNameService();
114
							service.load(((TaxonNameBase) object).getUuid());
115
							result = service.delete((TaxonNameBase)object);
116
						} else if (object instanceof TaxonBase){
117
							ITaxonService service = controller.getTaxonService();
118
							service.load(((TaxonBase) object).getUuid());
119
							if (object instanceof Taxon){
120
								result = service.deleteTaxon((Taxon)object, null, null);
121
							}else{
122
								result = service.deleteSynonym((Synonym)object, null);
123
							}
124
						} else if (object instanceof TeamOrPersonBase){
125
							IAgentService service = controller.getAgentService();
126
							object = service.load(((TeamOrPersonBase) object).getUuid());
127
							result = service.delete((TeamOrPersonBase)object);
128
						}
129
					} catch (Exception e){
130
						MessagingUtils.messageDialog("Exception occured. Could not delete", getClass(), e.getMessage(), null);
131
					}
132
					if (result.isError()){
133
						if (!result.getExceptions().isEmpty()) {
134
							MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().get(0).getMessage(), null);
135
						}else{
136
							MessagingUtils.messageDialog("Could not delete", getClass(), "The object could not be deleted. An exception occured.", null);
137
							
138
						}
139
					}
140
					if (result.isOk()){
141
						((BulkEditor) editor).removeAnnotatedLine(annotation);
142
						
143
						System.out.println("Test");
144
					}
145
				}				
146
			}
147
		}else{
148
			MessagingUtils.warningDialog("Feature not enabled", getClass(), "Deletion is currently an experimental feature." +
149
					"Enable it via Preferences at your own risk.");
150
		}
151
		
152
		
153
		return null;
154
	}
155

    
156
}
(1-1/7)