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
.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
;
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
{
42 public void contextRefresh(IProgressMonitor monitor
) {
43 monitor
.subTask("Refreshing the Uses View");
44 StoreUtil
.warn(getClass(), "Refreshing Uses View warn");
45 setupNecessaryItems(monitor
);
50 public void contextStart(IMemento memento
, IProgressMonitor monitor
) {
51 monitor
.subTask("Starting the Uses View");
52 StoreUtil
.warn(getClass(), "Starting Uses View warn");
53 setupNecessaryItems(monitor
);
56 private void setupNecessaryItems(IProgressMonitor monitor
) {
57 MarkerType existingMarkertype
= (MarkerType
) CdmStore
.getService(ITermService
.class).find(UsageTermCollection
.uuidUseMarkerType
);
58 TermVocabulary
<State
> stateVocabulary
= (TermVocabulary
<State
>) CdmStore
.getService(IVocabularyService
.class).find(UsageTermCollection
.uuidUseCategoryVocabulary
);
59 Feature featureUseRecord
= (Feature
) CdmStore
.getService(ITermService
.class).find(UsageTermCollection
.uuidUseRecordFeature
);
60 Feature featureUseSummary
= (Feature
) CdmStore
.getService(ITermService
.class).find(UsageTermCollection
.uuidUseSummaryFeature
);
61 TermVocabulary
<Modifier
> countryVocabulary
= (TermVocabulary
<Modifier
>) CdmStore
.getService(IVocabularyService
.class).find(UsageTermCollection
.uuidCountryVocabulary
);
62 TermVocabulary
<Modifier
> plantPartVocabulary
= (TermVocabulary
<Modifier
>) CdmStore
.getService(IVocabularyService
.class).find(UsageTermCollection
.uuidPlantPartVocabulary
);
63 TermVocabulary
<Modifier
> humanGroupVocabulary
= (TermVocabulary
<Modifier
>) CdmStore
.getService(IVocabularyService
.class).find(UsageTermCollection
.uuidHumanGroupVocabulary
);
65 ConversationHolder conversation
= CdmStore
.createConversation();
66 if (existingMarkertype
== null) {
67 existingMarkertype
= MarkerType
.NewInstance(UsageTermCollection
.useMakerLabel
, UsageTermCollection
.useMakerLabel
, null);
68 existingMarkertype
.setUuid( UsageTermCollection
.uuidUseMarkerType
);
69 TermVocabulary
<MarkerType
> markerTypeVocabulary
= (TermVocabulary
<MarkerType
>)CdmStore
.getService(IVocabularyService
.class).find((UsageTermCollection
.uuidMarkersVocabulary
));
70 markerTypeVocabulary
.addTerm(existingMarkertype
);
71 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(markerTypeVocabulary
);
72 conversation
.commit(true);
74 if (stateVocabulary
== null) {
75 monitor
.subTask("stateVocabulary empty");
76 URI termSourceUri
= null;
78 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.State");
79 } catch (URISyntaxException e
) {
82 stateVocabulary
= TermVocabulary
.NewInstance(UsageTermCollection
.useCategoryVocabularyLabel
, UsageTermCollection
.useCategoryVocabularyLabel
, null, termSourceUri
);
83 stateVocabulary
.setUuid(UsageTermCollection
.uuidUseCategoryVocabulary
);
84 State newDummyState
= State
.NewInstance(UsageTermCollection
.notAvailableLabel
, UsageTermCollection
.notAvailableLabel
, null);
85 newDummyState
.setUuid(UsageTermCollection
.uuidUseCategoryDummy
);
86 State newDummySubCat
= State
.NewInstance(UsageTermCollection
.notAvailableLabel
, UsageTermCollection
.notAvailableLabel
, null);
87 newDummySubCat
.setUuid(UsageTermCollection
.uuidUseSubCategoryDummy
);
88 newDummyState
.addIncludes(newDummySubCat
);
89 stateVocabulary
.addTerm(newDummyState
);
90 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(stateVocabulary
);
91 conversation
.commit(true);
93 if (countryVocabulary
== null) {
94 monitor
.subTask("countryVocabulary empty");
95 URI termSourceUri
= null;
97 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.Modifier");
98 } catch (URISyntaxException e
) {
101 countryVocabulary
= TermVocabulary
.NewInstance(UsageTermCollection
.countryLabel
, UsageTermCollection
.countryLabel
, null, termSourceUri
);
102 countryVocabulary
.setUuid(UsageTermCollection
.uuidCountryVocabulary
);
103 Modifier newDummyModifier
= Modifier
.NewInstance(UsageTermCollection
.notAvailableLabel
, UsageTermCollection
.notAvailableLabel
, null);
104 newDummyModifier
.setUuid(UsageTermCollection
.uuidCountryDummy
);
105 countryVocabulary
.addTerm(newDummyModifier
);
106 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(countryVocabulary
);
107 conversation
.commit(true);
109 if (plantPartVocabulary
== null) {
110 monitor
.subTask("plantPartVocabulary empty");
111 URI termSourceUri
= null;
113 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.Modifier");
114 } catch (URISyntaxException e
) {
117 plantPartVocabulary
= TermVocabulary
.NewInstance(UsageTermCollection
.plantPartLabel
, UsageTermCollection
.plantPartLabel
, null, termSourceUri
);
118 plantPartVocabulary
.setUuid(UsageTermCollection
.uuidPlantPartVocabulary
);
119 Modifier newDummyModifier
= Modifier
.NewInstance(UsageTermCollection
.notAvailableLabel
, UsageTermCollection
.notAvailableLabel
, null);
120 newDummyModifier
.setUuid(UsageTermCollection
.uuidPlantPartDummy
);
121 plantPartVocabulary
.addTerm(newDummyModifier
);
122 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(plantPartVocabulary
);
123 conversation
.commit(true);
125 if (humanGroupVocabulary
== null) {
126 monitor
.subTask("humanGroupVocabulary empty");
127 URI termSourceUri
= null;
129 termSourceUri
= new URI("eu.etaxonomy.cdm.model.description.Modifier");
130 } catch (URISyntaxException e
) {
133 humanGroupVocabulary
= TermVocabulary
.NewInstance(UsageTermCollection
.humanGroupLabel
, UsageTermCollection
.humanGroupLabel
, null, termSourceUri
);
134 humanGroupVocabulary
.setUuid(UsageTermCollection
.uuidHumanGroupVocabulary
);
135 Modifier newDummyModifier
= Modifier
.NewInstance(UsageTermCollection
.notAvailableLabel
, UsageTermCollection
.notAvailableLabel
, null);
136 newDummyModifier
.setUuid(UsageTermCollection
.uuidHumanGroupDummy
);
137 Modifier newSubDummyModifier
= Modifier
.NewInstance(UsageTermCollection
.notAvailableLabel
, UsageTermCollection
.notAvailableLabel
, null);
138 newSubDummyModifier
.setUuid(UsageTermCollection
.uuidEthnicGroupDummy
);
139 newDummyModifier
.addIncludes(newSubDummyModifier
);
140 humanGroupVocabulary
.addTerm(newDummyModifier
);
141 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(humanGroupVocabulary
);
142 conversation
.commit(true);
145 if(featureUseRecord
== null|| featureUseSummary
== null) {
146 TermVocabulary
<Feature
> featureVocabulary
= (TermVocabulary
<Feature
>)CdmStore
.getService(IVocabularyService
.class).find((UsageTermCollection
.uuidFeatureVocabulary
));
147 FeatureTree palmWebFeatureTree
= CdmStore
.getService(IFeatureTreeService
.class).find(UsageTermCollection
.uuidPalmWebFeatureTree
);
149 if (featureUseRecord
== null ) {
150 featureUseRecord
= Feature
.NewInstance(UsageTermCollection
.useRecordFeatureLabel
, UsageTermCollection
.useRecordFeatureLabel
, null);
151 featureUseRecord
.setUuid(UsageTermCollection
.uuidUseRecordFeature
);
152 featureUseRecord
.isSupportsCategoricalData();
153 featureUseRecord
.setSupportsCategoricalData(true);
154 featureVocabulary
.addTerm(featureUseRecord
);
155 FeatureNode useRecFeatureNode
= FeatureNode
.NewInstance(featureUseRecord
);
156 palmWebFeatureTree
.getRoot().addChild(useRecFeatureNode
);
158 if (featureUseSummary
== null) {
159 featureUseSummary
= Feature
.NewInstance(UsageTermCollection
.useSummaryFeatureLabel
, UsageTermCollection
.useSummaryFeatureLabel
, null);
160 featureUseSummary
.setUuid(UsageTermCollection
.uuidUseSummaryFeature
);
161 featureUseSummary
.isSupportsTextData();
162 featureUseSummary
.setSupportsTextData(true);
163 featureVocabulary
.addTerm(featureUseSummary
);
164 FeatureNode useSumFeatureNode
= FeatureNode
.NewInstance(featureUseSummary
);
165 palmWebFeatureTree
.getRoot().addChild(useSumFeatureNode
);
168 CdmStore
.getService(IVocabularyService
.class).saveOrUpdate(featureVocabulary
);
169 CdmStore
.getService(IFeatureTreeService
.class).saveOrUpdate(palmWebFeatureTree
);
170 conversation
.commit(true);
173 conversation
.close();