Project

General

Profile

Download (11.5 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2011 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.editor;
10

    
11
import java.net.URI;
12
import java.net.URISyntaxException;
13

    
14
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.ui.IMemento;
16

    
17
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
18
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
19
import eu.etaxonomy.cdm.api.service.ITermService;
20
import eu.etaxonomy.cdm.api.service.IVocabularyService;
21
import eu.etaxonomy.cdm.model.common.DefinedTerm;
22
import eu.etaxonomy.cdm.model.common.MarkerType;
23
import eu.etaxonomy.cdm.model.common.TermVocabulary;
24
import eu.etaxonomy.cdm.model.description.Feature;
25
import eu.etaxonomy.cdm.model.description.FeatureNode;
26
import eu.etaxonomy.cdm.model.description.FeatureTree;
27
import eu.etaxonomy.cdm.model.description.State;
28
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
29
import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
30
import eu.etaxonomy.taxeditor.store.CdmStore;
31
import eu.etaxonomy.taxeditor.store.StoreUtil;
32

    
33
/**
34
 * The context listener will call this class when the uses view is being loaded.
35
 * It checks if the uses view's necessary terms are present in the database. 
36
 * It will persist the terms that aren't present, using the CDMLib's services classes. 
37
 * @author a.theys	
38
 * @created mar 13, 2012
39
 * @version 1.0
40
 */
41
public class UseObjectManager extends ContextListenerAdapter{
42
	
43
	
44
	@Override
45
	public void contextRefresh(IProgressMonitor monitor) {
46
		monitor.subTask("Refreshing the Uses View");
47
		StoreUtil.warn(getClass(), "Refreshing Uses View warn");
48
		setupNecessaryItems(monitor);
49
	}
50
	
51
	
52
	@Override
53
	public void contextStart(IMemento memento, IProgressMonitor monitor) {
54
		monitor.subTask("Starting the Uses View");
55
		StoreUtil.warn(getClass(), "Starting Uses View warn");
56
		setupNecessaryItems(monitor);
57
	}
58
	
59
	private void setupNecessaryItems(IProgressMonitor monitor) {
60
		
61
		//retrieve terms and vocabularies from db
62
		Feature featureUseRecord = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseRecordFeature);
63
		Feature featureUseSummary = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseSummaryFeature);
64
		
65
		ConversationHolder conversation = CdmStore.createConversation();
66
		
67
		
68
		//create use marker type if not exists
69
		createUseMarkerType(conversation);
70
		
71
		//create state vocabulary if not exists
72
		createStateVocabulary(monitor, conversation);
73
			
74
		//create state vocabulary if not exists
75
		createCountryVocabulary(monitor, conversation);
76
		
77
		//create plant part vocabulary
78
		createPlantVocabulary(monitor, conversation);
79
		
80
		//create human group vocabulary
81
		createHumanGroupVocabulary(monitor, conversation);
82
		
83
		if(featureUseRecord == null || featureUseSummary == null) {
84
			TermVocabulary<Feature> featureVocabulary = (TermVocabulary<Feature>)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidFeatureVocabulary));
85
			FeatureTree palmWebFeatureTree = CdmStore.getService(IFeatureTreeService.class).find(UsageTermCollection.uuidPalmWebFeatureTree);
86
			
87
			if (featureUseRecord == null ) {
88
				featureUseRecord = Feature.NewInstance(UsageTermCollection.useRecordFeatureLabel, UsageTermCollection.useRecordFeatureLabel, null);
89
				featureUseRecord.setUuid(UsageTermCollection.uuidUseRecordFeature);
90
				featureUseRecord.isSupportsCategoricalData();
91
				featureUseRecord.setSupportsCategoricalData(true);
92
				featureVocabulary.addTerm(featureUseRecord);
93
				if (palmWebFeatureTree != null){
94
					FeatureNode useRecFeatureNode = FeatureNode.NewInstance(featureUseRecord);
95
					palmWebFeatureTree.getRoot().addChild(useRecFeatureNode);
96
				}else{
97
					StoreUtil.warn(getClass(), "No current feature tree available to add useRecord feature");
98
				}
99
			}
100
			if (featureUseSummary == null) {
101
				featureUseSummary = Feature.NewInstance(UsageTermCollection.useSummaryFeatureLabel, UsageTermCollection.useSummaryFeatureLabel, null);
102
				featureUseSummary.setUuid(UsageTermCollection.uuidUseSummaryFeature);
103
				featureUseSummary.isSupportsTextData();
104
				featureUseSummary.setSupportsTextData(true);
105
				featureVocabulary.addTerm(featureUseSummary);
106
				if (palmWebFeatureTree != null){
107
					FeatureNode useSumFeatureNode = FeatureNode.NewInstance(featureUseSummary);
108
					palmWebFeatureTree.getRoot().addChild(useSumFeatureNode);
109
				}else{
110
					StoreUtil.warn(getClass(), "No current feature tree available to add use summary feature");
111
				}
112
			}
113
			
114
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(featureVocabulary);
115
			if (palmWebFeatureTree != null){
116
				CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(palmWebFeatureTree);
117
			}
118
			conversation.commit(true);
119
			
120
		}
121
		conversation.close();	
122
	}
123

    
124

    
125
	private void createHumanGroupVocabulary(IProgressMonitor monitor,ConversationHolder conversation) {
126
		TermVocabulary<DefinedTerm> humanGroupVocabulary =  (TermVocabulary<DefinedTerm>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidHumanGroupVocabulary);
127
		if (humanGroupVocabulary == null){
128
			monitor.subTask("create human group vocabulary");
129
			URI termSourceUri = null;
130
			try {
131
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.DefinedTerm");
132
			} catch (URISyntaxException e) {
133
				e.printStackTrace();
134
			}
135
			
136
			//FIXME:3.3MC----
137
			//humanGroupVocabulary = TermVocabulary.NewInstance(UsageTermCollection.humanGroupLabel, UsageTermCollection.humanGroupLabel, null, termSourceUri);
138
			humanGroupVocabulary = null;
139
			humanGroupVocabulary.setUuid(UsageTermCollection.uuidHumanGroupVocabulary);
140
			//FIXME:3.3MC----
141
			
142
			//FIXME:3.3MC----
143
			//DefinedTerm newDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
144
			DefinedTerm newDummyModifier = null;
145
			newDummyModifier.setUuid(UsageTermCollection.uuidHumanGroupDummy);
146
			//FIXME:3.3MC----
147
			
148
			//FIXME:3.3MC----
149
			//DefinedTerm newSubDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
150
			DefinedTerm newSubDummyModifier = null;
151
			newSubDummyModifier.setUuid(UsageTermCollection.uuidEthnicGroupDummy);
152
			//FIXME:3.3MC----
153
			
154
			newDummyModifier.addIncludes(newSubDummyModifier);
155
			humanGroupVocabulary.addTerm(newDummyModifier);
156
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(humanGroupVocabulary);
157
			conversation.commit(true);
158
		}
159
	}
160

    
161

    
162
	private void createPlantVocabulary(IProgressMonitor monitor, ConversationHolder conversation) {
163
		TermVocabulary<DefinedTerm> plantPartVocabulary =  (TermVocabulary<DefinedTerm>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidPlantPartVocabulary);
164
		if (plantPartVocabulary == null){
165
			monitor.subTask("create plant part vocabulary");
166
			URI termSourceUri = null;
167
			try {
168
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.DefinedTerm");
169
			} catch (URISyntaxException e) {
170
				e.printStackTrace();
171
			}
172
			//FIXME:3.3MC----
173
			//plantPartVocabulary = TermVocabulary.NewInstance(UsageTermCollection.plantPartLabel, UsageTermCollection.plantPartLabel, null, termSourceUri);
174
			plantPartVocabulary = null;
175
			plantPartVocabulary.setUuid(UsageTermCollection.uuidPlantPartVocabulary);
176
			//FIXME:3.3MC----
177
			
178
			//FIXME:3.3MC----
179
			//DefinedTerm newDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
180
			DefinedTerm newDummyModifier = null;
181
			newDummyModifier.setUuid(UsageTermCollection.uuidPlantPartDummy);
182
			plantPartVocabulary.addTerm(newDummyModifier);
183
			//FIXME:3.3MC----
184
			
185
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(plantPartVocabulary);
186
			conversation.commit(true);
187
		}
188
	}
189

    
190

    
191
	private void createCountryVocabulary(IProgressMonitor monitor, ConversationHolder conversation) {
192
		TermVocabulary<DefinedTerm> countryVocabulary =  (TermVocabulary<DefinedTerm>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidCountryVocabulary);
193
		if (countryVocabulary == null){
194
			monitor.subTask("create country vocabulary");
195
			URI termSourceUri = null;
196
			try {
197
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.DefinedTerm");
198
			} catch (URISyntaxException e) {
199
				e.printStackTrace();
200
			}
201
			//FIXME:3.3MC----
202
			//countryVocabulary = TermVocabulary.NewInstance(UsageTermCollection.countryLabel, UsageTermCollection.countryLabel, null, termSourceUri);
203
			countryVocabulary = null;
204
			countryVocabulary.setUuid(UsageTermCollection.uuidCountryVocabulary);
205
			//FIXME:3.3MC----
206
			
207
			//FIXME:3.3MC----
208
			//DefinedTerm newDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
209
			DefinedTerm newDummyModifier = null;
210
			newDummyModifier.setUuid(UsageTermCollection.uuidCountryDummy);
211
			//FIXME:3.3MC----
212
			countryVocabulary.addTerm(newDummyModifier);
213
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(countryVocabulary);
214
			conversation.commit(true);
215
		}
216
	}
217

    
218

    
219
	private void createStateVocabulary(IProgressMonitor monitor, ConversationHolder conversation) {
220
		TermVocabulary<State> stateVocabulary =  (TermVocabulary<State>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidUseCategoryVocabulary);
221
		if (stateVocabulary == null){
222
			monitor.subTask("create state vocabulary");
223
			URI termSourceUri = null;
224
			try {
225
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.State");
226
			} catch (URISyntaxException e) {
227
				e.printStackTrace();
228
			}
229
			//FIXME:3.3MC----
230
			//stateVocabulary = TermVocabulary.NewInstance(UsageTermCollection.useCategoryVocabularyLabel, UsageTermCollection.useCategoryVocabularyLabel, null, termSourceUri);
231
			stateVocabulary = null;
232
			stateVocabulary.setUuid(UsageTermCollection.uuidUseCategoryVocabulary);
233
			//FIXME:3.3MC----
234
			State newDummyState = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
235
			newDummyState.setUuid(UsageTermCollection.uuidUseCategoryDummy);
236
			State newDummySubCat = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
237
			newDummySubCat.setUuid(UsageTermCollection.uuidUseSubCategoryDummy);
238
			newDummyState.addIncludes(newDummySubCat);
239
			stateVocabulary.addTerm(newDummyState);
240
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(stateVocabulary);
241
			conversation.commit(true);
242
		}
243
	}
244

    
245

    
246
	private void createUseMarkerType(ConversationHolder conversation) {
247
		MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);
248
		if (useMarkertype == null){
249
			useMarkertype = MarkerType.NewInstance(UsageTermCollection.useMakerLabel, UsageTermCollection.useMakerLabel, null);
250
			useMarkertype.setUuid( UsageTermCollection.uuidUseMarkerType);
251
			TermVocabulary<MarkerType> markerTypeVocabulary = (TermVocabulary<MarkerType>)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidMarkersVocabulary));
252
			markerTypeVocabulary.addTerm(useMarkertype);
253
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(markerTypeVocabulary);
254
			conversation.commit(true);
255
		}
256
	}
257
}
(16-16/17)