Project

General

Profile

Download (9.36 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.MarkerType;
22
import eu.etaxonomy.cdm.model.common.TermVocabulary;
23
import eu.etaxonomy.cdm.model.description.Feature;
24
import eu.etaxonomy.cdm.model.description.FeatureNode;
25
import eu.etaxonomy.cdm.model.description.FeatureTree;
26
import eu.etaxonomy.cdm.model.description.Modifier;
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 objects are present in the database and it will persist the objects that aren't using the CDMLib's services classes. 
35
 * @author a.theys	
36
 * @created mar 13, 2012
37
 * @version 1.0
38
 */
39
public class UseObjectManager extends ContextListenerAdapter{
40
	@Override
41
	public void contextRefresh(IProgressMonitor monitor) {
42
		monitor.subTask("Refreshing the Uses View");
43
		StoreUtil.warn(getClass(), "Refreshing Uses View warn");
44
		setupNecessaryItems(monitor);
45
	}
46
	
47
	
48
	@Override
49
	public void contextStart(IMemento memento, IProgressMonitor monitor) {
50
		monitor.subTask("Starting the Uses View");
51
		StoreUtil.warn(getClass(), "Starting Uses View warn");
52
		setupNecessaryItems(monitor);
53
	}
54
	
55
	private void setupNecessaryItems(IProgressMonitor monitor) {
56
		MarkerType existingMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);
57
		TermVocabulary<State> stateVocabulary =  (TermVocabulary<State>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidUseCategoryVocabulary);
58
		Feature featureUseRecord = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseRecordFeature);
59
		Feature featureUseSummary = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseSummaryFeature);
60
		TermVocabulary<Modifier> countryVocabulary =  (TermVocabulary<Modifier>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidCountryVocabulary);
61
		TermVocabulary<Modifier> plantPartVocabulary =  (TermVocabulary<Modifier>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidPlantPartVocabulary);
62
		TermVocabulary<Modifier> humanGroupVocabulary =  (TermVocabulary<Modifier>) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidHumanGroupVocabulary);
63
		
64
		ConversationHolder conversation = CdmStore.createConversation();
65
		if (existingMarkertype == null) {
66
			existingMarkertype = MarkerType.NewInstance(UsageTermCollection.useMakerLabel, UsageTermCollection.useMakerLabel, null);
67
			existingMarkertype.setUuid( UsageTermCollection.uuidUseMarkerType);
68
			TermVocabulary<MarkerType> markerTypeVocabulary = (TermVocabulary<MarkerType>)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidMarkersVocabulary));
69
			markerTypeVocabulary.addTerm(existingMarkertype);
70
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(markerTypeVocabulary);
71
			conversation.commit(true);
72
		}
73
		if (stateVocabulary == null) {
74
			monitor.subTask("stateVocabulary empty");
75
			URI termSourceUri = null;
76
			try {
77
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.State");
78
			} catch (URISyntaxException e) {
79
				e.printStackTrace();
80
			}
81
			stateVocabulary = TermVocabulary.NewInstance(UsageTermCollection.useCategoryVocabularyLabel, UsageTermCollection.useCategoryVocabularyLabel, null, termSourceUri);
82
			stateVocabulary.setUuid(UsageTermCollection.uuidUseCategoryVocabulary);
83
			State newDummyState = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
84
			newDummyState.setUuid(UsageTermCollection.uuidUseCategoryDummy);
85
			State newDummySubCat = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
86
			newDummySubCat.setUuid(UsageTermCollection.uuidUseSubCategoryDummy);
87
			newDummyState.addIncludes(newDummySubCat);
88
			stateVocabulary.addTerm(newDummyState);
89
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(stateVocabulary);
90
			conversation.commit(true);
91
		}
92
		if (countryVocabulary == null) {
93
			monitor.subTask("countryVocabulary empty");
94
			URI termSourceUri = null;
95
			try {
96
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier");
97
			} catch (URISyntaxException e) {
98
				e.printStackTrace();
99
			}
100
			countryVocabulary = TermVocabulary.NewInstance(UsageTermCollection.countryLabel, UsageTermCollection.countryLabel, null, termSourceUri);
101
			countryVocabulary.setUuid(UsageTermCollection.uuidCountryVocabulary);
102
			Modifier newDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
103
			newDummyModifier.setUuid(UsageTermCollection.uuidCountryDummy);
104
			countryVocabulary.addTerm(newDummyModifier);
105
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(countryVocabulary);
106
			conversation.commit(true);
107
		}
108
		if (plantPartVocabulary == null) {
109
			monitor.subTask("plantPartVocabulary empty");
110
			URI termSourceUri = null;
111
			try {
112
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier");
113
			} catch (URISyntaxException e) {
114
				e.printStackTrace();
115
			}
116
			plantPartVocabulary = TermVocabulary.NewInstance(UsageTermCollection.plantPartLabel, UsageTermCollection.plantPartLabel, null, termSourceUri);
117
			plantPartVocabulary.setUuid(UsageTermCollection.uuidPlantPartVocabulary);
118
			Modifier newDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
119
			newDummyModifier.setUuid(UsageTermCollection.uuidPlantPartDummy);
120
			plantPartVocabulary.addTerm(newDummyModifier);
121
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(plantPartVocabulary);
122
			conversation.commit(true);
123
		}
124
		if (humanGroupVocabulary == null) {
125
			monitor.subTask("humanGroupVocabulary empty");
126
			URI termSourceUri = null;
127
			try {
128
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier");
129
			} catch (URISyntaxException e) {
130
				e.printStackTrace();
131
			}
132
			humanGroupVocabulary = TermVocabulary.NewInstance(UsageTermCollection.humanGroupLabel, UsageTermCollection.humanGroupLabel, null, termSourceUri);
133
			humanGroupVocabulary.setUuid(UsageTermCollection.uuidHumanGroupVocabulary);
134
			Modifier newDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
135
			newDummyModifier.setUuid(UsageTermCollection.uuidHumanGroupDummy);
136
			Modifier newSubDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
137
			newSubDummyModifier.setUuid(UsageTermCollection.uuidEthnicGroupDummy);
138
			newDummyModifier.addIncludes(newSubDummyModifier);
139
			humanGroupVocabulary.addTerm(newDummyModifier);
140
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(humanGroupVocabulary);
141
			conversation.commit(true);
142
		}
143
		
144
		if(featureUseRecord == null|| featureUseSummary == null) {
145
			TermVocabulary<Feature> featureVocabulary = (TermVocabulary<Feature>)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidFeatureVocabulary));
146
			FeatureTree palmWebFeatureTree = CdmStore.getService(IFeatureTreeService.class).find(UsageTermCollection.uuidPalmWebFeatureTree);
147
			
148
			if (featureUseRecord == null ) {
149
				featureUseRecord = Feature.NewInstance(UsageTermCollection.useRecordFeatureLabel, UsageTermCollection.useRecordFeatureLabel, null);
150
				featureUseRecord.setUuid(UsageTermCollection.uuidUseRecordFeature);
151
				featureUseRecord.isSupportsCategoricalData();
152
				featureUseRecord.setSupportsCategoricalData(true);
153
				featureVocabulary.addTerm(featureUseRecord);
154
				FeatureNode useRecFeatureNode = FeatureNode.NewInstance(featureUseRecord);
155
				palmWebFeatureTree.getRoot().addChild(useRecFeatureNode);
156
			}
157
			if (featureUseSummary == null) {
158
				featureUseSummary = Feature.NewInstance(UsageTermCollection.useSummaryFeatureLabel, UsageTermCollection.useSummaryFeatureLabel, null);
159
				featureUseSummary.setUuid(UsageTermCollection.uuidUseSummaryFeature);
160
				featureUseSummary.isSupportsTextData();
161
				featureUseSummary.setSupportsTextData(true);
162
				featureVocabulary.addTerm(featureUseSummary);
163
				FeatureNode useSumFeatureNode = FeatureNode.NewInstance(featureUseSummary);
164
				palmWebFeatureTree.getRoot().addChild(useSumFeatureNode);
165
			}
166
			
167
			CdmStore.getService(IVocabularyService.class).saveOrUpdate(featureVocabulary);
168
			CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(palmWebFeatureTree);
169
			conversation.commit(true);
170
			
171
		}
172
		conversation.close();	
173
	}
174
}
(16-16/17)