From 7ccbcd94bdbfb3d380605fef397b70c9e371683e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20M=C3=BCller?= Date: Mon, 23 Jul 2012 17:27:54 +0000 Subject: [PATCH] minor refactor in UseObjectManager and bugfix for NPE during application start (#2933) --- .../taxeditor/editor/UseObjectManager.java | 200 +++++++++++------- .../internal/TaxeditorEditorPlugin.java | 3 +- 2 files changed, 127 insertions(+), 76 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/UseObjectManager.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/UseObjectManager.java index d9940520b..b4dafb7e7 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/UseObjectManager.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/UseObjectManager.java @@ -38,6 +38,8 @@ import eu.etaxonomy.taxeditor.store.StoreUtil; * @version 1.0 */ public class UseObjectManager extends ContextListenerAdapter{ + + @Override public void contextRefresh(IProgressMonitor monitor) { monitor.subTask("Refreshing the Uses View"); @@ -54,60 +56,99 @@ public class UseObjectManager extends ContextListenerAdapter{ } private void setupNecessaryItems(IProgressMonitor monitor) { - MarkerType existingMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType); - TermVocabulary stateVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidUseCategoryVocabulary); + + //retrieve terms and vocabularies from db Feature featureUseRecord = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseRecordFeature); Feature featureUseSummary = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseSummaryFeature); - TermVocabulary countryVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidCountryVocabulary); - TermVocabulary plantPartVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidPlantPartVocabulary); - TermVocabulary humanGroupVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidHumanGroupVocabulary); ConversationHolder conversation = CdmStore.createConversation(); - if (existingMarkertype == null) { - existingMarkertype = MarkerType.NewInstance(UsageTermCollection.useMakerLabel, UsageTermCollection.useMakerLabel, null); - existingMarkertype.setUuid( UsageTermCollection.uuidUseMarkerType); - TermVocabulary markerTypeVocabulary = (TermVocabulary)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidMarkersVocabulary)); - markerTypeVocabulary.addTerm(existingMarkertype); - CdmStore.getService(IVocabularyService.class).saveOrUpdate(markerTypeVocabulary); - conversation.commit(true); - } - if (stateVocabulary == null) { - monitor.subTask("stateVocabulary empty"); - URI termSourceUri = null; - try { - termSourceUri = new URI("eu.etaxonomy.cdm.model.description.State"); - } catch (URISyntaxException e) { - e.printStackTrace(); + + + //create use marker type if not exists + createUseMarkerType(conversation); + + //create state vocabulary if not exists + createStateVocabulary(monitor, conversation); + + //create state vocabulary if not exists + createCountryVocabulary(monitor, conversation); + + //create plant part vocabulary + createPlantVocabulary(monitor, conversation); + + //create human group vocabulary + createHumanGroupVocabulary(monitor, conversation); + + if(featureUseRecord == null || featureUseSummary == null) { + TermVocabulary featureVocabulary = (TermVocabulary)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidFeatureVocabulary)); + FeatureTree palmWebFeatureTree = CdmStore.getService(IFeatureTreeService.class).find(UsageTermCollection.uuidPalmWebFeatureTree); + + if (featureUseRecord == null ) { + featureUseRecord = Feature.NewInstance(UsageTermCollection.useRecordFeatureLabel, UsageTermCollection.useRecordFeatureLabel, null); + featureUseRecord.setUuid(UsageTermCollection.uuidUseRecordFeature); + featureUseRecord.isSupportsCategoricalData(); + featureUseRecord.setSupportsCategoricalData(true); + featureVocabulary.addTerm(featureUseRecord); + if (palmWebFeatureTree != null){ + FeatureNode useRecFeatureNode = FeatureNode.NewInstance(featureUseRecord); + palmWebFeatureTree.getRoot().addChild(useRecFeatureNode); + }else{ + StoreUtil.warn(getClass(), "No current feature tree available to add useRecord feature"); + } + } + if (featureUseSummary == null) { + featureUseSummary = Feature.NewInstance(UsageTermCollection.useSummaryFeatureLabel, UsageTermCollection.useSummaryFeatureLabel, null); + featureUseSummary.setUuid(UsageTermCollection.uuidUseSummaryFeature); + featureUseSummary.isSupportsTextData(); + featureUseSummary.setSupportsTextData(true); + featureVocabulary.addTerm(featureUseSummary); + if (palmWebFeatureTree != null){ + FeatureNode useSumFeatureNode = FeatureNode.NewInstance(featureUseSummary); + palmWebFeatureTree.getRoot().addChild(useSumFeatureNode); + }else{ + StoreUtil.warn(getClass(), "No current feature tree available to add use summary feature"); + } + } + + CdmStore.getService(IVocabularyService.class).saveOrUpdate(featureVocabulary); + if (palmWebFeatureTree != null){ + CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(palmWebFeatureTree); } - stateVocabulary = TermVocabulary.NewInstance(UsageTermCollection.useCategoryVocabularyLabel, UsageTermCollection.useCategoryVocabularyLabel, null, termSourceUri); - stateVocabulary.setUuid(UsageTermCollection.uuidUseCategoryVocabulary); - State newDummyState = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); - newDummyState.setUuid(UsageTermCollection.uuidUseCategoryDummy); - State newDummySubCat = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); - newDummySubCat.setUuid(UsageTermCollection.uuidUseSubCategoryDummy); - newDummyState.addIncludes(newDummySubCat); - stateVocabulary.addTerm(newDummyState); - CdmStore.getService(IVocabularyService.class).saveOrUpdate(stateVocabulary); conversation.commit(true); + } - if (countryVocabulary == null) { - monitor.subTask("countryVocabulary empty"); + conversation.close(); + } + + + private void createHumanGroupVocabulary(IProgressMonitor monitor,ConversationHolder conversation) { + TermVocabulary humanGroupVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidHumanGroupVocabulary); + if (humanGroupVocabulary == null){ + monitor.subTask("create human group vocabulary"); URI termSourceUri = null; try { termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier"); } catch (URISyntaxException e) { e.printStackTrace(); } - countryVocabulary = TermVocabulary.NewInstance(UsageTermCollection.countryLabel, UsageTermCollection.countryLabel, null, termSourceUri); - countryVocabulary.setUuid(UsageTermCollection.uuidCountryVocabulary); + humanGroupVocabulary = TermVocabulary.NewInstance(UsageTermCollection.humanGroupLabel, UsageTermCollection.humanGroupLabel, null, termSourceUri); + humanGroupVocabulary.setUuid(UsageTermCollection.uuidHumanGroupVocabulary); Modifier newDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); - newDummyModifier.setUuid(UsageTermCollection.uuidCountryDummy); - countryVocabulary.addTerm(newDummyModifier); - CdmStore.getService(IVocabularyService.class).saveOrUpdate(countryVocabulary); + newDummyModifier.setUuid(UsageTermCollection.uuidHumanGroupDummy); + Modifier newSubDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); + newSubDummyModifier.setUuid(UsageTermCollection.uuidEthnicGroupDummy); + newDummyModifier.addIncludes(newSubDummyModifier); + humanGroupVocabulary.addTerm(newDummyModifier); + CdmStore.getService(IVocabularyService.class).saveOrUpdate(humanGroupVocabulary); conversation.commit(true); } - if (plantPartVocabulary == null) { - monitor.subTask("plantPartVocabulary empty"); + } + + + private void createPlantVocabulary(IProgressMonitor monitor, ConversationHolder conversation) { + TermVocabulary plantPartVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidPlantPartVocabulary); + if (plantPartVocabulary == null){ + monitor.subTask("create plant part vocabulary"); URI termSourceUri = null; try { termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier"); @@ -122,54 +163,63 @@ public class UseObjectManager extends ContextListenerAdapter{ CdmStore.getService(IVocabularyService.class).saveOrUpdate(plantPartVocabulary); conversation.commit(true); } - if (humanGroupVocabulary == null) { - monitor.subTask("humanGroupVocabulary empty"); + } + + + private void createCountryVocabulary(IProgressMonitor monitor, ConversationHolder conversation) { + TermVocabulary countryVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidCountryVocabulary); + if (countryVocabulary == null){ + monitor.subTask("create country vocabulary"); URI termSourceUri = null; try { termSourceUri = new URI("eu.etaxonomy.cdm.model.description.Modifier"); } catch (URISyntaxException e) { e.printStackTrace(); } - humanGroupVocabulary = TermVocabulary.NewInstance(UsageTermCollection.humanGroupLabel, UsageTermCollection.humanGroupLabel, null, termSourceUri); - humanGroupVocabulary.setUuid(UsageTermCollection.uuidHumanGroupVocabulary); + countryVocabulary = TermVocabulary.NewInstance(UsageTermCollection.countryLabel, UsageTermCollection.countryLabel, null, termSourceUri); + countryVocabulary.setUuid(UsageTermCollection.uuidCountryVocabulary); Modifier newDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); - newDummyModifier.setUuid(UsageTermCollection.uuidHumanGroupDummy); - Modifier newSubDummyModifier = Modifier.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); - newSubDummyModifier.setUuid(UsageTermCollection.uuidEthnicGroupDummy); - newDummyModifier.addIncludes(newSubDummyModifier); - humanGroupVocabulary.addTerm(newDummyModifier); - CdmStore.getService(IVocabularyService.class).saveOrUpdate(humanGroupVocabulary); + newDummyModifier.setUuid(UsageTermCollection.uuidCountryDummy); + countryVocabulary.addTerm(newDummyModifier); + CdmStore.getService(IVocabularyService.class).saveOrUpdate(countryVocabulary); conversation.commit(true); } - - if(featureUseRecord == null|| featureUseSummary == null) { - TermVocabulary featureVocabulary = (TermVocabulary)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidFeatureVocabulary)); - FeatureTree palmWebFeatureTree = CdmStore.getService(IFeatureTreeService.class).find(UsageTermCollection.uuidPalmWebFeatureTree); - - if (featureUseRecord == null ) { - featureUseRecord = Feature.NewInstance(UsageTermCollection.useRecordFeatureLabel, UsageTermCollection.useRecordFeatureLabel, null); - featureUseRecord.setUuid(UsageTermCollection.uuidUseRecordFeature); - featureUseRecord.isSupportsCategoricalData(); - featureUseRecord.setSupportsCategoricalData(true); - featureVocabulary.addTerm(featureUseRecord); - FeatureNode useRecFeatureNode = FeatureNode.NewInstance(featureUseRecord); - palmWebFeatureTree.getRoot().addChild(useRecFeatureNode); - } - if (featureUseSummary == null) { - featureUseSummary = Feature.NewInstance(UsageTermCollection.useSummaryFeatureLabel, UsageTermCollection.useSummaryFeatureLabel, null); - featureUseSummary.setUuid(UsageTermCollection.uuidUseSummaryFeature); - featureUseSummary.isSupportsTextData(); - featureUseSummary.setSupportsTextData(true); - featureVocabulary.addTerm(featureUseSummary); - FeatureNode useSumFeatureNode = FeatureNode.NewInstance(featureUseSummary); - palmWebFeatureTree.getRoot().addChild(useSumFeatureNode); + } + + + private void createStateVocabulary(IProgressMonitor monitor, ConversationHolder conversation) { + TermVocabulary stateVocabulary = (TermVocabulary) CdmStore.getService(IVocabularyService.class).find(UsageTermCollection.uuidUseCategoryVocabulary); + if (stateVocabulary == null){ + monitor.subTask("create state vocabulary"); + URI termSourceUri = null; + try { + termSourceUri = new URI("eu.etaxonomy.cdm.model.description.State"); + } catch (URISyntaxException e) { + e.printStackTrace(); } - - CdmStore.getService(IVocabularyService.class).saveOrUpdate(featureVocabulary); - CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(palmWebFeatureTree); + stateVocabulary = TermVocabulary.NewInstance(UsageTermCollection.useCategoryVocabularyLabel, UsageTermCollection.useCategoryVocabularyLabel, null, termSourceUri); + stateVocabulary.setUuid(UsageTermCollection.uuidUseCategoryVocabulary); + State newDummyState = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); + newDummyState.setUuid(UsageTermCollection.uuidUseCategoryDummy); + State newDummySubCat = State.NewInstance(UsageTermCollection.notAvailableLabel, UsageTermCollection.notAvailableLabel, null); + newDummySubCat.setUuid(UsageTermCollection.uuidUseSubCategoryDummy); + newDummyState.addIncludes(newDummySubCat); + stateVocabulary.addTerm(newDummyState); + CdmStore.getService(IVocabularyService.class).saveOrUpdate(stateVocabulary); + conversation.commit(true); + } + } + + + private void createUseMarkerType(ConversationHolder conversation) { + MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType); + if (useMarkertype == null){ + useMarkertype = MarkerType.NewInstance(UsageTermCollection.useMakerLabel, UsageTermCollection.useMakerLabel, null); + useMarkertype.setUuid( UsageTermCollection.uuidUseMarkerType); + TermVocabulary markerTypeVocabulary = (TermVocabulary)CdmStore.getService(IVocabularyService.class).find((UsageTermCollection.uuidMarkersVocabulary)); + markerTypeVocabulary.addTerm(useMarkertype); + CdmStore.getService(IVocabularyService.class).saveOrUpdate(markerTypeVocabulary); conversation.commit(true); - } - conversation.close(); } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/internal/TaxeditorEditorPlugin.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/internal/TaxeditorEditorPlugin.java index 2d4261bfa..648e35a6a 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/internal/TaxeditorEditorPlugin.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/internal/TaxeditorEditorPlugin.java @@ -41,8 +41,9 @@ public class TaxeditorEditorPlugin extends AbstractUIPlugin { super.start(context); EditorStateManager stateManager = new EditorStateManager(); - UseObjectManager useManager = new UseObjectManager(); CdmStore.getContextManager().addContextListener(stateManager); + + UseObjectManager useManager = new UseObjectManager(); CdmStore.getContextManager().addContextListener(useManager); plugin = this; -- 2.34.1