d9940520b63b9eee55840f703c8ebe3b23ecc49e
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / UseObjectManager.java
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 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 @Override
42 public void contextRefresh(IProgressMonitor monitor) {
43 monitor.subTask("Refreshing the Uses View");
44 StoreUtil.warn(getClass(), "Refreshing Uses View warn");
45 setupNecessaryItems(monitor);
46 }
47
48
49 @Override
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);
54 }
55
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);
64
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);
73 }
74 if (stateVocabulary == null) {
75 monitor.subTask("stateVocabulary empty");
76 URI termSourceUri = null;
77 try {
78 termSourceUri = new URI("eu.etaxonomy.cdm.model.description.State");
79 } catch (URISyntaxException e) {
80 e.printStackTrace();
81 }
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);
92 }
93 if (countryVocabulary == null) {
94 monitor.subTask("countryVocabulary empty");
95 URI termSourceUri = null;
96 try {
97 termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier");
98 } catch (URISyntaxException e) {
99 e.printStackTrace();
100 }
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);
108 }
109 if (plantPartVocabulary == null) {
110 monitor.subTask("plantPartVocabulary empty");
111 URI termSourceUri = null;
112 try {
113 termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier");
114 } catch (URISyntaxException e) {
115 e.printStackTrace();
116 }
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);
124 }
125 if (humanGroupVocabulary == null) {
126 monitor.subTask("humanGroupVocabulary empty");
127 URI termSourceUri = null;
128 try {
129 termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier");
130 } catch (URISyntaxException e) {
131 e.printStackTrace();
132 }
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);
143 }
144
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);
148
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);
157 }
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);
166 }
167
168 CdmStore.getService(IVocabularyService.class).saveOrUpdate(featureVocabulary);
169 CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(palmWebFeatureTree);
170 conversation.commit(true);
171
172 }
173 conversation.close();
174 }
175 }