2 * Copyright (C) 2011 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.editor
;
12 import java
.net
.URISyntaxException
;
14 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
15 import org
.eclipse
.ui
.IMemento
;
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
;
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.
37 * @created mar 13, 2012
40 public class UseObjectManager
extends ContextListenerAdapter
{
44 public void contextRefresh(IProgressMonitor monitor
) {
45 monitor
.subTask("Refreshing the Uses View");
46 StoreUtil
.warn(getClass(), "Refreshing Uses View warn");
47 setupNecessaryItems(monitor
);
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
);
58 private void setupNecessaryItems(IProgressMonitor monitor
) {
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
);
64 ConversationHolder conversation
= CdmStore
.createConversation();
67 //create use marker type if not exists
68 createUseMarkerType(conversation
);
70 //create state vocabulary if not exists
71 createStateVocabulary(monitor
, conversation
);
73 //create state vocabulary if not exists
74 createCountryVocabulary(monitor
, conversation
);
76 //create plant part vocabulary
77 createPlantVocabulary(monitor
, conversation
);
79 //create human group vocabulary
80 createHumanGroupVocabulary(monitor
, conversation
);
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
);
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
);
96 StoreUtil
.warn(getClass(), "No current feature tree available to add useRecord feature");
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
);
109 StoreUtil
.warn(getClass(), "No current feature tree available to add use summary feature");
113 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(featureVocabulary
);
114 if (palmWebFeatureTree
!= null){
115 CdmStore
.getService(IFeatureTreeService
.class).saveOrUpdate(palmWebFeatureTree
);
117 conversation
.commit(true);
120 conversation
.close();
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;
130 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.DefinedTerm");
131 } catch (URISyntaxException e
) {
136 //humanGroupVocabulary = TermVocabulary.NewInstance(UsageTermCollection.humanGroupLabel, UsageTermCollection.humanGroupLabel, null, termSourceUri);
137 humanGroupVocabulary
= null;
138 humanGroupVocabulary
.setUuid(UsageTermCollection
.uuidHumanGroupVocabulary
);
142 //DefinedTerm newDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
143 DefinedTerm newDummyModifier
= null;
144 newDummyModifier
.setUuid(UsageTermCollection
.uuidHumanGroupDummy
);
148 //DefinedTerm newSubDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
149 DefinedTerm newSubDummyModifier
= null;
150 newSubDummyModifier
.setUuid(UsageTermCollection
.uuidEthnicGroupDummy
);
153 newDummyModifier
.addIncludes(newSubDummyModifier
);
154 humanGroupVocabulary
.addTerm(newDummyModifier
);
155 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(humanGroupVocabulary
);
156 conversation
.commit(true);
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;
167 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.DefinedTerm");
168 } catch (URISyntaxException e
) {
172 //plantPartVocabulary = TermVocabulary.NewInstance(UsageTermCollection.plantPartLabel, UsageTermCollection.plantPartLabel, null, termSourceUri);
173 plantPartVocabulary
= null;
174 plantPartVocabulary
.setUuid(UsageTermCollection
.uuidPlantPartVocabulary
);
178 //DefinedTerm newDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
179 DefinedTerm newDummyModifier
= null;
180 newDummyModifier
.setUuid(UsageTermCollection
.uuidPlantPartDummy
);
181 plantPartVocabulary
.addTerm(newDummyModifier
);
184 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(plantPartVocabulary
);
185 conversation
.commit(true);
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;
196 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.DefinedTerm");
197 } catch (URISyntaxException e
) {
201 //countryVocabulary = TermVocabulary.NewInstance(UsageTermCollection.countryLabel, UsageTermCollection.countryLabel, null, termSourceUri);
202 countryVocabulary
= null;
203 countryVocabulary
.setUuid(UsageTermCollection
.uuidCountryVocabulary
);
207 //DefinedTerm newDummyModifier = DefinedTerm.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null);
208 DefinedTerm newDummyModifier
= null;
209 newDummyModifier
.setUuid(UsageTermCollection
.uuidCountryDummy
);
211 countryVocabulary
.addTerm(newDummyModifier
);
212 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(countryVocabulary
);
213 conversation
.commit(true);
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;
224 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.State");
225 } catch (URISyntaxException e
) {
229 //stateVocabulary = TermVocabulary.NewInstance(UsageTermCollection.useCategoryVocabularyLabel, UsageTermCollection.useCategoryVocabularyLabel, null, termSourceUri);
230 stateVocabulary
= null;
231 stateVocabulary
.setUuid(UsageTermCollection
.uuidUseCategoryVocabulary
);
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);
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);