Project

General

Profile

Download (11.4 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.taxeditor.model.ContextListenerAdapter;
29
import eu.etaxonomy.taxeditor.store.CdmStore;
30
import eu.etaxonomy.taxeditor.store.StoreUtil;
31

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

    
123

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

    
160

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

    
189

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

    
217

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

    
244

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