merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 16 Mar 2015 13:26:16 +0000 (13:26 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 16 Mar 2015 13:26:16 +0000 (13:26 +0000)
218 files changed:
.gitattributes
eu.etaxonomy.taxeditor.application/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.application/build.properties
eu.etaxonomy.taxeditor.application/icons/check.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.application/plugin.xml
eu.etaxonomy.taxeditor.application/pom.xml
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/ApplicationUtil.java
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/ApplicationWorkbenchAdvisor.java
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/ApplicationWorkbenchWindowAdvisor.java
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.bulkeditor/plugin.xml
eu.etaxonomy.taxeditor.bulkeditor/pom.xml
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorQuery.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/PropertyTester.java [deleted file]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorPropertyTester.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInputType.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/NameCreator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/ReferenceCreator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/TaxonCreator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/preference/BulkEditorMarkerPreferencePage.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java
eu.etaxonomy.taxeditor.editor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_de.properties
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_en.properties
eu.etaxonomy.taxeditor.editor/build.properties
eu.etaxonomy.taxeditor.editor/icons/check.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/icons/deep-delete-16x16-32.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/pom.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/internal/TaxeditorEditorPlugin.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicGroupOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicalGroupBasionymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/MoveSynonymToAnotherAcceptedTaxonOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/MarkerManager.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationContextListener.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationDaemon.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/edit/DistributionEditingSupport.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/listener/ChecklistDropdownSelectionListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCdmRepository.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCollectionService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/CreateDescriptionHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteSpecimenDescriptionOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/AddImageGalleryHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/DeleteMediaOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityClassMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityIdMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/InvalidValueMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyDescriptionMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyFieldNameMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyTypeNameMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidationProblemsView.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorClassMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorMessageMarkerField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.feature.platform/feature.xml
eu.etaxonomy.taxeditor.feature.platform/pom.xml
eu.etaxonomy.taxeditor.feature/feature.xml
eu.etaxonomy.taxeditor.feature/pom.xml
eu.etaxonomy.taxeditor.help/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.help/pom.xml
eu.etaxonomy.taxeditor.navigation/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.navigation/build.properties
eu.etaxonomy.taxeditor.navigation/icons/check.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.navigation/plugin.xml
eu.etaxonomy.taxeditor.navigation/pom.xml
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TreeNodeDropAdapterAssistant.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/EditHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/TaxonParameterConverter.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java
eu.etaxonomy.taxeditor.printpublisher/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.printpublisher/pom.xml
eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle_de.properties
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle_en.properties
eu.etaxonomy.taxeditor.store/build.properties
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/pom.xml
eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/AbcdImportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ClassificationChooserWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExcelNormalExplicitTaxaImportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/GenericConfiguratorWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ImportFromFileDataSourceWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/SpecimenCdmExcelImportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDerivedUnitFacadePart.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/MessagingUtils.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationCloningWizardPage.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationGelPhotoWizardPage.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationGeneralWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewAmplificationWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultFeatureTreePreferenecs.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageEditorPreferencePage.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultLanguageEditorPreferencePage.java with 95% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageRepresentationPreferencePage.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguagePreferencePage.java with 94% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencePropertyTester.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/AbstractMatchingPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/AbstractMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AmplificationSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LanguageStringWithLabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/OriginalLabelDataElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/OriginalLabelDataField.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/PasswordWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/DistributionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AuthorshipDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenHierarchyDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenHierarchyDetailSection.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java with 51% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AbstractSampleDesignationDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationCloningDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationCloningDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationGelPhotoCollectionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationGelPhotoDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationTextDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SingleReadGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/TissueSampleGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/UpdateDataSourceHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateContentProvider.java [moved from eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java with 90% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java
eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product
eu.etaxonomy.taxeditor/pom.xml
pom.xml

index 8674896df85fea719f9b3c424423335447c78c53..f62d61671fdb7c2b97cd9e393a16e5b151602bf7 100644 (file)
@@ -13,6 +13,7 @@ eu.etaxonomy.taxeditor.application/icons/256color_16x16.gif -text
 eu.etaxonomy.taxeditor.application/icons/256color_32x32.gif -text
 eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif -text
 eu.etaxonomy.taxeditor.application/icons/256color_48x48.ico -text
+eu.etaxonomy.taxeditor.application/icons/check.png -text
 eu.etaxonomy.taxeditor.application/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.application/icons/specimen_derivate-16x16-32.png -text
 eu.etaxonomy.taxeditor.application/plugin.xml -text
@@ -31,6 +32,7 @@ eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/SaveAllH
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/SaveHandler.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/TaxonomicEditorPlugin.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/BulkEditing.java -text
+eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/Default.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/DerivatePerspective.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/PolytomousKey.java -text
@@ -80,7 +82,6 @@ eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkedito
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorConstants.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortProvider.java -text
-eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/PropertyTester.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorPropertyTester.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DeleteObjectContributionItem.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DynamicMarkerTypeEditingMenu.java -text
@@ -357,6 +358,8 @@ eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_en.properties -text
 eu.etaxonomy.taxeditor.editor/build.properties -text
 eu.etaxonomy.taxeditor.editor/icons/address-book-new.png -text
 eu.etaxonomy.taxeditor.editor/icons/camera-photo.png -text
+eu.etaxonomy.taxeditor.editor/icons/check.png -text
+eu.etaxonomy.taxeditor.editor/icons/deep-delete-16x16-32.png -text
 eu.etaxonomy.taxeditor.editor/icons/derivate_view-16x16-32.png -text
 eu.etaxonomy.taxeditor.editor/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.editor/icons/emblem-photos.png -text
@@ -373,6 +376,7 @@ eu.etaxonomy.taxeditor.editor/plugin.xml -text
 eu.etaxonomy.taxeditor.editor/pom.xml -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/CdmDataTransfer.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/ChooseFromMultipleTaxonNodesDialog.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorStateManager.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/IDropTargetable.java -text
@@ -397,8 +401,10 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handle
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenChecklistEditorHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenParentHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveAllHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveTaxonHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/ToggleInsertOverwriteHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/ToggleLeftRightInsertionHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/create/NewNameHandler.java -text
@@ -489,8 +495,12 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/o
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/MoveSynonymToAnotherAcceptedTaxonOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/RemoveHomotypicalGroupBasionymOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/SwapSynonymAndAcceptedOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/MarkerManager.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationContextListener.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationDaemon.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistContentProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistEditorComparator.java -text
@@ -547,7 +557,6 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java -text
-eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java -text
@@ -556,6 +565,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/DerivateViewContextMenu.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/SingleReadSequenceContextMenu.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java -text
@@ -580,6 +590,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateSpecimenDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteDescriptionElementOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteSpecimenDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/EditInXper2Handler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionElementsOperation.java -text
@@ -608,6 +619,15 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/u
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateTaxonUseOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityClassMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityIdMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/InvalidValueMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyDescriptionMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyFieldNameMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyTypeNameMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidationProblemsView.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorClassMarkerField.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorMessageMarkerField.java -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR430_JR-P01.ab1 -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR444_JR-P05.ab1 -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/TaonDescriptionEditor.screen -text
@@ -934,6 +954,7 @@ eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/messages.properties -text
 eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/messages_de.properties -text
 eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/messages_en.properties -text
 eu.etaxonomy.taxeditor.navigation/build.properties -text
+eu.etaxonomy.taxeditor.navigation/icons/check.png -text
 eu.etaxonomy.taxeditor.navigation/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.navigation/icons/preferences-system-windows.png -text
 eu.etaxonomy.taxeditor.navigation/icons/system-search.png -text
@@ -977,10 +998,12 @@ eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigatio
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/CopyHandler.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/EditHandler.java -text
+eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/NewClassificationHandler.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/NewTaxonNodeHandler.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/RefreshTreeHandler.java -text
+eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/TaxonParameterConverter.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/ChangeAcceptedTaxonToSynonymOperation.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/CopyOperation.java -text
 eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java -text
@@ -1202,6 +1225,7 @@ eu.etaxonomy.taxeditor.store/icons/web.gif -text
 eu.etaxonomy.taxeditor.store/p2.inf -text
 eu.etaxonomy.taxeditor.store/plugin.xml -text
 eu.etaxonomy.taxeditor.store/pom.xml -text
+eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceH2WizardPage.java -text
@@ -1254,6 +1278,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/Abst
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/AbstractExcelImportWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/AbstractExportWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/AbstractImportWizard.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ClassificationChooserWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/CsvExportWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/DarwinCoreArchiveExportWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/EndnoteImportWizard.java -text
@@ -1290,6 +1315,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/FeatureN
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ICdmEditorHandle.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDataChangeBehavior.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDerivedUnitFacadePart.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDirtyMarkable.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IElementHasDetails.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartChangeListener.java -text
@@ -1311,8 +1337,6 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonTra
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/TextHelper.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/TimeHelper.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AbstractNewEntityWizard.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationCloningWizardPage.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationGelPhotoWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationGeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/ExternalReferenceServiceWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewAmplificationWizard.java -text
@@ -1343,12 +1367,12 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHa
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferences.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/ChecklistEditorGeneralPreference.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultFeatureTreePreferenecs.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultLanguageEditorPreferencePage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DescriptionPreferences.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/FeatureTreePreferences.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/InitNomenclaturalCodePrefDialog.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguagePreferencePage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageEditorPreferencePage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageRepresentationPreferencePage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MatchingPreferences.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MediaPreferences.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MobotOpenUrlPreferences.java -text
@@ -1406,6 +1430,10 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermC
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/DefaultLanguageDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/LoginDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/UriDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmEnumSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmResourceSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AgentSelectionDialog.java -text
@@ -1482,7 +1510,6 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grant
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/DerivedUnitGeneralDetailElementMVC.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/GeographicPointElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/OriginalLabelDataField.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermComboController.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java -text
@@ -1575,6 +1602,8 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/gro
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupSelectionElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/GeographicalScopeDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailSection.java -text
@@ -1624,8 +1653,6 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralWizardPage.java -text
@@ -1649,6 +1676,10 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SourceCollectionDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenHierarchyDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenHierarchyDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenAbstractDeterminationEventDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenCurrentDeterminationDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenDetailElement.java -text
@@ -1753,6 +1784,8 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractC
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmEditorViewPart.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmViewPart.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractSplitableViewPart.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/CdmDataSourceContentProvider.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/CdmDataSourceLabelProvider.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/CdmDataSourceViewPart.java -text
@@ -1768,6 +1801,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasourc
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/DeleteDataSourceHandler.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/EditDataSourceHandler.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/UpdateDataSourceHandler.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateContentProvider.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchComposite.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java -text
index c0a1e5305a51085dc4c3b011580435e32ee755ba..99055f26e7ed42234ec716f3c3e5083444ae2fa8 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Application
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.application;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin
 Bundle-Vendor: EDIT
 Bundle-Localization: OSGI-INF/l10n/plugin
index cccbe07e1e94c4fa7d2929f279a462e51ebf34a3..defad674da438a4d302c77b664c0edbba446ad19 100644 (file)
@@ -7,6 +7,6 @@ bin.includes = META-INF/,\
                plugin_customization.ini,\
                icons/,\
                OSGI-INF/l10n/plugin.properties,\
-               splash.bmp,\              
                OSGI-INF/l10n/plugin_de.properties,\
-               OSGI-INF/l10n/plugin_en.properties
+               OSGI-INF/l10n/plugin_en.properties,\
+               splash.bmp,\              
diff --git a/eu.etaxonomy.taxeditor.application/icons/check.png b/eu.etaxonomy.taxeditor.application/icons/check.png
new file mode 100644 (file)
index 0000000..d776b66
Binary files /dev/null and b/eu.etaxonomy.taxeditor.application/icons/check.png differ
index 1e27e9f4731338fb7e5778ef1bc9b501eb254c58..b74e209ce9d93b65fa3e04ed7461db32d7388015 100644 (file)
             id="eu.etaxonomy.taxeditor.application.perspective.derivates"\r
             name="%perspective.name.2">\r
       </perspective>\r
+      <perspective\r
+            class="eu.etaxonomy.taxeditor.perspective.ChecklistPerspective"\r
+            icon="icons/check.png"\r
+            id="eu.etaxonomy.taxeditor.perspective.checklistperspective"\r
+            name="Checklist">\r
+      </perspective>\r
      \r
    </extension>\r
    <!--extension\r
index eade0b2f589707db8585fb8e4915d315235c0840..435e7cd564d081c7cfcd170cd541597a845b5d44 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>3.4.0-SNAPSHOT</version>
+    <version>3.4.1-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index 9d80b139ca1f9133fc06dbe7791a89a0af6bc847..a587a61f47b7b02c80f7480154d0c0944d7ce7f4 100644 (file)
@@ -28,7 +28,7 @@ public class ApplicationUtil extends AbstractUtility {
     /**
      * Prefix to declare the version as beta
      */
-    private static final String BETA_PREFIX = "[BETA]";
+    private static final String BETA_PREFIX = "[Beta]";
 
     /**
      * @return
index fc694b221e245fe16e40f73088487d655260e098..feff393fb86851a12a716c449be9b6e1a979f86c 100644 (file)
@@ -104,14 +104,14 @@ public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
                        //        leading to a recursive infinite loop of :
                        //        initial exception thrown -> status handling -> dialog opening + logging of status ->
                        //        status handling -> dialog opening + logging of status ... and so on
-                       if(t != null && t instanceof RuntimeException) {
+                       if(t != null && t instanceof RuntimeException && !t.getMessage().equals("Widget is disposed")) {
                                MessagingUtils.errorDialog("Unexpected error",
                                                null,
                                                MessagingUtils.UNEXPECTED_ERROR_MESSAGE,
                                                statusAdapter.getStatus().getPlugin(),
                                                t,
                                                true);
-                       }
+                       }
                    }
                }
        }
index 5e597395afce03c467d8f912fc5c1d0419fa6869..a4d2e6816dc5452ab1f36ae1b54eeadeb5d4852f 100644 (file)
@@ -7,6 +7,7 @@ import org.eclipse.ui.application.IActionBarConfigurer;
 import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
 import org.eclipse.ui.application.WorkbenchWindowAdvisor;
 
+import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.dialog.LoginDialog;
@@ -48,6 +49,8 @@ public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
                configurer.setShowPerspectiveBar(true);
                configurer.setTitle("EDIT Taxonomic Editor " + ApplicationUtil.getVersion());
                configurer.setShowProgressIndicator(true);
+
+               CdmDataSourceRepository.createDefaultH2DataSource();
        }
 
        /**
@@ -57,6 +60,8 @@ public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
     public void postWindowOpen() {
                PreferencesUtil.checkNomenclaturalCode();
 
+
+
                if(PreferencesUtil.shouldConnectAtStartUp()) {
             CdmStore.connect();
         }
diff --git a/eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java b/eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java
new file mode 100644 (file)
index 0000000..8c7a86a
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy 
+ * http://www.e-taxonomy.eu
+ * 
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+
+package eu.etaxonomy.taxeditor.perspective;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
+import eu.etaxonomy.taxeditor.editor.view.media.MediaViewPart;
+import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
+import eu.etaxonomy.taxeditor.navigation.search.SearchResultView;
+import eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.editor.view.concept.ConceptViewPart;
+
+/**
+ * @author a.oppermann
+ * @created Nov 18, 2014
+ * @version 1.0
+ */
+public class ChecklistPerspective extends Default {
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.ui.IPerspectiveFactory#createInitialLayout(org.eclipse.ui
+        * .IPageLayout)
+        */
+       @Override
+       public void createInitialLayout(IPageLayout layout) {
+               IFolderLayout navigationFolder = layout.createFolder("navigation",
+                               IPageLayout.LEFT, 0.25f, layout.getEditorArea());
+
+               navigationFolder.addView(TaxonNavigator.ID);
+               navigationFolder.addPlaceholder(SearchResultView.ID + ":*");
+
+               layout.addView(CdmDataSourceViewPart.ID, IPageLayout.BOTTOM, 0.6f, TaxonNavigator.ID);
+               IFolderLayout folder = layout.createFolder("Folder", IPageLayout.BOTTOM, 0.6f, layout.getEditorArea());
+               folder.addView(DescriptiveViewPart.ID);
+               folder.addView(DetailsViewPart.ID);
+               folder.addView(ConceptViewPart.ID);
+//             folder.addView(MediaViewPart.ID);
+
+//             createAdditionalFolder(layout, layout.getEditorArea());
+       }
+}
index 8baea95b92bab2b281a65f9e050699c8a0fa8fed..0980a03864035ee9ae6e9b29dcc84274b1eb2f36 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Bulkeditor Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
index 4da979c0167b55bc9c1a085b492f3b0b26bd3c84..1d9437f8b0509e27f4409b45f50bf7794315279e 100644 (file)
          <menu\r
                id="bulkeditor.menus.openmenu"\r
                label="%menu.label">\r
+            <visibleWhen\r
+                  checkEnabled="true">\r
+               <reference\r
+                     definitionId="isCdmStoreConnected">\r
+               </reference>\r
+            </visibleWhen>\r
          </menu>\r
          <menu\r
                label="%menu.label.0">\r
+            <visibleWhen\r
+                  checkEnabled="true">\r
+               <reference\r
+                     definitionId="isCdmStoreConnected">\r
+               </reference>\r
+            </visibleWhen>\r
          </menu>\r
       </menuContribution>\r
       <menuContribution\r
          <dynamic\r
                class="eu.etaxonomy.taxeditor.bulkeditor.command.OpenBulkEditorContributionItem"\r
                id="taxeditor-bulkeditor.dynamicopenmenu">\r
+            <visibleWhen\r
+                  checkEnabled="true">\r
+               <reference\r
+                     definitionId="isCdmStoreConnected">\r
+               </reference>\r
+            </visibleWhen>\r
          </dynamic>\r
          <!--command\r
                commandId="taxeditor-nameeditor.commands.open"\r
       </menuContribution>\r
       <menuContribution\r
             locationURI="popup:#BulkEditorContext">\r
+         <command\r
+               commandId="eu.etaxonomy.taxeditor.navigation.command.update.editSelection"\r
+               label="Edit"\r
+               style="push">\r
+            <visibleWhen>\r
+               <reference\r
+                     definitionId="isTaxonBulkEditorInput">\r
+               </reference>\r
+            </visibleWhen>\r
+         </command>\r
+         <separator\r
+               name="taxeditor-bulkeditor.separator1"\r
+               visible="true">\r
+         </separator>\r
          <menu\r
                label="%menu.label.1">\r
             <dynamic\r
                   class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicNewObjectMenu"\r
                   id="eu.etaxonomy.taxeditor.bulkeditor.dynamicNewMenu">\r
+               <visibleWhen\r
+                     checkEnabled="false">\r
+                  <reference\r
+                        definitionId="isCdmStoreConnected">\r
+                  </reference>\r
+               </visibleWhen>\r
             </dynamic>\r
+            <visibleWhen\r
+                  checkEnabled="true">\r
+               <reference\r
+                     definitionId="isCdmStoreConnected">\r
+               </reference>\r
+            </visibleWhen>\r
          </menu>\r
          <separator\r
-               name="taxeditor-bulkeditor.separator1"\r
-               visible="true">\r
+               name="eu.etaxonomy.taxeditor.bulkeditor.separator1">\r
          </separator>\r
          <command\r
                commandId="bulkeditor.commands.setmergetarget"\r
                   class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicMarkerTypeEditingMenu"\r
                   id="eu.etaxonomy.taxeditor.bulkeditor.dynamicMarkerTypeEditingMenu">\r
             </dynamic>\r
+            <visibleWhen\r
+                  checkEnabled="true">\r
+               <reference\r
+                     definitionId="isCdmStoreConnected">\r
+               </reference>\r
+            </visibleWhen>\r
          </menu>\r
          <separator\r
                name="taxeditor-bulkeditor.separator3"\r
                visible="true">\r
          </separator>\r
          <command\r
-               commandId="org.eclipse.ui.edit.delete"\r
+               commandId="eu.etaxonomy.taxeditor.bulkeditor.delete"\r
                label="Delete"\r
                style="push">\r
-         </command>\r
-      </menuContribution>\r
-      <menuContribution\r
-            allPopups="false"\r
-            locationURI="popup:#DataImportEditorContext">\r
-         <command\r
-               commandId="eu.etaxonomy.taxeditor.bulkeditor.saveSpecimen"\r
-               label="Save Specimen"\r
-               style="push">\r
+            <visibleWhen\r
+                  checkEnabled="true">\r
+               <reference\r
+                     definitionId="isCdmStoreConnected">\r
+               </reference>\r
+            </visibleWhen>\r
          </command>\r
       </menuContribution>\r
    </extension>\r
             id="taxeditor-bulkeditor.command.setMarkerFlag"\r
             name="Set Marker Flag">\r
       </command>\r
+      <command\r
+            id="eu.etaxonomy.taxeditor.bulkeditor.delete"\r
+            name="delete">\r
+      </command>\r
       <!--command\r
             defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewEntityHandler"\r
             id="eu.etaxonomy.taxeditor.bulkeditor.command.new"\r
             </test>\r
          </with>\r
       </definition>\r
+      <definition\r
+            id="isTaxonBulkEditorInput">\r
+         <with\r
+               variable="activeEditor">\r
+            <test\r
+                  property="taxeditor-bulkeditor.propertyTester.isTaxonEditor">\r
+            </test>\r
+         </with>\r
+      </definition>\r
    </extension>\r
    <extension\r
          point="org.eclipse.core.expressions.propertyTesters">\r
             class="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorPropertyTester"\r
             id="taxeditor-bulkeditor.PropertyTester"\r
             namespace="taxeditor-bulkeditor.propertyTester"\r
-            properties="isMergingEnabled"\r
-            type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">\r
-      </propertyTester>\r
-      <propertyTester\r
-            class="eu.etaxonomy.taxeditor.bulkeditor.PropertyTester"\r
-            id="eu.etaxonomy.taxeditor.bulkeditor.propertyTester"\r
-            namespace="eu.etaxonomy.taxeditor.bulkeditor.propertyTester"\r
-            properties="isDerivedUnitEditor"\r
+            properties="isMergingEnabled, isDerivedUnitEditor, isTaxonEditor, isGroupEditor"\r
             type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">\r
       </propertyTester>\r
    </extension>\r
       </handler>\r
       <handler\r
             class="eu.etaxonomy.taxeditor.bulkeditor.handler.DeleteHandler"\r
-            commandId="org.eclipse.ui.edit.delete">\r
+            commandId="eu.etaxonomy.taxeditor.bulkeditor.delete">\r
          <activeWhen>\r
             <with\r
                   variable="selection">\r
index f3242396cf6859591351e57e55b93bd46d8f1519..14d406739b8b61b7a38c310142d6db5142556daf 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>3.4.0-SNAPSHOT</version>
+               <version>3.4.1-SNAPSHOT</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 364dcdf72fbe1c59416a1d528febc125e6ac5c8b..bbd7e4d2025753158b41e538665acdcb46c50013 100644 (file)
@@ -34,7 +34,9 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IViewPart;
 import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.texteditor.ITextEditorActionConstants;
 
 import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;
@@ -42,8 +44,12 @@ import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
+import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
+import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -57,7 +63,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @version 1.0
  */
 public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDetails,
-        IDirtyMarkable {
+        IDirtyMarkable, IDerivedUnitFacadePart, IPartContentHasFactualData, IPartContentHasMedia {
 
        /** Constant <code>ID="bulkeditor.editor"</code> */
        public static final String ID = "bulkeditor.editor";
@@ -170,6 +176,7 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                super.dispose();
        }
 
+
        /* (non-Javadoc)
         * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isEditable()
         */
@@ -185,6 +192,7 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        /** {@inheritDoc} */
        @Override
        public void setFocus() {
+           conversation.bind();
                searchBar.setFocus();
 
                // TODO find a better place to put this - this dialog should be shown after initial contents of
@@ -278,7 +286,13 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        @Override
        public void doSave(IProgressMonitor progressMonitor) {
            isDirty = false;
+          
            super.doSave(progressMonitor);
+
+           selectFirstItem();
+          
+               getSourceViewer().getTextWidget().setFocus();
+
        }
 
        /** {@inheritDoc} */
index b32f182c54fcd21831987ed1ae04bd728b8e81c7..96b0cbed6fcb4ac6c33077779f453099abea96ce 100644 (file)
@@ -10,7 +10,9 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor;
 
+import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.List;
 
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorFactory;
@@ -30,10 +32,12 @@ public class BulkEditorQuery {
        public BulkEditorQuery (String searchString, Comparator comparator) {
                this.searchString = searchString;
                this.comparator = comparator;
-               
+               List<String> propertyPath = new ArrayList<String>();
+               propertyPath.add("markers");
                searchConfigurator = IdentifiableServiceConfiguratorFactory.getConfigurator(IdentifiableEntity.class);
                searchConfigurator.setTitleSearchString(searchString);
                searchConfigurator.setMatchMode(null);
+               searchConfigurator.setPropertyPaths(propertyPath);
                
                if(searchString != null && searchString.trim().equals("*")){
                        searchConfigurator.setPageSize(1000);
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/PropertyTester.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/PropertyTester.java
deleted file mode 100644 (file)
index fe5333c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-
-package eu.etaxonomy.taxeditor.bulkeditor;
-
-import eu.etaxonomy.taxeditor.bulkeditor.input.OccurrenceEditorInput;
-
-public class PropertyTester extends org.eclipse.core.expressions.PropertyTester {
-
-       public static final String IS_DERIVED_UNIT_EDITOR = "isDerivedUnitEditor";
-       
-       @Override
-       public boolean test(Object receiver, String property, Object[] args,
-                       Object expectedValue) {
-               
-               BulkEditor editor = (BulkEditor) receiver;
-               
-               if(IS_DERIVED_UNIT_EDITOR.equals(property)){
-                       return editor.getEditorInput() instanceof OccurrenceEditorInput;
-               }
-               
-               return false;
-       }
-
-}
index acc7a08c9927192df6e8c6d5f057af4e6fb3dbb7..0d3efd55b2c4d688f58a0658f2f1b43516352116 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -12,16 +12,13 @@ package eu.etaxonomy.taxeditor.bulkeditor.command;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorInput;
 
-import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.GroupEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.OccurrenceEditorInput;
-import eu.etaxonomy.taxeditor.ui.section.description.DerivedUnitElement;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
 
 /**
  * <p>BulkEditorPropertyTester class.</p>
@@ -31,33 +28,41 @@ import eu.etaxonomy.taxeditor.ui.section.description.DerivedUnitElement;
  * @version 1.0
  */
 public class BulkEditorPropertyTester extends PropertyTester {
-       private static final Logger logger = Logger
+
+    @SuppressWarnings("unused")
+    private static final Logger logger = Logger
                        .getLogger(BulkEditorPropertyTester.class);
 
-       private static final String GROUP = "isGroup";
-       private static final String DERIVEDUNIT = "isDerivedUnit";
+       private static final String IS_MERGING_ENABLED = "isMergingEnabled";
+
+       private static final String IS_GROUP_EDITOR = "isGroupEditor";
+    public static final String IS_DERIVED_UNIT_EDITOR = "isDerivedUnitEditor";
+    public static final String IS_TAXON_EDITOR = "isTaxonEditor";
+
        /* (non-Javadoc)
         * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
         */
        /** {@inheritDoc} */
-       public boolean test(Object receiver, String property, Object[] args,
+       @Override
+    public boolean test(Object receiver, String property, Object[] args,
                        Object expectedValue) {
                BulkEditor bulkEditor = (BulkEditor) receiver;
-                       
-               if ("isMergingEnabled".equals(property)) {                      
+
+               if (IS_MERGING_ENABLED.equals(property)) {
                        IEditorInput input = bulkEditor.getEditorInput();
                        if (input instanceof AbstractBulkEditorInput) {
-                               return ((AbstractBulkEditorInput) input).isMergingEnabled();
-                       }                       
+                               return ((AbstractBulkEditorInput<?>) input).isMergingEnabled();
+                       }
                }
-               if(GROUP.equals(property)){
-                       return isGroup(bulkEditor);
+               else if(IS_GROUP_EDITOR.equals(property)){
+                       return bulkEditor.getEditorInput() instanceof GroupEditorInput;
                }
-               
-               if (DERIVEDUNIT.equals(property)){
-                       
-                       return isDerivedUnit(bulkEditor);
+               else if (IS_DERIVED_UNIT_EDITOR.equals(property)){
+            return bulkEditor.getEditorInput() instanceof OccurrenceEditorInput;
                }
+        else if(IS_TAXON_EDITOR.equals(property)){
+            return bulkEditor.getEditorInput() instanceof TaxonEditorInput;
+        }
 //             if (("isPublishFlagEditingEnabled").equals(property)) {
 //                     IEditorInput input = bulkEditor.getEditorInput();
 //                     if (input instanceof NameEditorInput) {
@@ -66,14 +71,4 @@ public class BulkEditorPropertyTester extends PropertyTester {
 //             }
                return false;
        }
-       
-       private boolean isDerivedUnit(BulkEditor bulkEditor) {
-               IEditorInput input = bulkEditor.getEditorInput();
-               return (input instanceof OccurrenceEditorInput) ? true : false;
-       }
-
-       private boolean isGroup(BulkEditor bulkEditor) {
-               IEditorInput input = bulkEditor.getEditorInput();
-               return (input instanceof GroupEditorInput) ? true : false;
-       }
 }
index dbe390743330598982811dc0a9a6ee9ecf9be97a..03bb72ac5b99d622a47d6dd7db45be931d731c0d 100644 (file)
 
 package eu.etaxonomy.taxeditor.bulkeditor.handler;
 
+import java.util.Iterator;
+import java.util.Set;
 import java.util.UUID;
 
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.IWorkbenchPage;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IAgentService;
@@ -30,8 +37,12 @@ import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.User;
 
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
@@ -40,17 +51,21 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.persistence.dao.hibernate.HibernateBeanInitializer;
 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
+import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
+
 
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
+
 /**
  * @author n.hoffmann
  * @created Mar 11, 2011
@@ -64,91 +79,92 @@ public class DeleteHandler extends AbstractHandler {
        @Override
        public Object execute(ExecutionEvent event) throws ExecutionException {
                
-               if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES)){
-                       ISelection selection = HandlerUtil.getCurrentSelection(event);
+               ISelection selection = HandlerUtil.getCurrentSelection(event);
+               
+               IEditorPart editor = HandlerUtil.getActiveEditor(event);
+               
+               IEditorInput input = editor.getEditorInput();
+               
+               if((input instanceof IEntityPersistenceService) && (selection instanceof IStructuredSelection)){
                        
-                       IEditorPart editor = HandlerUtil.getActiveEditor(event);
                        
-                       IEditorInput input = editor.getEditorInput();
+                       IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();
+                       LineAnnotationModel model = 
+                                       (LineAnnotationModel) provider.getAnnotationModel(input);
                        
-                       if((input instanceof IEntityPersistenceService) && (selection instanceof IStructuredSelection)){
-                               
-                               
-                               IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();
-                               LineAnnotationModel model = 
-                                               (LineAnnotationModel) provider.getAnnotationModel(input);
-                               
-                               
-                               IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-                               
-                               IEntityPersistenceService persistenceService = (IEntityPersistenceService) input;
+                       
+                       IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+                       
+                       IEntityPersistenceService persistenceService = (IEntityPersistenceService) input;
+                       
+                       
+                       for(Object object : structuredSelection.toList()){
                                
-                               for(Object object : structuredSelection.toList()){
-                                       
-                                       LineAnnotation annotation = (LineAnnotation) model.getAnnotation(object);
-                                       DeleteResult result = new DeleteResult();       
-                                       //result.setError();
-                                       try {
-                                               ICdmApplicationConfiguration controller;
-                                               controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
-                                               //persistenceService.delete(object);
-                                               if (object instanceof SpecimenOrObservationBase){
-                                                       
-                                                       IOccurrenceService service = controller.getOccurrenceService();
-                                                       service.load(((SpecimenOrObservationBase) object).getUuid());
-                                                       result = service.delete((SpecimenOrObservationBase)object);
-                                               } else if (object instanceof Reference){
-                                                       IReferenceService service = controller.getReferenceService();
-                                                       service.load(((Reference) object).getUuid());
-                                                       result = service.delete((Reference)object);
-                                               } else if (object instanceof Group){
-                                                       IGroupService service = controller.getGroupService();
-                                                       service.load(((Group) object).getUuid());
-                                                       result = service.delete((Group) object);
-                                               }else if (object instanceof User){
-                                                       IUserService service = controller.getUserService();
-                                                       service.load(((User) object).getUuid());
-                                                       result = service.delete((User) object);
-                                               } else if (object instanceof TaxonNameBase){
-                                                       INameService service = controller.getNameService();
-                                                       service.load(((TaxonNameBase) object).getUuid());
-                                                       result = service.delete((TaxonNameBase)object);
-                                               } else if (object instanceof TaxonBase){
-                                                       ITaxonService service = controller.getTaxonService();
-                                                       service.load(((TaxonBase) object).getUuid());
-                                                       if (object instanceof Taxon){
-                                                               result = service.deleteTaxon((Taxon)object, null, null);
-                                                       }else{
-                                                               result = service.deleteSynonym((Synonym)object, null);
-                                                       }
-                                               } else if (object instanceof TeamOrPersonBase){
-                                                       IAgentService service = controller.getAgentService();
-                                                       object = service.load(((TeamOrPersonBase) object).getUuid());
-                                                       result = service.delete((TeamOrPersonBase)object);
-                                               }
-                                       } catch (Exception e){
-                                               MessagingUtils.messageDialog("Exception occured. Could not delete", getClass(), e.getMessage(), null);
-                                       }
-                                       if (result.isError()){
-                                               if (!result.getExceptions().isEmpty()) {
-                                                       MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().get(0).getMessage(), null);
+                               LineAnnotation annotation = (LineAnnotation) model.getAnnotation(object);
+                               DeleteResult result = new DeleteResult();       
+                               //result.setError();
+                               try {
+                                       ICdmApplicationConfiguration controller;
+                                       controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
+                                       //persistenceService.delete(object);
+                                       if (object instanceof SpecimenOrObservationBase){
+                                               
+                                               IOccurrenceService service = controller.getOccurrenceService();
+                                               service.load(((SpecimenOrObservationBase) object).getUuid());
+                                               result = service.delete((SpecimenOrObservationBase)object);
+                                       } else if (object instanceof Reference){
+                                               IReferenceService service = controller.getReferenceService();
+                                               service.load(((Reference) object).getUuid());
+                                               result = service.delete((Reference)object);
+                                       } else if (object instanceof Group){
+                                               IGroupService service = controller.getGroupService();
+                                               service.load(((Group) object).getUuid());
+                                               result = service.delete((Group) object);
+                                       }else if (object instanceof User){
+                                               IUserService service = controller.getUserService();
+                                               service.load(((User) object).getUuid());
+                                               result = service.delete((User) object);
+                                       } else if (object instanceof TaxonNameBase){
+                                               INameService service = controller.getNameService();
+                                               TaxonNameBase name = service.load(((TaxonNameBase) object).getUuid());
+                                               NameDeletionConfigurator config = new NameDeletionConfigurator();
+                                               
+                                               result = service.delete(name, config);
+                                       } else if (object instanceof TaxonBase){
+                                               ITaxonService service = controller.getTaxonService();
+                                               service.load(((TaxonBase) object).getUuid());
+                                               if (object instanceof Taxon){
+                                                       result = service.deleteTaxon((Taxon)object, null, null);
                                                }else{
-                                                       MessagingUtils.messageDialog("Could not delete", getClass(), "The object could not be deleted. An exception occured.", null);
-                                                       
+                                                       result = service.deleteSynonym((Synonym)object, null);
                                                }
+                                       } else if (object instanceof TeamOrPersonBase){
+                                               IAgentService service = controller.getAgentService();
+                                               object = service.load(((TeamOrPersonBase) object).getUuid());
+                                               result = service.delete((TeamOrPersonBase)object);
                                        }
-                                       if (result.isOk()){
-                                               ((BulkEditor) editor).removeAnnotatedLine(annotation);
+                               } catch (Exception e){
+                                       MessagingUtils.messageDialog("Exception occured. Could not delete", getClass(), e.getMessage(), null);
+                               }
+                               if (result.isError() || result.isAbort()){
+                                       if (!result.getExceptions().isEmpty()) {
+                                               MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().toString(), null);
+                                       }else{
+                                               MessagingUtils.messageDialog("Could not delete", getClass(), "The object could not be deleted. An exception occured.", null);
                                                
-                                               System.out.println("Test");
                                        }
-                               }                               
-                       }
-               }else{
-                       MessagingUtils.warningDialog("Feature not enabled", getClass(), "Deletion is currently an experimental feature." +
-                                       "Enable it via Preferences at your own risk.");
+                               }
+                               if (result.isOk() ){
+                                       ((BulkEditor) editor).removeAnnotatedLine(annotation);
+                                       if(result.getUpdatedObjects().size() != 0 && !result.getExceptions().isEmpty()){
+                                               MessagingUtils.informationDialog("Delete successfull", "The object is deleted but there are updated objects: " + result.toString());
+                                       }
+
+                               }
+                               
+                       }                               
                }
-               
+       
                
                return null;
        }
index f9d5845ccfce29db85ab0997ad1cb3124dcbac3f..054392c4805b7bfc8fc4030bdb4ade2935fa1f05 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -20,12 +21,14 @@ import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
 import eu.etaxonomy.cdm.api.service.ICommonService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.merge.IMergable;
 import eu.etaxonomy.cdm.strategy.merge.MergeException;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
@@ -58,6 +61,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        private List<T> model;
 
        private IEntityCreator<T> entityCreator;
+       
+       private static Class serviceClass;
 
        /**
         * <p>NewInstance</p>
@@ -66,6 +71,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
         */
        static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {
+               
                return BulkEditorInputType.getInput(inputType);
        }
 
@@ -101,7 +107,10 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @param entityUuid a {@link java.util.UUID} object.
         * @return a T object.
         */
-       protected abstract T loadEntity(UUID entityUuid);
+       protected T loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{}); 
+               return (T) CdmStore.getService(serviceClass).load(entityUuid, propertyPaths);
+       }
 
        private void setEntityUuid(UUID entityUuid){
                this.entityUuid = entityUuid;
@@ -179,7 +188,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
 
                if(getEntityUuid() != null){
 
-                       T entity = loadEntity(getEntityUuid());
+                       T entity = (T) loadEntity(getEntityUuid());
                        entityList.add(entity);
                        model = entityList;
                }
@@ -191,6 +200,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                        entityList = listEntities(configurator);
 
                        Collections.sort(entityList, queryComparator);
+                       
 
                }
 
index 386e714ebbd18f537a20d76a8a63e96a93cc3830..0ad0400a63e298dcd36cb7764f099343fdc71b26 100644 (file)
@@ -106,12 +106,12 @@ public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {
                return CdmStore.getSearchManager().findTeamOrPersons(configurator);
        }
        
-       /** {@inheritDoc} */
+       /** {@inheritDoc} 
        @Override
        public AgentBase loadEntity(UUID uuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(IAgentService.class).load(uuid, propertyPaths);
-       }
+       }*/
 
        
        public boolean delete(AgentBase entity) throws ReferencedObjectUndeletableException  {
@@ -122,6 +122,7 @@ public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {
 
        /** {@inheritDoc} */
        public boolean save(AgentBase entity) {
+               
                return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
        }
 
index c35441da3cd22ccbff41e06f137c6ff9f14486c8..eea9b6b501027ee3ee9d600acbada63a870730a9 100644 (file)
@@ -10,6 +10,15 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.menus.CommandContributionItem;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 
+import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.api.service.ReferenceServiceImpl;
+import eu.etaxonomy.cdm.io.dwca.in.INamespaceReader;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.User;
@@ -139,4 +148,29 @@ public enum BulkEditorInputType {
                                        "No input class for the given input type defined.");
                }
        }
+       
+       public static Class getServiceClass(
+                       BulkEditorInputType inputType) {
+               switch (inputType) {
+               case REFERENCE:
+                       return IReferenceService.class;
+               case NAME:
+                       return INameService.class;
+               case AGENT:
+                       return IAgentService.class;
+               case OCCURRENCE:
+                       return IOccurrenceService.class;
+               case NAME_RELATIONSHIP:
+                       return INameService.class;
+               case USER:
+                       return IUserService.class;
+               case GROUP:
+                       return IGroupService.class;
+               case TAXON:
+                       return ITaxonService.class;
+               default:
+                       throw new IllegalStateException(
+                                       "No input class for the given input type defined.");
+               }
+       }
 }
\ No newline at end of file
index eb5fb3695de01942d23500117fbb0bbdb4e08f1c..98724faa802a6a0942d057e5507524cf43dc5873 100644 (file)
@@ -86,13 +86,13 @@ public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
-        */
+        
        @Override
        protected Group loadEntity(UUID entityUuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(IGroupService.class).load(entityUuid, propertyPaths);
        }
-
+*/
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
         */
index 7dc209328f8c0ea0670be559422b31790f1d97ec..c9298f93bd147e80e77643c98f5c56409395dedc 100644 (file)
@@ -102,13 +102,13 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
                return CdmStore.getSearchManager().findNames(configurator);
        }
 
-       /** {@inheritDoc} */
+       /** {@inheritDoc} 
        @Override
        public TaxonNameBase loadEntity(UUID uuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(INameService.class).load(uuid, propertyPaths);
        }
-
+*/
        /** {@inheritDoc} 
         **/
        public boolean delete(TaxonNameBase entity)  {
index d9417cd81b0b74ab2c1504a4f3784b7f6dfb7183..8e954f8bd163e28d137a6295c6aee14b8cbc802c 100644 (file)
@@ -69,12 +69,12 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
         */
-       /** {@inheritDoc} */
+       /** {@inheritDoc} 
        @Override
        protected SpecimenOrObservationBase loadEntity(UUID entityUuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{});
                return CdmStore.getService(IOccurrenceService.class).load(entityUuid, propertyPaths);
-       }
+       }*/
 
        /* (non-Javadoc)
         * @see org.eclipse.ui.IEditorInput#getName()
index 92b9023ee2b28ae588f9035adc92e8107d4db027..3367a5e09279f936f52c687d8c049e656a818f65 100644 (file)
@@ -1,5 +1,6 @@
 package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
+import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
 import java.util.UUID;\r
@@ -10,7 +11,10 @@ import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;
 import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;\r
@@ -24,6 +28,8 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
        /** Constant <code>ID="bulkeditor.input.taxon"</code> */\r
        public static final String ID = "bulkeditor.input.taxon";\r
        \r
+       \r
+       \r
        /**\r
         * <p>Getter for the field <code>instance</code>.</p>\r
         *\r
@@ -33,6 +39,7 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
                if (instance == null) {\r
                        instance = new TaxonEditorInput();\r
                }\r
+       \r
                return instance;\r
        }\r
        \r
@@ -78,8 +85,17 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
                IFindTaxaAndNamesConfigurator<TaxonBase> newConfig = new FindTaxaAndNamesConfiguratorImpl<TaxonBase>();\r
                newConfig.setTitleSearchString(configurator.getTitleSearchStringSqlized());\r
                newConfig.setMatchMode(MatchMode.ANYWHERE);\r
-               \r
-               return CdmStore.getSearchManager().findTaxa(configurator);\r
+               List<TaxonBase> taxa =  CdmStore.getSearchManager().findTaxa(configurator);\r
+               List<TaxonBase> taxaCopy = new ArrayList<TaxonBase>();\r
+               for (TaxonBase taxon:taxa){\r
+                       \r
+                       if (taxon instanceof Taxon){\r
+                               taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Taxon.class));\r
+                       }else{\r
+                               taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Synonym.class));\r
+                       }\r
+               }\r
+               return taxaCopy;\r
        }\r
 \r
 \r
index 2d8a7e406807c209c2e5f2c14e6b3eddd19e5f2b..c80733b1e807b558638e0ae860322e959e22f87b 100644 (file)
@@ -87,13 +87,13 @@ public class UserEditorInput extends AbstractBulkEditorInput<User> {
        
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
-        */
+       
        @Override
        protected User loadEntity(UUID entityUuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(IUserService.class).load(entityUuid, propertyPaths);
        }
-
+ */
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
         */
index 776b223ea4a1d2359240f4f3d0e5be28686a3ad6..c0fad7860da2ce37bdc6f6a1ea5635ccb6c77a4b 100644 (file)
@@ -35,7 +35,8 @@ public class NameCreator implements IEntityCreator<TaxonNameBase> {
        /** {@inheritDoc} */
        public TaxonNameBase createEntity(String text) {
                TaxonNameBase name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);
-               name.setTitleCache(text);
+               name.setTitleCache(text, true);
+               //name.setTitleCache(text);
                return name;
        }
 
index 0bdd381a6b4911dbb6be274bd4ad5677c801348f..ff3190303b336560bfaf7a51b2fe3571669ec520 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -32,7 +32,8 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
         * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityCreator#createEntity(java.lang.String)
         */
        /** {@inheritDoc} */
-       public Reference createEntity(String text) {
+       @Override
+    public Reference createEntity(String text) {
                return createEntity(Reference.class, text);
        }
 
@@ -40,9 +41,10 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator#createEntity(java.lang.Class, java.lang.String)
         */
        /** {@inheritDoc} */
-       public Reference createEntity(Object key, String text) {
+       @Override
+    public Reference createEntity(Object key, String text) {
                Reference reference = null;
-               
+
                // TODO replace w more generic method when cdmlib matures accordingly
                if  (ReferenceType.Article.getMessage().equals(key)) {
                        reference = ReferenceFactory.newArticle();
@@ -92,6 +94,9 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
                if  (ReferenceType.WebPage.getMessage().equals(key)) {
                        reference = ReferenceFactory.newWebPage();
                }
+               if  (ReferenceType.Section.getMessage().equals(key)) {
+            reference = ReferenceFactory.newSection();
+        }
                if (reference == null) {
                        MessagingUtils.warn(getClass(), "Reference type " + key + " not found. Creating reference with default type.");
                        reference = ReferenceFactory.newGeneric();
@@ -108,7 +113,8 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
         *
         * @return a {@link java.util.Map} object.
         */
-       public Map<Object, String> getKeyLabelPairs() {
+       @Override
+    public Map<Object, String> getKeyLabelPairs() {
                Map<Object, String> result = new HashMap<Object, String>();
                for (ReferenceType type : ReferenceType.values()) {
                        result.put(type.getMessage(), type.getMessage());
index 526ed9d9614c2c02ec46d1b81a248f4a7167f79e..682421ec92d759cdd9924368ca0b09920c25a361 100644 (file)
@@ -30,9 +30,9 @@ public class TaxonCreator implements IEntityCreator<TaxonBase>{
                        nameCreator = new NameCreator();\r
                }\r
                if (Synonym.class.equals(key)){\r
-                       taxonBase = Synonym.NewInstance(nameCreator.createEntity(text), null);\r
+                       taxonBase = Synonym.NewInstance(nameCreator.createEntity(null, text), null);\r
                } else{\r
-                       taxonBase = Taxon.NewInstance(nameCreator.createEntity(text), null);\r
+                       taxonBase = Taxon.NewInstance(nameCreator.createEntity(null, text), null);\r
                }\r
                \r
                return taxonBase;\r
index b2fdb3cfb9934c5b7bcb863739e5a36dbf1d87d7..2830dd82d6e82a8325140e7e0450403c191bec7c 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -25,7 +25,9 @@ import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
 /**
@@ -45,7 +47,11 @@ public class BulkEditorMarkerPreferencePage extends PreferencePage implements IW
        @Override
        public void init(IWorkbench workbench) {
                setPreferenceStore(PreferencesUtil.getPreferenceStore());
-               markerTypeEditingMap = PreferencesUtil.getEditMarkerTypePreferences();
+               if(!CdmStore.isActive()) {
+            MessagingUtils.noDataSourceWarningDialog(null);
+               }else{
+                   markerTypeEditingMap = PreferencesUtil.getEditMarkerTypePreferences();
+               }
        }
 
        /* (non-Javadoc)
@@ -55,32 +61,33 @@ public class BulkEditorMarkerPreferencePage extends PreferencePage implements IW
        protected Control createContents(Composite parent) {
                Composite container = new Composite(parent, SWT.NULL);
                container.setLayout(new GridLayout());
+        if(CdmStore.isActive()){
+            for (final MarkerType markerType : TermStore.getTerms(MarkerType.class)) {
+                final Button button = new Button(container, SWT.CHECK);
+                button.setText(String.format("Edit '%s' markers", markerType.getLabel()));
 
-               for (final MarkerType markerType : TermStore.getTerms(MarkerType.class)) {
-                       final Button button = new Button(container, SWT.CHECK);
-                       button.setText(String.format("Edit '%s' markers", markerType.getLabel()));
-               
-                       button.addSelectionListener(new SelectionAdapter() {
-                               public void widgetSelected(SelectionEvent e) {
-                                       markerTypeEditingMap.put(markerType, button.getSelection());
-                               }
-                       });
-                       
-                       boolean edit = markerTypeEditingMap.get(markerType) == null ? true : markerTypeEditingMap.get(markerType); 
-                       
-                       button.setSelection(edit);
-               }
-               
+                button.addSelectionListener(new SelectionAdapter() {
+                    @Override
+                    public void widgetSelected(SelectionEvent e) {
+                        markerTypeEditingMap.put(markerType, button.getSelection());
+                    }
+                });
+
+                boolean edit = markerTypeEditingMap.get(markerType) == null ? true : markerTypeEditingMap.get(markerType);
+
+                button.setSelection(edit);
+            }
+        }
                return container;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#performOk()
         */
        @Override
        public boolean performOk() {
                PreferencesUtil.setEditMarkerTypePreferences(markerTypeEditingMap);
-               
+
                return super.performOk();
        }
 }
index 450bc705229e64c2ee9e16d4697d17fcbd65aa2d..fbd5000f4e715fd77206fe1a8a5dddeb2c0c8cd5 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -27,22 +28,37 @@ import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
+
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.ui.INullSelectionListener;
 import org.eclipse.ui.ISelectionListener;
+
 import org.eclipse.ui.IWorkbenchPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.ICommonService;
-import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.IUserService;
+
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.common.Group;
+
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.model.DescriptionHelper;
 import eu.etaxonomy.taxeditor.model.LineSelection;
@@ -56,7 +72,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
  * @created 08.07.2009
  * @version 1.0
  */
-public class ReferencingObjectsView extends AbstractCdmViewPart implements INullSelectionListener{
+public class ReferencingObjectsView extends AbstractCdmViewPart{
        private static final Logger logger = Logger
                        .getLogger(ReferencingObjectsView.class);
 
@@ -65,7 +81,8 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        
        private TableViewer viewer;
 
-       private CdmBase referencedObject;
+       private String referencedObjectTitleCache;
+       private ConversationHolder conversation; 
        
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
@@ -74,7 +91,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        @Override
        public void createViewer(Composite parent) {
                selectionService.addSelectionListener(this);
-               
+               conversation = CdmStore.createConversation();
                viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                                | SWT.V_SCROLL | SWT.FULL_SELECTION);
                createColumns(viewer);
@@ -108,55 +125,76 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
         *
         * @param entity a {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity} object.
         */
-       public void updateReferencingObjects(final IdentifiableEntity entity) {
+       public void updateReferencingObjects(final UUID entityUUID, final Class objectClass) {
                
                final Display display = Display.getCurrent();
                
-       //      Job job = new Job("Update Referencing Objects") {
-//                     
-//                     @Override
-//                     protected IStatus run(IProgressMonitor monitor) {
-//                             monitor.beginTask("Calculating referencing objects", 10);
-//                     
-//                             monitor.worked(3);
-//                             
-//                             display.asyncExec(new Runnable() {
-//                                     
-//                                     @Override
-//                                     public void run() {
-//                                             ConversationHolder conversation = CdmStore.createConversation();
-                                               List<CdmBase> referencingObjects = getReferencingObjects(entity);
-                                               updateView(referencingObjects);
-//                                             conversation.close();
-//                                     }
-//                             });
-//                             
-//                             monitor.done();
-//                             
-//                             
-//                             return Status.OK_STATUS;
-//                     }
-//             };
-//             
-//             job.setPriority(Job.DECORATE);
-//             job.schedule();
+               Job job = new Job("Update Referencing Objects") {
+                       
+                       @Override
+                       protected IStatus run(IProgressMonitor monitor) {
+                               monitor.beginTask("Calculating referencing objects", 10);
+                       
+                               monitor.worked(3);
+                               
+                               display.asyncExec(new Runnable() {
+                                       
+                                       @Override
+                                       public void run() {
+                                               if (entityUUID != null){
+                                                       
+                                                       List<CdmBase> referencingObjects = getReferencingObjects(entityUUID, objectClass);
+                                                       
+                                                       updateView(referencingObjects);
+                                                       
+                                                       
+                                               }
+                                       }
+                               });
+                               
+                               monitor.done();
+                               
+                               
+                               return Status.OK_STATUS;
+                       }
+               };
+               
+               job.setPriority(Job.DECORATE);
+               job.schedule();
        }
 
-       private List<CdmBase> getReferencingObjects(Object entity) {
+       private List<CdmBase> getReferencingObjects(UUID entity, Class objectClass) {
+               CdmBase referencedObject = null;
         try {
-               if(entity instanceof CdmBase){
-                       referencedObject = (CdmBase) entity;
-                       if (referencedObject instanceof AgentBase){
-                               referencedObject = CdmStore.getService(IAgentService.class).load(referencedObject.getUuid());
-                       }
+               if (objectClass.getSuperclass().equals(TeamOrPersonBase.class) ){
+                       referencedObject = CdmStore.getService(IAgentService.class).load(entity);
+               } else if (objectClass.getSuperclass().equals(TaxonNameBase.class)){
+                       referencedObject = CdmStore.getService(INameService.class).load(entity);
+               } else if (objectClass.getSuperclass().equals(TaxonBase.class)){
+                       referencedObject = CdmStore.getService(ITaxonService.class).load(entity);
+               } else if (objectClass.equals(Reference.class)){
+                       referencedObject = CdmStore.getService(IReferenceService.class).load(entity);
+               } else if (objectClass.getSuperclass().equals(SpecimenOrObservationBase.class)){
+                       referencedObject = CdmStore.getService(IOccurrenceService.class).load(entity);
+               } else if (objectClass.isAssignableFrom(User.class)){
+                       referencedObject = CdmStore.getService(IUserService.class).load(entity);
+               } else if (objectClass.isAssignableFrom(Group.class)){
+                       referencedObject = CdmStore.getService(IGroupService.class).load(entity);
+               }
                        //referencedObject =(CdmBase) CdmStore.getService(IIdentifiableEntityService.class).load(referencedObject.getUuid());
-                       Set<CdmBase> setOfReferencingObjects = CdmStore.getService(ICommonService.class).getReferencingObjects(referencedObject);
-                       
-                       List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);                     
+               Set<CdmBase> setOfReferencingObjects = null;
+               
+               if (referencedObject != null){
+                       referencedObjectTitleCache = ((IdentifiableEntity)referencedObject).getTitleCache();
+                       setOfReferencingObjects = CdmStore.getService(ICommonService.class).getReferencingObjects(referencedObject);
+               }
+               if (setOfReferencingObjects != null){
+                       List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);                     
+                       
+                       Collections.sort(referencingObjects, new ReferencingClassComparator());
+                               
+                       return referencingObjects;
                        
-                       Collections.sort(referencingObjects, new ReferencingClassComparator());
-                       
-                       return referencingObjects;
                }
         } catch (Exception e) {
             logger.error("Error retrieving referencing objects", e);
@@ -187,9 +225,15 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
         * 
         */
        private void updateView(List<CdmBase> referencingObjects) {
-               viewer.setInput(referencingObjects);
-               setContentDescription("'" + referencedObject + "' is referenced by:");
-               showViewer();
+               if (viewer != null && !viewer.getControl().isDisposed()){
+                       viewer.setInput(referencingObjects);
+                       if (referencedObjectTitleCache != null){
+                               setContentDescription("'" + referencedObjectTitleCache + "' is referenced by:");
+                       } else {
+                               setContentDescription("");
+                       }
+                       showViewer();
+               }
        }
 
        /** {@inheritDoc} */
@@ -222,17 +266,19 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        /** {@inheritDoc} */
        @Override
        public void showViewer(IWorkbenchPart part, IStructuredSelection selection) {
-               this.part = part;
+       //      this.part = part;
                
-               updateReferencingObjects((IdentifiableEntity) selection.getFirstElement());
+               updateReferencingObjects(((IdentifiableEntity) selection.getFirstElement()).getUuid(),selection.getFirstElement().getClass() );
        }
        
        /** {@inheritDoc} */
        @Override
        public void dispose() {
+               conversation.close();
                selectionService.removePostSelectionListener(this);
                selectionService.removeSelectionListener(this);
                super.dispose();
+               
        }
 
        /* (non-Javadoc)
@@ -261,6 +307,15 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        public boolean onComplete() {
                return false;
        }
+       
+       public void refresh(){
+               
+               selectionService.removePostSelectionListener(this);
+               selectionService.removeSelectionListener(this);
+               selectionService.addPostSelectionListener(this);
+               selectionService.addSelectionListener(this);
+               
+       }
 
 
 }
index dc6052e58354e72374afe2c06509a278c4609b13..b32930830c8c9837c487d698b54862ccfe89373b 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Editor Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.editor;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: OSGI-INF/l10n/plugin
@@ -11,6 +11,7 @@ Export-Package: eu.etaxonomy.taxeditor.editor,
  eu.etaxonomy.taxeditor.editor.internal,
  eu.etaxonomy.taxeditor.editor.name,
  eu.etaxonomy.taxeditor.editor.name.handler,
+ eu.etaxonomy.taxeditor.editor.view.concept,
  eu.etaxonomy.taxeditor.editor.view.dataimport,
  eu.etaxonomy.taxeditor.editor.view.descriptive,
  eu.etaxonomy.taxeditor.editor.view.media,
@@ -23,7 +24,8 @@ Require-Bundle: org.eclipse.ui,
  eu.etaxonomy.taxeditor.bulkeditor,
  org.eclipse.zest.core,
  org.eclipse.zest.layouts,
- eu.etaxonomy.taxeditor.cdmlib
+ eu.etaxonomy.taxeditor.cdmlib,
+ org.eclipse.ui.ide;bundle-version="3.7.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.core.databinding.beans,
index 8224ccffde6806160e0f5a86c61e245d315edb53..52948142215da5bdb8576fb4b13076811118e938 100644 (file)
@@ -129,4 +129,14 @@ command.name.37 = Use Existing Image
 command.name.38 = Open Checklist Editor\r
 command.name.39 = New Datasource\r
 wizard.name = Specimen Search/Import\r
-wizard.description = Queries data provider for specimens with specified parameters.\nNote: Query results are currently limited to 100.
\ No newline at end of file
+wizard.description = Queries data provider for specimens with specified parameters.\nNote: Query results are currently limited to 100.\r
+command.name.40 = Validation\r
+view.name.6 = Validation\r
+marker.field.0 = Object Type\r
+marker.field.1 = Object\r
+marker.field.2 = Attribute\r
+marker.field.3 = Problematic Value\r
+marker.field.4 = Problem description\r
+marker.field.5 = Validator\r
+marker.field.6 = Entity Class\r
+marker.field.7 = Entity Id
\ No newline at end of file
index cde90f57ab9ac3d73bd60eca09090805549d1a99..a44064c3a68ee6025d3e3596016b12f30935769e 100644 (file)
@@ -128,4 +128,14 @@ command.name.37 = Benutze vorhandenes Bild
 command.name.38 = \u00d6ffne Checklist Editor
 command.name.39 = Neue Datenquelle
 wizard.name = Specimen Suche/Import
-wizard.description = Sendet eine Anfrage mit den eingegebenen Parametern an den Datenprovider.\nHinweis: Die Anzahl der Anfrageergebnisse sind auf 100 begrenzt.
\ No newline at end of file
+wizard.description = Sendet eine Anfrage mit den eingegebenen Parametern an den Datenprovider.\nHinweis: Die Anzahl der Anfrageergebnisse sind auf 100 begrenzt.
+command.name.40 = Validierung
+view.name.6 = Validierung
+marker.field.0 = Objekt Typ
+marker.field.1 = Objekt
+marker.field.2 = Attribut
+marker.field.3 = Problematischer Wert
+marker.field.4 = Problem Beschreibung
+marker.field.5 = Validierer
+marker.field.6 = Entitäts Klasse
+marker.field.7 = Entitäts ID
\ No newline at end of file
index 552f93a522181099bd0d2c04f36ee6471a3e4bd3..65d48bae536842cd7d76985773f77ae134851e3f 100644 (file)
@@ -128,4 +128,14 @@ command.name.37 = Use Existing Image
 command.name.38 = Open Checklist Editor\r
 command.name.39 = New Datasource\r
 wizard.name = Specimen Search/Import\r
-wizard.description = Queries data provider for specimens with specified parameters.\nNote: Query results are currently limited to 100.
\ No newline at end of file
+wizard.description = Queries data provider for specimens with specified parameters.\nNote: Query results are currently limited to 100.\r
+command.name.40 = Validation\r
+view.name.6 = Validation\r
+marker.field.0 = Object Type\r
+marker.field.1 = Object\r
+marker.field.2 = Attribute\r
+marker.field.3 = Problematic Value\r
+marker.field.4 = Problem description\r
+marker.field.5 = Validator\r
+marker.field.6 = Entity Class\r
+marker.field.7 = Entity Id
\ No newline at end of file
index 91b72a915f0fd3b88450f0d7c20155a94c86664a..8486515b2a719bb63c86aba7ec0bedd557e03de8 100644 (file)
@@ -3,9 +3,9 @@ source.. = src/main/java/,\
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               OSGI-INF/l10n/plugin.properties,\
                icons/,\
                p2.inf,\
+               OSGI-INF/l10n/plugin.properties,\
                OSGI-INF/l10n/plugin_de.properties,\
                OSGI-INF/l10n/plugin_en.properties,\
                lib/biojava3-alignment-3.0.7.jar,\
diff --git a/eu.etaxonomy.taxeditor.editor/icons/check.png b/eu.etaxonomy.taxeditor.editor/icons/check.png
new file mode 100644 (file)
index 0000000..d776b66
Binary files /dev/null and b/eu.etaxonomy.taxeditor.editor/icons/check.png differ
diff --git a/eu.etaxonomy.taxeditor.editor/icons/deep-delete-16x16-32.png b/eu.etaxonomy.taxeditor.editor/icons/deep-delete-16x16-32.png
new file mode 100644 (file)
index 0000000..402a633
Binary files /dev/null and b/eu.etaxonomy.taxeditor.editor/icons/deep-delete-16x16-32.png differ
index 03d06d1ad565161771ac4752f995383fb298ce60..99f70453118a991826507087998fcafb714460ba 100644 (file)
@@ -79,7 +79,7 @@
       </editor>
          <editor
             class="eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor"
-            icon="icons/address-book-new.png"
+            icon="icons/check.png"
             id="eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor"
             name="%editor.name.8">
       </editor>
                restorable="true">
          </view>
       </extension>
+      <!-- VALIDATION RELATED STUFF -->
+       <extension point="org.eclipse.core.resources.markers" name="Validation Error" id="eu.etaxonomy.taxeditor.markers.validationerror">
+               <super type="org.eclipse.core.resources.problemmarker"/>
+               <attribute name="databaseId"/>
+               <attribute name="userFriendlyTypeName"/>
+               <attribute name="userFriendlyDescription"/>
+               <attribute name="userFriendlyFieldName"/>
+               <attribute name="validatorMessage"/>
+               <attribute name="invalidValue"/>
+               <attribute name="validatorClass"/>
+               <attribute name="entityClass"/>
+               <attribute name="entityId"/>
+               <persistent value="false"/>
+       </extension>
+
+       <extension point="org.eclipse.ui.ide.markerSupport">
+           <markerContentGenerator
+                   id="eu.etaxonomy.taxeditor.editor.validation.ValidationProblemsMarkerGenerator" 
+                   name="Validation Problems Marker Generator">  
+               <markerTypeReference id="eu.etaxonomy.taxeditor.markers.validationerror" />
+               
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.userFriendlyTypeName" visible="true" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.userFriendlyDescription" visible="true" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.userFriendlyFieldName" visible="true" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.validatorMessage" visible="true" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.invalidValue" visible="true" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.validatorClass" visible="false" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.entityClass" visible="false" />
+               <markerFieldReference id="eu.etaxonomy.taxeditor.markers.validation.entityId" visible="false" />
+           </markerContentGenerator>
+           
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.UserFriendlyTypeNameMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.userFriendlyTypeName"
+                       name="%marker.field.0">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.UserFriendlyDescriptionMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.userFriendlyDescription"
+                       name="%marker.field.1">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.UserFriendlyFieldNameMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.userFriendlyFieldName"
+                       name="%marker.field.2 = Attribute">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.InvalidValueMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.invalidValue"
+                       name="%marker.field.3 = Problematic Value">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.ValidatorMessageMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.validatorMessage"
+                       name="%marker.field.4 = Problem description">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.ValidatorClassMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.validatorClass"
+                       name="%marker.field.5">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.EntityClassMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.entityClass"
+                       name="%marker.field.6">
+               </markerField>
+               <markerField
+                       class="eu.etaxonomy.taxeditor.editor.view.validation.EntityIdMarkerField"
+                       id="eu.etaxonomy.taxeditor.markers.validation.entityId"
+                       name="%marker.field.7">
+               </markerField>
+       </extension>
    <extension
          point="org.eclipse.ui.elementFactories">
       <factory
                name="taxeditor-editor.separator1"
                visible="true">
          </separator>
+         <command
+               commandId="eu.etaxonomy.taxeditor.editor.handler.openDerivateView"
+               label="Open in Derivate Editor"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <with
+                     variable="selection">
+                  <count
+                        value="+">
+                  </count>
+               </with>
+            </visibleWhen>
+         </command>
          <command
                commandId="eu.etaxonomy.taxeditor.editor.commands.description.moveDescriptionToTaxon"
                label="%command.label.28"
                label="%command.label.31"
                style="push">
          </command>
+         <separator
+               name="eu.etaxonomy.taxeditor.editor.separator1">
+         </separator>
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
                label="Delete"
                style="push">
          </command>
+         <command
+               commandId="eu.etaxonomy.taxeditor.editor.derivate.createFieldUnit"
+               label="Create Field Unit"
+               style="push">
+         </command>
+         <command
+               commandId="eu.etaxonomy.taxeditor.editor.derivate.deepDelete"
+               icon="icons/deep-delete-16x16-32.png"
+               label="Delete (with children)"
+               style="push">
+         </command>
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor">
                commandId="eu.etaxonomy.taxeditor.editor.handler.openDerivateView"
                label="Open Associated Derivates"
                style="push">
+            <visibleWhen
+                  checkEnabled="false">
+               <and>
+                  <reference
+                        definitionId="isCdmStoreConnected">
+                  </reference>
+                  <reference
+                        definitionId="isTaxonNode">
+                  </reference>
+               </and>
+            </visibleWhen>
          </command>
          <separator
                name="eu.etaxonomy.taxeditor.editor.separator1"
                visible="true">
          </separator>
       </menuContribution>
+      <menuContribution
+            locationURI="menu:eu.etaxonomy.taxeditor.menu.showView?after=org.eclipse.ui.views.showView.supplemental">
+         <separator
+               name="eu.etaxonomy.taxeditor.store.showViewMenu.validation.separator"
+               visible="true">
+         </separator>
+         <command
+               commandId="org.eclipse.ui.views.showView"
+               label="%command.name.40"
+               style="push">
+            <parameter
+                  name="org.eclipse.ui.views.showView.viewId"
+                  value="eu.etaxonomy.taxeditor.editor.view.validation.problems">
+            </parameter>
+         </command>
+      </menuContribution>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
             id="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor.toggleLeftRightInsertion"
             name="Toggle left/right insertion in base call sequence">
       </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.handler.OpenTaxonEditorHandler"
+            id="eu.etaxonomy.taxeditor.editor.openTaxonEditor"
+            name="Open Taxon Editor">
+         <commandParameter
+               id="eu.etaxonomy.taxeditor.editor.taxonParameter"
+               name="taxonUUID"
+               optional="false"
+               typeId="eu.etaxonomy.taxeditor.editor.taxonParameterType">
+         </commandParameter>
+      </command>
+      <commandParameterType
+            converter="eu.etaxonomy.taxeditor.editor.handler.TaxonParameterConverter"
+            id="eu.etaxonomy.taxeditor.editor.taxonParameterType"
+            type="eu.etaxonomy.cdm.model.taxon.TaxonBase">
+      </commandParameterType>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler"
+            id="eu.etaxonomy.taxeditor.editor.derivate.createFieldUnit"
+            name="Create Field Unit">
+      </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.view.derivate.handler.DeleteDerivateHandler"
+            id="eu.etaxonomy.taxeditor.editor.derivate.deepDelete"
+            name="Deep Delete">
+      </command>
 
    </extension>
    <extension
          </description>
       </wizard>
    </extension>
+    <extension
+          point="eu.etaxonomy.taxeditor.store.cdmViewer">
+       <cdmViewer
+             class="eu.etaxonomy.taxeditor.editor.EditorCdmViewer">
+       </cdmViewer>
+    </extension>
 </plugin>
index da6a8af2debc17899cd751175c23fe4640af33b8..cd90412b9f3b16556df7afbdafeecd0d3cdcd37a 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
        <groupId>eu.etaxonomy</groupId>
        <artifactId>taxeditor-parent</artifactId>
-    <version>3.4.0-SNAPSHOT</version>
+    <version>3.4.1-SNAPSHOT</version>
   </parent>
   
   <modelVersion>4.0.0</modelVersion>
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java
new file mode 100644 (file)
index 0000000..877ed28
--- /dev/null
@@ -0,0 +1,68 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.view.ICdmViewer;
+
+/**
+ * @author pplitzner
+ * @date Feb 23, 2015
+ *
+ */
+public class EditorCdmViewer implements ICdmViewer {
+
+    private final Logger logger = Logger.getLogger(EditorCdmViewer.class);
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.view.ICdmViewer#show(java.lang.Object)
+     */
+    @Override
+    public void show(Object input, Class<?> viewerClass) {
+        try {
+            if(viewerClass.equals(MultiPageTaxonEditor.class)){
+                if(input instanceof TaxonBase){
+                    TaxonEditorInput editorInput = TaxonEditorInput.NewInstanceFromTaxonBase(((TaxonBase<?>) input).getUuid());
+                    EditorUtil.open(editorInput);
+                }
+            }
+            else if(viewerClass.equals(DerivateView.class)){
+                if(input instanceof SpecimenOrObservationBase){
+                }
+            }
+        } catch (PartInitException e) {
+            String errorMessage = "Could not open editor";
+            logger.error(errorMessage, e);
+            MessagingUtils.error(EditorCdmViewer.class, errorMessage, e);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.view.ICdmViewer#getViewerClasses(java.lang.Object)
+     */
+    @Override
+    public Map<Class<?>, String> getViewerClasses(Object input) {
+        Map<Class<?>, String> viewerNameMap = new HashMap<Class<?>, String>();
+        if(input instanceof TaxonBase){
+            viewerNameMap.put(MultiPageTaxonEditor.class, "Taxon Editor");
+        }
+        return viewerNameMap;
+    }
+
+}
index 4ed9313d32cf8063e44cccad67ca856f13df9eb9..d923dd9b8a7dcb49424471312505a5f04c9853e9 100644 (file)
@@ -27,9 +27,11 @@ import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditor;
 import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditorInput;
 import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
@@ -37,8 +39,8 @@ import eu.etaxonomy.taxeditor.editor.key.KeyEditor;
 import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
 import eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor;
 import eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditorInput;
-import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
+import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
 import eu.etaxonomy.taxeditor.editor.view.dataimport.BioCaseEditorInput;
 import eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditor;
 import eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorInput;
@@ -48,6 +50,8 @@ import eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * Utility for the editor package
@@ -169,6 +173,11 @@ public class EditorUtil extends AbstractUtility {
         */
        public static void openTaxonBase(UUID taxonBaseUuid)
                        throws PartInitException {
+           TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).find(taxonBaseUuid);
+        if (taxonBase != null && taxonBase.isOrphaned()) {
+                MessagingUtils.warningDialog("Orphaned Taxon", TaxonEditorInput.class, "This is an orphaned taxon i.e. a taxon that is not connected to a classification and not having any taxonomic relationships. Editing of orphaned taxon is currently not supported.");
+                return;
+        }
                TaxonEditorInput input = TaxonEditorInput
                                .NewInstanceFromTaxonBase(taxonBaseUuid);
                open(input);
@@ -445,4 +454,15 @@ public class EditorUtil extends AbstractUtility {
         }
         return null;
     }
+
+    /**
+     * Opens a taxon editor for the given object if the given object is a valid input.
+     * @param object the object for which the editor will be opened
+     * @throws PartInitException
+     */
+    public static void openTaxonEditor(Object object) throws PartInitException {
+        if(object instanceof TaxonBase<?>){
+            openTaxonBase(((TaxonBase<?>) object).getUuid());
+        }
+    }
 }
index b331b88f5d9ffd68c6809371900c98d2d7e1d91b..3f79f3a00a4566070076ad876293795714767a58 100644 (file)
@@ -48,9 +48,9 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPersistableElement {
 
-       private ConversationHolder conversation;
+       private final ConversationHolder conversation;
 
-       private TaxonNode taxonNode;
+       private final TaxonNode taxonNode;
 
        private TaxonEditorInputDataChangeBehaviour dataChangeBehavior;
 
@@ -111,16 +111,13 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
 
        TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).find(taxonBaseUuid);
        if (taxonBase != null){
-               if(taxonBase.isOrphaned()) {
-                       MessagingUtils.warningDialog("Orphaned Taxon", TaxonEditorInput.class, "This is an orphaned taxon i.e. a taxon that is not connected to a classification and not having any taxonomic relationships. Editing of orphaned taxon is currently not supported.");
-               }
-               else if(taxonBase.isInstanceOf(Taxon.class)){
+               if(taxonBase.isInstanceOf(Taxon.class)){
                        Taxon taxon = CdmBase.deproxy(taxonBase, Taxon.class);
-       
+
                        if (taxon.getTaxonNodes().size() == 0 && taxon.isMisapplication()){
                                // TODO get accepted taxon
                                MessagingUtils.info("trying to open Mispplied Name ");
-       
+
                                Set<Taxon> acceptedTaxa = new HashSet<Taxon>();
                                Set<TaxonRelationship> relations = taxon.getRelationsFromThisTaxon();
                                for(TaxonRelationship relation : relations){
@@ -129,13 +126,13 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
                                        }
                                }
                                input =  getInputForMultipleTaxa(conversation, acceptedTaxa);
-       
+
                        }else{
                                input = getInputForMultipleNodes(conversation, taxon.getTaxonNodes());
                        }
                }else if(taxonBase instanceof Synonym){
                        Synonym synonym = (Synonym) taxonBase;
-       
+
                        Set<Taxon> taxa = synonym.getAcceptedTaxa();
                        input = getInputForMultipleTaxa(conversation, taxa);
                }
@@ -143,7 +140,7 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
                        input.setInitiallySelectedTaxonBase(taxonBase);
                }
        }
-       
+
 
        return input;
     }
index fcac2fc731672486bebd5e020129b56ee3e1fc5c..33fc69beefa6f36b5780c6c924695bef7a918e67 100644 (file)
@@ -13,6 +13,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
@@ -34,6 +35,12 @@ public class OpenDerivateViewHandler extends AbstractHandler {
                 if(object instanceof SpecimenOrObservationBase<?>){
                     selectedElementUUIDs.add(((SpecimenOrObservationBase<?>) object).getUuid());
                 }
+                else if(object instanceof IndividualsAssociation){
+                    SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation();
+                    if(specimen!=null){
+                        selectedElementUUIDs.add(specimen.getUuid());
+                    }
+                }
             }
             DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs);
             try {
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java
new file mode 100644 (file)
index 0000000..b416726
--- /dev/null
@@ -0,0 +1,32 @@
+package eu.etaxonomy.taxeditor.editor.handler;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.ParameterType;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+
+
+public class OpenTaxonEditorHandler extends AbstractHandler {
+
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        Object object = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.editor.taxonParameter");
+
+        try {
+            ParameterType parameterType = event.getCommand().getParameterType("eu.etaxonomy.taxeditor.editor.taxonParameter");
+            if(parameterType.isCompatible(object)){
+                EditorUtil.openTaxonEditor(object);
+            }
+        } catch (NotDefinedException e) {
+            MessagingUtils.error(this.getClass(), "Parameter type not defined", e);
+        } catch (PartInitException e) {
+            MessagingUtils.error(OpenTaxonEditorHandler.class, "Error opening the editor", e);
+        }
+        return null;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java
new file mode 100644 (file)
index 0000000..0283f4d
--- /dev/null
@@ -0,0 +1,30 @@
+package eu.etaxonomy.taxeditor.editor.handler;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.AbstractParameterValueConverter;
+import org.eclipse.core.commands.ParameterValueConversionException;
+
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class TaxonParameterConverter extends AbstractParameterValueConverter {
+
+    public TaxonParameterConverter() {
+    }
+
+    @Override
+    public Object convertToObject(String parameterValue) throws ParameterValueConversionException {
+        return CdmStore.getService(ITaxonService.class).load(UUID.fromString(parameterValue));
+    }
+
+    @Override
+    public String convertToString(Object parameterValue) throws ParameterValueConversionException {
+        if(parameterValue instanceof TaxonBase<?>){
+            return ((TaxonBase<?>) parameterValue).getUuid().toString();
+        }
+        return null;
+    }
+
+}
index 7da4103c24ade1664baba8b9e114c6d6753fe38d..dd87e5ba54b89f4be7e5547f621733200e88f075 100644 (file)
@@ -6,6 +6,7 @@ import org.osgi.framework.BundleContext;
 
 import eu.etaxonomy.taxeditor.editor.EditorStateManager;
 import eu.etaxonomy.taxeditor.editor.UseObjectManager;
+import eu.etaxonomy.taxeditor.editor.validation.ValidationContextListener;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -43,6 +44,9 @@ public class TaxeditorEditorPlugin extends AbstractUIPlugin {
                EditorStateManager stateManager = new EditorStateManager();
                CdmStore.getContextManager().addContextListener(stateManager);
                
+               ValidationContextListener vcl = new ValidationContextListener();
+               CdmStore.getContextManager().addContextListener(vcl);
+               
                plugin = this;
                logger.trace("Plugin started: " + this.getBundle().getSymbolicName());
        }
index 8f1921f382ee69ba8e72effc689946fd33d0067e..24ea70f115b96167c99dd03d563d7a841512f8d8 100644 (file)
@@ -44,6 +44,7 @@ import org.eclipse.ui.part.EditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
@@ -234,7 +235,7 @@ public class TaxonNameEditor extends EditorPart implements
         * </p>
         */
        public void createOrUpdateNameComposites() {
-
+               this.taxon = (Taxon)CdmStore.getService(ITaxonService.class).load(this.getTaxon().getUuid());
                ContainerFactory.createOrUpdateAcceptedTaxonsHomotypicGroup(this);
                ContainerFactory.createOrUpdateHeterotypicSynonymyGroups(this);
                ContainerFactory.createOrUpdateMisapplicationsGroup(this);
@@ -652,6 +653,7 @@ public class TaxonNameEditor extends EditorPart implements
        /** {@inheritDoc} */
        @Override
        public void dispose() {
+               conversation.unregisterForDataStoreChanges(this);
                super.dispose();
        }
 
index dc2f9bc37c2e5e7332f074bc2e4b295d87538dee..c8bccaa26f795ba7294ed37f037927e00c138a89 100644 (file)
@@ -4,13 +4,17 @@
 package eu.etaxonomy.taxeditor.editor.name.dnd;
 
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.SWTException;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetAdapter;
 import org.eclipse.swt.dnd.DropTargetEvent;
 
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
@@ -24,6 +28,7 @@ import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptRelationshipTyp
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptToSynonymOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeHomotypicGroupOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeSynonymToMisapplicationOperation;
+import eu.etaxonomy.taxeditor.editor.name.operation.MoveSynonymToAnotherAcceptedTaxonOperation;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 
@@ -36,6 +41,7 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 public class NameEditorDropTargetListener extends DropTargetAdapter {
                
        private IDropTargetable target;
+       
 
        /**
         * <p>Constructor for NameEditorDropTargetListener.</p>
@@ -84,6 +90,14 @@ public class NameEditorDropTargetListener extends DropTargetAdapter {
                } else {
                        EditorUtil.executeOperation(operation);
                }
+               target.getEditor().getConversationHolder().commit();
+               if (!target.equals(EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor())){
+                       ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).redraw();
+                       ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
+                       
+               }
+               target.getEditor().redraw();
+               
        }
        
        private AbstractPostOperation createOperation(TaxonBase taxonBase) {
@@ -102,8 +116,16 @@ public class NameEditorDropTargetListener extends DropTargetAdapter {
                                                getEditor().getTaxon(), synonym, target);
                        }
                        else if(target instanceof TaxonNameEditor){
-                               return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
+                               if (target.equals(getEditor())){
+                                       return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
                                                getEditor().getTaxon(), synonym, null, target);
+                               } else{
+                                       getEditor().getConversationHolder().commit();
+                                       ((TaxonNameEditor) target).getConversationHolder().commit();
+                                       
+                                       return new MoveSynonymToAnotherAcceptedTaxonOperation("Change accepted Taxon", getEditor().getUndoContext(), getEditor().getTaxon().getUuid(), synonym.getUuid(), ((TaxonNameEditor) target).getTaxon(), null );
+                                       
+                               }
                        }
                        
                }else if(taxonBase instanceof Taxon){
@@ -156,6 +178,6 @@ public class NameEditorDropTargetListener extends DropTargetAdapter {
         * 
         */
        private TaxonNameEditor getEditor() {
-               return target.getEditor();
+               return (TaxonNameEditor) EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor();
        }
 }
index 86240cb151f15d8270c6b60ca0ebc6caa45bfa5f..ed85b64c00acdb64cf79575bc147cb35fb9d14b0 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -16,19 +16,19 @@ import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.Page;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.name.operation.DeleteMisapplicationOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.DeleteSynonymOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.DeleteTaxonOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
@@ -47,16 +47,17 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler,
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
                editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
-                               
+
                Object selectedElement = EditorUtil.getSelection(event).getFirstElement();
-               
+
                doExecute(event, editor, selectedElement);
-               
+
                return null;
        }
-       
+
        /**
         * @param editor
         * @param selectedElement
@@ -65,14 +66,14 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler,
         */
        protected void doExecute(ExecutionEvent event, TaxonNameEditor editor, Object selectedElement) {
                AbstractPostOperation operation = null;
-               String commandName = null;              
+               String commandName = null;
 
                try {
                        commandName = event.getCommand().getName();
                } catch (NotDefinedException e) {
                        MessagingUtils.error(getClass(), e);
                }
-               
+
                // synonym
                if(selectedElement instanceof Synonym){
                        operation = new DeleteSynonymOperation(commandName, editor.getUndoContext(), editor.getTaxon(), (Synonym) selectedElement, editor);
@@ -87,35 +88,29 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler,
                        if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Are you sure you want to delete the selected taxon?")){
                                return ;
                        }
+
                        IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
-                       
-                       operation = new DeleteTaxonOperation(commandName, editor.getUndoContext(),(Taxon) selectedElement, null, activePage, this, editor);
+
+                       operation = new DeleteTaxonOperation(commandName, editor.getUndoContext(),(Taxon) selectedElement, new TaxonDeletionConfigurator(), null, activePage, this, editor);
                        //editor.dispose();
-                       
+
                }
                else {
                        throw new IllegalArgumentException("Element has to be Synonym, Misapplication or Concept");
                }
-                               
-               EditorUtil.executeOperation(operation);
-               
-               
-               
-               
+
+               AbstractUtility.executeOperation(operation);
        }
 
        @Override
        public boolean postOperation(CdmBase objectAffectedByOperation) {
                Display.getDefault().asyncExec(new Runnable(){
 
-                       public void run() {
-                               EditorUtil.close(editor.getMultiPageTaxonEditor());
-                                       
+                       @Override
+            public void run() {
+                               AbstractUtility.close(editor.getMultiPageTaxonEditor());
                        }
-                       
                });
-               
-               
                return true;
        }
 
@@ -124,6 +119,5 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler,
                // TODO Auto-generated method stub
                return false;
        }
-       
-       
+
 }
index 06a3013b87f9c25cb86ea782bb1d34bba62d9f5c..89a8bf7cff49ea6e9c28996775b27bc25a33e8b8 100644 (file)
@@ -85,7 +85,7 @@ public class ChangeHomotypicGroupOperation extends AbstractPostTaxonOperation {
                // TODO pass in homotypical group's taxon in case we are dragging from one editor to another
 
                // Switch groups
-               oldHomotypicalGroup.removeTypifiedName(synonymName);
+               oldHomotypicalGroup.removeTypifiedName(synonymName, false);
                monitor.worked(40);
                newHomotypicalGroup = HibernateProxyHelper.deproxy(newHomotypicalGroup, HomotypicalGroup.class);
                newHomotypicalGroup.addTypifiedName(synonymName);
@@ -134,7 +134,7 @@ public class ChangeHomotypicGroupOperation extends AbstractPostTaxonOperation {
                // TODO pass in homotypical group's taxon in case we are dragging from one editor to another
 
                // Switch groups
-               newHomotypicalGroup.removeTypifiedName(synonymName);
+               newHomotypicalGroup.removeTypifiedName(synonymName, false);
                oldHomotypicalGroup.addTypifiedName(synonymName);
 
                // Redraw editor if it exists
index 8a462f6ee35925426df0620fe869e2b0e80050e3..679b3396e261973291c1feebb38623e9219ab80d 100644 (file)
@@ -24,7 +24,6 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.cdm.remote.dto.tdwg.voc.TaxonName;
 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
index 9cdf90fc566f11606278881c901a4633761de2d6..fdef1cd3544a759252bfb21cf303ba7494794b3b 100644 (file)
@@ -81,7 +81,9 @@ public class DeleteSynonymOperation extends AbstractPostTaxonOperation {
                                        
                                        DeleteResult result = service.deleteSynonym(synonym, null);
                                        if (result.isError()){
-                                               MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
+                                               MessageDialog.openError(null, "Delete failed", result.toString());
+                                       } else if (!result.getUpdatedObjects().isEmpty()){
+                                               MessageDialog.openInformation(null, "Delete successfull", "The Synonym could be deleted, but there is an updated object: " + result.toString());
                                        }
                                }
                        //      taxon.removeSynonym(synonym);
index 4f8472074f3b34aad9c99e5e0a10dc096a93fc0c..c65dda535e5f559e04d9da813723b6cab3b6d58f 100644 (file)
@@ -5,31 +5,23 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IAdaptable;\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.IEditorReference;\r
-import org.eclipse.ui.IPerspectiveDescriptor;\r
-import org.eclipse.ui.IViewPart;\r
 import org.eclipse.ui.IWorkbenchPage;\r
-import org.eclipse.ui.PartInitException;\r
 \r
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 \r
 public class DeleteTaxonBaseOperation extends AbstractPersistentPostOperation {\r
-       \r
-       private IWorkbenchPage activePage;\r
-       \r
+\r
+       protected TaxonDeletionConfigurator configurator;\r
+\r
        public DeleteTaxonBaseOperation(String label, IUndoContext undoContext,\r
-                       Taxon taxon, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {\r
+               TaxonDeletionConfigurator configurator, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {\r
                super(label, undoContext, postOperationEnabled,\r
                                 conversationEnabled);\r
-               this.activePage = activePage;\r
-               \r
+               this.configurator = configurator;\r
+\r
        }\r
 \r
        @Override\r
@@ -52,25 +44,4 @@ public class DeleteTaxonBaseOperation extends AbstractPersistentPostOperation {
                // TODO Auto-generated method stub\r
                return null;\r
        }\r
-       \r
-       protected void closeObsoleteEditor(Taxon taxon){\r
-               for (IEditorReference ref : activePage.getEditorReferences()) {\r
-                       \r
-                       IViewPart view =  activePage.findView("eu.etaxonomy.taxeditor.navigation.navigator");\r
-               \r
-                       try {\r
-                               IEditorInput input = ref.getEditorInput(); \r
-                               if (input instanceof TaxonEditorInput) {\r
-                                       TaxonNode node = ((TaxonEditorInput) input).getTaxonNode();\r
-                                       if (taxonNode.equals(node)) {\r
-                                               activePage.closeEditor(ref.getEditor(false), false);\r
-                                       }\r
-                               }\r
-                       } catch (PartInitException e) {\r
-                               continue;\r
-                       }\r
-               }\r
-       }\r
 }\r
-\r
-\r
index 98626f5d855ebf7f4318faf18a6eb41a9941d3ae..136dcf7f4ff1ead991087e748173666a02d0fe02 100644 (file)
@@ -19,19 +19,17 @@ import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{\r
-       //private Taxon taxon;\r
-       private final Classification classification;\r
-\r
-\r
 \r
+    private final Classification classification;\r
 \r
        public DeleteTaxonOperation(String label, IUndoContext undoContext,\r
-                       Taxon taxon, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {\r
-               super(label, undoContext, taxon, activePage, postOperationEnabled, conversationEnabled);\r
+                       Taxon taxon, TaxonDeletionConfigurator configurator, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {\r
+               super(label, undoContext, configurator, activePage, postOperationEnabled, conversationEnabled);\r
                this.element = taxon;\r
 \r
                Set<TaxonNode> nodes = taxon.getTaxonNodes();\r
@@ -52,8 +50,6 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{
 \r
        }\r
 \r
-\r
-\r
        @Override\r
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
@@ -64,17 +60,18 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{
 \r
                                ICdmApplicationConfiguration controller;\r
 \r
-                               controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();\r
+                               controller = CdmStore.getCurrentApplicationConfiguration();\r
 \r
                                ITaxonService service = controller.getTaxonService();\r
-                               \r
 \r
-                               DeleteResult result =   service.deleteTaxon(element, new TaxonDeletionConfigurator(), classification);\r
+\r
+                               DeleteResult result =   service.deleteTaxon(element, configurator, classification);\r
                                if (result.isError()){\r
-                                       MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());\r
+                                       MessageDialog.openError(null, "Delete failed", result.toString());\r
+                               } else if (!result.getUpdatedObjects().isEmpty()){\r
+                                       MessagingUtils.informationDialog("Delete successfull", result.toString());\r
                                }\r
 \r
-                               //closeObsoleteEditor(taxon);\r
                                monitor.worked(40);\r
 \r
 \r
@@ -95,5 +92,4 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{
                return null;\r
        }\r
 \r
-\r
-}\r
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/MoveSynonymToAnotherAcceptedTaxonOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/MoveSynonymToAnotherAcceptedTaxonOperation.java
new file mode 100644 (file)
index 0000000..2f0d090
--- /dev/null
@@ -0,0 +1,113 @@
+package eu.etaxonomy.taxeditor.editor.name.operation;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+public class MoveSynonymToAnotherAcceptedTaxonOperation extends\r
+               AbstractPostTaxonOperation {\r
+\r
+       /**\r
+        * The synonym to be moved.\r
+        */\r
+       private final Synonym synonym;\r
+\r
+       private final Taxon oldTaxon;\r
+       \r
+       \r
+       /**\r
+        * <p>Constructor for MoveSynonymToAnotherAcceptedTaxon.</p>\r
+        *\r
+        * @param label a {@link java.lang.String} object.\r
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.\r
+        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.\r
+        * @param synonym a {@link eu.etaxonomy.cdm.model.taxon.Synonym} object.\r
+        \r
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.\r
+        */\r
+       public MoveSynonymToAnotherAcceptedTaxonOperation(String label, IUndoContext undoContext,\r
+                       UUID oldTaxonUUID, UUID synonymUUID, Taxon taxon, IPostOperationEnabled postOperationEnabled) {\r
+               \r
+               super(label, undoContext, taxon, postOperationEnabled);\r
+               List<String> propertyPaths =  new ArrayList<String>();\r
+               propertyPaths.add("synonymRelations");\r
+               this.element = (Taxon) CdmStore.getService(ITaxonService.class).load(taxon.getUuid(),propertyPaths);\r
+               this.oldTaxon = (Taxon) CdmStore.getService(ITaxonService.class).load(oldTaxonUUID);\r
+               this.synonym = (Synonym) CdmStore.getService(ITaxonService.class).load(synonymUUID);\r
+               if(synonym == null){\r
+                       throw new IllegalArgumentException(\r
+                                       "A null synonym was provided.");\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+\r
+       // Get synonym name\r
+               TaxonNameBase<?, ?> synonymName = synonym.getName();\r
+               monitor.worked(20);\r
+\r
+               \r
+\r
+               // Switch groups\r
+               \r
+               monitor.worked(40);\r
+               SynonymRelationship synRel = synonym.getSynonymRelations().iterator().next();\r
+               \r
+               \r
+               \r
+               ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();\r
+               \r
+               \r
+               \r
+               try {\r
+                       synRel = CdmStore.getService(ITaxonService.class).moveSynonymToAnotherTaxon(synRel, this.element, true, synRel.getType(), null, null, true);\r
+               } catch (HomotypicalGroupChangeException e) {\r
+                       // TODO Auto-generated catch block\r
+                       e.printStackTrace();\r
+               }\r
+               ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();\r
+               \r
+               \r
+\r
+               // Redraw editor if it exists\r
+               return postExecute(synRel.getSynonym());\r
+       }\r
+\r
+       @Override\r
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       @Override\r
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/MarkerManager.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/MarkerManager.java
new file mode 100644 (file)
index 0000000..fa46f70
--- /dev/null
@@ -0,0 +1,290 @@
+package eu.etaxonomy.taxeditor.editor.validation;\r
+\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import javax.xml.validation.Validator;\r
+\r
+import org.eclipse.core.resources.IMarker;\r
+import org.eclipse.core.resources.IResource;\r
+import org.eclipse.core.resources.IWorkspaceRoot;\r
+import org.eclipse.core.resources.ResourcesPlugin;\r
+import org.eclipse.core.runtime.CoreException;\r
+\r
+import eu.etaxonomy.cdm.model.validation.EntityConstraintViolation;\r
+import eu.etaxonomy.cdm.model.validation.EntityValidationResult;\r
+import eu.etaxonomy.cdm.model.validation.Severity;\r
+\r
+/**\r
+ * A class responsible for refreshing problem markers coming from the CVI\r
+ * (Cdmlib Validation Infrastructure).\r
+ * \r
+ * @author ayco_holleman\r
+ * \r
+ */\r
+/*\r
+ * See following for problems with icons in Problems view\r
+ * http://stackoverflow.com\r
+ * /questions/13497258/markers-view-shows-my-marker-with-\r
+ * a-red-square-insted-of-error-warning-icon\r
+ * http://stackoverflow.com/questions/2888207\r
+ * /eclipse-plugin-custom-icon-for-a-marker\r
+ * http://www.eclipse.org/articles/Article-Mark%20My%20Words/mark-my-words.html\r
+ * http\r
+ * ://cubussapiens.hu/2010/11/markers-and-annotations-in-eclipse-for-error-feedback\r
+ * /\r
+ * \r
+ * See here for difficulty of attaching markers to non-resources (files,\r
+ * folders):\r
+ * http://stackoverflow.com/questions/12493179/eclipse-virtual-resources\r
+ */\r
+public class MarkerManager {\r
+\r
+       public static final String MARKER_TYPE_ID = "eu.etaxonomy.taxeditor.markers.validationerror";\r
+\r
+       /**\r
+        * The primary key (id) of the EntityValidationResult record\r
+        */\r
+       public static final String ATTRIB_DATABASE_ID = "databaseId";\r
+\r
+       // The values of the following constants must correspond to the attributes\r
+       // defined for the org.eclipse.core.resources.markers extension point in\r
+       // plugin.xml\r
+\r
+       /**\r
+        * A user-friendly description of the type of the entity\r
+        */\r
+       public static final String ATTRIB_USER_FRIENDLY_TYPE_NAME = "userFriendlyTypeName";\r
+       /**\r
+        * A user-friendly description of the entity\r
+        */\r
+       public static final String ATTRIB_USER_FRIENDLY_DESCRIPTION = "userFriendlyDescription";\r
+       /**\r
+        * The field whose value violated a constraint\r
+        */\r
+       public static final String ATTRIB_USER_FRIENDLY_FIELD_NAME = "userFriendlyFieldName";\r
+       /**\r
+        * The value violating a constraint\r
+        */\r
+       public static final String ATTRIB_INVALID_VALUE = "invalidValue";\r
+       /**\r
+        * The message from the {@link Validator} about what was wrong.\r
+        */\r
+       public static final String ATTRIB_VALIDATOR_MESSAGE = "validatorMessage";\r
+       /**\r
+        * The class of the {@link Validator} coding for the constraint\r
+        */\r
+       public static final String ATTRIB_VALIDATOR_CLASS = "validatorClass";\r
+       /**\r
+        * The class of the validated entity\r
+        */\r
+       public static final String ATTRIB_ENTITY_CLASS = "entityClass";\r
+       /**\r
+        * The id of the validated entity\r
+        */\r
+       public static final String ATTRIB_ENTITY_ID = "entityId";\r
+\r
+       private final IWorkspaceRoot root;\r
+       private final IMarker[] markers;\r
+       private final List<EntityValidationResult> results;\r
+       private final HashMap<Integer, EntityValidationResult> resultMap;\r
+       private final HashMap<Integer, IMarker> markerMap;\r
+\r
+\r
+       MarkerManager(List<EntityValidationResult> results) throws CoreException\r
+       {\r
+               this.root = ResourcesPlugin.getWorkspace().getRoot();\r
+               this.markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
+               this.markerMap = new HashMap<Integer, IMarker>();\r
+               for (IMarker marker : markers) {\r
+                       markerMap.put(getDatabaseId(marker), marker);\r
+               }\r
+               this.results = results;\r
+               this.resultMap = new HashMap<Integer, EntityValidationResult>();\r
+               for (EntityValidationResult result : results) {\r
+                       resultMap.put(result.getId(), result);\r
+               }\r
+       }\r
+\r
+\r
+       /**\r
+        * Delete all markers that refer to errors that do not exist any longer\r
+        * (i.e. the corresponding database record has been deleted).\r
+        * \r
+        * @return The number of deleted markers\r
+        * \r
+        * @throws CoreException\r
+        */\r
+       int deleteObsoleteMarkers() throws CoreException\r
+       {\r
+               int i = 0;\r
+               IMarker[] markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
+               for (IMarker marker : markers) {\r
+                       if (isObsoleteMarker(marker)) {\r
+                               ++i;\r
+                               marker.delete();\r
+                       }\r
+               }\r
+               return i;\r
+       }\r
+\r
+\r
+       /**\r
+        * Create markers for new errors (i.e. no marker has been created for them\r
+        * yet).\r
+        * \r
+        * @return The number of new markers\r
+        * \r
+        * @throws CoreException\r
+        */\r
+       int createMarkers() throws CoreException\r
+       {\r
+               int i = 0;\r
+               IMarker[] markers = root.findMarkers(MARKER_TYPE_ID, true, IResource.DEPTH_INFINITE);\r
+               for (EntityValidationResult result : results) {\r
+                       if (!isNewResult(result)) {\r
+                               continue;\r
+                       }\r
+                       Set<EntityConstraintViolation> problems = result.getEntityConstraintViolations();\r
+                       for (EntityConstraintViolation problem : problems) {\r
+                               if (markerExistsForProblem(problem, markers)) {\r
+                                       continue;\r
+                               }\r
+                               IMarker marker = root.createMarker(MARKER_TYPE_ID);\r
+                               ++i;\r
+                               if (problem.getSeverity() == Severity.ERROR) {\r
+                                       marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);\r
+                               }\r
+                               else if (problem.getSeverity() == Severity.WARNING) {\r
+                                       marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);\r
+                               }\r
+                               else {\r
+                                       marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);\r
+                               }\r
+                               marker.setAttribute(IMarker.MESSAGE, problem.getMessage());\r
+                               marker.setAttribute(ATTRIB_DATABASE_ID, result.getId());\r
+                               marker.setAttribute(ATTRIB_USER_FRIENDLY_TYPE_NAME, result.getUserFriendlyTypeName());\r
+                               marker.setAttribute(ATTRIB_USER_FRIENDLY_DESCRIPTION, result.getUserFriendlyDescription());\r
+                               marker.setAttribute(ATTRIB_USER_FRIENDLY_FIELD_NAME, problem.getUserFriendlyFieldName());\r
+                               marker.setAttribute(ATTRIB_VALIDATOR_MESSAGE, problem.getMessage());\r
+                               marker.setAttribute(ATTRIB_INVALID_VALUE, problem.getInvalidValue());\r
+                               marker.setAttribute(ATTRIB_VALIDATOR_CLASS, problem.getValidator());\r
+                               marker.setAttribute(ATTRIB_ENTITY_CLASS, result.getValidatedEntityClass());\r
+                               marker.setAttribute(ATTRIB_ENTITY_ID, result.getValidatedEntityId());\r
+                       }\r
+               }\r
+               return i;\r
+       }\r
+\r
+\r
+       /**\r
+        * Is there a problem marker that captures the specified\r
+        * {@link EntityConstraintViolation}? See\r
+        * {@link #markerCapturesProblem(IMarker, EntityConstraintViolation)}.\r
+        * \r
+        * @param problem\r
+        * @param markers\r
+        * @return\r
+        * @throws CoreException\r
+        */\r
+       private boolean markerExistsForProblem(EntityConstraintViolation problem, IMarker[] markers) throws CoreException\r
+       {\r
+               for (IMarker marker : markers) {\r
+                       if (markerCapturesProblem(marker, problem)) {\r
+                               return true;\r
+                       }\r
+               }\r
+               return false;\r
+       }\r
+\r
+\r
+       /**\r
+        * <p>\r
+        * This method determines whether the problem exposed by the specified\r
+        * marker is <b>de facto</b> equivalent to the specified\r
+        * {@code EntityConstraintViolation}. When the CVI validates an entity, it\r
+        * first deletes previous validation results for that entity and only then\r
+        * saves the new validation result. Thus you cannot rely on the database id\r
+        * of the {@code EntityConstraintViolation} to determine equivalence. Maybe\r
+        * later we can make the CVI more sophisticated in this respect. Or maybe\r
+        * see if solving it through the equals() method of\r
+        * {@code EntityValidationResult} and/or {@code EntityConstraintViolation}\r
+        * is possible. But for now this is the easiest solution.\r
+        * </p>\r
+        * <p>\r
+        * The reason we check for equivalence, is that we don't want to\r
+        * unnecessarily update the Problems view. If a marker is there, we don't\r
+        * want to replace it with an equivalent marker, because that might lead to\r
+        * strange click behaviour for end users (e.g. selected problems will\r
+        * disappear and re-appear unselected).\r
+        * </p>\r
+        * \r
+        * @param marker\r
+        * @param problem\r
+        * @return\r
+        * @throws CoreException\r
+        */\r
+       private static boolean markerCapturesProblem(IMarker marker, EntityConstraintViolation problem) throws CoreException\r
+       {\r
+               EntityValidationResult result = problem.getEntityValidationResult();\r
+               if (!marker.getAttribute(ATTRIB_ENTITY_CLASS).equals(result.getValidatedEntityClass())) {\r
+                       return false;\r
+               }\r
+               if (!marker.getAttribute(ATTRIB_ENTITY_ID).equals(result.getValidatedEntityId())) {\r
+                       return false;\r
+               }\r
+               if (!marker.getAttribute(ATTRIB_USER_FRIENDLY_FIELD_NAME).equals(problem.getPropertyPath())) {\r
+                       return false;\r
+               }\r
+               if (!marker.getAttribute(ATTRIB_INVALID_VALUE).equals(problem.getInvalidValue())) {\r
+                       return false;\r
+               }\r
+               if (!marker.getAttribute(ATTRIB_VALIDATOR_CLASS).equals(problem.getValidator())) {\r
+                       return false;\r
+               }\r
+               return true;\r
+       }\r
+\r
+\r
+       /**\r
+        * Is this a marker without a corresponding database record (\r
+        * {@link EntityValidationResult})?\r
+        * \r
+        * @param marker\r
+        * @return\r
+        * @throws CoreException\r
+        */\r
+       private boolean isObsoleteMarker(IMarker marker) throws CoreException\r
+       {\r
+               return resultMap.get(getDatabaseId(marker)) == null;\r
+       }\r
+\r
+\r
+       /**\r
+        * Is this an {@link EntityValidationResult} for which no marker has been\r
+        * created yet?\r
+        * \r
+        * @param result\r
+        * @return\r
+        */\r
+       private boolean isNewResult(EntityValidationResult result)\r
+       {\r
+               return markerMap.get(result.getId()) == null;\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the id of the {@link EntityValidationResult} that was stored as one\r
+        * of the marker's attributes.\r
+        * \r
+        * @param marker\r
+        * @return\r
+        * @throws CoreException\r
+        */\r
+       private static Integer getDatabaseId(IMarker marker) throws CoreException\r
+       {\r
+               return (Integer) marker.getAttribute(ATTRIB_DATABASE_ID);\r
+       }\r
+\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationContextListener.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationContextListener.java
new file mode 100644 (file)
index 0000000..2c47e92
--- /dev/null
@@ -0,0 +1,76 @@
+package eu.etaxonomy.taxeditor.editor.validation;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.ui.IMemento;\r
+\r
+import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;\r
+import eu.etaxonomy.taxeditor.model.IContextListener;\r
+\r
+/**\r
+ * An {@code IContextListener} responsible for starting the\r
+ * {@link ValidationDaemon}.\r
+ * \r
+ * @see TaxeditorEditorPlugin#start(org.osgi.framework.BundleContext)\r
+ * \r
+ * @author ayco_holleman\r
+ * \r
+ */\r
+public class ValidationContextListener implements IContextListener {\r
+\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(ValidationContextListener.class);\r
+\r
+       private ValidationDaemon daemon;\r
+\r
+\r
+       public ValidationContextListener(){\r
+       }\r
+\r
+\r
+       @Override\r
+       public void contextAboutToStop(IMemento memento, IProgressMonitor monitor){\r
+               if (daemon != null) {\r
+                       daemon.cancel();\r
+                       daemon.setCancelRequested();\r
+               }\r
+       }\r
+\r
+\r
+       @Override\r
+       public void contextStop(IMemento memento, IProgressMonitor monitor){\r
+               if (daemon != null) {\r
+                       daemon.cancel();\r
+                       daemon.setCancelRequested();\r
+               }\r
+       }\r
+\r
+\r
+       @Override\r
+       public void contextStart(IMemento memento, IProgressMonitor monitor){\r
+               if (daemon == null) {\r
+                       daemon = new ValidationDaemon();\r
+               }\r
+               daemon.schedule();\r
+       }\r
+\r
+\r
+       @Override\r
+       public void contextRefresh(IProgressMonitor monitor){\r
+               if (daemon != null) {\r
+                       daemon.cancel();\r
+                       daemon.setCancelRequested();\r
+               }\r
+       }\r
+\r
+\r
+       @Override\r
+       public void workbenchShutdown(IMemento memento, IProgressMonitor monitor){\r
+               if (daemon != null) {\r
+                       daemon.cancel();\r
+                       daemon.setCancelRequested();\r
+                       daemon = null;\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationDaemon.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/validation/ValidationDaemon.java
new file mode 100644 (file)
index 0000000..466c220
--- /dev/null
@@ -0,0 +1,86 @@
+package eu.etaxonomy.taxeditor.editor.validation;\r
+\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.core.runtime.jobs.Job;\r
+\r
+import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;\r
+import eu.etaxonomy.cdm.api.service.IEntityValidationResultService;\r
+import eu.etaxonomy.cdm.model.validation.EntityValidationResult;\r
+import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+/**\r
+ * A job that repeatedly checks the error tables and refreshes the problem\r
+ * markers created from them.\r
+ * \r
+ * @author ayco_holleman\r
+ * \r
+ */\r
+public class ValidationDaemon extends Job {\r
+\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(ValidationDaemon.class);\r
+\r
+       private final IEntityValidationResultService validationResultService;\r
+       \r
+       @SuppressWarnings("unused")\r
+       /* Not currently needed but present for future use if/when required */\r
+       private final IEntityConstraintViolationService constraintViolationService;\r
+\r
+       private boolean cancelRequested = false;\r
+\r
+       public ValidationDaemon(){\r
+               super("Initializing validation module");\r
+//             StoreUtil.info("Initializing validation module");\r
+               MessagingUtils.info("Initializing validation module");\r
+               constraintViolationService = CdmStore.getService(IEntityConstraintViolationService.class);\r
+               validationResultService = CdmStore.getService(IEntityValidationResultService.class);\r
+       }\r
+\r
+       \r
+       @Override\r
+       protected void canceling(){\r
+               cancelRequested = true;\r
+       }\r
+\r
+\r
+       /**\r
+        * This method is called by {@link ValidationContextListener} rather than\r
+        * {@link Job#cancel()}, because that method does not have the desired\r
+        * effect.\r
+        */\r
+       public void setCancelRequested(){\r
+               cancelRequested = true;\r
+       }\r
+\r
+\r
+       @Override\r
+       protected IStatus run(IProgressMonitor monitor){\r
+               MarkerManager markerManager;\r
+               List<EntityValidationResult> results;\r
+               try {\r
+                       while (!cancelRequested) {\r
+                               results = validationResultService.getValidationResults();\r
+                               markerManager = new MarkerManager(results);\r
+                               markerManager.deleteObsoleteMarkers();\r
+                               markerManager.createMarkers();\r
+                               // Might want to make this configurable:\r
+                               Thread.sleep(5000);\r
+                       }\r
+//                     StoreUtil.info("Validation module stopped");\r
+                       MessagingUtils.info("Validation module stopped");\r
+                       return Status.OK_STATUS;\r
+               }\r
+               catch (Throwable t) {\r
+//                     StoreUtil.info("Validation module terminated unexpectedly: " + t.getMessage());\r
+                       MessagingUtils.info("Validation module terminated unexpectedly: " + t.getMessage());\r
+                       return Status.CANCEL_STATUS;\r
+               }\r
+       }\r
+\r
+}\r
index 3fe844fa730415ac61b362a3c6a2246d57214553..4b6afb1a12f7a7f8570e1890491b743d95551d3a 100644 (file)
@@ -37,6 +37,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.Text;
@@ -64,7 +65,6 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.SimpleSelectionProvider;
 import eu.etaxonomy.taxeditor.editor.view.checklist.edit.DistributionEditingSupport;
-import eu.etaxonomy.taxeditor.editor.view.checklist.edit.RankEditingSupport;
 import eu.etaxonomy.taxeditor.editor.view.checklist.filter.ChecklistEditorFilter;
 import eu.etaxonomy.taxeditor.editor.view.checklist.listener.ChecklistDropdownSelectionListener;
 import eu.etaxonomy.taxeditor.editor.view.checklist.listener.ChecklistFocusListener;
@@ -132,7 +132,7 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
                     @Override
                     public void run() {
-                        viewer.setInput(taxonList);
+                       viewer.setInput(taxonList);
                     }
                 });
                 monitor.worked(1);
@@ -182,6 +182,8 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
     private Label statusLabel;
 
     private SortedSet<DefinedTermBase> terms = null;
+       private ToolItem toolItem;
+       private ChecklistDropdownSelectionListener dropListener;
 
     /**
      * @return the selectedTaxonNodes
@@ -231,10 +233,7 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         parent.setLayout(gridLayout);
 
         final Text searchText = createSearchBar(parent);
-
-//        if (terms != null && !terms.isEmpty()) {
-            createToolbar(parent);
-//        }
+        createToolbar(parent);
         viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
         getSite().setSelectionProvider(viewer);
 
@@ -242,27 +241,29 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
         searchText.addFocusListener(new ChecklistFocusListener(searchText, modifyListener));
         searchText.addModifyListener(modifyListener);
-
-        // Layout the viewer
-        GridData gridData = new GridData();
-        gridData.verticalAlignment = GridData.FILL;
-        gridData.horizontalSpan = 3;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.grabExcessVerticalSpace = true;
-        gridData.horizontalAlignment = GridData.FILL;
-        viewer.getControl().setLayoutData(gridData);
+        createGridDataForViewerLayout();
 
         viewer.addFilter(filter);
-        createColumns(viewer);
+        createTable();
 
         viewer.setContentProvider(new ChecklistContentProvider());
-        viewer.setLabelProvider(new ChecklistLabelProvider());
+        viewer.setLabelProvider(new ChecklistLabelProvider(viewer));
         comparator = new ChecklistEditorComparator();
         viewer.setComparator(comparator);
 
         createStatusBar(parent);
     }
 
+       private void createGridDataForViewerLayout() {
+               GridData gridData = new GridData();
+               gridData.verticalAlignment = GridData.FILL;
+        gridData.horizontalSpan = 3;
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.grabExcessVerticalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        viewer.getControl().setLayoutData(gridData);
+       }
+
     /**
      * @param parent
      * @return
@@ -282,18 +283,22 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     private void createToolbar(Composite parent) {
         ToolBar toolBar = new ToolBar(parent, SWT.NONE);
-        ToolItem toolItem = new ToolItem(toolBar, SWT.DROP_DOWN | SWT.BORDER);
+        toolItem = new ToolItem(toolBar, SWT.DROP_DOWN | SWT.BORDER);
         toolItem.setText("Distribution Status");
         toolItem.setToolTipText("Show Distribution Status for selected Areas");
-        ChecklistDropdownSelectionListener dropListener = new ChecklistDropdownSelectionListener(toolItem, this, terms);
+        createToolbarItems();
+        toolItem.addSelectionListener(dropListener);
+        toolBar.pack();
+    }
+
+       private void createToolbarItems() {
+               dropListener = new ChecklistDropdownSelectionListener(toolItem, this, terms);
         for (DefinedTermBase<DefinedTermBase> term : terms) {
             if(term!=null){
                 dropListener.add(term);
             }
         }
-        toolItem.addSelectionListener(dropListener);
-        toolBar.pack();
-    }
+       }
 
     private void createStatusBar(Composite composite) {
         GridData gridData = new GridData();
@@ -306,54 +311,105 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         statusLabel.setLayoutData(gridData);
     }
 
-    // This will create the columns for the table
-    private void createColumns(TableViewer viewer) {
-        Table table = viewer.getTable();
+    private void createTable() {
+        Table table = viewer.getTable();//new Table(parent, viewer.getTable().getStyle());
         List<String> titles = new ArrayList<String>();
         Collections.addAll(titles, "Taxon", "Author", "Reference", "Rank");
         List<Integer> bounds = new ArrayList<Integer>();
         Collections.addAll(bounds, 300, 200, 200, 200);
-        Map<Integer, Boolean>restoreColumnWidth = new HashMap<Integer, Boolean>();
-        if (terms != null) {
-            int i = 4;
-            for (DefinedTermBase<DefinedTermBase> term : terms) {
-                if(term != null){
-                    restoreColumnWidth.put(i, PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString()));
-                    titles.add(term.getTitleCache());
-                    bounds.add(200);
-                    i++;
-                }
-            }
-        }
-
-        for (int i = 0; i < titles.size(); i++) {
+        Map<Integer, Boolean> restoreValuesForColumnWidth = restoreValuesForColumnWidth(titles, bounds);
+        createInitalDistributionColumns(table, titles, bounds, restoreValuesForColumnWidth);
+        table.setSortDirection(SWT.DOWN);
+        table.setHeaderVisible(true);
+        table.setLinesVisible(true);
+       }
+    /**
+     * This method creates initially the distribution columns for a table. It should only be called for creation.<br>
+     *<p> 
+     *
+     *<b>Notice:</b> If you want to add additional columns later please use <b>addTableViewerColumn()</b>
+     *
+     * @param table
+     * @param titles
+     * @param bounds
+     * @param restoreValuesForColumnWidth
+     */
+       private void createInitalDistributionColumns(Table table,
+                       List<String> titles, List<Integer> bounds,
+                       Map<Integer, Boolean> restoreValuesForColumnWidth) {
+               for (int columnIndex = 0; columnIndex < titles.size(); columnIndex++) {
             TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-            column.getColumn().setText(titles.get(i));
-            column.getColumn().setWidth(bounds.get(i));
+            column.getColumn().setText(titles.get(columnIndex));
+            column.getColumn().setWidth(bounds.get(columnIndex));
             column.getColumn().setResizable(true);
             column.getColumn().setMoveable(true);
-            column.getColumn().addSelectionListener(getSelectionAdapter(column.getColumn(), i));
-            if (i == 1) {
+            column.getColumn().addSelectionListener(getSelectionAdapter(column.getColumn(), columnIndex));
+            if (columnIndex == 1) {
                 table.setSortColumn(column.getColumn());
             }
-            if (i == 3) {
-                column.setEditingSupport(new RankEditingSupport(viewer, this));
+            if (columnIndex == 3) {
+               /** uncommented it for now because no rank editing is wanted **/
+//                column.setEditingSupport(new RankEditingSupport(viewer, this));
             }
-            if (i >= 4) {
+            if (columnIndex >= 4) {
                 //read PrefrenceStore to setWidth according to last saved state
-                if(restoreColumnWidth.get(i)){
+                if(restoreValuesForColumnWidth.get(columnIndex)){
                     column.getColumn().setWidth(100);
                 }else{
                     column.getColumn().setWidth(0);
                 }
-                column.setEditingSupport(new DistributionEditingSupport(viewer, this, i));
+                column.setEditingSupport(new DistributionEditingSupport(viewer, this, columnIndex));
             }
         }
-        table.setSortDirection(SWT.DOWN);
-        table.setHeaderVisible(true);
-        table.setLinesVisible(true);
-    }
+       }
+
+    /**
+     * This methods loads the last opened distribution columns for the table viewer from the prefrence store.<br>
+     *<p> 
+     * <b>Notice:</b> It adds also the TitleCache to the titles list for the header of each column.<p>
+     * 
+     * @param titles
+     * @param bounds
+     * @return Map<Integer, Boolean>
+     */
+       private Map<Integer, Boolean> restoreValuesForColumnWidth(List<String> titles,
+                       List<Integer> bounds) {
+               Map<Integer, Boolean> restoreColumnWidth = new HashMap<Integer, Boolean>();
+               if (terms != null) {
+            int columnIndex = 4;
+            for (DefinedTermBase<DefinedTermBase> term : terms) {
+                if(term != null){
+                    restoreColumnWidth.put(columnIndex, PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString()));
+                    titles.add(term.getTitleCache());
+                    bounds.add(200);
+                    columnIndex++;
+                }
+            }
+        }
+               return restoreColumnWidth;
+       }
 
+    /**
+     * This method adds new DistributionColumns to an existing table. 
+     * 
+     * @param title
+     * @param bound
+     * @param colNumber
+     * @return
+     */
+    private TableViewerColumn addTableViewerColumn(String title, int bound, final int colNumber) {
+        final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE);
+        final TableColumn column = viewerColumn.getColumn();
+        column.setText(title);
+        column.setWidth(200);
+        viewerColumn.setEditingSupport(new DistributionEditingSupport(viewer, this, colNumber));
+        column.setResizable(true);
+        column.setMoveable(true);
+        return viewerColumn;
+      }
+    
+    
+    
     /**
      *
      * pull data from database and set input for view
@@ -427,6 +483,65 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         viewer.refresh();
     }
 
+    /**
+     * This method should only be called for adding new Distribution columns and reloading the table.<br>
+     * It will hide the old distribution column and load the newly added columns.<br>
+     * <p>
+     * <b>Notice:</b> for data update please use <b>refresh()</b>
+     * 
+     */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+       public void reload(){
+       //create new Items for Dropdown menue
+       Table table = viewer.getTable();
+       table.setRedraw(false);
+       SortedSet<DefinedTermBase> oldTerms = terms;
+       ChecklistLabelProvider labelProvider = new ChecklistLabelProvider();
+       terms = (SortedSet<DefinedTermBase>) labelProvider.getTermsOrderedByLabels(labelProvider.getNamedAreas(), CdmStore.getDefaultLanguage());
+       SortedSet<DefinedTermBase> newTerms = terms;
+       toolItem.removeSelectionListener(dropListener);
+       hideDistributionColumns(oldTerms);
+       createToolbarItems();
+       toolItem.addSelectionListener(dropListener);
+       for(DefinedTermBase term:newTerms){
+               int count = viewer.getTable().getColumnCount();
+               addTableViewerColumn(term.getTitleCache(), 200, count);
+               acitivateNewColumnInDropDownMenu(term);
+       }
+        viewer.setLabelProvider(new ChecklistLabelProvider(viewer));
+        getService().schedule(new ChecklistJob("loading Taxa", selectedTaxonNodes), Job.LONG);
+        table.setRedraw(true);
+       viewer.refresh();
+    }
+
+       private void acitivateNewColumnInDropDownMenu(DefinedTermBase term) {
+               Menu menu = dropListener.getMenu();
+               MenuItem[] items = menu.getItems();
+               for(MenuItem item: items){
+                       if(item.getText().equalsIgnoreCase(term.getTitleCache())){
+                               item.setSelection(true);
+                               PreferencesUtil.getPreferenceStore().setValue(term.getUuid().toString(), true);
+                       }
+               }
+       }
+
+       private void hideDistributionColumns(SortedSet<DefinedTermBase> oldTerms) {
+               TableColumn[] columns = viewer.getTable().getColumns();
+       for(int i=4; i<columns.length; i++){
+               //remove all columns
+               columns[i].dispose();
+               Menu menu = dropListener.getMenu();
+               int itemCount = menu.getItemCount();
+               MenuItem item = menu.getItem(i-3);
+               item.setSelection(false);
+       }
+       if(oldTerms != null){
+               for(DefinedTermBase term : oldTerms){
+                       PreferencesUtil.getPreferenceStore().setValue(term.getUuid().toString(), false);
+               }
+       }
+       }
+    
     /**
      * <p>
      * Getter for the field <code>service</code>.
@@ -473,8 +588,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
     @Override
     public void doSaveAs() {
-        // TODO Auto-generated method stub
-
     }
 
     @Override
@@ -492,7 +605,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
     @Override
     public boolean isSaveAsAllowed() {
-        // TODO Auto-generated method stub
         return false;
     }
 
@@ -504,8 +616,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     @Override
     public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-        // TODO Auto-generated method stub
-
     }
 
     /*
@@ -554,7 +664,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     @Override
     public void contextStop(IMemento memento, IProgressMonitor monitor) {
-        // TODO Auto-generated method stub
 //        IStructuredSelection sel = (IStructuredSelection) this.viewer.getSelection();
 //        if (sel.isEmpty()) {
 //            return;
@@ -588,8 +697,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     @Override
     public void contextRefresh(IProgressMonitor monitor) {
-        // TODO Auto-generated method stub
-
     }
 
     /*
index 16a5e2689d4c35fc73be3d23eb7d431725b511f2..56af4186aa5a57b11bbacc59372bb4763820188b 100644 (file)
@@ -20,7 +20,9 @@ import java.util.UUID;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.TableColumn;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.ITermService;
@@ -46,11 +48,10 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class ChecklistLabelProvider extends LabelProvider implements ITableLabelProvider {
 
-    public static final String DEFAULT_ENTRY = "-";
+    public static final String DEFAULT_ENTRY = "";
     private IDescriptionService descriptionService;
     private final List<DefinedTermBase<?>> namedAreas;
-
-
+    TableViewer viewer = null;
 
     /**
      *
@@ -59,6 +60,11 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
         namedAreas = loadNamedAreas();
     }
 
+    public ChecklistLabelProvider(TableViewer viewer) {
+        namedAreas = loadNamedAreas();
+        this.viewer = viewer;
+    }
+    
     /*
      * (non-Javadoc)
      *
@@ -81,12 +87,11 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
      * .Object, int)
      */
     /** {@inheritDoc} */
-    @Override
+       @Override
     public String getColumnText(Object element, int columnIndex) {
         descriptionService = CdmStore.getService(IDescriptionService.class);
         Taxon taxon = (Taxon) element;
         //TODO load areas by this list
-        SortedSet<DefinedTermBase<?>> sortedNamedAreas = (SortedSet<DefinedTermBase<?>>) getTermsOrderedByLabels(namedAreas, CdmStore.getDefaultLanguage());
 
         List<TaxonDescription> listTaxonDescriptions = descriptionService.listTaxonDescriptions(taxon, null, null, null, null, null, DESC_INIT_STRATEGY);;
         NonViralName<?> nonVirlaName = HibernateProxyHelper.deproxy(taxon.getName(), NonViralName.class);
@@ -124,14 +129,11 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
                     if (deb instanceof Distribution) {
                         Distribution distribution = (Distribution) deb;
                         String area = distribution.toString();
-                        if(sortedNamedAreas != null){
-                            Object[] array = sortedNamedAreas.toArray();
-                            DefinedTermBase<DefinedTermBase> term = (DefinedTermBase<DefinedTermBase>) array[columnIndex-4];
-                            if(term != null){
-                                if (area.equalsIgnoreCase(term.getTitleCache())) {
-                                    return (distribution.getStatus().getTitleCache() != null)?distribution.getStatus().getTitleCache():DEFAULT_ENTRY;
-                                }
-                            }
+                        if(viewer != null){
+                               TableColumn column = viewer.getTable().getColumn(columnIndex);
+                               if (area.equalsIgnoreCase(column.getText())) {
+                                       return (distribution.getStatus().getTitleCache() != null)?distribution.getStatus().getTitleCache():DEFAULT_ENTRY;
+                               }
                         }
                     }
                 }
index c30985b9cb8108dfa083d43f3d47aec742d7aabf..4f0f7f5f2e7f1bc20f15ab4c5308c8db0cbc63bb 100644 (file)
@@ -18,9 +18,10 @@ import org.eclipse.swt.widgets.TableColumn;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
@@ -48,8 +49,9 @@ public final class DistributionEditingSupport extends EditingSupport {
         cellEditor.setLabelProvider(new LabelProvider());
         cellEditor.setContentProvider(new ArrayContentProvider());
         // TODO set input
-        List<PresenceAbsenceTermBase> input = CdmStore.getTermManager()
-                .getPreferredTerms(PresenceAbsenceTermBase.class);
+//        List<PresenceAbsenceTermBase> input = CdmStore.getTermManager()
+//                .getPreferredTerms(PresenceAbsenceTermBase.class);
+        List<DefinedTermBase<?>> input = CdmStore.getTermManager().getPreferredTerms(TermType.PresenceAbsenceTerm);
         cellEditor.setInput(input);
     }
 
@@ -78,9 +80,9 @@ public final class DistributionEditingSupport extends EditingSupport {
 
     @Override
     protected void setValue(Object element, Object value) {
-        if (element instanceof Taxon && value instanceof PresenceAbsenceTermBase) {
+       if (element instanceof Taxon && value instanceof PresenceAbsenceTerm) {
             Taxon taxon = (Taxon) element;
-            PresenceAbsenceTermBase occurenceStatus = (PresenceAbsenceTermBase) value;
+            PresenceAbsenceTerm occurenceStatus = (PresenceAbsenceTerm) value;
             Distribution distribution = getDistributionForColumn(taxon);
             if (distribution != null) {
                 // change status for already exsiting distribution
@@ -122,7 +124,7 @@ public final class DistributionEditingSupport extends EditingSupport {
         return null;
     }
 
-    private void createDistributionForColumn(Taxon taxon, PresenceAbsenceTermBase occurenceStatus) {
+    private void createDistributionForColumn(Taxon taxon, PresenceAbsenceTerm occurenceStatus) {
         TableColumn column = viewer.getTable().getColumn(columnIndex);
 
         ChecklistLabelProvider labelProvider = new ChecklistLabelProvider();
index 45c558e9b3dd87b3c7d996d2249d62b894b5b0be..68bda9a28d1a701c55941ccf1e4a68d6a0243101 100644 (file)
@@ -2,6 +2,7 @@ package eu.etaxonomy.taxeditor.editor.view.checklist.listener;
 
 import java.util.SortedSet;
 
+import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
@@ -32,13 +33,12 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class ChecklistDropdownSelectionListener extends SelectionAdapter {
 
     private final Menu menu;
-    private final ToolItem dropdown;
     private final ChecklistEditor editor;
     private final SortedSet<DefinedTermBase> termSet;
-
+    private Logger logger = Logger.getLogger(ChecklistDropdownSelectionListener.class);
+    
     public ChecklistDropdownSelectionListener(ToolItem dropdown, ChecklistEditor editor,
             SortedSet<DefinedTermBase> termSet) {
-        this.dropdown = dropdown;
         this.editor = editor;
         this.termSet = termSet;
         menu = new Menu(dropdown.getParent().getShell());
@@ -65,16 +65,19 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
                 TableColumn column = null;
                 DefinedTermBase<DefinedTermBase> selectedTerm = null;
                 if (termSet != null) {
-                    int i = 0;
-                    for (DefinedTermBase<DefinedTermBase> term : termSet) {
-                        if (term != null) {
-                            if (selected.getText().equalsIgnoreCase(term.getTitleCache())) {
-                                selectedTerm = term;
-                                column = table.getColumn(4 + i);
-                            }
-                            i++;
-                        }
-                    }
+                       TableColumn[] columns = viewer.getTable().getColumns();
+                       for(int i=0; i<columns.length; i++){
+                               if(selected.getText().equalsIgnoreCase(columns[i].getText())){
+                                       column = columns[i];
+                                       logger.info("Column no " +i +" Column Header "+ column.getText() );
+                                       for (DefinedTermBase<DefinedTermBase> term : termSet) {
+                                               if(column.getText().equalsIgnoreCase(term.getTitleCache())){
+                                                       selectedTerm = term;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
                 }
                 if (column != null && column.getWidth() == 0) {
                     // save column status if shown or not
@@ -88,7 +91,6 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
                     }
                     column.setWidth(0);
                 }
-                viewer.refresh();
             }
         });
     }
@@ -103,7 +105,10 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
                 WizardDialog dialog = new WizardDialog(StoreUtil.getShell(),
                         availableDistributionWizard);
 
-                dialog.open();
+                int open = dialog.open();
+                if(open == 0){
+                       editor.reload();
+                }
             }
         });
         new MenuItem(menu, SWT.SEPARATOR);
@@ -121,4 +126,8 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
             menu.setVisible(true);
         }
     }
+    
+    public Menu getMenu(){
+       return menu;
+    }
 }
\ No newline at end of file
index 6570ba4418a6e8dd03608faf17901b3dd4b9dec3..92f55fcf138292f024e87f47b768ae2a0bbc96cf 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 
 /**
@@ -37,7 +38,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
  * @created Jan 24, 2011
  * @version 1.0
  */
-public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails{
+public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData{
 
        public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept";
 
index 7c47c3151ea32736c41d834889839ffecac4d333..d4a254049339ec1297b05fae25dc593e30e4f5b2 100644 (file)
@@ -70,7 +70,6 @@ public class SpecimenImportView extends DataImportView<SpecimenOrObservationBase
                     new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
             configurator.setCdmAppController(repo);
             configurator.setAddMediaAsMediaSpecimen(true);
-            configurator.setDeterminationOnFieldUnitLevel(true);
 
             CdmDefaultImport<Abcd206ImportConfigurator> importer = new CdmDefaultImport<Abcd206ImportConfigurator>();
             importer.invoke(configurator);
index 0f8bd8ad8bd01b3060dd220739ab9ffb05902b75..da4a8451c8e851594fdc55779f42623f5f529a1c 100644 (file)
@@ -24,6 +24,7 @@ import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.agent.Address;
@@ -33,6 +34,7 @@ import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
@@ -57,13 +59,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientAgentService implements IAgentService {
 
-    private IAgentService defaultAgentService;
+    private IAgentService defaultService;
 
     /**
      * @param defaultAgentService
      */
     public TransientAgentService(IAgentService defaultAgentService) {
-        this.defaultAgentService = defaultAgentService;
+        this.defaultService = defaultAgentService;
     }
 
     /**
@@ -77,7 +79,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<AuditEventRecord<AgentBase>> pageAuditEvents(AgentBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultAgentService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -92,7 +94,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<Annotation> getAnnotations(AgentBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -102,7 +104,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<Institution> searchInstitutionByCode(String code) {
-        return defaultAgentService.searchInstitutionByCode(code);
+        return defaultService.searchInstitutionByCode(code);
     }
 
     /**
@@ -114,7 +116,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<InstitutionalMembership> getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) {
-        return defaultAgentService.getInstitutionalMemberships(person, pageSize, pageNumber);
+        return defaultService.getInstitutionalMemberships(person, pageSize, pageNumber);
     }
 
     /**
@@ -123,7 +125,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public void clear() {
-        defaultAgentService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -133,7 +135,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public void lock(AgentBase t, LockOptions lockOptions) {
-        defaultAgentService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -144,7 +146,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public void refresh(AgentBase t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultAgentService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -156,7 +158,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber) {
-        return defaultAgentService.getMembers(team, pageSize, pageNumber);
+        return defaultService.getMembers(team, pageSize, pageNumber);
     }
 
     /**
@@ -165,7 +167,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public void updateTitleCache() {
-        defaultAgentService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -175,7 +177,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AuditEventRecord<AgentBase> getNextAuditEvent(AgentBase t) {
-        return defaultAgentService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -190,7 +192,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<Marker> getMarkers(AgentBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -202,7 +204,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public void updateTitleCache(Class<? extends AgentBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<AgentBase> cacheStrategy, IProgressMonitor monitor) {
-        defaultAgentService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -214,7 +216,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {
-        return defaultAgentService.getAddresses(agent, pageSize, pageNumber);
+        return defaultService.getAddresses(agent, pageSize, pageNumber);
     }
 
     /**
@@ -224,7 +226,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AuditEventRecord<AgentBase> getPreviousAuditEvent(AgentBase t) {
-        return defaultAgentService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -234,7 +236,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public int count(Class<? extends AgentBase> clazz) {
-        return defaultAgentService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -249,7 +251,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<AgentBase> search(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -266,7 +268,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<AuditEventRecord<AgentBase>> pageAuditEvents(Class<? extends AgentBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultAgentService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -276,7 +278,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase find(LSID lsid) {
-        return defaultAgentService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -286,7 +288,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public DeleteResult delete(AgentBase persistentObject) {
-        return defaultAgentService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -300,7 +302,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends AgentBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultAgentService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -310,7 +312,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultAgentService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -321,7 +323,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase replace(AgentBase x, AgentBase y) {
-        return defaultAgentService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -331,7 +333,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<AgentBase> find(Set<UUID> uuidSet) {
-        return defaultAgentService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -344,7 +346,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(AgentBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultAgentService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -354,7 +356,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase find(UUID uuid) {
-        return defaultAgentService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -363,7 +365,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<UuidAndTitleCache<Person>> getPersonUuidAndTitleCache() {
-        return defaultAgentService.getPersonUuidAndTitleCache();
+        return defaultService.getPersonUuidAndTitleCache();
     }
 
     /**
@@ -372,7 +374,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<UuidAndTitleCache<Team>> getTeamUuidAndTitleCache() {
-        return defaultAgentService.getTeamUuidAndTitleCache();
+        return defaultService.getTeamUuidAndTitleCache();
     }
 
     /**
@@ -382,7 +384,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase find(int id) {
-        return defaultAgentService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -395,7 +397,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<Rights> getRights(AgentBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultAgentService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -406,7 +408,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public int countMarkers(Class<? extends AgentBase> clazz, Boolean technical) {
-        return defaultAgentService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -415,7 +417,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<UuidAndTitleCache<Team>> getTeamUuidAndNomenclaturalTitle() {
-        return defaultAgentService.getTeamUuidAndNomenclaturalTitle();
+        return defaultService.getTeamUuidAndNomenclaturalTitle();
     }
 
     /**
@@ -425,7 +427,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<AgentBase> findById(Set<Integer> idSet) {
-        return defaultAgentService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -434,7 +436,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache() {
-        return defaultAgentService.getInstitutionUuidAndTitleCache();
+        return defaultService.getInstitutionUuidAndTitleCache();
     }
 
     /**
@@ -446,7 +448,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultAgentService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -455,7 +457,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Session getSession() {
-        return defaultAgentService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -464,7 +466,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<UuidAndTitleCache<AgentBase>> getUuidAndTitleCache() {
-        return defaultAgentService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -478,7 +480,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<Object[]> group(Class<? extends AgentBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultAgentService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -495,7 +497,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<AgentBase> findByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -509,7 +511,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public <S extends AgentBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -519,7 +521,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<AgentBase> findByTitle(IIdentifiableEntityServiceConfigurator<AgentBase> configurator) {
-        return defaultAgentService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -532,7 +534,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Integer countByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultAgentService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -542,7 +544,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase load(UUID uuid) {
-        return defaultAgentService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -553,7 +555,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase load(UUID uuid, List<String> propertyPaths) {
-        return defaultAgentService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -563,7 +565,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<AgentBase> configurator) {
-        return defaultAgentService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -573,7 +575,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public AgentBase merge(AgentBase transientObject) {
-        return defaultAgentService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -590,7 +592,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<AgentBase> listByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -604,7 +606,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public <S extends AgentBase>  Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -614,7 +616,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public UUID refresh(AgentBase persistentObject) {
-        return defaultAgentService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -631,7 +633,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<AgentBase> listByReferenceTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -643,7 +645,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<AgentBase> rows(String tableName, int limit, int start) {
-        return defaultAgentService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -693,7 +695,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public UUID update(AgentBase transientObject) {
-        return defaultAgentService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -708,7 +710,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public List<AgentBase> list(AgentBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultAgentService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -720,7 +722,7 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public int deduplicate(Class<? extends AgentBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultAgentService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -735,11 +737,11 @@ public class TransientAgentService implements IAgentService {
      */
     @Override
     public Pager<AgentBase> findTitleCache(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultAgentService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
        @Override
-       public List<String> isDeletable(AgentBase object,
+       public DeleteResult isDeletable(AgentBase object,
                        DeleteConfiguratorBase config) {
                // TODO Auto-generated method stub
                return null;
@@ -747,9 +749,12 @@ public class TransientAgentService implements IAgentService {
 
        @Override
        public AgentBase findWithoutFlush(UUID uuid) {
-               return defaultAgentService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
        };
 
-
+       @Override
+       public <S extends AgentBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
 
 }
index 7752d1d814e70f6cdad320295fe8b891cfe4378d..5a29a76f394ac831906c0af054c859a8a1ea92b6 100644 (file)
@@ -23,6 +23,8 @@ import eu.etaxonomy.cdm.api.service.ICollectionService;
 import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IDatabaseService;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;
+import eu.etaxonomy.cdm.api.service.IEntityValidationResultService;
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
 import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
@@ -350,10 +352,6 @@ public class TransientCdmRepository implements ICdmApplicationConfiguration {
         return defaultApplicationConfiguration.getTransactionManager();
     }
 
-    /**
-     * @return
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
-     */
     @Override
     public IUserService getUserService() {
         return defaultApplicationConfiguration.getUserService();
@@ -370,56 +368,45 @@ public class TransientCdmRepository implements ICdmApplicationConfiguration {
 //        return new TransientVocabularyService(defaultApplicationConfiguration.getVocabularyService());
     }
 
-    /**
-     * @return
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getWorkingSetService()
-     */
     @Override
     public IWorkingSetService getWorkingSetService() {
         return defaultApplicationConfiguration.getWorkingSetService();
 //        return new TransientWorkingSetService(defaultApplicationConfiguration.getWorkingSetService());
     }
 
-    /**
-     * @return
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
-     */
     @Override
     public TransactionStatus startTransaction() {
         return defaultApplicationConfiguration.startTransaction();
     }
 
-    /**
-     * @param arg0
-     * @return
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction(java.lang.Boolean)
-     */
+
     @Override
     public TransactionStatus startTransaction(Boolean arg0) {
         return defaultApplicationConfiguration.startTransaction(arg0);
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPrimerService()
-     */
     @Override
     public IPrimerService getPrimerService() {
         return defaultApplicationConfiguration.getPrimerService();
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAmplificationService()
-     */
     @Override
     public IAmplificationService getAmplificationService() {
         return defaultApplicationConfiguration.getAmplificationService();
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getSequenceService()
-     */
     @Override
     public ISequenceService getSequenceService() {
         return defaultApplicationConfiguration.getSequenceService();
     }
+
+       @Override
+       public IEntityConstraintViolationService getEntityConstraintViolationService() {
+               return defaultApplicationConfiguration.getEntityConstraintViolationService();
+       }
+
+       @Override
+       public IEntityValidationResultService getEntityValidationResultService() {
+               return defaultApplicationConfiguration.getEntityValidationResultService();
+       }
 }
index 89116165b5973eff378cb68cb553ec010b99373d..de0f1f73033b2b94e774fa774bf3845896fe6b95 100644 (file)
@@ -22,11 +22,14 @@ import org.hibernate.envers.query.criteria.AuditCriterion;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.config.CreateHierarchyForClassificationConfigurator;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
@@ -57,13 +60,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientClassificationService implements IClassificationService {
 
-    private final IClassificationService defaultClassificationService;
+    private final IClassificationService defaultService;
 
     /**
      * @param defaultClassificationService
      */
     public TransientClassificationService(IClassificationService defaultClassificationService) {
-        this.defaultClassificationService = defaultClassificationService;
+        this.defaultService = defaultClassificationService;
     }
 
     /**
@@ -77,7 +80,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<AuditEventRecord<Classification>> pageAuditEvents(Classification t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultClassificationService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -92,7 +95,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Annotation> getAnnotations(Classification annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -102,7 +105,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public TaxonNode getTaxonNodeByUuid(UUID uuid) {
-        return defaultClassificationService.getTaxonNodeByUuid(uuid);
+        return defaultService.getTaxonNodeByUuid(uuid);
     }
 
     /**
@@ -112,7 +115,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public ITaxonTreeNode getTreeNodeByUuid(UUID uuid) {
-        return defaultClassificationService.getTreeNodeByUuid(uuid);
+        return defaultService.getTreeNodeByUuid(uuid);
     }
 
     /**
@@ -121,7 +124,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void clear() {
-        defaultClassificationService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -134,7 +137,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> listClassifications(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.listClassifications(limit, start, orderHints, propertyPaths);
+        return defaultService.listClassifications(limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -144,7 +147,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void lock(Classification t, LockOptions lockOptions) {
-        defaultClassificationService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -155,7 +158,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void refresh(Classification t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultClassificationService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -169,7 +172,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID classificationUuid, List<String> propertyPaths) {
-        return defaultClassificationService.loadTaxonNodeByTaxon(taxon, classificationUuid, propertyPaths);
+        return defaultService.loadTaxonNodeByTaxon(taxon, classificationUuid, propertyPaths);
     }
 
     /**
@@ -178,7 +181,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void updateTitleCache() {
-        defaultClassificationService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -188,7 +191,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public AuditEventRecord<Classification> getNextAuditEvent(Classification t) {
-        return defaultClassificationService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -203,7 +206,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Marker> getMarkers(Classification annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -215,7 +218,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public void updateTitleCache(Class<? extends Classification> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Classification> cacheStrategy, IProgressMonitor monitor) {
-        defaultClassificationService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -228,7 +231,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public TaxonNode loadTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
-        return defaultClassificationService.loadTaxonNode(taxonNode, propertyPaths);
+        return defaultService.loadTaxonNode(taxonNode, propertyPaths);
     }
 
     /**
@@ -238,7 +241,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public AuditEventRecord<Classification> getPreviousAuditEvent(Classification t) {
-        return defaultClassificationService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -254,7 +257,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, Integer limit, Integer start, List<String> propertyPaths) {
-        return defaultClassificationService.loadRankSpecificRootNodes(classification, rank, limit, start, propertyPaths);
+        return defaultService.loadRankSpecificRootNodes(classification, rank, limit, start, propertyPaths);
     }
 
     /**
@@ -264,7 +267,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public int count(Class<? extends Classification> clazz) {
-        return defaultClassificationService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -281,7 +284,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<AuditEventRecord<Classification>> pageAuditEvents(Class<? extends Classification> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultClassificationService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -291,7 +294,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification find(LSID lsid) {
-        return defaultClassificationService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -301,7 +304,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public DeleteResult delete(Classification persistentObject) {
-        return defaultClassificationService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -315,7 +318,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends Classification> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultClassificationService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -325,7 +328,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultClassificationService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -336,7 +339,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification replace(Classification x, Classification y) {
-        return defaultClassificationService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -346,7 +349,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> find(Set<UUID> uuidSet) {
-        return defaultClassificationService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -359,7 +362,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultClassificationService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -373,7 +376,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> listRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
-        return defaultClassificationService.listRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
+        return defaultService.listRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
     }
 
     /**
@@ -383,7 +386,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification find(UUID uuid) {
-        return defaultClassificationService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -393,7 +396,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification find(int id) {
-        return defaultClassificationService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -406,7 +409,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Rights> getRights(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultClassificationService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -417,7 +420,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public int countMarkers(Class<? extends Classification> clazz, Boolean technical) {
-        return defaultClassificationService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -427,7 +430,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> findById(Set<Integer> idSet) {
-        return defaultClassificationService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -439,7 +442,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultClassificationService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -453,7 +456,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<TaxonNode> pageRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
-        return defaultClassificationService.pageRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
+        return defaultService.pageRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
     }
 
     /**
@@ -462,7 +465,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Session getSession() {
-        return defaultClassificationService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -471,7 +474,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<UuidAndTitleCache<Classification>> getUuidAndTitleCache() {
-        return defaultClassificationService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -485,7 +488,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Object[]> group(Class<? extends Classification> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultClassificationService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -502,7 +505,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> findByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -514,7 +517,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> loadTreeBranch(TaxonNode taxonNode, Rank baseRank, List<String> propertyPaths) {
-        return defaultClassificationService.loadTreeBranch(taxonNode, baseRank, propertyPaths);
+        return defaultService.loadTreeBranch(taxonNode, baseRank, propertyPaths);
     }
 
     /**
@@ -528,7 +531,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public <S extends Classification> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -541,7 +544,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, Classification classification, Rank baseRank, List<String> propertyPaths) {
-        return defaultClassificationService.loadTreeBranchToTaxon(taxon, classification, baseRank, propertyPaths);
+        return defaultService.loadTreeBranchToTaxon(taxon, classification, baseRank, propertyPaths);
     }
 
     /**
@@ -551,7 +554,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> findByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
-        return defaultClassificationService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -564,7 +567,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Integer countByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultClassificationService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -574,7 +577,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification load(UUID uuid) {
-        return defaultClassificationService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -585,7 +588,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification load(UUID uuid, List<String> propertyPaths) {
-        return defaultClassificationService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -595,7 +598,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
-        return defaultClassificationService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -605,7 +608,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Classification merge(Classification transientObject) {
-        return defaultClassificationService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -622,7 +625,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> listByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -636,7 +639,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public <S extends Classification> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -649,7 +652,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
-        return defaultClassificationService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
+        return defaultService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
     }
 
     /**
@@ -659,7 +662,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification) {
-        return defaultClassificationService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification);
+        return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification);
     }
 
     /**
@@ -677,7 +680,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, Classification taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes) {
-        return defaultClassificationService.getAllMediaForChildNodes(taxon, taxTree, propertyPaths, size, height, widthOrDuration, mimeTypes);
+        return defaultService.getAllMediaForChildNodes(taxon, taxTree, propertyPaths, size, height, widthOrDuration, mimeTypes);
     }
 
     /**
@@ -687,7 +690,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public UUID refresh(Classification persistentObject) {
-        return defaultClassificationService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -704,7 +707,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> listByReferenceTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -719,7 +722,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(TaxonNode taxonNode, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes) {
-        return defaultClassificationService.getAllMediaForChildNodes(taxonNode, propertyPaths, size, height, widthOrDuration, mimeTypes);
+        return defaultService.getAllMediaForChildNodes(taxonNode, propertyPaths, size, height, widthOrDuration, mimeTypes);
     }
 
     /**
@@ -731,7 +734,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> rows(String tableName, int limit, int start) {
-        return defaultClassificationService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -753,7 +756,7 @@ public class TransientClassificationService implements IClassificationService {
     @Deprecated
     @Override
     public UUID removeTaxonNode(TaxonNode taxonNode) {
-        return defaultClassificationService.removeTaxonNode(taxonNode);
+        return defaultService.removeTaxonNode(taxonNode);
     }
 
     /**
@@ -807,7 +810,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public UUID removeTreeNode(ITaxonTreeNode treeNode) {
-        return defaultClassificationService.removeTreeNode(treeNode);
+        return defaultService.removeTreeNode(treeNode);
     }
 
     /**
@@ -822,7 +825,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> search(Class<? extends Classification> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -851,7 +854,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<TaxonNode> getAllNodes() {
-        return defaultClassificationService.getAllNodes();
+        return defaultService.getAllNodes();
     }
 
     /**
@@ -861,7 +864,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public UUID update(Classification transientObject) {
-        return defaultClassificationService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -876,7 +879,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public List<Classification> list(Classification example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultClassificationService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -888,7 +891,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public int deduplicate(Class<? extends Classification> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultClassificationService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -903,7 +906,7 @@ public class TransientClassificationService implements IClassificationService {
      */
     @Override
     public Pager<Classification> findTitleCache(Class<? extends Classification> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultClassificationService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
     /* (non-Javadoc)
@@ -912,11 +915,11 @@ public class TransientClassificationService implements IClassificationService {
     @Override
     public List<TaxonNode> listChildNodesOfTaxon(UUID taxonUuid, UUID classificationUuid, Integer pageSize,
             Integer pageIndex, List<String> propertyPaths) {
-        return defaultClassificationService.listChildNodesOfTaxon(taxonUuid, classificationUuid, pageSize, pageIndex, propertyPaths);
+        return defaultService.listChildNodesOfTaxon(taxonUuid, classificationUuid, pageSize, pageIndex, propertyPaths);
     }
 
        @Override
-       public List<String> isDeletable(Classification object,
+       public DeleteResult isDeletable(Classification object,
                        DeleteConfiguratorBase config) {
                // TODO Auto-generated method stub
                return null;
@@ -924,9 +927,22 @@ public class TransientClassificationService implements IClassificationService {
 
        @Override
        public Classification findWithoutFlush(UUID uuid) {
-               return defaultClassificationService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
        }
 
 
+       @Override
+       public <S extends Classification>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#createHierarchyInClassification(java.util.Map, eu.etaxonomy.cdm.model.taxon.Classification)
+     */
+    @Override
+    public Classification createHierarchyInClassification(Classification arg1, CreateHierarchyForClassificationConfigurator arg2) {
+       return defaultService.createHierarchyInClassification(arg1, arg2);
+    }
+
 
 }
index ea7b1e39b5162b931287cc1911eabaf7e1b4bf2b..b490b516cb058ea6a1b0c69ac1cd0bf75c05dc70 100644 (file)
@@ -23,9 +23,12 @@ import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.ICollectionService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
@@ -376,7 +379,7 @@ public class TransientCollectionService implements ICollectionService {
      * @see eu.etaxonomy.cdm.api.service.IVersionableService#isDeletable(eu.etaxonomy.cdm.model.common.VersionableEntity, eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase)
      */
     @Override
-    public List<String> isDeletable(Collection object, DeleteConfiguratorBase config) {
+    public DeleteResult isDeletable(Collection object, DeleteConfiguratorBase config) {
         return defaultService.isDeletable(object, config);
     }
 
@@ -697,5 +700,8 @@ public class TransientCollectionService implements ICollectionService {
         return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
-
+       @Override
+       public <S extends Collection>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
 }
index 3a5e1fdfbb6da399e4e5cad36fe0d9ae0ba172eb..0304e35d5b24cd4e6e9bf02aba85cce1aaef8986 100644 (file)
@@ -25,8 +25,10 @@ import eu.etaxonomy.cdm.api.service.DistributionTree;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
@@ -41,7 +43,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;
@@ -67,13 +69,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientDescriptionService implements IDescriptionService {
 
-    private IDescriptionService defaultDescriptionService;
+    private final IDescriptionService defaultService;
 
     /**
      * @param defaultDescriptionService
      */
     public TransientDescriptionService(IDescriptionService defaultDescriptionService) {
-        this.defaultDescriptionService = defaultDescriptionService;
+        this.defaultService = defaultDescriptionService;
     }
 
     /**
@@ -87,7 +89,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<AuditEventRecord<DescriptionBase>> pageAuditEvents(DescriptionBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultDescriptionService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -102,7 +104,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<Annotation> getAnnotations(DescriptionBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -111,7 +113,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public void clear() {
-        defaultDescriptionService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -121,7 +123,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public void lock(DescriptionBase t, LockOptions lockOptions) {
-        defaultDescriptionService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -132,7 +134,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public void refresh(DescriptionBase t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultDescriptionService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -141,7 +143,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public void updateTitleCache() {
-        defaultDescriptionService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -151,7 +153,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public AuditEventRecord<DescriptionBase> getNextAuditEvent(DescriptionBase t) {
-        return defaultDescriptionService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -162,7 +164,7 @@ public class TransientDescriptionService implements IDescriptionService {
     @Deprecated
     @Override
     public TermVocabulary<Feature> getDefaultFeatureVocabulary() {
-        return defaultDescriptionService.getDefaultFeatureVocabulary();
+        return defaultService.getDefaultFeatureVocabulary();
     }
 
     /**
@@ -177,7 +179,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<Marker> getMarkers(DescriptionBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -189,7 +191,7 @@ public class TransientDescriptionService implements IDescriptionService {
     @Deprecated
     @Override
     public TermVocabulary<Feature> getFeatureVocabulary(UUID uuid) {
-        return defaultDescriptionService.getFeatureVocabulary(uuid);
+        return defaultService.getFeatureVocabulary(uuid);
     }
 
     /**
@@ -201,7 +203,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public void updateTitleCache(Class<? extends DescriptionBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<DescriptionBase> cacheStrategy, IProgressMonitor monitor) {
-        defaultDescriptionService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -211,7 +213,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public AuditEventRecord<DescriptionBase> getPreviousAuditEvent(DescriptionBase t) {
-        return defaultDescriptionService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -221,7 +223,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionElementBase getDescriptionElementByUuid(UUID uuid) {
-        return defaultDescriptionService.getDescriptionElementByUuid(uuid);
+        return defaultService.getDescriptionElementByUuid(uuid);
     }
 
     /**
@@ -231,7 +233,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public int count(Class<? extends DescriptionBase> clazz) {
-        return defaultDescriptionService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -242,7 +244,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionElementBase loadDescriptionElement(UUID uuid, List<String> propertyPaths) {
-        return defaultDescriptionService.loadDescriptionElement(uuid, propertyPaths);
+        return defaultService.loadDescriptionElement(uuid, propertyPaths);
     }
 
     /**
@@ -259,7 +261,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<AuditEventRecord<DescriptionBase>> pageAuditEvents(Class<? extends DescriptionBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultDescriptionService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -269,7 +271,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase find(LSID lsid) {
-        return defaultDescriptionService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -279,7 +281,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DeleteResult delete(DescriptionBase persistentObject) {
-        return defaultDescriptionService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -293,7 +295,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends DescriptionBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -303,7 +305,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultDescriptionService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -314,7 +316,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase replace(DescriptionBase x, DescriptionBase y) {
-        return defaultDescriptionService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -334,7 +336,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionBase> find(Set<UUID> uuidSet) {
-        return defaultDescriptionService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -357,7 +359,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(DescriptionBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -367,7 +369,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public UUID deleteDescriptionElement(DescriptionElementBase descriptionElement) {
-        return defaultDescriptionService.deleteDescriptionElement(descriptionElement);
+        return defaultService.deleteDescriptionElement(descriptionElement);
     }
 
     /**
@@ -377,7 +379,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase find(UUID uuid) {
-        return defaultDescriptionService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -394,7 +396,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionBase> page(Class<? extends DescriptionBase> type, Boolean hasMedia, Boolean hasText, Set<Feature> feature, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.page(type, hasMedia, hasText, feature, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, hasMedia, hasText, feature, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -404,7 +406,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase find(int id) {
-        return defaultDescriptionService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -417,7 +419,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<Rights> getRights(DescriptionBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -428,7 +430,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public int countMarkers(Class<? extends DescriptionBase> clazz, Boolean technical) {
-        return defaultDescriptionService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -438,7 +440,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionBase> findById(Set<Integer> idSet) {
-        return defaultDescriptionService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -450,7 +452,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultDescriptionService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -459,7 +461,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Session getSession() {
-        return defaultDescriptionService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -468,7 +470,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<UuidAndTitleCache<DescriptionBase>> getUuidAndTitleCache() {
-        return defaultDescriptionService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -482,7 +484,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<Object[]> group(Class<? extends DescriptionBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultDescriptionService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -495,7 +497,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public int count(Class<? extends DescriptionBase> type, Boolean hasImages, Boolean hasText, Set<Feature> feature) {
-        return defaultDescriptionService.count(type, hasImages, hasText, feature);
+        return defaultService.count(type, hasImages, hasText, feature);
     }
 
     /**
@@ -512,7 +514,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionBase> findByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -526,7 +528,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public <S extends DescriptionBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -543,7 +545,7 @@ public class TransientDescriptionService implements IDescriptionService {
     @Deprecated
     @Override
     public Pager<DescriptionElementBase> getDescriptionElements(DescriptionBase description, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.getDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.getDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -553,7 +555,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionBase> findByTitle(IIdentifiableEntityServiceConfigurator<DescriptionBase> configurator) {
-        return defaultDescriptionService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -566,7 +568,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Integer countByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultDescriptionService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -576,7 +578,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase load(UUID uuid) {
-        return defaultDescriptionService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -587,7 +589,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase load(UUID uuid, List<String> propertyPaths) {
-        return defaultDescriptionService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -597,7 +599,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<DescriptionBase> configurator) {
-        return defaultDescriptionService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -607,7 +609,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DescriptionBase merge(DescriptionBase transientObject) {
-        return defaultDescriptionService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -623,7 +625,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionElementBase> pageDescriptionElements(DescriptionBase description, Class<? extends DescriptionBase> descriptionType, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.pageDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.pageDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -640,7 +642,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionBase> listByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -654,7 +656,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public <S extends DescriptionBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -664,7 +666,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public UUID refresh(DescriptionBase persistentObject) {
-        return defaultDescriptionService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -681,7 +683,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionBase> listByReferenceTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -698,7 +700,7 @@ public class TransientDescriptionService implements IDescriptionService {
     @Deprecated
     @Override
     public List<DescriptionElementBase> listDescriptionElements(DescriptionBase description, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.listDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.listDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -710,7 +712,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionBase> rows(String tableName, int limit, int start) {
-        return defaultDescriptionService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -755,7 +757,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionBase> search(Class<? extends DescriptionBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -775,7 +777,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public UUID update(DescriptionBase transientObject) {
-        return defaultDescriptionService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -791,7 +793,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionElementBase> listDescriptionElements(DescriptionBase description, Class<? extends DescriptionBase> descriptionType, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.listDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.listDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -806,7 +808,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<DescriptionBase> list(DescriptionBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -818,7 +820,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public int deduplicate(Class<? extends DescriptionBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultDescriptionService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -833,7 +835,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<Annotation> getDescriptionElementAnnotations(DescriptionElementBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.getDescriptionElementAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getDescriptionElementAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -848,7 +850,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionBase> findTitleCache(Class<? extends DescriptionBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultDescriptionService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
     /**
@@ -863,7 +865,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<TaxonDescription> pageTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.pageTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
+        return defaultService.pageTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -879,7 +881,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<TaxonDescription> pageTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.pageTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
+        return defaultService.pageTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -894,7 +896,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<TaxonDescription> listTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.listTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
+        return defaultService.listTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -910,7 +912,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<TaxonDescription> listTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.listTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
+        return defaultService.listTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -925,7 +927,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public List<Media> listTaxonDescriptionMedia(UUID taxonUuid, boolean limitToGalleries, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.listTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes, pageSize, pageNumber, propertyPaths);
+        return defaultService.listTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -937,7 +939,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public int countTaxonDescriptionMedia(UUID taxonUuid, boolean limitToGalleries, Set<MarkerType> markerTypes) {
-        return defaultDescriptionService.countTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes);
+        return defaultService.countTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes);
     }
 
     /**
@@ -950,7 +952,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<TaxonNameDescription> getTaxonNameDescriptions(TaxonNameBase name, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.getTaxonNameDescriptions(name, pageSize, pageNumber, propertyPaths);
+        return defaultService.getTaxonNameDescriptions(name, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -964,8 +966,8 @@ public class TransientDescriptionService implements IDescriptionService {
      * @see eu.etaxonomy.cdm.api.service.IDescriptionService#searchDescriptionByDistribution(java.util.Set, eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
      */
     @Override
-    public Pager<TaxonDescription> searchDescriptionByDistribution(Set<NamedArea> namedAreas, PresenceAbsenceTermBase presence, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.searchDescriptionByDistribution(namedAreas, presence, pageSize, pageNumber, orderHints, propertyPaths);
+    public Pager<TaxonDescription> searchDescriptionByDistribution(Set<NamedArea> namedAreas, PresenceAbsenceTerm presence, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.searchDescriptionByDistribution(namedAreas, presence, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -980,7 +982,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<DescriptionElementBase> searchElements(Class<? extends DescriptionElementBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultDescriptionService.searchElements(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.searchElements(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -993,7 +995,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<Media> getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.getMedia(descriptionElement, pageSize, pageNumber, propertyPaths);
+        return defaultService.getMedia(descriptionElement, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -1010,7 +1012,7 @@ public class TransientDescriptionService implements IDescriptionService {
     @Deprecated
     @Override
     public <T extends DescriptionElementBase> List<T> getDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.getDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.getDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -1025,7 +1027,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public <T extends DescriptionElementBase> List<T> listDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.listDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.listDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -1040,7 +1042,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public <T extends DescriptionElementBase> Pager<T> pageDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.pageDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
+        return defaultService.pageDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -1053,7 +1055,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public String generateNaturalLanguageDescription(FeatureTree featureTree, TaxonDescription description, List<Language> preferredLanguages, String separator) {
-        return defaultDescriptionService.generateNaturalLanguageDescription(featureTree, description, preferredLanguages, separator);
+        return defaultService.generateNaturalLanguageDescription(featureTree, description, preferredLanguages, separator);
     }
 
     /**
@@ -1065,7 +1067,7 @@ public class TransientDescriptionService implements IDescriptionService {
     @Deprecated
     @Override
     public boolean hasStructuredData(DescriptionBase<?> description) {
-        return defaultDescriptionService.hasStructuredData(description);
+        return defaultService.hasStructuredData(description);
     }
 
     /**
@@ -1076,7 +1078,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public void moveDescriptionElementsToDescription(Collection<DescriptionElementBase> descriptionElements, DescriptionBase targetDescription, boolean isPaste) {
-        defaultDescriptionService.moveDescriptionElementsToDescription(descriptionElements, targetDescription, isPaste);
+        defaultService.moveDescriptionElementsToDescription(descriptionElements, targetDescription, isPaste);
     }
 
     /* (non-Javadoc)
@@ -1084,7 +1086,7 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public Pager<NamedArea> pageNamedAreasInUse(Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultDescriptionService.pageNamedAreasInUse(pageSize, pageNumber, propertyPaths);
+        return defaultService.pageNamedAreasInUse(pageSize, pageNumber, propertyPaths);
     }
 
     /* (non-Javadoc)
@@ -1092,11 +1094,11 @@ public class TransientDescriptionService implements IDescriptionService {
      */
     @Override
     public DistributionTree getOrderedDistributions(Set<TaxonDescription> taxonDescriptions, boolean subAreaPreference, boolean statusOrderPreference, Set<MarkerType> hideMarkedAreas, Set<NamedAreaLevel> omitLevels, List<String> propertyPaths) {
-        return defaultDescriptionService.getOrderedDistributions(taxonDescriptions, subAreaPreference, statusOrderPreference, hideMarkedAreas, omitLevels, propertyPaths);
+        return defaultService.getOrderedDistributions(taxonDescriptions, subAreaPreference, statusOrderPreference, hideMarkedAreas, omitLevels, propertyPaths);
     }
 
        @Override
-       public List<String> isDeletable(DescriptionBase object,
+       public DeleteResult isDeletable(DescriptionBase object,
                        DeleteConfiguratorBase config) {
                // TODO Auto-generated method stub
                return null;
@@ -1104,7 +1106,16 @@ public class TransientDescriptionService implements IDescriptionService {
 
        @Override
        public DescriptionBase findWithoutFlush(UUID uuid) {
-               return defaultDescriptionService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
+       }
+       
+       @Override
+       public <S extends DescriptionBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
        }
 
+       @Override
+       public UUID deleteDescription(DescriptionBase description) {
+               return defaultService.deleteDescription(description);
+       }
 }
index 759e214c5996764f59be66692e77bac0c4142e6d..63d3eb8ebe0351c6033cde568d27cc8263edb848 100644 (file)
@@ -28,13 +28,16 @@ import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.search.DocumentSearchResult;
 import eu.etaxonomy.cdm.api.service.search.SearchResult;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
@@ -75,13 +78,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientNameService implements INameService {
 
-    private INameService defaultNameService;
+    private INameService defaultService;
 
     /**
      *
      */
     public TransientNameService(INameService defaultNameService) {
-        this.defaultNameService = defaultNameService;
+        this.defaultService = defaultNameService;
     }
 
     /**
@@ -95,7 +98,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<AuditEventRecord<TaxonNameBase>> pageAuditEvents(TaxonNameBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultNameService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -110,7 +113,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<Annotation> getAnnotations(TaxonNameBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -119,7 +122,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public void clear() {
-        defaultNameService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -129,7 +132,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public void lock(TaxonNameBase t, LockOptions lockOptions) {
-        defaultNameService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -140,7 +143,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public void refresh(TaxonNameBase t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultNameService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -149,7 +152,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public void updateTitleCache() {
-        defaultNameService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -159,7 +162,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public AuditEventRecord<TaxonNameBase> getNextAuditEvent(TaxonNameBase t) {
-        return defaultNameService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -174,7 +177,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<Marker> getMarkers(TaxonNameBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -186,7 +189,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public void updateTitleCache(Class<? extends TaxonNameBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TaxonNameBase> cacheStrategy, IProgressMonitor monitor) {
-        defaultNameService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -196,7 +199,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public AuditEventRecord<TaxonNameBase> getPreviousAuditEvent(TaxonNameBase t) {
-        return defaultNameService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -206,7 +209,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public int count(Class<? extends TaxonNameBase> clazz) {
-        return defaultNameService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -218,7 +221,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public DeleteResult delete(TaxonNameBase name, NameDeletionConfigurator config)  {
-        return defaultNameService.delete(name, config);
+        return defaultService.delete(name, config);
     }
 
     /**
@@ -235,7 +238,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<AuditEventRecord<TaxonNameBase>> pageAuditEvents(Class<? extends TaxonNameBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultNameService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -245,7 +248,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase find(LSID lsid) {
-        return defaultNameService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -255,7 +258,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public DeleteResult delete(TaxonNameBase persistentObject) {
-        return defaultNameService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -269,7 +272,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends TaxonNameBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultNameService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -279,7 +282,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultNameService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -289,7 +292,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public void deleteTypeDesignation(TaxonNameBase name, TypeDesignationBase typeDesignation) {
-        defaultNameService.deleteTypeDesignation(name, typeDesignation);
+        defaultService.deleteTypeDesignation(name, typeDesignation);
     }
 
     /**
@@ -300,7 +303,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase replace(TaxonNameBase x, TaxonNameBase y) {
-        return defaultNameService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -310,7 +313,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> find(Set<UUID> uuidSet) {
-        return defaultNameService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -323,7 +326,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(TaxonNameBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultNameService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -343,7 +346,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase find(UUID uuid) {
-        return defaultNameService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -373,7 +376,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase find(int id) {
-        return defaultNameService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -386,7 +389,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<Rights> getRights(TaxonNameBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultNameService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -397,7 +400,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public int countMarkers(Class<? extends TaxonNameBase> clazz, Boolean technical) {
-        return defaultNameService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -408,7 +411,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<NomenclaturalStatus> getAllNomenclaturalStatus(int limit, int start) {
-        return defaultNameService.getAllNomenclaturalStatus(limit, start);
+        return defaultService.getAllNomenclaturalStatus(limit, start);
     }
 
     /**
@@ -419,7 +422,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TypeDesignationBase> getAllTypeDesignations(int limit, int start) {
-        return defaultNameService.getAllTypeDesignations(limit, start);
+        return defaultService.getAllTypeDesignations(limit, start);
     }
 
     /**
@@ -429,7 +432,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> findById(Set<Integer> idSet) {
-        return defaultNameService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -439,7 +442,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> getNamesByName(String name) {
-        return defaultNameService.getNamesByName(name);
+        return defaultService.getNamesByName(name);
     }
 
     /**
@@ -449,7 +452,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<NonViralName> getNamesByNameCache(String nameCache) {
-        return defaultNameService.getNamesByNameCache(nameCache);
+        return defaultService.getNamesByNameCache(nameCache);
     }
 
     /**
@@ -461,7 +464,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultNameService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -470,7 +473,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Session getSession() {
-        return defaultNameService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -479,7 +482,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<UuidAndTitleCache<TaxonNameBase>> getUuidAndTitleCache() {
-        return defaultNameService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -493,7 +496,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<Object[]> group(Class<? extends TaxonNameBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultNameService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -505,7 +508,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<NonViralName> findNamesByTitleCache(String titleCache, MatchMode matchMode, List<String> propertyPaths) {
-        return defaultNameService.findNamesByTitleCache(titleCache, matchMode, propertyPaths);
+        return defaultService.findNamesByTitleCache(titleCache, matchMode, propertyPaths);
     }
 
     /**
@@ -517,7 +520,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<NonViralName> findNamesByNameCache(String nameCache, MatchMode matchMode, List<String> propertyPaths) {
-        return defaultNameService.findNamesByNameCache(nameCache, matchMode, propertyPaths);
+        return defaultService.findNamesByNameCache(nameCache, matchMode, propertyPaths);
     }
 
     /**
@@ -534,7 +537,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TaxonNameBase> findByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -545,7 +548,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public NonViralName findNameByUuid(UUID uuid, List<String> propertyPaths) {
-        return defaultNameService.findNameByUuid(uuid, propertyPaths);
+        return defaultService.findNameByUuid(uuid, propertyPaths);
     }
 
     /**
@@ -556,7 +559,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List getNamesByName(String name, CdmBase sessionObject) {
-        return defaultNameService.getNamesByName(name, sessionObject);
+        return defaultService.getNamesByName(name, sessionObject);
     }
 
     /**
@@ -574,7 +577,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<SearchResult<TaxonNameBase>> findByNameFuzzySearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, List<String> propertyPaths, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
-        return defaultNameService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, propertyPaths, maxNoOfResults);
+        return defaultService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, propertyPaths, maxNoOfResults);
     }
 
     /**
@@ -588,7 +591,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public <S extends TaxonNameBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -598,7 +601,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TaxonNameBase> findByTitle(IIdentifiableEntityServiceConfigurator<TaxonNameBase> configurator) {
-        return defaultNameService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -611,7 +614,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Integer countByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultNameService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -621,7 +624,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase load(UUID uuid) {
-        return defaultNameService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -638,7 +641,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<DocumentSearchResult> findByNameFuzzySearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
-        return defaultNameService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
+        return defaultService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
     }
 
     /**
@@ -649,7 +652,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase load(UUID uuid, List<String> propertyPaths) {
-        return defaultNameService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -659,7 +662,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<TaxonNameBase> configurator) {
-        return defaultNameService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -669,7 +672,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public TaxonNameBase merge(TaxonNameBase transientObject) {
-        return defaultNameService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -686,7 +689,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> listByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -700,7 +703,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public <S extends TaxonNameBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -717,7 +720,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<DocumentSearchResult> findByFuzzyNameCacheSearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
-        return defaultNameService.findByFuzzyNameCacheSearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
+        return defaultService.findByFuzzyNameCacheSearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
     }
 
     /**
@@ -734,7 +737,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<DocumentSearchResult> findByNameExactSearch(String name, boolean wildcard, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
-        return defaultNameService.findByNameExactSearch(name, wildcard, languages, highlightFragments, maxNoOfResults);
+        return defaultService.findByNameExactSearch(name, wildcard, languages, highlightFragments, maxNoOfResults);
     }
 
     /**
@@ -744,7 +747,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public UUID refresh(TaxonNameBase persistentObject) {
-        return defaultNameService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -761,7 +764,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> listByReferenceTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -773,7 +776,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> rows(String tableName, int limit, int start) {
-        return defaultNameService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -803,7 +806,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List findNamesByTitle(String title) {
-        return defaultNameService.findNamesByTitle(title);
+        return defaultService.findNamesByTitle(title);
     }
 
     /**
@@ -814,7 +817,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List findNamesByTitle(String title, CdmBase sessionObject) {
-        return defaultNameService.findNamesByTitle(title, sessionObject);
+        return defaultService.findNamesByTitle(title, sessionObject);
     }
 
     /**
@@ -835,7 +838,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<HomotypicalGroup> getAllHomotypicalGroups(int limit, int start) {
-        return defaultNameService.getAllHomotypicalGroups(limit, start);
+        return defaultService.getAllHomotypicalGroups(limit, start);
     }
 
     /**
@@ -848,7 +851,7 @@ public class TransientNameService implements INameService {
     @Deprecated
     @Override
     public List<RelationshipBase> getAllRelationships(int limit, int start) {
-        return defaultNameService.getAllRelationships(limit, start);
+        return defaultService.getAllRelationships(limit, start);
     }
 
     /**
@@ -868,7 +871,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public UUID update(TaxonNameBase transientObject) {
-        return defaultNameService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -883,7 +886,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaxonNameBase> list(TaxonNameBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -895,7 +898,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public int deduplicate(Class<? extends TaxonNameBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultNameService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -911,7 +914,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<NameRelationship> listNameRelationships(TaxonNameBase name, Direction direction, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.listNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -926,7 +929,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TaxonNameBase> findTitleCache(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultNameService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
     /**
@@ -942,7 +945,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<NameRelationship> pageNameRelationships(TaxonNameBase name, Direction direction, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.pageNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.pageNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -959,7 +962,7 @@ public class TransientNameService implements INameService {
     @Deprecated
     @Override
     public List<NameRelationship> listFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.listFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -976,7 +979,7 @@ public class TransientNameService implements INameService {
     @Deprecated
     @Override
     public Pager<NameRelationship> pageFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.pageFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.pageFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -993,7 +996,7 @@ public class TransientNameService implements INameService {
     @Deprecated
     @Override
     public List<NameRelationship> listToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.listToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1010,7 +1013,7 @@ public class TransientNameService implements INameService {
     @Deprecated
     @Override
     public Pager<NameRelationship> pageToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.pageToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.pageToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1025,7 +1028,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<HybridRelationship> getHybridNames(NonViralName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.getHybridNames(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getHybridNames(name, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1038,7 +1041,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, SpecimenTypeDesignationStatus status, Integer pageSize, Integer pageNumber) {
-        return defaultNameService.getTypeDesignations(name, status, pageSize, pageNumber);
+        return defaultService.getTypeDesignations(name, status, pageSize, pageNumber);
     }
 
     /**
@@ -1052,7 +1055,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, SpecimenTypeDesignationStatus status, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultNameService.getTypeDesignations(name, status, pageSize, pageNumber, propertyPaths);
+        return defaultService.getTypeDesignations(name, status, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -1070,7 +1073,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TaxonNameBase> searchNames(String uninomial, String infraGenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.searchNames(uninomial, infraGenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.searchNames(uninomial, infraGenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1085,7 +1088,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TaxonNameBase> search(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1094,7 +1097,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<UuidAndTitleCache> getUuidAndTitleCacheOfNames() {
-        return defaultNameService.getUuidAndTitleCacheOfNames();
+        return defaultService.getUuidAndTitleCacheOfNames();
     }
 
     /**
@@ -1111,7 +1114,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public Pager<TaxonNameBase> findByName(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultNameService.findByName(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByName(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1121,7 +1124,7 @@ public class TransientNameService implements INameService {
      */
     @Override
     public HomotypicalGroup findHomotypicalGroup(UUID uuid) {
-        return defaultNameService.findHomotypicalGroup(uuid);
+        return defaultService.findHomotypicalGroup(uuid);
     }
 
     /**
@@ -1131,11 +1134,11 @@ public class TransientNameService implements INameService {
      */
     @Override
     public List<TaggedText> getTaggedName(UUID uuid) {
-        return defaultNameService.getTaggedName(uuid);
+        return defaultService.getTaggedName(uuid);
     }
 
        @Override
-       public List<String> isDeletable(TaxonNameBase object,
+       public DeleteResult isDeletable(TaxonNameBase object,
                        DeleteConfiguratorBase config) {
                // TODO Auto-generated method stub
                return null;
@@ -1143,7 +1146,12 @@ public class TransientNameService implements INameService {
 
        @Override
        public TaxonNameBase findWithoutFlush(UUID uuid) {
-               return defaultNameService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
+       }
+       
+       @Override
+       public <S extends TaxonNameBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
        }
 
 
index 23a3e5cbd3e1039051d95b4de0d4cf34c8f90b57..4a59f3d5bf1c253740568c89c37d6639d6a92914 100644 (file)
@@ -33,11 +33,14 @@ import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
 import eu.etaxonomy.cdm.api.service.dto.DerivateHierarchyDTO;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.search.SearchResult;
 import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
@@ -47,11 +50,13 @@ import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.location.Country;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
@@ -899,7 +904,7 @@ public class TransientOccurenceService implements IOccurrenceService {
     }
 
        @Override
-       public List<String> isDeletable(SpecimenOrObservationBase object,
+       public DeleteResult isDeletable(SpecimenOrObservationBase object,
                        DeleteConfiguratorBase config) {
                return defaultService.isDeletable(object, config);
        }
@@ -917,15 +922,25 @@ public class TransientOccurenceService implements IOccurrenceService {
                return defaultService.findWithoutFlush(uuid);
        }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listFieldUnitsByAssociatedTaxon(java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
-     */
-    @Override
-    public Collection<FieldUnit> listFieldUnitsByAssociatedTaxon(Set<TaxonRelationshipEdge> includeRelationships,
-            Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,
-            List<String> propertyPaths) {
-        return defaultService.listFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
-    }
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listFieldUnitsByAssociatedTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List, java.util.List)
+        */
+       @Override
+       public Collection<SpecimenOrObservationBase> listFieldUnitsByAssociatedTaxon(Taxon associatedTaxon,
+               List<OrderHint> orderHints, List<String> propertyPaths) {
+           return defaultService.listFieldUnitsByAssociatedTaxon(associatedTaxon, orderHints, propertyPaths);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageFieldUnitsByAssociatedTaxon(java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+        */
+       @Override
+       public Pager<SpecimenOrObservationBase> pageFieldUnitsByAssociatedTaxon(
+               Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize,
+               Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+           return defaultService.pageFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
+       }
+
 
     /* (non-Javadoc)
      * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#assembleDerivateHierarchyDTO(eu.etaxonomy.cdm.model.occurrence.FieldUnit, java.util.UUID)
@@ -947,7 +962,7 @@ public class TransientOccurenceService implements IOccurrenceService {
      * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#deleteDerivateHierarchy(eu.etaxonomy.cdm.model.common.ICdmBase)
      */
     @Override
-    public DeleteResult deleteDerivateHierarchy(ICdmBase from, SpecimenDeleteConfigurator config) {
+    public DeleteResult deleteDerivateHierarchy(CdmBase from, SpecimenDeleteConfigurator config) {
         return defaultService.deleteDerivateHierarchy(from, config);
     }
 
@@ -960,11 +975,36 @@ public class TransientOccurenceService implements IOccurrenceService {
     }
 
     /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listAssociatedTaxa(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase)
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listIndividualsAssociations(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
      */
     @Override
-    public Collection<TaxonBase<?>> listAssociatedTaxa(SpecimenOrObservationBase<?> specimen) {
-        return defaultService.listAssociatedTaxa(specimen);
+    public Collection<IndividualsAssociation> listIndividualsAssociations(SpecimenOrObservationBase<?> specimen,
+            Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths);
     }
 
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listTypeDesignations(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Collection<SpecimenTypeDesignation> listTypeDesignations(SpecimenOrObservationBase<?> specimen,
+            Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDescriptionsWithDescriptionSpecimen(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Collection<DescriptionBase<?>> listDescriptionsWithDescriptionSpecimen(
+            SpecimenOrObservationBase<?> specimen, Integer limit, Integer start, List<OrderHint> orderHints,
+            List<String> propertyPaths) {
+        return defaultService.listDescriptionsWithDescriptionSpecimen(specimen, limit, start, orderHints, propertyPaths);
+    }
+
+       @Override
+       public <S extends SpecimenOrObservationBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
+
 }
index 528813557d1bf74e84c94f9ec343977621f8c47f..3fda470fdfd5e82d5c7e3733d7167033fe23f55d 100644 (file)
@@ -24,9 +24,12 @@ import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
@@ -53,13 +56,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientReferenceService implements IReferenceService {
 
-    private IReferenceService defaultReferenceService;
+    private IReferenceService defaultService;
 
     /**
      * @param defaultReferenceService
      */
     public TransientReferenceService(IReferenceService defaultReferenceService) {
-        this.defaultReferenceService = defaultReferenceService;
+        this.defaultService = defaultReferenceService;
     }
 
     /**
@@ -74,7 +77,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Reference> search(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -88,7 +91,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<AuditEventRecord<Reference>> pageAuditEvents(Reference t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultReferenceService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -103,7 +106,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Annotation> getAnnotations(Reference annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -112,7 +115,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public void clear() {
-        defaultReferenceService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -122,7 +125,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public void lock(Reference t, LockOptions lockOptions) {
-        defaultReferenceService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -133,7 +136,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public void refresh(Reference t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultReferenceService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -142,7 +145,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public void updateTitleCache() {
-        defaultReferenceService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -152,7 +155,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public AuditEventRecord<Reference> getNextAuditEvent(Reference t) {
-        return defaultReferenceService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -167,7 +170,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Marker> getMarkers(Reference annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -176,7 +179,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<UuidAndTitleCache<Reference>> getUuidAndTitle() {
-        return defaultReferenceService.getUuidAndTitle();
+        return defaultService.getUuidAndTitle();
     }
 
     /**
@@ -188,7 +191,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public void updateTitleCache(Class<? extends Reference> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Reference> cacheStrategy, IProgressMonitor monitor) {
-        defaultReferenceService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -198,7 +201,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public AuditEventRecord<Reference> getPreviousAuditEvent(Reference t) {
-        return defaultReferenceService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -207,7 +210,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> getAllReferencesForPublishing() {
-        return defaultReferenceService.getAllReferencesForPublishing();
+        return defaultService.getAllReferencesForPublishing();
     }
 
     /**
@@ -217,7 +220,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public int count(Class<? extends Reference> clazz) {
-        return defaultReferenceService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -226,7 +229,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> getAllNomenclaturalReferences() {
-        return defaultReferenceService.getAllNomenclaturalReferences();
+        return defaultService.getAllNomenclaturalReferences();
     }
 
     /**
@@ -238,7 +241,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths) {
-        return defaultReferenceService.listCoveredTaxa(reference, includeSubordinateReferences, propertyPaths);
+        return defaultService.listCoveredTaxa(reference, includeSubordinateReferences, propertyPaths);
     }
 
     /**
@@ -255,7 +258,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<AuditEventRecord<Reference>> pageAuditEvents(Class<? extends Reference> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultReferenceService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -265,7 +268,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference find(LSID lsid) {
-        return defaultReferenceService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -275,7 +278,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public DeleteResult delete(Reference persistentObject) {
-        return defaultReferenceService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -289,7 +292,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends Reference> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultReferenceService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -299,7 +302,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultReferenceService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -310,7 +313,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference replace(Reference x, Reference y) {
-        return defaultReferenceService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -320,7 +323,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> find(Set<UUID> uuidSet) {
-        return defaultReferenceService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -333,7 +336,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(Reference t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultReferenceService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -343,7 +346,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference find(UUID uuid) {
-        return defaultReferenceService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -353,7 +356,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference find(int id) {
-        return defaultReferenceService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -366,7 +369,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Rights> getRights(Reference t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultReferenceService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -377,7 +380,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public int countMarkers(Class<? extends Reference> clazz, Boolean technical) {
-        return defaultReferenceService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -387,7 +390,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> findById(Set<Integer> idSet) {
-        return defaultReferenceService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -399,7 +402,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultReferenceService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -408,7 +411,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Session getSession() {
-        return defaultReferenceService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -417,7 +420,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<UuidAndTitleCache<Reference>> getUuidAndTitleCache() {
-        return defaultReferenceService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -431,7 +434,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Object[]> group(Class<? extends Reference> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultReferenceService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -448,7 +451,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Reference> findByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -462,7 +465,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public  <S extends Reference> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -472,7 +475,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Reference> findByTitle(IIdentifiableEntityServiceConfigurator<Reference> configurator) {
-        return defaultReferenceService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -485,7 +488,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Integer countByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultReferenceService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -495,7 +498,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference load(UUID uuid) {
-        return defaultReferenceService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -506,7 +509,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference load(UUID uuid, List<String> propertyPaths) {
-        return defaultReferenceService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -516,7 +519,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Reference> configurator) {
-        return defaultReferenceService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -526,7 +529,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Reference merge(Reference transientObject) {
-        return defaultReferenceService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -543,7 +546,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> listByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -557,7 +560,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public  <S extends Reference> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -567,7 +570,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public UUID refresh(Reference persistentObject) {
-        return defaultReferenceService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -584,7 +587,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> listByReferenceTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -596,7 +599,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> rows(String tableName, int limit, int start) {
-        return defaultReferenceService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -646,7 +649,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public UUID update(Reference transientObject) {
-        return defaultReferenceService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -661,7 +664,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public List<Reference> list(Reference example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultReferenceService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -673,7 +676,7 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public int deduplicate(Class<? extends Reference> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultReferenceService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -688,11 +691,11 @@ public class TransientReferenceService implements IReferenceService {
      */
     @Override
     public Pager<Reference> findTitleCache(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultReferenceService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
        @Override
-       public List<String> isDeletable(Reference object,
+       public DeleteResult isDeletable(Reference object,
                        DeleteConfiguratorBase config) {
                // TODO Auto-generated method stub
                return null;
@@ -700,8 +703,12 @@ public class TransientReferenceService implements IReferenceService {
 
        @Override
        public Reference findWithoutFlush(UUID uuid) {
-               return defaultReferenceService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
+       }
+       
+       @Override
+       public <S extends Reference>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
        }
-
 
 }
index bf2c7ae39f6725469fe2a9c1496ad9f5510ca9fd..a507e21147cccd1d773e2ad1142aa78206742ba8 100644 (file)
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.api.service.config.IncludedTaxonConfiguration;
 import eu.etaxonomy.cdm.api.service.config.MatchingTaxonConfigurator;
 import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.dto.IncludedTaxaDTO;
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
@@ -43,6 +44,7 @@ import eu.etaxonomy.cdm.api.service.search.SearchResult;
 import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
@@ -56,7 +58,7 @@ import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
@@ -71,6 +73,7 @@ import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.view.AuditEvent;
@@ -83,7 +86,6 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
-import eu.etaxonomy.taxeditor.ui.section.supplemental.IdentifiableSourceElement;
 
 /**
  * @author pplitzner
@@ -92,13 +94,13 @@ import eu.etaxonomy.taxeditor.ui.section.supplemental.IdentifiableSourceElement;
  */
 public class TransientTaxonService implements ITaxonService {
 
-    private final ITaxonService defaultTaxonService;
+    private final ITaxonService defaultService;
 
     /**
      * @param defaultTaxonService
      */
     public TransientTaxonService(ITaxonService defaultTaxonService) {
-        this.defaultTaxonService = defaultTaxonService;
+        this.defaultService = defaultTaxonService;
     }
 
     /**
@@ -112,7 +114,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<AuditEventRecord<TaxonBase>> pageAuditEvents(TaxonBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultTaxonService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -127,7 +129,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<Annotation> getAnnotations(TaxonBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -136,7 +138,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void clear() {
-        defaultTaxonService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -146,7 +148,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void lock(TaxonBase t, LockOptions lockOptions) {
-        defaultTaxonService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -157,7 +159,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void refresh(TaxonBase t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultTaxonService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -166,7 +168,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void updateTitleCache() {
-        defaultTaxonService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -176,7 +178,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public AuditEventRecord<TaxonBase> getNextAuditEvent(TaxonBase t) {
-        return defaultTaxonService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -191,7 +193,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<Marker> getMarkers(TaxonBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -203,7 +205,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void updateTitleCache(Class<? extends TaxonBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TaxonBase> cacheStrategy, IProgressMonitor monitor) {
-        defaultTaxonService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -213,7 +215,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public AuditEventRecord<TaxonBase> getPreviousAuditEvent(TaxonBase t) {
-        return defaultTaxonService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -223,7 +225,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public int count(Class<? extends TaxonBase> clazz) {
-        return defaultTaxonService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -240,7 +242,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<AuditEventRecord<TaxonBase>> pageAuditEvents(Class<? extends TaxonBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultTaxonService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -250,7 +252,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase find(LSID lsid) {
-        return defaultTaxonService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -260,7 +262,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public DeleteResult delete(TaxonBase persistentObject) {
-        return defaultTaxonService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -274,7 +276,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends TaxonBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTaxonService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -284,7 +286,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultTaxonService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
 
@@ -296,7 +298,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase replace(TaxonBase x, TaxonBase y) {
-        return defaultTaxonService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -306,7 +308,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> find(Set<UUID> uuidSet) {
-        return defaultTaxonService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -319,7 +321,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(TaxonBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTaxonService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -333,7 +335,7 @@ public class TransientTaxonService implements ITaxonService {
     @Deprecated
     @Override
     public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, boolean onlyWithChildren) {
-        return defaultTaxonService.getRootTaxa(sec, cdmFetch, onlyWithChildren);
+        return defaultService.getRootTaxa(sec, cdmFetch, onlyWithChildren);
     }
 
     /**
@@ -343,7 +345,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase find(UUID uuid) {
-        return defaultTaxonService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -359,7 +361,7 @@ public class TransientTaxonService implements ITaxonService {
     @Deprecated
     @Override
     public List<Taxon> getRootTaxa(Rank rank, Reference sec, boolean onlyWithChildren, boolean withMisapplications, List<String> propertyPaths) {
-        return defaultTaxonService.getRootTaxa(rank, sec, onlyWithChildren, withMisapplications, propertyPaths);
+        return defaultService.getRootTaxa(rank, sec, onlyWithChildren, withMisapplications, propertyPaths);
     }
 
     /**
@@ -369,7 +371,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase find(int id) {
-        return defaultTaxonService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -382,7 +384,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<Rights> getRights(TaxonBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTaxonService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -393,7 +395,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public int countMarkers(Class<? extends TaxonBase> clazz, Boolean technical) {
-        return defaultTaxonService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -403,7 +405,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> findById(Set<Integer> idSet) {
-        return defaultTaxonService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -415,7 +417,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultTaxonService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -424,7 +426,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Session getSession() {
-        return defaultTaxonService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -433,7 +435,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCache() {
-        return defaultTaxonService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -447,7 +449,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Object[]> group(Class<? extends TaxonBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultTaxonService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -458,7 +460,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<RelationshipBase> getAllRelationships(int limit, int start) {
-        return defaultTaxonService.getAllRelationships(limit, start);
+        return defaultService.getAllRelationships(limit, start);
     }
 
     /**
@@ -475,7 +477,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonBase> findByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -486,7 +488,7 @@ public class TransientTaxonService implements ITaxonService {
     @Deprecated
     @Override
     public OrderedTermVocabulary<TaxonRelationshipType> getTaxonRelationshipTypeVocabulary() {
-        return defaultTaxonService.getTaxonRelationshipTypeVocabulary();
+        return defaultService.getTaxonRelationshipTypeVocabulary();
     }
 
     /**
@@ -497,7 +499,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> searchTaxaByName(String name, Reference sec) {
-        return defaultTaxonService.searchTaxaByName(name, sec);
+        return defaultService.searchTaxaByName(name, sec);
     }
 
     /**
@@ -507,7 +509,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void swapSynonymAndAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon) {
-        defaultTaxonService.swapSynonymAndAcceptedTaxon(synonym, acceptedTaxon);
+        defaultService.swapSynonymAndAcceptedTaxon(synonym, acceptedTaxon);
     }
 
     /**
@@ -521,7 +523,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public <S extends TaxonBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -531,7 +533,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonBase> findByTitle(IIdentifiableEntityServiceConfigurator<TaxonBase> configurator) {
-        return defaultTaxonService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -547,7 +549,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Taxon changeSynonymToAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon, boolean deleteSynonym, boolean copyCitationInfo, Reference citation, String microCitation) throws HomotypicalGroupChangeException {
-        return defaultTaxonService.changeSynonymToAcceptedTaxon(synonym, acceptedTaxon, deleteSynonym, copyCitationInfo, citation, microCitation);
+        return defaultService.changeSynonymToAcceptedTaxon(synonym, acceptedTaxon, deleteSynonym, copyCitationInfo, citation, microCitation);
     }
 
     /**
@@ -560,7 +562,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Integer countByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultTaxonService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -570,7 +572,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase load(UUID uuid) {
-        return defaultTaxonService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -581,7 +583,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase load(UUID uuid, List<String> propertyPaths) {
-        return defaultTaxonService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -591,7 +593,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<TaxonBase> configurator) {
-        return defaultTaxonService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -601,7 +603,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase merge(TaxonBase transientObject) {
-        return defaultTaxonService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -618,7 +620,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> listByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -632,7 +634,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public  <S extends TaxonBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -642,7 +644,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public UUID refresh(TaxonBase persistentObject) {
-        return defaultTaxonService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -656,7 +658,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, Reference reference, String microReference) {
-        return defaultTaxonService.changeSynonymToRelatedTaxon(synonym, toTaxon, taxonRelationshipType, reference, microReference);
+        return defaultService.changeSynonymToRelatedTaxon(synonym, toTaxon, taxonRelationshipType, reference, microReference);
     }
 
     /**
@@ -673,7 +675,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> listByReferenceTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -685,7 +687,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> rows(String tableName, int limit, int start) {
-        return defaultTaxonService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -706,7 +708,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public long deleteSynonymRelationships(Synonym syn, Taxon taxon) {
-        return defaultTaxonService.deleteSynonymRelationships(syn, taxon);
+        return defaultService.deleteSynonymRelationships(syn, taxon);
     }
 
     /**
@@ -739,7 +741,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public void changeHomotypicalGroupOfSynonym(Synonym synonym, HomotypicalGroup newHomotypicalGroup, Taxon targetTaxon, boolean removeFromOtherTaxa, boolean setBasionymRelationIfApplicable) {
-        defaultTaxonService.changeHomotypicalGroupOfSynonym(synonym, newHomotypicalGroup, targetTaxon, removeFromOtherTaxa, setBasionymRelationIfApplicable);
+        defaultService.changeHomotypicalGroupOfSynonym(synonym, newHomotypicalGroup, targetTaxon, removeFromOtherTaxa, setBasionymRelationIfApplicable);
     }
 
     /**
@@ -759,7 +761,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public UUID update(TaxonBase transientObject) {
-        return defaultTaxonService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -774,7 +776,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> list(TaxonBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -791,7 +793,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public SynonymRelationship moveSynonymToAnotherTaxon(SynonymRelationship oldSynonymRelation, Taxon newTaxon, boolean moveHomotypicGroup, SynonymRelationshipType newSynonymRelationshipType, Reference newReference, String newReferenceDetail, boolean keepReference) throws HomotypicalGroupChangeException {
-        return defaultTaxonService.moveSynonymToAnotherTaxon(oldSynonymRelation, newTaxon, moveHomotypicGroup, newSynonymRelationshipType, newReference, newReferenceDetail, keepReference);
+        return defaultService.moveSynonymToAnotherTaxon(oldSynonymRelation, newTaxon, moveHomotypicGroup, newSynonymRelationshipType, newReference, newReferenceDetail, keepReference);
     }
 
     /**
@@ -803,7 +805,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public int deduplicate(Class<? extends TaxonBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultTaxonService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -818,7 +820,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonBase> findTitleCache(Class<? extends TaxonBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultTaxonService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
     /**
@@ -833,7 +835,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonRelationship> listToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.listToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -848,7 +850,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonRelationship> pageToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.pageToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.pageToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -863,7 +865,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonRelationship> listFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.listFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -878,7 +880,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonRelationship> pageFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.pageFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.pageFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -893,7 +895,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Set<Taxon> listRelatedTaxa(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, Integer maxDepth, Integer limit, Integer start, List<String> propertyPaths) {
-        return defaultTaxonService.listRelatedTaxa(taxon, includeRelationships, maxDepth, limit, start, propertyPaths);
+        return defaultService.listRelatedTaxa(taxon, includeRelationships, maxDepth, limit, start, propertyPaths);
     }
 
     /**
@@ -906,7 +908,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Classification> listClassifications(TaxonBase taxonBase, Integer limit, Integer start, List<String> propertyPaths) {
-        return defaultTaxonService.listClassifications(taxonBase, limit, start, propertyPaths);
+        return defaultService.listClassifications(taxonBase, limit, start, propertyPaths);
     }
 
     /**
@@ -921,7 +923,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<SynonymRelationship> getSynonyms(Synonym synonym, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.getSynonyms(synonym, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getSynonyms(synonym, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -936,7 +938,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<SynonymRelationship> getSynonyms(Taxon taxon, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.getSynonyms(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getSynonyms(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -947,7 +949,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Synonym> getHomotypicSynonymsByHomotypicGroup(Taxon taxon, List<String> propertyPaths) {
-        return defaultTaxonService.getHomotypicSynonymsByHomotypicGroup(taxon, propertyPaths);
+        return defaultService.getHomotypicSynonymsByHomotypicGroup(taxon, propertyPaths);
     }
 
     /**
@@ -958,7 +960,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<List<Synonym>> getHeterotypicSynonymyGroups(Taxon taxon, List<String> propertyPaths) {
-        return defaultTaxonService.getHeterotypicSynonymyGroups(taxon, propertyPaths);
+        return defaultService.getHeterotypicSynonymyGroups(taxon, propertyPaths);
     }
 
     /**
@@ -973,7 +975,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonBase> search(Class<? extends TaxonBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -990,7 +992,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<TaxonBase> findTaxaByName(Class<? extends TaxonBase> clazz, String uninomial, String infragenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) {
-        return defaultTaxonService.findTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
+        return defaultService.findTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
     }
 
     /**
@@ -1007,7 +1009,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> listTaxaByName(Class<? extends TaxonBase> clazz, String uninomial, String infragenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) {
-        return defaultTaxonService.listTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
+        return defaultService.listTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
     }
 
     /**
@@ -1017,7 +1019,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<IdentifiableEntity> findTaxaAndNames(IFindTaxaAndNamesConfigurator configurator) {
-        return defaultTaxonService.findTaxaAndNames(configurator);
+        return defaultService.findTaxaAndNames(configurator);
     }
 
     /**
@@ -1040,7 +1042,7 @@ public class TransientTaxonService implements ITaxonService {
     @Deprecated
     @Override
     public Pager<SearchResult<TaxonBase>> findByEverythingFullText(String queryString, Classification classification, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
-        return defaultTaxonService.findByEverythingFullText(queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByEverythingFullText(queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1061,49 +1063,32 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<SearchResult<TaxonBase>> findByFullText(Class<? extends TaxonBase> clazz, String queryString, Classification classification, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
-        return defaultTaxonService.findByFullText(clazz, queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByFullText(clazz, queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
-    /**
-     * @param areaFilter
-     * @param statusFilter
-     * @param classification
-     * @param pageSize
-     * @param pageNumber
-     * @param orderHints
-     * @param propertyPaths
-     * @return
-     * @throws IOException
-     * @throws ParseException
+
+    /* (non-Javadoc)
      * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByDistribution(java.util.List, java.util.List, eu.etaxonomy.cdm.model.taxon.Classification, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
      */
     @Override
-    public Pager<SearchResult<TaxonBase>> findByDistribution(List<NamedArea> areaFilter, List<PresenceAbsenceTermBase<?>> statusFilter, Classification classification, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws IOException, ParseException {
-        return defaultTaxonService.findByDistribution(areaFilter, statusFilter, classification, pageSize, pageNumber, orderHints, propertyPaths);
+    public Pager<SearchResult<TaxonBase>> findByDistribution(List<NamedArea> areaFilter,
+            List<PresenceAbsenceTerm> statusFilter, Classification classification, Integer pageSize,
+            Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws IOException,
+            ParseException {
+        return defaultService.findByDistribution(areaFilter, statusFilter, classification, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
-    /**
-     * @param searchModes
-     * @param queryString
-     * @param classification
-     * @param namedAreas
-     * @param distributionStatus
-     * @param languages
-     * @param highlightFragments
-     * @param pageSize
-     * @param pageNumber
-     * @param orderHints
-     * @param propertyPaths
-     * @return
-     * @throws CorruptIndexException
-     * @throws IOException
-     * @throws ParseException
-     * @throws LuceneMultiSearchException
+
+    /* (non-Javadoc)
      * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNamesByFullText(java.util.EnumSet, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.Set, java.util.Set, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
      */
     @Override
-    public Pager<SearchResult<TaxonBase>> findTaxaAndNamesByFullText(EnumSet<TaxaAndNamesSearchMode> searchModes, String queryString, Classification classification, Set<NamedArea> namedAreas, Set<PresenceAbsenceTermBase<?>> distributionStatus, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
-        return defaultTaxonService.findTaxaAndNamesByFullText(searchModes, queryString, classification, namedAreas, distributionStatus, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+    public Pager<SearchResult<TaxonBase>> findTaxaAndNamesByFullText(EnumSet<TaxaAndNamesSearchMode> searchModes,
+            String queryString, Classification classification, Set<NamedArea> namedAreas,
+            Set<PresenceAbsenceTerm> distributionStatus, List<Language> languages, boolean highlightFragments,
+            Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths)
+            throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
+        return defaultService.findTaxaAndNamesByFullText(searchModes, queryString, classification, namedAreas, distributionStatus, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1125,7 +1110,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Pager<SearchResult<TaxonBase>> findByDescriptionElementFullText(Class<? extends DescriptionElementBase> clazz, String queryString, Classification classification, List<Feature> features, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
-        return defaultTaxonService.findByDescriptionElementFullText(clazz, queryString, classification, features, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByDescriptionElementFullText(clazz, queryString, classification, features, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -1141,7 +1126,7 @@ public class TransientTaxonService implements ITaxonService {
     @Deprecated
     @Override
     public List<MediaRepresentation> getAllMedia(Taxon taxon, int size, int height, int widthOrDuration, String[] mimeTypes) {
-        return defaultTaxonService.getAllMedia(taxon, size, height, widthOrDuration, mimeTypes);
+        return defaultService.getAllMedia(taxon, size, height, widthOrDuration, mimeTypes);
     }
 
     /**
@@ -1156,7 +1141,7 @@ public class TransientTaxonService implements ITaxonService {
     @Deprecated
     @Override
     public List<Media> listTaxonDescriptionMedia(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, boolean limitToGalleries, List<String> propertyPath) {
-        return defaultTaxonService.listTaxonDescriptionMedia(taxon, includeRelationships, limitToGalleries, propertyPath);
+        return defaultService.listTaxonDescriptionMedia(taxon, includeRelationships, limitToGalleries, propertyPath);
     }
 
     /**
@@ -1172,7 +1157,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Media> listMedia(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, Boolean limitToGalleries, Boolean includeTaxonDescriptions, Boolean includeOccurrences, Boolean includeTaxonNameDescriptions, List<String> propertyPath) {
-        return defaultTaxonService.listMedia(taxon, includeRelationships, limitToGalleries, includeTaxonDescriptions, includeOccurrences, includeTaxonNameDescriptions, propertyPath);
+        return defaultService.listMedia(taxon, includeRelationships, limitToGalleries, includeTaxonDescriptions, includeOccurrences, includeTaxonNameDescriptions, propertyPath);
     }
 
     /**
@@ -1182,7 +1167,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> findTaxaByID(Set<Integer> listOfIDs) {
-        return defaultTaxonService.findTaxaByID(listOfIDs);
+        return defaultService.findTaxaByID(listOfIDs);
     }
 
     /**
@@ -1193,7 +1178,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public TaxonBase findTaxonByUuid(UUID uuid, List<String> propertyPaths) {
-        return defaultTaxonService.findTaxonByUuid(uuid, propertyPaths);
+        return defaultService.findTaxonByUuid(uuid, propertyPaths);
     }
 
     /**
@@ -1202,7 +1187,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public int countAllRelationships() {
-        return defaultTaxonService.countAllRelationships();
+        return defaultService.countAllRelationships();
     }
 
     /**
@@ -1212,7 +1197,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonNameBase> findIdenticalTaxonNames(List<String> propertyPath) {
-        return defaultTaxonService.findIdenticalTaxonNames(propertyPath);
+        return defaultService.findIdenticalTaxonNames(propertyPath);
     }
 
     /**
@@ -1222,7 +1207,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonNameBase> findIdenticalTaxonNameIds(List<String> propertyPath) {
-        return defaultTaxonService.findIdenticalTaxonNameIds(propertyPath);
+        return defaultService.findIdenticalTaxonNameIds(propertyPath);
     }
 
     /**
@@ -1232,7 +1217,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public String getPhylumName(TaxonNameBase name) {
-        return defaultTaxonService.getPhylumName(name);
+        return defaultService.getPhylumName(name);
     }
 
     /**
@@ -1242,7 +1227,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public long deleteSynonymRelationships(Synonym syn) {
-        return defaultTaxonService.deleteSynonymRelationships(syn);
+        return defaultService.deleteSynonymRelationships(syn);
     }
 
     /**
@@ -1258,7 +1243,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<SynonymRelationship> listSynonymRelationships(TaxonBase taxonBase, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths, Direction direction) {
-        return defaultTaxonService.listSynonymRelationships(taxonBase, type, pageSize, pageNumber, orderHints, propertyPaths, direction);
+        return defaultService.listSynonymRelationships(taxonBase, type, pageSize, pageNumber, orderHints, propertyPaths, direction);
     }
 
     /**
@@ -1268,7 +1253,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Taxon findBestMatchingTaxon(String taxonName) {
-        return defaultTaxonService.findBestMatchingTaxon(taxonName);
+        return defaultService.findBestMatchingTaxon(taxonName);
     }
 
     /**
@@ -1278,7 +1263,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Taxon findBestMatchingTaxon(MatchingTaxonConfigurator config) {
-        return defaultTaxonService.findBestMatchingTaxon(config);
+        return defaultService.findBestMatchingTaxon(config);
     }
 
     /**
@@ -1288,7 +1273,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public Synonym findBestMatchingSynonym(String taxonName) {
-        return defaultTaxonService.findBestMatchingSynonym(taxonName);
+        return defaultService.findBestMatchingSynonym(taxonName);
     }
 
     /**
@@ -1297,7 +1282,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon() {
-        return defaultTaxonService.getUuidAndTitleCacheTaxon();
+        return defaultService.getUuidAndTitleCacheTaxon();
     }
 
     /**
@@ -1306,7 +1291,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym() {
-        return defaultTaxonService.getUuidAndTitleCacheSynonym();
+        return defaultService.getUuidAndTitleCacheSynonym();
     }
 
     /**
@@ -1316,7 +1301,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<UuidAndTitleCache<IdentifiableEntity>> findTaxaAndNamesForEditor(IFindTaxaAndNamesConfigurator configurator) {
-        return defaultTaxonService.findTaxaAndNamesForEditor(configurator);
+        return defaultService.findTaxaAndNamesForEditor(configurator);
     }
 
     /**
@@ -1329,7 +1314,7 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Synonym> createInferredSynonyms(Taxon taxon, Classification tree, SynonymRelationshipType type, boolean doWithMisappliedNames) {
-        return defaultTaxonService.createInferredSynonyms(taxon, tree, type, doWithMisappliedNames);
+        return defaultService.createInferredSynonyms(taxon, tree, type, doWithMisappliedNames);
     }
 
     /**
@@ -1341,27 +1326,27 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<Synonym> createAllInferredSynonyms(Taxon taxon, Classification tree, boolean doWithMisappliedNames) {
-        return defaultTaxonService.createAllInferredSynonyms(taxon, tree, doWithMisappliedNames);
+        return defaultService.createAllInferredSynonyms(taxon, tree, doWithMisappliedNames);
     }
 
     @Override
     public DeleteResult deleteSynonym(Synonym arg0, SynonymDeletionConfigurator arg1) {
-        return defaultTaxonService.deleteSynonym(arg0, arg1);
+        return defaultService.deleteSynonym(arg0, arg1);
     }
 
     @Override
     public DeleteResult deleteSynonym(Synonym arg0, Taxon arg1, SynonymDeletionConfigurator arg2) {
-        return defaultTaxonService.deleteSynonym(arg0, arg1, arg2);
+        return defaultService.deleteSynonym(arg0, arg1, arg2);
     }
 
     @Override
     public DeleteResult deleteTaxon(Taxon arg0, TaxonDeletionConfigurator arg1, Classification arg2) {
-        return defaultTaxonService.deleteTaxon(arg0, arg1, arg2);
+        return defaultService.deleteTaxon(arg0, arg1, arg2);
     }
 
     @Override
     public List<List<Synonym>> getSynonymsByHomotypicGroup(Taxon taxon, List<String> propertyPaths) {
-        return defaultTaxonService.getSynonymsByHomotypicGroup(taxon, propertyPaths);
+        return defaultService.getSynonymsByHomotypicGroup(taxon, propertyPaths);
     }
 
        @Override
@@ -1370,7 +1355,7 @@ public class TransientTaxonService implements ITaxonService {
                        SynonymRelationshipType synonymRelationshipType)
                        throws DataChangeNoRollbackException {
 
-               return defaultTaxonService.changeRelatedTaxonToSynonym(fromTaxon, toTaxon, oldRelationshipType, synonymRelationshipType);
+               return defaultService.changeRelatedTaxonToSynonym(fromTaxon, toTaxon, oldRelationshipType, synonymRelationshipType);
        }
 
     /* (non-Javadoc)
@@ -1379,7 +1364,7 @@ public class TransientTaxonService implements ITaxonService {
     @Override
     public Pager<Taxon> pageAcceptedTaxaFor(UUID synonymUuid, UUID classificationUuid, Integer pageSize,
             Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.pageAcceptedTaxaFor(synonymUuid, classificationUuid, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.pageAcceptedTaxaFor(synonymUuid, classificationUuid, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /* (non-Javadoc)
@@ -1388,11 +1373,11 @@ public class TransientTaxonService implements ITaxonService {
     @Override
     public List<Taxon> listAcceptedTaxaFor(UUID synonymUuid, UUID classificationUuid, Integer pageSize,
             Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTaxonService.listAcceptedTaxaFor(synonymUuid, classificationUuid, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listAcceptedTaxaFor(synonymUuid, classificationUuid, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
        @Override
-       public List<String> isDeletable(TaxonBase object,
+       public DeleteResult isDeletable(TaxonBase object,
                        DeleteConfiguratorBase config) {
                // TODO Auto-generated method stub
                return null;
@@ -1407,7 +1392,7 @@ public class TransientTaxonService implements ITaxonService {
 
        @Override
        public TaxonBase findWithoutFlush(UUID uuid) {
-               return defaultTaxonService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
        }
 
     /* (non-Javadoc)
@@ -1415,10 +1400,23 @@ public class TransientTaxonService implements ITaxonService {
      */
     @Override
     public List<TaxonBase> findTaxaByName(MatchingTaxonConfigurator config) {
-        return defaultTaxonService.findTaxaByName(config);
+        return defaultService.findTaxaByName(config);
     }
 
+       @Override
+       public <S extends TaxonBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByIdentifier(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.common.DefinedTerm, eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.persistence.query.MatchMode, boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+        */
+       @Override
+       public <S extends TaxonBase> Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier,
+               DefinedTerm identifierType, TaxonNode subtreeFilter, MatchMode matchmode, boolean includeEntity,
+               Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+           return defaultService.findByIdentifier(clazz, identifier, identifierType, subtreeFilter, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
+       }
 
 
 
index 578205af6b9fbf2ea94365554d1161b249e4dd86..61b701ecdfd164c28849eff1575a9d7029c6941c 100644 (file)
@@ -28,9 +28,12 @@ import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
@@ -65,13 +68,13 @@ import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
  */
 public class TransientTermService implements ITermService {
 
-    private final ITermService defaultTermService;
+    private final ITermService defaultService;
 
     /**
      * @param defaultTermService
      */
     public TransientTermService(ITermService defaultTermService) {
-        this.defaultTermService = defaultTermService;
+        this.defaultService = defaultTermService;
     }
 
     /**
@@ -85,7 +88,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<AuditEventRecord<DefinedTermBase>> pageAuditEvents(DefinedTermBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultTermService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
     }
 
     /**
@@ -100,7 +103,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<Annotation> getAnnotations(DefinedTermBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -109,7 +112,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public void clear() {
-        defaultTermService.clear();
+        defaultService.clear();
     }
 
     /**
@@ -119,7 +122,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public void lock(DefinedTermBase t, LockOptions lockOptions) {
-        defaultTermService.lock(t, lockOptions);
+        defaultService.lock(t, lockOptions);
     }
 
     /**
@@ -129,7 +132,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase getByUri(URI uri) {
-        return defaultTermService.getByUri(uri);
+        return defaultService.getByUri(uri);
     }
 
     /**
@@ -140,7 +143,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public void refresh(DefinedTermBase t, LockOptions lockOptions, List<String> propertyPaths) {
-        defaultTermService.refresh(t, lockOptions, propertyPaths);
+        defaultService.refresh(t, lockOptions, propertyPaths);
     }
 
     /**
@@ -161,7 +164,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<LanguageString> getAllLanguageStrings(int limit, int start) {
-        return defaultTermService.getAllLanguageStrings(limit, start);
+        return defaultService.getAllLanguageStrings(limit, start);
     }
 
     /**
@@ -172,7 +175,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<Representation> getAllRepresentations(int limit, int start) {
-        return defaultTermService.getAllRepresentations(limit, start);
+        return defaultService.getAllRepresentations(limit, start);
     }
 
     /**
@@ -181,7 +184,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public void updateTitleCache() {
-        defaultTermService.updateTitleCache();
+        defaultService.updateTitleCache();
     }
 
     /**
@@ -191,7 +194,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public AuditEventRecord<DefinedTermBase> getNextAuditEvent(DefinedTermBase t) {
-        return defaultTermService.getNextAuditEvent(t);
+        return defaultService.getNextAuditEvent(t);
     }
 
     /**
@@ -201,7 +204,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Language getLanguageByIso(String iso639) {
-        return defaultTermService.getLanguageByIso(iso639);
+        return defaultService.getLanguageByIso(iso639);
     }
 
     /**
@@ -211,7 +214,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<Language> getLanguagesByLocale(Enumeration<Locale> locales) {
-        return defaultTermService.getLanguagesByLocale(locales);
+        return defaultService.getLanguagesByLocale(locales);
     }
 
     /**
@@ -221,7 +224,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public NamedArea getAreaByTdwgAbbreviation(String tdwgAbbreviation) {
-        return defaultTermService.getAreaByTdwgAbbreviation(tdwgAbbreviation);
+        return defaultService.getAreaByTdwgAbbreviation(tdwgAbbreviation);
     }
 
     /**
@@ -236,7 +239,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<Marker> getMarkers(DefinedTermBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -248,7 +251,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<Media> getMedia(DefinedTermBase definedTerm, Integer pageSize, Integer pageNumber) {
-        return defaultTermService.getMedia(definedTerm, pageSize, pageNumber);
+        return defaultService.getMedia(definedTerm, pageSize, pageNumber);
     }
 
     /**
@@ -260,7 +263,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public void updateTitleCache(Class<? extends DefinedTermBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<DefinedTermBase> cacheStrategy, IProgressMonitor monitor) {
-        defaultTermService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
     }
 
     /**
@@ -270,7 +273,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public AuditEventRecord<DefinedTermBase> getPreviousAuditEvent(DefinedTermBase t) {
-        return defaultTermService.getPreviousAuditEvent(t);
+        return defaultService.getPreviousAuditEvent(t);
     }
 
     /**
@@ -280,7 +283,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public int count(Class<? extends DefinedTermBase> clazz) {
-        return defaultTermService.count(clazz);
+        return defaultService.count(clazz);
     }
 
     /**
@@ -295,7 +298,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<NamedArea> list(NamedAreaLevel level, NamedAreaType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.list(level, type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.list(level, type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -312,7 +315,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<AuditEventRecord<DefinedTermBase>> pageAuditEvents(Class<? extends DefinedTermBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
-        return defaultTermService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
     }
 
     /**
@@ -322,7 +325,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase find(LSID lsid) {
-        return defaultTermService.find(lsid);
+        return defaultService.find(lsid);
     }
 
     /**
@@ -332,7 +335,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DeleteResult delete(DefinedTermBase persistentObject) {
-        return defaultTermService.delete(persistentObject);
+        return defaultService.delete(persistentObject);
     }
 
     /**
@@ -346,7 +349,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<Object[]> groupMarkers(Class<? extends DefinedTermBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTermService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -356,7 +359,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public boolean exists(UUID uuid) {
-        return defaultTermService.exists(uuid);
+        return defaultService.exists(uuid);
     }
 
     /**
@@ -367,7 +370,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase replace(DefinedTermBase x, DefinedTermBase y) {
-        return defaultTermService.replace(x, y);
+        return defaultService.replace(x, y);
     }
 
     /**
@@ -379,7 +382,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <T extends DefinedTermBase> Pager<T> getGeneralizationOf(T definedTerm, Integer pageSize, Integer pageNumber) {
-        return defaultTermService.getGeneralizationOf(definedTerm, pageSize, pageNumber);
+        return defaultService.getGeneralizationOf(definedTerm, pageSize, pageNumber);
     }
 
     /**
@@ -389,7 +392,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<DefinedTermBase> find(Set<UUID> uuidSet) {
-        return defaultTermService.find(uuidSet);
+        return defaultService.find(uuidSet);
     }
 
     /**
@@ -402,7 +405,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<IdentifiableSource> getSources(DefinedTermBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTermService.getSources(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -412,7 +415,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase find(UUID uuid) {
-        return defaultTermService.find(uuid);
+        return defaultService.find(uuid);
     }
 
     /**
@@ -425,7 +428,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <T extends DefinedTermBase> Pager<T> getPartOf(Set<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTermService.getPartOf(definedTerms, pageSize, pageNumber, propertyPaths);
+        return defaultService.getPartOf(definedTerms, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -435,7 +438,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase find(int id) {
-        return defaultTermService.find(id);
+        return defaultService.find(id);
     }
 
     /**
@@ -448,7 +451,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<Rights> getRights(DefinedTermBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTermService.getRights(t, pageSize, pageNumber, propertyPaths);
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -459,7 +462,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public int countMarkers(Class<? extends DefinedTermBase> clazz, Boolean technical) {
-        return defaultTermService.countMarkers(clazz, technical);
+        return defaultService.countMarkers(clazz, technical);
     }
 
     /**
@@ -469,7 +472,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<DefinedTermBase> findById(Set<Integer> idSet) {
-        return defaultTermService.findById(idSet);
+        return defaultService.findById(idSet);
     }
 
     /**
@@ -482,7 +485,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <T extends DefinedTermBase> Pager<T> getIncludes(Collection<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
-        return defaultTermService.getIncludes(definedTerms, pageSize, pageNumber, propertyPaths);
+        return defaultService.getIncludes(definedTerms, pageSize, pageNumber, propertyPaths);
     }
 
     /**
@@ -494,7 +497,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
-        return defaultTermService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
     }
 
     /**
@@ -503,7 +506,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Session getSession() {
-        return defaultTermService.getSession();
+        return defaultService.getSession();
     }
 
     /**
@@ -512,7 +515,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<UuidAndTitleCache<DefinedTermBase>> getUuidAndTitleCache() {
-        return defaultTermService.getUuidAndTitleCache();
+        return defaultService.getUuidAndTitleCache();
     }
 
     /**
@@ -526,7 +529,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<Object[]> group(Class<? extends DefinedTermBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
-        return defaultTermService.group(clazz, limit, start, groups, propertyPaths);
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
     }
 
     /**
@@ -539,7 +542,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <T extends DefinedTermBase> Pager<T> findByRepresentationText(String label, Class<T> clazz, Integer pageSize, Integer pageNumber) {
-        return defaultTermService.findByRepresentationText(label, clazz, pageSize, pageNumber);
+        return defaultService.findByRepresentationText(label, clazz, pageSize, pageNumber);
     }
 
     /**
@@ -556,7 +559,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<DefinedTermBase> findByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -569,7 +572,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <T extends DefinedTermBase> Pager<T> findByRepresentationAbbreviation(String abbrev, Class<T> clazz, Integer pageSize, Integer pageNumber) {
-        return defaultTermService.findByRepresentationAbbreviation(abbrev, clazz, pageSize, pageNumber);
+        return defaultService.findByRepresentationAbbreviation(abbrev, clazz, pageSize, pageNumber);
     }
 
     /**
@@ -583,7 +586,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <S extends DefinedTermBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.list(type, limit, start, orderHints, propertyPaths);
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -594,7 +597,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DeleteResult delete(DefinedTermBase term, TermDeletionConfigurator config) {
-        return defaultTermService.delete(term, config);
+        return defaultService.delete(term, config);
     }
 
     /**
@@ -604,7 +607,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<DefinedTermBase> findByTitle(IIdentifiableEntityServiceConfigurator<DefinedTermBase> configurator) {
-        return defaultTermService.findByTitle(configurator);
+        return defaultService.findByTitle(configurator);
     }
 
     /**
@@ -617,7 +620,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Integer countByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
-        return defaultTermService.countByTitle(clazz, queryString, matchmode, criteria);
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
     }
 
     /**
@@ -627,7 +630,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase load(UUID uuid) {
-        return defaultTermService.load(uuid);
+        return defaultService.load(uuid);
     }
 
     /**
@@ -638,7 +641,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase load(UUID uuid, List<String> propertyPaths) {
-        return defaultTermService.load(uuid, propertyPaths);
+        return defaultService.load(uuid, propertyPaths);
     }
 
     /**
@@ -648,7 +651,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Integer countByTitle(IIdentifiableEntityServiceConfigurator<DefinedTermBase> configurator) {
-        return defaultTermService.countByTitle(configurator);
+        return defaultService.countByTitle(configurator);
     }
 
     /**
@@ -658,7 +661,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public DefinedTermBase merge(DefinedTermBase transientObject) {
-        return defaultTermService.merge(transientObject);
+        return defaultService.merge(transientObject);
     }
 
     /**
@@ -675,7 +678,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<DefinedTermBase> listByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -689,7 +692,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public <S extends DefinedTermBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -699,7 +702,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public UUID refresh(DefinedTermBase persistentObject) {
-        return defaultTermService.refresh(persistentObject);
+        return defaultService.refresh(persistentObject);
     }
 
     /**
@@ -716,7 +719,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<DefinedTermBase> listByReferenceTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -728,7 +731,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<DefinedTermBase> rows(String tableName, int limit, int start) {
-        return defaultTermService.rows(tableName, limit, start);
+        return defaultService.rows(tableName, limit, start);
     }
 
     /**
@@ -773,7 +776,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<DefinedTermBase> search(Class<? extends DefinedTermBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+        return defaultService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
     /**
@@ -793,7 +796,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public UUID update(DefinedTermBase transientObject) {
-        return defaultTermService.update(transientObject);
+        return defaultService.update(transientObject);
     }
 
     /**
@@ -808,7 +811,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public List<DefinedTermBase> list(DefinedTermBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
     }
 
     /**
@@ -820,7 +823,7 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public int deduplicate(Class<? extends DefinedTermBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
-        return defaultTermService.deduplicate(clazz, matchStrategy, mergeStrategy);
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
     }
 
     /**
@@ -835,19 +838,19 @@ public class TransientTermService implements ITermService {
      */
     @Override
     public Pager<DefinedTermBase> findTitleCache(Class<? extends DefinedTermBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
-        return defaultTermService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
     }
 
     @Override
     public <TERM extends DefinedTermBase> TERM findByIdInVocabulary(String id, UUID vocabularyUuid,
             Class<TERM> clazz) {
-        return defaultTermService.findByIdInVocabulary(id, vocabularyUuid, clazz);
+        return defaultService.findByIdInVocabulary(id, vocabularyUuid, clazz);
     }
 
        @Override
-       public List<String> isDeletable(DefinedTermBase object,
+       public DeleteResult isDeletable(DefinedTermBase object,
                        DeleteConfiguratorBase config) {
-               return defaultTermService.isDeletable(object, config);
+               return defaultService.isDeletable(object, config);
        }
 
     /* (non-Javadoc)
@@ -856,12 +859,18 @@ public class TransientTermService implements ITermService {
     @Override
     public List<DefinedTermBase<?>> listByTermType(TermType termType, Integer limit, Integer start,
             List<OrderHint> orderHints, List<String> propertyPaths) {
-        return defaultTermService.listByTermType(termType, limit, start, orderHints, propertyPaths);
+        return defaultService.listByTermType(termType, limit, start, orderHints, propertyPaths);
     }
 
        @Override
        public DefinedTermBase findWithoutFlush(UUID uuid) {
-               return defaultTermService.findWithoutFlush(uuid);
+               return defaultService.findWithoutFlush(uuid);
+       }
+       
+
+       @Override
+       public <S extends DefinedTermBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
+               return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
        }
 
 }
index 68445078d0e23e189d5822ff05a32bc6e8b67e7e..8dc0e35a4d194e0638e7354ff64d19437d6ae50b 100644 (file)
@@ -46,6 +46,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateContentProvider;
 import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
 
 /**
@@ -104,7 +105,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         generateMultiLinkSingleReads();
         labelProvider.setMultiLinkSingleReads(multiLinkSingleReads);
         IEditorInput editorInput = getEditorInput();
-        viewer.setInput(editorInput);
+        viewer.setInput(((DerivateViewEditorInput) editorInput).getRootUUIDs());
         //set selection to selected derivate if only one was selected
         if(editorInput instanceof DerivateViewEditorInput){
             Set<UUID> derivateUUIDs = ((DerivateViewEditorInput) editorInput).getDerivateUUIDs();
index 0d677cd096f6738ac89c2d2b26d8428aacd90a06..7050078e1a47d191c10a4bd35d679ad14c9dd265 100644 (file)
@@ -40,7 +40,7 @@ public class DerivateViewEditorInput implements IEditorInput{
     /**
      * The selected derivate {@link UUID}s
      */
-    private Set<UUID> derivateUUIDs;
+    private final Set<UUID> derivateUUIDs;
     /**
      * List of the {@link UUID}s of the root elements of the hierarchy (may be the same objects as the derivates)
      */
@@ -153,10 +153,11 @@ public class DerivateViewEditorInput implements IEditorInput{
         return derivateUUIDs;
     }
 
-    public void setRootAsDerivate(){
-        this.derivateUUIDs = this.rootUUIDs;
+    public void addRootUuid(UUID root){
+        rootUUIDs.add(root);
     }
 
+
     public ConversationHolder getConversationHolder() {
         return conversationHolder;
     }
index a98bbb423d7eb80a89332bdc8835b50477f03daa..b04582f5e453ad17148e2868bbd88099a3846f0d 100644 (file)
@@ -9,7 +9,6 @@ import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
@@ -29,6 +28,8 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
 
 /**
  * Context menu for the creation of derivates in the derivate hierarchy.
@@ -97,10 +98,60 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
         return contributionItems;
     }
 
-    private void createMenuItem(Menu menu, String menuLabel, TreeNode selectedNode, Class<?> childClass, SpecimenOrObservationType specimenType, DerivationEventType derivationEventType) {
-        MenuItem menuItem = new MenuItem(menu, SWT.NONE);
-        menuItem.setText(menuLabel);
-        menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, derivationEventType));
+    private void createMenuItem(Menu menu, String menuLabel, final TreeNode selectedNode, Class<?> childClass, final SpecimenOrObservationType specimenType, final DerivationEventType derivationEventType) {
+        if(specimenType!=null && specimenType.equals(SpecimenOrObservationType.Media)){
+            //media submenu
+            MenuItem mediaItem = new MenuItem(menu, SWT.CASCADE);
+            mediaItem.setText("Media...");
+            Menu mediaMenu = new Menu(menu);
+            mediaItem.setMenu(mediaMenu);
+
+            //media specimen menu
+            MenuItem menuItem = new MenuItem(mediaMenu, SWT.NONE);
+            menuItem.setText(menuLabel);
+            menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, derivationEventType));
+
+            //existing media menu
+            MenuItem existingMediaItem = new MenuItem(mediaMenu, SWT.NONE);
+            existingMediaItem.setText("Media Specimen with existing media");
+            existingMediaItem.addSelectionListener(new SelectionAdapter() {
+                /* (non-Javadoc)
+                 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+                 */
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    //select media
+                    Media media = MediaSelectionDialog.select(AbstractUtility.getShell(), null, null);
+                    //create MediaSpecimen
+                    MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specimenType);
+                    mediaSpecimen.setMediaSpecimen(media);
+
+                    //attach to parent
+                    if(selectedNode.getValue() instanceof SpecimenOrObservationBase){
+                        SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedNode.getValue();
+
+                        specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, mediaSpecimen, derivationEventType));
+                        mediaSpecimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+                        mediaSpecimen.getTitleCache(); //update title cache
+                    }
+
+                    //refresh view
+                    DerivateView derivateView = null;
+                    if(AbstractUtility.getActivePart() instanceof DerivateView){
+                        derivateView = (DerivateView) AbstractUtility.getActivePart();
+                    }
+                    if(derivateView!=null){
+                        derivateView.getConversationHolder().commit();
+                        derivateView.refreshTree(mediaSpecimen);
+                    }
+                }
+            });
+        }
+        else{
+            MenuItem menuItem = new MenuItem(menu, SWT.NONE);
+            menuItem.setText(menuLabel);
+            menuItem.addSelectionListener(new WidgetSelectionListener(selectedNode, childClass, specimenType, derivationEventType));
+        }
     }
 
     private class WidgetSelectionListener extends SelectionAdapter{
@@ -127,6 +178,18 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
          */
         @Override
         public void widgetSelected(SelectionEvent e) {
+            DerivateView derivateView = null;
+            if(AbstractUtility.getActivePart() instanceof DerivateView){
+                derivateView = (DerivateView) AbstractUtility.getActivePart();
+            }
+            if(derivateView!=null){
+                if(derivateView.isDirty()){
+                    e.doit = false;
+                    MessagingUtils.warningDialog("View has unsaved changes", this, "You need to save before performing this action");
+                    return;
+                }
+            }
+
             Object createdElement = null;
             Object selectedDerivate = selectedNode.getValue();
             if(selectedDerivate instanceof DnaSample && ((DnaSample) selectedDerivate).getRecordBasis()==SpecimenOrObservationType.DnaSample){
@@ -168,10 +231,8 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
             }
 
             //refresh view
-            IWorkbenchPart activePart = AbstractUtility.getActivePart();
-            if(activePart instanceof DerivateView){
-                DerivateView derivateView = (DerivateView)activePart;
-                derivateView.changed(null);
+            if(derivateView!=null){
+                derivateView.getConversationHolder().commit();
                 derivateView.refreshTree(createdElement);
             }
         }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java
new file mode 100644 (file)
index 0000000..da8c8db
--- /dev/null
@@ -0,0 +1,35 @@
+package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class CreateFieldUnitHandler extends AbstractHandler {
+
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        if(AbstractUtility.getActivePart() instanceof DerivateView){
+            DerivateView derivateView = (DerivateView)AbstractUtility.getActivePart();
+            if(derivateView.isDirty()){
+                MessagingUtils.warningDialog("View has unsaved changes", this, "You need to save before performing this action");
+                return null;
+            }
+            FieldUnit fieldUnit = FieldUnit.NewInstance();
+            CdmStore.getService(IOccurrenceService.class).save(fieldUnit);
+            derivateView.getConversationHolder().commit();
+            DerivateViewEditorInput input = (DerivateViewEditorInput) derivateView.getEditorInput();
+            input.addRootUuid(fieldUnit.getUuid());
+            derivateView.refreshTree();
+        }
+        return null;
+    }
+
+}
index 1e8e5e87db67b6b8cfb1e9fab5715a6136721df1..70de10d2d8028ae54ca6bb3178e4265d39da7734 100644 (file)
@@ -69,8 +69,9 @@ public class DeleteDerivateHandler extends AbstractHandler {
                             label += " "+DerivateLabelProvider.getDerivateText(value, conversationHolder);
                         }
                         SpecimenDeleteConfigurator config = new SpecimenDeleteConfigurator();
-                        config.setDeleteChildren(false);
-                        config.setShiftHierarchyUp(false);
+                        boolean deepDelete = event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivate.deepDelete");
+                        config.setDeleteChildren(deepDelete);
+                        config.setDeleteMolecularData(deepDelete);
                         DeleteDerivateOperation deleteDerivateOperation = new DeleteDerivateOperation(label, undoContext, (CdmBase) value, postOperationEnabled, config);
                         AbstractUtility.executeOperation(deleteDerivateOperation);
                     }
index d9e29bf6012d82b25dbb566f1435206d8dc1cfc7..ab74d55aa71945cc35d8b087279c8a4d84958ebe 100644 (file)
@@ -60,6 +60,10 @@ public class OpenDerivateEditorForTaxonHandler extends AbstractHandler {
                     }
                 }
             }
+            if(derivateUuids.isEmpty()){
+                MessagingUtils.warningDialog("Could not open Derivate Editor", this, "No Derivates found");
+                return null;
+            }
             DerivateViewEditorInput input = new DerivateViewEditorInput(derivateUuids);
             try {
                 EditorUtil.open(input);
index b480a0f83cd27dd8cd55c462180f8746a03391f6..b13c0cf35fc8708fc4a88b6034de8f655fc5e363 100644 (file)
@@ -22,10 +22,12 @@ import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDialog;
 
 /**
  *
@@ -60,7 +62,12 @@ public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
     @Override
     public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
         if(getPostOperationEnabled() instanceof ISaveablePart){
-            if(!MessagingUtils.confirmDialog("Confirm deletion", "Do you really want to delete the selected element?")){
+            String confirmationQuestion = "Do you really want to delete the selected element";
+            if(deleteConfigurator.isDeleteChildren()){
+                confirmationQuestion += " and its children";
+            }
+            confirmationQuestion += "?";
+            if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(deleteConfigurator, null, "Confirm Deletion", confirmationQuestion)){
                 return Status.CANCEL_STATUS;
             }
             if(((ISaveablePart) getPostOperationEnabled()).isDirty()){
@@ -74,16 +81,16 @@ public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
                 DerivateView derivateView = (DerivateView) getPostOperationEnabled();
                 //update DerivateView
                 derivateView.getConversationHolder().commit();
-                return postExecute(null);
+                IStatus returnStatus = postExecute(null);
+                //close if no more items left
+                if(derivateView.getViewer().getTree().getItemCount()<1){
+                    AbstractUtility.close(derivateView);
+                }
+                return returnStatus;
             }
         }
         else{
-            String exceptionMessage = "";
-            for(Exception exception:deleteResult.getExceptions()){
-                exceptionMessage += exception.getLocalizedMessage();
-            }
-            //TODO: add method to DeleteResult to sum up exceptions
-            MessagingUtils.warningDialog("Deletion failed", this, exceptionMessage);
+            MessagingUtils.warningDialog("Deletion failed", this, deleteResult.toString());
             return Status.CANCEL_STATUS;
         }
         return Status.OK_STATUS;
index 4951bc8f944175bcd67ccf9fad829bf159cf94c5..eafaa0b0812d5b0cae958e4c9c7b92f00dc2c172 100644 (file)
 package eu.etaxonomy.taxeditor.editor.view.descriptive;
 
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.GroupMarker;
@@ -19,11 +23,14 @@ import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
@@ -36,15 +43,20 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.IDescribable;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
@@ -52,6 +64,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
 import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
@@ -115,6 +128,47 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
 //             if(getEditor() != null){
 //                     viewer.setInput(getEditor().getEditorInput());
 //             }
+
+               viewer.addDoubleClickListener(new IDoubleClickListener() {
+            @Override
+            public void doubleClick(DoubleClickEvent event) {
+                //Open derivate editor when specimen description element is double clicked
+                TreeSelection selection = (TreeSelection) viewer.getSelection();
+                Iterator iterator = selection.iterator();
+                Set<UUID> specimenUuids = new HashSet<UUID>();
+                while(iterator.hasNext()){
+                    Object next = iterator.next();
+                    if(next instanceof IndividualsAssociation){
+                        SpecimenOrObservationBase<?> specimen = ((IndividualsAssociation)next).getAssociatedSpecimenOrObservation();
+                        if(specimen!=null){
+                            specimenUuids.add(specimen.getUuid());
+                        }
+                    }
+                }
+                try {
+                    EditorUtil.open(new DerivateViewEditorInput(specimenUuids));
+                } catch (PartInitException e) {
+                    MessagingUtils.error(DescriptiveViewPart.class, "Could not open Derivate Editor", e);
+                }
+
+
+                    //TODO: extend command to accept parameter to open editor
+//                    String commandId = "eu.etaxonomy.taxeditor.editor.handler.openDerivateView";
+//                    IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
+//                    try {
+//                        handlerService.executeCommand(commandId, null);
+//                    } catch (ExecutionException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    } catch (NotDefinedException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    } catch (NotEnabledException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    } catch (NotHandledException e) {
+//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
+//                    }
+
+            }
+        });
        }
 
        /* (non-Javadoc)
@@ -185,7 +239,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
         }
                if(selection instanceof IStructuredSelection
                        && ((IStructuredSelection) selection).getFirstElement() instanceof IDescribable<?>
-                       && part instanceof IPartContentHasFactualData){
+                       && part instanceof IPartContentHasFactualData  && !(((IStructuredSelection) selection).getFirstElement() instanceof SpecimenOrObservationBase && part instanceof BulkEditor)){
                    featureNodeContainerCache.clear();
                    showViewer(part, (IStructuredSelection) selection);
                    return;
@@ -263,6 +317,9 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                        StructuredSelection selection = new StructuredSelection(object);
                        viewer.setSelection(selection, true);
                }
+               if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
+                   ((BulkEditor) part).forceDirty();
+               }
 
                super.changed(object);
        }
index 2f33924064864a8392e22b8b7f3951672c5fda8f..0d743e1026a21d5e2e000b3c68d2a15939898b49 100644 (file)
@@ -13,6 +13,7 @@ import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
@@ -21,6 +22,7 @@ import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
@@ -77,6 +79,15 @@ public class CreateDescriptionHandler extends AbstractHandler {
                            MessagingUtils.warn(getClass(), "Command name not set.");
                        }
                    }
+                   if(viewerInput instanceof TaxonBase){
+                       try{
+                               operation = createTaxonOperation(event.getCommand().getName(), (Taxon) viewerInput, postOperationEnabled);
+                           AbstractUtility.executeOperation(operation);
+                        } catch (NotDefinedException e) {
+                                   MessagingUtils.warn(getClass(), "Command name not set.");
+                            }
+                       
+                   }
                }
                return null;
        }
index 753f38769c7d592ed1b4765bd83803b71fe8ff17..fc7a044a9bc9005f345431cea3faa3c21827a1e6 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -24,16 +24,19 @@ import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
@@ -45,68 +48,70 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class DeleteHandler extends AbstractHandler {
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
                IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveSite(event).getSelectionProvider().getSelection();
 
                IWorkbenchPart part = HandlerUtil.getActivePart(event);
                IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part : null;
-               
+
                try {
                        String label = event.getCommand().getName();
-               
+
                        IUndoContext undoContext = EditorUtil.getUndoContext();
-                       
-                       List<AbstractPostTaxonOperation> operations = new ArrayList<AbstractPostTaxonOperation>();
-                       
+
+                       List<AbstractPostOperation<?>> operations = new ArrayList<AbstractPostOperation<?>>();
+
                        for(Object object : selection.toArray()){
-                               
-                               AbstractPostOperation operation = null;
-                               
+
                                // TaxonDescription
                                if(object instanceof TaxonDescription){
                                        operations.add(new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, postOperationEnabled));
                                }
+                               else if(object instanceof SpecimenDescription){
+                                   operations.add(new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, postOperationEnabled));
+                               }
                                // DescriptionElementBase
                                else if(object instanceof DescriptionElementBase){
                                        operations.add(new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, postOperationEnabled));
                                }
                                else if(object instanceof FeatureNodeContainer){
                                        List<DescriptionElementBase> descriptions = ((FeatureNodeContainer) object).getDescriptionElementsForEntireBranch();
-                                       
+
                                        for(DescriptionElementBase description : descriptions){
-                                               operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, postOperationEnabled)); 
+                                               operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, postOperationEnabled));
                                        }
                                }
                                // Media
                                else if(object instanceof Media){
                                        TreeSelection treeSelection = (TreeSelection) selection;
-                                       
+
                                        TreePath[] path = treeSelection.getPathsFor(object);
-                                       
-                                       TaxonDescription imageGallery = (TaxonDescription) path[0].getFirstSegment();
-                                                                               
+
+                                       DescriptionBase<?> imageGallery = (DescriptionBase<?>) path[0].getFirstSegment();
+
                                        operations.add(new DeleteMediaOperation(label, undoContext, imageGallery, (Media) object, postOperationEnabled));
                                }
                                else{
                                        MessagingUtils.error(getClass(), "Selection is not valid for this delete handler", null);
-                               }       
+                               }
                        }
-                       
+
                        // execute all cumulated operations
-                       for(AbstractPostOperation operation : operations){
-                               EditorUtil.executeOperation(operation);
+                       for(AbstractPostOperation<?> operation : operations){
+                               AbstractUtility.executeOperation(operation);
                        }
-                       
+
                } catch (NotDefinedException e) {
                        MessagingUtils.warn(getClass(), "Command name not set.");
                }
-               
-               
+
+
                return null;
        }
 }
index 726b217db43996520759c42b9f3306456d301c96..ab67cf8c6221f297bd97db55a4176b697e168e5d 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
 
@@ -7,13 +7,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-import javax.lang.model.element.Element;
-
 import org.apache.log4j.Logger;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -23,16 +20,14 @@ import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.Page;
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionToOtherTaxonOperation;
-//import eu.etaxonomy.taxeditor.navigator.operation.ChangeAcceptedTaxonToSynonymOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -44,31 +39,32 @@ import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
  * @author a.kohlbecker
  * @created Okt. 11, 2013
  * @version 1.0
- * 
+ *
  */
 public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
-               implements IHandler, IPostOperationEnabled {
+               implements IPostOperationEnabled {
        private static final Logger logger = Logger
                        .getLogger(MoveDescriptionToOtherTaxonHandler.class);
        private MoveDescriptionToOtherTaxonOperation operation;
 
        private UUID newAcceptedTaxonNodeUuid;
        private TaxonNameEditor editor;
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
-               
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+
                ISelection selection = HandlerUtil.getCurrentSelection(event);
-               
+
                if(selection instanceof IStructuredSelection){
 
                        List<TaxonDescription> descriptions = new ArrayList<TaxonDescription>();
-                       
+
                        IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-                       
+
                        for(Object element : structuredSelection.toArray()){
                                if (element instanceof TaxonDescription){
                                        UUID uuid = ((TaxonDescription)element).getUuid();
@@ -78,54 +74,56 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
                        if(descriptions.size() == 0){
                                return null;
                        }
-                       
-                       // Choose the target taxon                              
+
+                       // Choose the target taxon
                        List<UUID> excludeTaxa = new ArrayList<UUID>();
                        editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
                        excludeTaxa.add(descriptions.get(0).getTaxon().getUuid());
-                       TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), 
-                                       editor.getConversationHolder(), 
-                                       "Choose the accepted taxon", 
-                                       excludeTaxa, 
-                                       null, 
-                                       null);                  
-       
+                       TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event),
+                                       editor.getConversationHolder(),
+                                       "Choose the accepted taxon",
+                                       excludeTaxa,
+                                       null,
+                                       null);
+
                        if (newAcceptedTaxonNode == null) {
                                return null;
                        }
-                       
+
                        newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
-                                       
+
                        try {
                                for(TaxonDescription description : descriptions){
-                                       operation = new MoveDescriptionToOtherTaxonOperation(event.getCommand().getName(), 
+                                       operation = new MoveDescriptionToOtherTaxonOperation(event.getCommand().getName(),
                                                                                        editor.getUndoContext(), description, newAcceptedTaxonNode, this, editor);
-                                       EditorUtil.executeOperation(operation);
+                                       AbstractUtility.executeOperation(operation);
                                }
-                               
+
                        } catch (NotDefinedException e) {
                                logger.warn("Command name not set");
                        }
                }
-               
+
                return null;
-               
+
        }
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
         */
        /** {@inheritDoc} */
-       public boolean postOperation(CdmBase objectAffectedByOperation) {
+       @Override
+    public boolean postOperation(CdmBase objectAffectedByOperation) {
                Display.getDefault().asyncExec(new Runnable(){
 
-                       public void run() {
-                               EditorUtil.close(editor.getMultiPageTaxonEditor());
-                               
+                       @Override
+            public void run() {
+                               AbstractUtility.close(editor.getMultiPageTaxonEditor());
+
                                try {
                                        MultiPageTaxonEditor possibleOpenEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(newAcceptedTaxonNodeUuid);
                                        if(possibleOpenEditor != null){
-                                               EditorUtil.close(possibleOpenEditor);
+                                               AbstractUtility.close(possibleOpenEditor);
                                        }
                                        EditorUtil.openTaxonNode(newAcceptedTaxonNodeUuid);
                                } catch (PartInitException e) {
@@ -135,10 +133,10 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
                                        MessagingUtils.warningDialog("Could not create Taxon", this, e.getMessage());
                                }
                        }
-                       
+
                });
-               
-               
+
+
                return true;
        }
 
@@ -147,8 +145,9 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
         *
         * @return a boolean.
         */
-       public boolean onComplete() {
+       @Override
+    public boolean onComplete() {
                // TODO Auto-generated method stub
                return false;
-       }       
+       }
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteSpecimenDescriptionOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteSpecimenDescriptionOperation.java
new file mode 100644 (file)
index 0000000..6b5b7f6
--- /dev/null
@@ -0,0 +1,79 @@
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ *
+ * @author pplitzner
+ * @date Jan 15, 2015
+ *
+ */
+public class DeleteSpecimenDescriptionOperation extends AbstractPostOperation<SpecimenOrObservationBase<?>> {
+
+       private final SpecimenDescription description;
+
+       public DeleteSpecimenDescriptionOperation(String label, IUndoContext undoContext,
+               SpecimenDescription description, IPostOperationEnabled postOperationEnabled) {
+               super(label, undoContext, description.getDescribedSpecimenOrObservation(), postOperationEnabled);
+               this.description = description;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+
+               monitor.worked(20);
+               element.removeDescription(description);
+               monitor.worked(40);
+               CdmStore.getService(IDescriptionService.class).delete(description);
+
+               return postExecute(description);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               return execute(monitor, info);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+
+           element.addDescription(description);
+
+               return postExecute(null);
+       }
+}
index daa0394da86657dbd3e1e415358c7b98ceef4b1c..5324d4e40d18cc2537133b33fd2b0237dee23ff7 100644 (file)
@@ -15,9 +15,11 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>DeleteTaxonDescriptionOperation class.</p>
@@ -56,10 +58,12 @@ public class DeleteTaxonDescriptionOperation extends AbstractPostTaxonOperation
                        throws ExecutionException {
 
                monitor.worked(20);
-               element.removeDescription(description);
-               monitor.worked(40);
-
-               return postExecute(description);
+               if (description != null){
+                       CdmStore.getService(IDescriptionService.class).deleteDescription(description);
+                       return postExecute(description);
+               }
+               return null;
+               
        }
 
        /* (non-Javadoc)
index 9fda8be48f5dd208769fe2dece4ee55207c1ec04..0e4a261059b225fe59d662dbec7a4aef007943dd 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.jface.viewers.Viewer;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
@@ -29,6 +30,7 @@ import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 
@@ -47,8 +49,15 @@ public class MediaContentProvider implements ITreeContentProvider{
        @Override
     public Object[] getChildren(Object parentElement) {
 
-               if (parentElement instanceof TaxonEditorInput) {
-                       Taxon taxon = ((TaxonEditorInput) parentElement).getTaxon();
+               if (parentElement instanceof TaxonEditorInput || parentElement instanceof Taxon) {
+                       
+                       Taxon taxon = null;
+                       if (parentElement instanceof TaxonEditorInput){
+                               taxon = ((TaxonEditorInput) parentElement).getTaxon(); 
+                       } else{
+                               taxon = HibernateProxyHelper.deproxy(parentElement, Taxon.class);
+                       }
+                        
                        if(taxon == null){
                                MessagingUtils.error(getClass(), "Taxon is null", null);
                                return NO_CHILDREN;
index 77514d2c8de10db322cf85389cb2e164bc6c8089..67fc3ed3f1950e1ed770578336560bb23609c295 100644 (file)
@@ -51,6 +51,7 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.medi"{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.view.media";
 
+
        private TreeViewer viewer;
 
        /*
@@ -117,13 +118,15 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
                        showViewer(part, new StructuredSelection(input));
                    }
                    else if(selection instanceof IStructuredSelection){
-                       Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                       Object firstElement = ((IStructuredSelection) selection).getFirstElement();
                        if(firstElement instanceof TreeNode){
                            showViewer(part, new StructuredSelection(((TreeNode) firstElement).getValue()));
                        }
                        else{
                            showViewer(part, (IStructuredSelection) selection);
                        }
+                   }else{
+                       showEmptyPage();
                    }
                }
                else{
index 00ec54f6e42058c573ec5b5d2495545f3c991209..4664282982638f122139ec308f039423d4e558e3 100644 (file)
@@ -15,8 +15,10 @@ import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
 import eu.etaxonomy.taxeditor.bulkeditor.input.OccurrenceEditorInput;
@@ -24,8 +26,11 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.AddDerivedUnitFacadeMediaOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
+import eu.etaxonomy.taxeditor.editor.view.media.MediaViewPart;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
@@ -73,7 +78,24 @@ public class AddImageGalleryHandler extends AbstractHandler {
                else if(input instanceof DerivateViewEditorInput){
                    ISelection selection = ((DerivateView)editor).getSelection();
                    invokeOperation(event, postOperationEnabled, selection);
+               } else if(part instanceof MediaViewPart){
+                   Object viewerInput = ((MediaViewPart)part).getViewer().getInput();
+                   
+                   if(viewerInput instanceof Taxon){
+                       Taxon taxon = HibernateProxyHelper.deproxy(viewerInput, Taxon.class);
+                       AbstractPostOperation<?> operation;
+                               try {
+                                       // TODO use undo context specific to editor
+                                       operation = new CreateTaxonDescriptionOperation(event.getCommand().getName(),
+                                                       EditorUtil.getUndoContext(), taxon, postOperationEnabled, true);
+                                       AbstractUtility.executeOperation(operation);
+                               } catch (NotDefinedException e) {
+                                       MessagingUtils.warn(getClass(), "Command name not set.");
+                               }
+                       
+                   }
                }
+               
                return null;
        }
 
index 63172152fec8b8be561b289b4fc5d6cbfa74e0da..b14889f28074e5ee2eb1a553c2f5a647fdb429ed 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -29,12 +29,11 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 31.03.2009
  * @version 1.0
  */
-@Deprecated // I don't think this is really used anymore
 public class DeleteMediaOperation extends AbstractPostTaxonOperation {
-       
-       private Media media;
 
-       private DescriptionBase<?> description;
+       private final Media media;
+
+       private final DescriptionBase<?> description;
 
        /**
         * <p>Constructor for DeleteMediaOperation.</p>
@@ -48,7 +47,7 @@ public class DeleteMediaOperation extends AbstractPostTaxonOperation {
        public DeleteMediaOperation(String label, IUndoContext undoContext,
                        DescriptionBase<?> description, Media media, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, postOperationEnabled);
-               
+
                this.media = media;
                this.description = description;
        }
@@ -85,9 +84,9 @@ public class DeleteMediaOperation extends AbstractPostTaxonOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                ImagesUtility.addMediaToGallery(description, media);
-               
+
                return postExecute(null);
        }
 
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityClassMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityClassMarkerField.java
new file mode 100644 (file)
index 0000000..6a13ceb
--- /dev/null
@@ -0,0 +1,22 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class EntityClassMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_ENTITY_CLASS);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_ENTITY_CLASS);\r
+               }\r
+       }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityIdMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/EntityIdMarkerField.java
new file mode 100644 (file)
index 0000000..40ec33c
--- /dev/null
@@ -0,0 +1,22 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class EntityIdMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_ENTITY_ID);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_ENTITY_ID);\r
+               }\r
+       }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/InvalidValueMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/InvalidValueMarkerField.java
new file mode 100644 (file)
index 0000000..b82324f
--- /dev/null
@@ -0,0 +1,22 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class InvalidValueMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_INVALID_VALUE);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_INVALID_VALUE);\r
+               }\r
+       }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyDescriptionMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyDescriptionMarkerField.java
new file mode 100644 (file)
index 0000000..0744a06
--- /dev/null
@@ -0,0 +1,23 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class UserFriendlyDescriptionMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_USER_FRIENDLY_DESCRIPTION);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_USER_FRIENDLY_DESCRIPTION);\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyFieldNameMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyFieldNameMarkerField.java
new file mode 100644 (file)
index 0000000..97d3db5
--- /dev/null
@@ -0,0 +1,22 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class UserFriendlyFieldNameMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_USER_FRIENDLY_FIELD_NAME);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_USER_FRIENDLY_FIELD_NAME);\r
+               }\r
+       }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyTypeNameMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/UserFriendlyTypeNameMarkerField.java
new file mode 100644 (file)
index 0000000..38419dc
--- /dev/null
@@ -0,0 +1,22 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class UserFriendlyTypeNameMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_USER_FRIENDLY_TYPE_NAME);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_USER_FRIENDLY_TYPE_NAME);\r
+               }\r
+       }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidationProblemsView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidationProblemsView.java
new file mode 100644 (file)
index 0000000..d81f97b
--- /dev/null
@@ -0,0 +1,13 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.ui.views.markers.MarkerSupportView;\r
+\r
+public class ValidationProblemsView extends MarkerSupportView {\r
+\r
+       public ValidationProblemsView()\r
+       {\r
+               super("eu.etaxonomy.taxeditor.editor.validation.ValidationProblemsMarkerGenerator");\r
+       }\r
+\r
+       \r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorClassMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorClassMarkerField.java
new file mode 100644 (file)
index 0000000..9b8aa12
--- /dev/null
@@ -0,0 +1,23 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class ValidatorClassMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_VALIDATOR_CLASS);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_VALIDATOR_CLASS);\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorMessageMarkerField.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/validation/ValidatorMessageMarkerField.java
new file mode 100644 (file)
index 0000000..970f337
--- /dev/null
@@ -0,0 +1,23 @@
+package eu.etaxonomy.taxeditor.editor.view.validation;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.ui.views.markers.MarkerField;\r
+import org.eclipse.ui.views.markers.MarkerItem;\r
+\r
+import eu.etaxonomy.taxeditor.editor.validation.MarkerManager;\r
+\r
+public class ValidatorMessageMarkerField extends MarkerField {\r
+\r
+       @Override\r
+       public String getValue(MarkerItem item)\r
+       {\r
+               try {\r
+                       Object value = item.getMarker().getAttribute(MarkerManager.ATTRIB_VALIDATOR_MESSAGE);\r
+                       return value == null ? "" : value.toString();\r
+               }\r
+               catch (CoreException e) {\r
+                       throw new RuntimeException("Error while retrieving value for " + MarkerManager.ATTRIB_VALIDATOR_MESSAGE);\r
+               }\r
+       }\r
+\r
+}\r
index 79596d803cae8b712484510a082650a04108ede2..e5bdcc9dd51baec814674fa64f8129c2cc61e180 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature.platform"
       label="Taxeditor Dependencies"
-      version="3.4.0.qualifier"
+      version="3.4.1.qualifier"
       os="linux,macosx,win32"
       ws="cocoa,gtk,win32"
       arch="x86,x86_64">
index d7e0536d4226d8700b8ea8a7babc4c1ddbbd0039..8cf8942ce2d5f65d025fd2fc6ef3134b9d579b8e 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>3.4.0-SNAPSHOT</version>
+               <version>3.4.1-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>eu.etaxonomy.taxeditor.feature.platform</artifactId>
index df501596241cb7adca55d5d4fa705bdef4692091..fddde21d23f7e0b2d6fb8bd21d06b11af6309fcf 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature"
       label="Taxonomic Editor"
-      version="3.4.0.qualifier"
+      version="3.4.1.qualifier"
       provider-name="EDIT"
       plugin="eu.etaxonomy.taxeditor.application"
       os="linux,macosx,win32"
index d553aec651a999eb45752257d101155d75466219..ffa131cd2c1f67a7c42a6aa52d77bbcc749ed8b5 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>3.4.0-SNAPSHOT</version>
+               <version>3.4.1-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>eu.etaxonomy.taxeditor.feature</artifactId>
index 9af1f6d9c2abec616084ccf4c992c33de9bfcc19..dd7490da21d54faad4a16fe651f1034f85f94dca 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Help
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.help; singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: eu.etaxonomy.taxeditor.help.Activator
 Bundle-Vendor: EDIT
 Require-Bundle: org.eclipse.ui,
index be078cd807b17934d07a6c351953d59202178476..9c535e4fc5f5d4311d197e53359ac5e4f7c006f1 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>3.4.0-SNAPSHOT</version>
+               <version>3.4.1-SNAPSHOT</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 0c596eaf6ed7f8c0009e30663ecf54ac6041d3b9..7934335c5226f3f1bdafa97be2c51b9c8d1aaa35 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Navigation Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.navigation;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.cdm,
  eu.etaxonomy.taxeditor.navigation,
index 25703253efd9a9a42b013ca2503ad5b3bdc20152..7e3bae6fafcbc1213abea82d40a5383e9e3d1bc3 100644 (file)
@@ -7,5 +7,12 @@ bin.includes = META-INF/,\
                plugin.xml,\
                icons/,\
                p2.inf,\
-               OSGI-INF/
+               OSGI-INF/l10n/bundle.properties,\
+               OSGI-INF/l10n/bundle_en.properties,\
+               OSGI-INF/l10n/bundle_de.properties,\
+               OSGI-INF/l10n/messages.properties,\
+               OSGI-INF/l10n/messages_en.properties,\
+               OSGI-INF/l10n/messages_de.properties
+               
+               
 
diff --git a/eu.etaxonomy.taxeditor.navigation/icons/check.png b/eu.etaxonomy.taxeditor.navigation/icons/check.png
new file mode 100644 (file)
index 0000000..d776b66
Binary files /dev/null and b/eu.etaxonomy.taxeditor.navigation/icons/check.png differ
index 940095c9c62ec9ceb132fb2177d10368ae27743a..78ff843f3c5f4da5f134f8b7a0fad9adf118164c 100644 (file)
                   label="%command.label.3"
                   style="push">
             </command>
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isCdmStoreConnected">
+               </reference>
+            </visibleWhen>
          </menu>
          <command
                commandId="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler"
-               icon="icons/edit_16x16.gif"
+               icon="icons/check.png"
                label="%command.label.4"
                style="push">
            <visibleWhen
                style="push">
                <visibleWhen
                   checkEnabled="true">
-               <reference
-                     definitionId="isTaxonNode">
-               </reference>
+                  <and>
+                     <reference
+                           definitionId="isCdmStoreConnected">
+                     </reference>
+                     <reference
+                           definitionId="isTaxonNode">
+                     </reference>
+                  </and>
             </visibleWhen>
          </command>
          <command
                   </reference>
             </visibleWhen>
          </command>
+         <command
+               commandId="eu.etaxonomy.taxeditor.navigation.moveFactualData"
+               label="Move factual data to another taxon"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <and>
+                  <reference
+                        definitionId="isCdmStoreConnected">
+                  </reference>
+                  <reference
+                        definitionId="isTaxonNode">
+                  </reference>
+               </and>
+            </visibleWhen>
+         </command>
          <separator
                name="taxeditor-navigation.separator2"
                visible="true">
                commandId="org.eclipse.ui.file.import"
                label="%command.label.8"
                style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isCdmStoreConnected">
+               </reference>
+            </visibleWhen>
          </command>
          <command
                commandId="org.eclipse.ui.file.export"
                label="%command.label.9"
                style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isCdmStoreConnected">
+               </reference>
+            </visibleWhen>
          </command>
          <separator
                name="taxeditor-navigation.separator4"
                commandId="org.eclipse.ui.edit.delete"
                label="%command.label.10"
                style="push">
-            <visibleWhen>
-               <not>
+            <visibleWhen
+                  checkEnabled="true">
+               <and>
                   <reference
-                        definitionId="isSynonymNode">
+                        definitionId="isCdmStoreConnected">
                   </reference>
-               </not>
+                  <not>
+                     <reference
+                           definitionId="isSynonymNode">
+                     </reference>
+                  </not>
+               </and>
             </visibleWhen>
          </command>
          <separator
                commandId="org.eclipse.ui.file.refresh"
                label="%command.label.11"
                style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isCdmStoreConnected">
+               </reference>
+            </visibleWhen>
          </command>
          <command
                commandId="eu.etaxonomy.taxeditor.navigation.command.copyTaxonName"
                label="%command.label.12"
                style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isCdmStoreConnected">
+               </reference>
+            </visibleWhen>
          </command>
       </menuContribution>
       <menuContribution
          
       </menuContribution>
    </extension>
-   <extension
-         point="org.eclipse.ui.commands">
-      <command
-            defaultHandler="eu.etaxonomy.taxeditor.navigation.navigator.handler.NewTaxonNodeHandler"
-            id="eu.etaxonomy.taxeditor.navigation.command.create.taxonNode"
-            name="%command.name">
-      </command>
-      <command
-            defaultHandler="eu.etaxonomy.taxeditor.navigation.navigator.handler.NewClassificationHandler"
-            id="eu.etaxonomy.taxeditor.navigation.create.classification"
-            name="%command.name.0">
-      </command>
-   </extension>
    <extension
          point="org.eclipse.ui.commands">
       <command
             id="eu.etaxonomy.taxeditor.navigator.command.update.changeAcceptedToSynonym"
             name="%command.name.5">
       </command>
-   </extension>
-   <extension
-         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.navigation.navigator.handler.NewClassificationHandler"
+            id="eu.etaxonomy.taxeditor.navigation.create.classification"
+            name="%command.name.0">
+      </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.navigation.navigator.handler.NewTaxonNodeHandler"
+            id="eu.etaxonomy.taxeditor.navigation.command.create.taxonNode"
+            name="%command.name">
+      </command>
       <command
             defaultHandler="eu.etaxonomy.taxeditor.navigation.key.polytomous.handler.NewPolytomousKeyHandler"
             id="eu.etaxonomy.taxeditor.navigation.key.polytomous.newKey"
             id="eu.etaxonomy.taxeditor.navigation.key.polytomous.refreshKeyNodes"
             name="%command.name.9">
       </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.navigation.navigator.handler.MoveFactualDataHandler"
+            id="eu.etaxonomy.taxeditor.navigation.moveFactualData"
+            name="Move Factual Data">
+      </command>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
          properties="isChecklistEditorEnabled"
          type="org.eclipse.jface.viewers.IStructuredSelection">
    </propertyTester>
+   <propertyTester
+         class="eu.etaxonomy.taxeditor.preference.PreferencePropertyTester"
+         id="eu.etaxonomy.taxeditor.preferences.propertyTester"
+         namespace="eu.etaxonomy.taxeditor.preferences.propertyTester"
+         properties="isCdmStoreConnected"
+         type="org.eclipse.jface.viewers.IStructuredSelection">
+   </propertyTester>
    </extension>
    <extension
          point="org.eclipse.core.expressions.definitions">
             </test>
          </with>
       </definition>
+      <definition
+            id="isCdmStoreConnected">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.preferences.propertyTester.isCdmStoreConnected">
+            </test>
+         </with>
+      </definition>
    </extension>
 </plugin>
index 67c35d572774424ab4cbbbe485c8dd12ccaee1af..1e08059be538b4190645add7d4b8bd0fc2109166 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>3.4.0-SNAPSHOT</version>
+               <version>3.4.1-SNAPSHOT</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 2b910df22964e7d0cb72c498da42d2c875c092f4..e10a6488ebc67b0c259c24d621cb80d624b9ab6b 100644 (file)
@@ -21,9 +21,6 @@ import java.util.UUID;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IViewSite;
@@ -34,7 +31,6 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonComparatorSearch;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;
@@ -80,28 +76,29 @@ public class TaxonNavigator extends CommonNavigator implements
        /** {@inheritDoc} */
        @Override
        protected IAdaptable getInitialInput() {
-               
+
                TaxonComparatorSearch comparator = new TaxonComparatorSearch();
                TaxonNodeComparator viewerComparator = new TaxonNodeComparator(comparator);
                this.getCommonViewer().setComparator(viewerComparator);
+        setLinkingEnabled(true);
 //             this.getCommonViewer().addSelectionChangedListener(new ISelectionChangedListener() {
-//                     
+//
 //                     @Override
 //                     public void selectionChanged(SelectionChangedEvent arg0) {
 //                             IStructuredSelection selection = (IStructuredSelection) getCommonViewer().getSelection();
-//                             
+//
 //                             Object firstElement =  selection.getFirstElement();
 //                             //
 //                             if (!(firstElement instanceof Classification)){
 //                                     //NavigationUtil.selectInNavigator(firstElement, null);
 //                                     NavigationUtil.openEditor(firstElement);
 //                             }
-//                             
+//
 //                     }
 //             } );
-               
+
                if (CdmStore.isActive()) {
-                       
+
                        // TODO when closing and reopening the taxon navigator
                        // we do not preserve state. Closing the view, in contrary to
                        // closing the whole application
index d78128c6e3d8c3d0d3b692c3ddd20abfc648694b..fbf20ea45cfa2e92d287b62520ef53496af2493f 100644 (file)
@@ -25,10 +25,13 @@ import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.swt.dnd.DropTargetEvent;
 import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.ui.navigator.CommonDropAdapter;
 import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
 
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
@@ -65,8 +68,18 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                if (target instanceof ITaxonTreeNode) {
                        Set<TaxonNode> taxonNodes = getSelectedTaxa();
                        ITaxonTreeNode targetTreeNode = (ITaxonTreeNode) target;
+                       if (targetTreeNode instanceof Classification){
+                               targetTreeNode = ((Classification)targetTreeNode).getRootNode();
+                               targetTreeNode = HibernateProxyHelper.deproxy(targetTreeNode, TaxonNode.class);
+                       }
                        if(taxonNodes != null) {
-                return moveTaxon(taxonNodes, targetTreeNode);
+                               if (taxonNodes.size() == 1){
+                                       return moveTaxon(taxonNodes.iterator().next(), targetTreeNode);
+                               } else{
+                                       if( MessageDialog.openConfirm(null, "Moving taxon", "The operation move accepted taxon to other parent is available only for a single taxon.")){
+                                               return null;
+                                       }
+                               }
             }
                }
 
@@ -150,7 +163,7 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
         * @param parentTaxon
         * @return
         */
-       private IStatus moveTaxon(Set<TaxonNode> taxonNodes, ITaxonTreeNode targetITaxonTreeNode) {
+       private IStatus moveTaxon(TaxonNode taxonNode, ITaxonTreeNode targetITaxonTreeNode) {
 
                TaxonNavigator taxonNavigator;
                taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);
@@ -172,6 +185,10 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                                return Status.CANCEL_STATUS;
                        }
 
+                       
+                       /*if (((TaxonNode) targetITaxonTreeNode).isTopmostNode()) {
+                               MessageDialog.openConfirm(null, "Taxonnode can not be moved", "A taxonnode can not be moved to the classification");
+                       }*/
 
                        // Make sure parentTaxon is not the drop target
 //                     if (!childTaxonNode.isTopmostNode() && childTaxonNode.getParent().equals(targetTaxonNode)){
@@ -194,9 +211,9 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                }
 
                AbstractPostOperation operation = new MoveTaxonOperation
-                               ("Move Taxon", workspaceUndoContext, taxonNodes, targetITaxonTreeNode, this, taxonNavigator);
+                               ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator);
                NavigationUtil.executeOperation(operation);
-
+               
                logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
                return Status.OK_STATUS;
        }
index 09c3f22daecbca943431234d7f3589eeca165cd8..55df02ba26580f05fa4cc09d74df9336257d6b6e 100644 (file)
@@ -17,7 +17,6 @@ import java.util.Set;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.TreeSelection;
@@ -28,16 +27,20 @@ import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator.ChildHandling;
 import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.DeleteOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDialog;
 
 /**
  * <p>DeleteTreeNodeHandler class.</p>
@@ -46,7 +49,7 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
  * @created 06.04.2009
  * @version 1.0
  */
-public class DeleteHandler extends AbstractHandler implements IHandler{
+public class DeleteHandler extends AbstractHandler{
 
        protected IWorkbenchPage activePage;
        protected TaxonNavigator taxonNavigator;
@@ -61,11 +64,6 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
 
                TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
 
-               String plural = selection.size() > 1 ? "s" : "";
-               // Prompt user for confirmation
-               
-               
-
                Iterator selectionIterator = selection.iterator();
                Set<ITaxonTreeNode> treeNodes = new HashSet<ITaxonTreeNode>();
 
@@ -82,54 +80,82 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                        }
                }
                AbstractPostOperation operation = null;
+               TaxonDeletionConfigurator config = new TaxonDeletionConfigurator();
                if (treeNodes.size() == 1 ){
                        try {
-                               
+
                                ITaxonTreeNode treeNode = treeNodes.iterator().next();
                                ITaxonTreeNode taxonNode =treeNode;
-                               
+                               TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
                                if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
-                                       if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too")){
+                                       if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){
                                                return null;
                                        }
                                } else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
-                                       if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
+                                       if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
                                                return null;
                                        }
                                } else {
-                                       if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
-                                               return null;
+
+                                       if (taxonNode.hasChildNodes()){
+                        DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(
+                                config,
+                                HandlerUtil.getActiveShell(event),
+                                "Confirm Deletion",
+                                null,
+                                "Do you really want to delete the selected node? It has childnodes, they will be deleted, too.",
+                                MessageDialog.WARNING, new String[] { "Delete all children",
+                                        "Move children to parent node", "Skip" }, 0);
+                                               int result = dialog.open();
+
+                                               if (result == 0){
+                                                       //delete all children
+                                                       configNodes.setChildHandling(ChildHandling.DELETE);
+                                                       config.setTaxonNodeConfig(configNodes);
+                                               } else if (result == 1){
+                                                       //move children
+                                                       configNodes.setChildHandling(ChildHandling.MOVE_TO_PARENT);
+                                                       config.setTaxonNodeConfig(configNodes);
+                                               } else if (result == 2){
+                                                       //skip
+                                                       return null;
+
+                                               }
+                                       }else{
+                                               if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
+                                                       return null;
+                                               }
                                        }
                                }
-       
+
                                if (allEditorsClosed){
                                        /*if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
                                                return null;
                                        }*/
                                                operation = new DeleteOperation(
                                                                event.getCommand().getName(), NavigationUtil.getUndoContext(),
-                                                               taxonNode, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
-                       
-                                               NavigationUtil.executeOperation(operation);
+                                                               taxonNode, config, taxonNavigator, taxonNavigator);
+
+                                               AbstractUtility.executeOperation(operation);
                                                //}
                                }
-       
-               
-       
+
+
+
                        } catch (NotDefinedException e) {
                                MessagingUtils.warn(getClass(), "Command name not set");
                        }
                } else{
                        try{
-                               if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
+                               if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
                                        return null;
                                }
                                if (allEditorsClosed){
                                        operation = new DeleteOperation(
                                                        event.getCommand().getName(), NavigationUtil.getUndoContext(),
                                                        treeNodes, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
-               
-                                       NavigationUtil.executeOperation(operation);
+
+                                       AbstractUtility.executeOperation(operation);
                                }
                        }catch (NotDefinedException e) {
                                MessagingUtils.warn(getClass(), "Command name not set");
@@ -143,8 +169,8 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                for (IEditorReference ref : activePage.getEditorReferences()) {
                        try {
                                String treeIndex = ((ITreeNode)taxonNode).treeIndex();
-                               
-                               
+
+
                                IEditorInput input = ref.getEditorInput();
                                if (input instanceof TaxonEditorInput) {
                                        TaxonNode node = ((TaxonEditorInput) input).getTaxonNode();
@@ -152,7 +178,7 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                                        if( ((ITreeNode) node).treeIndex().startsWith(treeIndex)){
                                        //if (taxonNode.equals(node)) {
                                                result &= activePage.closeEditor(ref.getEditor(false), true);
-                                               
+
                                        }
                                }
                        } catch (PartInitException e) {
index 917f5f40d7e0f3dcbe9b2a77e193f320be22c93e..e4876d35aa3674ea5f1e2cf3a543492cc294fb67 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.handlers.HandlerUtil;
@@ -46,8 +46,8 @@ public class EditHandler extends AbstractHandler implements IHandler{
 
                ISelection selection = HandlerUtil.getCurrentSelection(event);
 
-               if(selection instanceof StructuredSelection){
-                       final StructuredSelection structuredSelection = (StructuredSelection) selection;
+               if(selection instanceof IStructuredSelection){
+                       final IStructuredSelection structuredSelection = (IStructuredSelection) selection;
 
                        if(structuredSelection.size() == 1 && structuredSelection.getFirstElement() instanceof Classification){
                                Classification classification = (Classification) structuredSelection.getFirstElement();
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java
new file mode 100644 (file)
index 0000000..d89a11f
--- /dev/null
@@ -0,0 +1,134 @@
+package eu.etaxonomy.taxeditor.navigation.navigator.handler;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
+
+public class MoveFactualDataHandler extends AbstractHandler {
+
+    @SuppressWarnings("unused")
+    private static final Logger logger = Logger.getLogger(MoveFactualDataHandler.class);
+
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
+        IWorkbenchPart activePart = AbstractUtility.getActivePart();
+        TaxonNavigator navigator = null;
+        if(activePart instanceof TaxonNavigator){
+            navigator = (TaxonNavigator)activePart;
+        }
+        if(navigator!=null && currentSelection instanceof TreeSelection){
+            Object object = ((TreeSelection) currentSelection).getFirstElement();
+            if(object instanceof TaxonNode){
+                TaxonNode taxonNode = HibernateProxyHelper.deproxy(object, TaxonNode.class);
+                final TaxonNode sourceTaxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNode.getUuid());
+                if(NavigationUtil.isDirty(sourceTaxonNode)){
+                    MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Source Taxon", "There are unsaved " +
+                            "changes in the source taxon. Please save first.");
+                    return null;
+                }
+                //reload to avoid session conflicts
+                Taxon taxon = HibernateProxyHelper.deproxy(CdmStore.getService(ITaxonService.class).load(sourceTaxonNode.getTaxon().getUuid()), Taxon.class);
+                if(taxon!=null){
+                 // Choose the target taxon
+                    List<UUID> excludeTaxa = new ArrayList<UUID>();
+                    excludeTaxa.add(taxon.getUuid());
+                    TaxonNode dialogTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event),
+                            navigator.getConversationHolder(),
+                            "Choose the accepted taxon",
+                            excludeTaxa,
+                            null,
+                            null);
+                    if (dialogTaxonNode == null) {
+                        return null;
+                    }
+                    //reload to avoid session conflicts
+                    final TaxonNode targetTaxonNode = CdmStore.getService(ITaxonNodeService.class).load(dialogTaxonNode.getUuid());
+                    if(NavigationUtil.isDirty(targetTaxonNode)){
+                        MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Target Taxon", "There are unsaved " +
+                                "changes in the target taxon. Please save first.");
+                        return null;
+                    }
+                    for(TaxonDescription description : taxon.getDescriptions()){
+                        //reload to avoid session conflicts
+                        description = HibernateProxyHelper.deproxy(CdmStore.getService(IDescriptionService.class).load(description.getUuid()), TaxonDescription.class);
+
+                        String moveMessage = String.format("Description moved from %s", taxon);
+                        if(description.isProtectedTitleCache()){
+                            String separator = "";
+                            if(!StringUtils.isBlank(description.getTitleCache())){
+                                separator = " - ";
+                            }
+                            description.setTitleCache(description.getTitleCache() + separator + moveMessage, true);
+                        }
+                        Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
+                        annotation.setAnnotationType(AnnotationType.TECHNICAL());
+                        description.addAnnotation(annotation);
+                        targetTaxonNode.getTaxon().addDescription(description);
+                        CdmStore.getService(IDescriptionService.class).saveOrUpdate(description);
+                        navigator.getConversationHolder().bind();
+                        navigator.getConversationHolder().commit();
+                    }
+
+                    Display.getDefault().asyncExec(new Runnable(){
+
+                        @Override
+                        public void run() {
+                            try {
+                                //close and re-open to refresh factual data view
+                                MultiPageTaxonEditor sourceEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(sourceTaxonNode.getUuid());
+                                MultiPageTaxonEditor targetEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(targetTaxonNode.getUuid());
+                                if(targetEditor != null){
+                                    AbstractUtility.close(sourceEditor);
+                                    AbstractUtility.close(targetEditor);
+                                }
+                                EditorUtil.openTaxonNode(sourceTaxonNode.getUuid());
+                                EditorUtil.openTaxonNode(targetTaxonNode.getUuid());
+                            } catch (PartInitException e) {
+                                MessagingUtils.error(this.getClass(), e);
+                                throw new RuntimeException(e);
+                            } catch (Exception e) {
+                                MessagingUtils.warningDialog("Could not create Taxon", this, e.getMessage());
+                            }
+                        }
+
+                    });
+                }
+            }
+        }
+        return null;
+    }
+
+}
index 02f6a6659ce850958a82cf74cbe711b84a8ba6da..ba681d70c4affeae78491497ba7ebeebf04c73a0 100644 (file)
@@ -19,17 +19,29 @@ import java.util.UUID;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ITreeNode;
+import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 
 /**
@@ -42,49 +54,56 @@ import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 public class MoveTaxonHandler extends AbstractHandler implements IPostOperationEnabled {
 
        private TaxonNode parentTaxonNode;
-
+       protected IWorkbenchPage activePage;
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               TaxonNavigator taxonNavigator = NavigationUtil.showNavigator();
+               activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+               TaxonNavigator taxonNavigator = (TaxonNavigator)NavigationUtil.showView(TaxonNavigator.ID);
                
                TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
                
                Iterator selectionIterator = selection.iterator();
-               Set<TaxonNode> taxonNodes = new HashSet<TaxonNode>();
+               TaxonNode taxonNode = null;
+               UUID taxonNodeUUID = null;
                // do not show the current selection
                List<UUID> excludeTaxa = new ArrayList<UUID>();
                
-       
-               while (selectionIterator.hasNext()){
+               if (selection.size() == 1){
                        Object object = selectionIterator.next();
                        if(object instanceof TaxonNode){
-                               TaxonNode taxonNode = (TaxonNode) object;
-                               taxonNodes.add(taxonNode);
+                               taxonNode = HibernateProxyHelper.deproxy(object,TaxonNode.class);
+                               taxonNodeUUID = taxonNode.getUuid();
                                excludeTaxa.add(taxonNode.getTaxon().getUuid());
                        }
+               } else{
+                       if( MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Moving taxon", "The operation move accepted taxon to other parent is available only for a single taxon.")){
+                               return null;
+                       }
                }
                
-//             TaxonNode taxonNode = (TaxonNode) selection.getFirstElement();
                
-               parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null);
+//             TaxonNode taxonNode = (TaxonNode) selection.getFirstElement();
+               if (taxonNode != null){
+                       parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null);
+                       
+                       if(parentTaxonNode != null){
+                               if(NavigationUtil.isDirty(parentTaxonNode)){
+                                       MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Parent Taxon", "There are unsaved " +
+                                                       "changes in the parent taxon. Please save first.");
+                                       return null;
+                               }
                                
-               if(parentTaxonNode != null){
-                       if(NavigationUtil.isDirty(parentTaxonNode)){
-                               MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Parent Taxon", "There are unsaved " +
-                                               "changes in the parent taxon. Please save first.");
-                               return null;
-                       }
+                               AbstractPostOperation operation = new MoveTaxonOperation
+                                               ("Move taxon to new parent", NavigationUtil.getUndoContext(),
+                                                               taxonNode, parentTaxonNode, taxonNavigator, taxonNavigator); //$NON-NLS-1$
+                               NavigationUtil.executeOperation(operation);
+                               taxonNavigator.refresh();
                        
-                       AbstractPostOperation operation = new MoveTaxonOperation
-                                       ("Move taxon to new parent", NavigationUtil.getUndoContext(), 
-                                                       taxonNodes, parentTaxonNode, this, taxonNavigator); //$NON-NLS-1$
-                       NavigationUtil.executeOperation(operation);
-               
+                       }
                }
-               
                return null;
        }
 
@@ -105,4 +124,6 @@ public class MoveTaxonHandler extends AbstractHandler implements IPostOperationE
                return false;
        }
        
+       
+       
 }
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/TaxonParameterConverter.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/TaxonParameterConverter.java
new file mode 100644 (file)
index 0000000..c166012
--- /dev/null
@@ -0,0 +1,30 @@
+package eu.etaxonomy.taxeditor.navigation.navigator.handler;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.AbstractParameterValueConverter;
+import org.eclipse.core.commands.ParameterValueConversionException;
+
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class TaxonParameterConverter extends AbstractParameterValueConverter {
+
+    public TaxonParameterConverter() {
+    }
+
+    @Override
+    public Object convertToObject(String parameterValue) throws ParameterValueConversionException {
+        return CdmStore.getService(ITaxonService.class).load(UUID.fromString(parameterValue));
+    }
+
+    @Override
+    public String convertToString(Object parameterValue) throws ParameterValueConversionException {
+        if(parameterValue instanceof TaxonBase<?>){
+            return ((TaxonBase) parameterValue).getUuid().toString();
+        }
+        return null;
+    }
+
+}
index 56ce064a52673e5c5558b88de653decdcac38c8b..16011b6cb116496d6a82685319c978ea1102bc05 100644 (file)
 package eu.etaxonomy.taxeditor.navigation.navigator.operation;
 
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.operations.IUndoContext;
@@ -20,13 +22,17 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.IllegalAncestryException;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * Change the taxonomic parent of a given taxon.
@@ -44,9 +50,9 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation {
        /**
         * A reference to the former taxonomical parents
         */
-       private Map<TaxonNode, ITaxonTreeNode> oldParentTreeNodes;
+       //private Map<TaxonNode, ITaxonTreeNode> oldParentTreeNodes;
 
-       private Set<TaxonNode> taxonNodes;
+       private TaxonNode taxonNode;
 
        /**
         * <p>Constructor for MoveTaxonOperation.</p>
@@ -59,18 +65,19 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation {
         * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object.
         */
        public MoveTaxonOperation(String label, IUndoContext undoContext,
-                       Set<TaxonNode> taxonNodes, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
+                       TaxonNode taxonNodeToMove, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
                super(label, undoContext, postOperationEnabled, conversationEnabled);
-
-               this.taxonNodes = taxonNodes;
-
+               
+               this.taxonNode = taxonNodeToMove;
+               /*for (TaxonNode node:taxonNodes){
+                       this.taxonNodes.add(service.load(node.getUuid()));
+               }*/
+               
                this.newParentTreeNode = newParentTreeNode;
 
                // Save old parent ITaxonTreeNodes for undo
-               oldParentTreeNodes = new HashMap<TaxonNode, ITaxonTreeNode>();
-               for(TaxonNode taxonNode : taxonNodes){
-                       this.oldParentTreeNodes.put(taxonNode, taxonNode.getParent());
-               }
+               
+               //this.parentNode = taxonNode.getParent();
        }
 
        /* (non-Javadoc)
@@ -83,16 +90,18 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation {
                bind();
                monitor.worked(20);
 
-               try {
-                       for (TaxonNode taxonNode : taxonNodes){
-                               TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode,
-                                               newParentTreeNode.getReference(), newParentTreeNode.getMicroReference());
-                               taxonNodes.add(newTaxonNode);
-                               monitor.worked(2);
-                       }
-               } catch(IllegalAncestryException e) {
-                       MessagingUtils.warningDialog("Illegal ancestry", this, e.getMessage());
-               }
+               UpdateResult result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNode(this.taxonNode.getUuid(),newParentTreeNode.getUuid());
+//             try {
+//                     for (TaxonNode taxonNode : taxonNodes){
+//                             TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode,
+//                                             newParentTreeNode.getReference(), newParentTreeNode.getMicroReference());
+//                             //taxonNodes.add(newTaxonNode);
+//                             
+//                             monitor.worked(2);
+//                     }
+//             } catch(IllegalAncestryException e) {
+//                     MessagingUtils.warningDialog("Illegal ancestry", this, e.getMessage());
+//             }
                monitor.worked(40);
 
                return postExecute(null);
index 2b4b2ade6f166a2da787877be7bc7ccb268e6b41..c21dab12c54b558d966349f476c5dcf3733af7c3 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Printpublisher Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.printpublisher;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Require-Bundle: org.eclipse.osgi,
  org.eclipse.ui,
  eu.etaxonomy.taxeditor.cdmlib,
index 6aaf4e7fcdb68fbe6d895282a06f041d6543e7b0..4184183b4d720b347f504a85cd011b14dfec7498 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <artifactId>taxeditor-parent</artifactId>
                <groupId>eu.etaxonomy</groupId>
-               <version>3.4.0-SNAPSHOT</version>
+               <version>3.4.1-SNAPSHOT</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 9b30b76b8d26907629b46460ec24e243daa10ba1..52922d02554dfb7b746a57edb6edb62cd7261041 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: DataStore Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.store;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 3.4.1.qualifier
 Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.cdm,
@@ -32,6 +32,7 @@ Export-Package: eu.etaxonomy.cdm,
  eu.etaxonomy.taxeditor.ui.bar,
  eu.etaxonomy.taxeditor.ui.combo,
  eu.etaxonomy.taxeditor.ui.dialog,
+ eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator,
  eu.etaxonomy.taxeditor.ui.dialog.selection,
  eu.etaxonomy.taxeditor.ui.element,
  eu.etaxonomy.taxeditor.ui.group.grantedauthority,
index 760c9e30a4d476ba6b3d69afd87ca973c92958a2..860efe827b4a47a29a2cc01dedde3d075fa92e0d 100644 (file)
@@ -23,7 +23,7 @@ page.name.19 = Stage
 page.name.20 = Preservation Method\r
 page.name.21 = Feature Tree\r
 page.name.22 = Default Feature Trees\r
-page.name.23 = Language\r
+page.name.23 = Representation\r
 page.name.24 = Mobot Open Url\r
 page.name.25 = Type Designations\r
 view.name = Datasource\r
@@ -128,4 +128,4 @@ page.name.26 = Specimens and FieldUnits
 page.name.27 = Media\r
 page.name.28 = Checklist Editor\r
 page.name.29 = Editor Profile\r
-page.name.30 = Default Language
\ No newline at end of file
+page.name.30 = Language
\ No newline at end of file
index 2923d539fc6d78e2b3b8b050691864492c1a598c..4f79394c0c4c3f6c43693bffd7edb08f38cefaa3 100644 (file)
@@ -23,7 +23,7 @@ page.name.19 = Stufe (Stage)
 page.name.20 = Erhaltungs-(Preservation) Methode
 page.name.21 = Merkmalsbaum
 page.name.22 = Standard Merkmalsbaum
-page.name.23 = Sprache
+page.name.23 = Repr\u00e4sentation
 page.name.24 = Mobot Open Url
 page.name.25 = Typ Bezeichnungen
 view.name = Datenquelle
@@ -38,7 +38,7 @@ editor.name = Editor f\u00fcr definierte Begriffe
 menu.label = Zeige Ansicht
 command.label = Derivatsuche
 command.label.0 = Details
-command.label.1 = Zusatz
+command.label.1 = Zusatzdaten
 command.label.2 = Datenquelle
 command.label.3 = Fehlermeldungen
 command.label.4 = Berichte
@@ -128,4 +128,4 @@ page.name.26 = Specimens und FieldUnits
 page.name.27 = Media
 page.name.28 = Checklist Editor
 page.name.29 = Editor Profil
-page.name.30 = Standardsprache
\ No newline at end of file
+page.name.30 = Sprache
\ No newline at end of file
index 760c9e30a4d476ba6b3d69afd87ca973c92958a2..860efe827b4a47a29a2cc01dedde3d075fa92e0d 100644 (file)
@@ -23,7 +23,7 @@ page.name.19 = Stage
 page.name.20 = Preservation Method\r
 page.name.21 = Feature Tree\r
 page.name.22 = Default Feature Trees\r
-page.name.23 = Language\r
+page.name.23 = Representation\r
 page.name.24 = Mobot Open Url\r
 page.name.25 = Type Designations\r
 view.name = Datasource\r
@@ -128,4 +128,4 @@ page.name.26 = Specimens and FieldUnits
 page.name.27 = Media\r
 page.name.28 = Checklist Editor\r
 page.name.29 = Editor Profile\r
-page.name.30 = Default Language
\ No newline at end of file
+page.name.30 = Language
\ No newline at end of file
index b7014aed164c2aa1da47c83c64b01597a776bc08..4a870cf80f8ba3c7de273dd56344b62a03848773 100644 (file)
@@ -8,5 +8,10 @@ bin.includes = META-INF/,\
                icons/,\
                p2.inf,\
                OSGI-INF/,\
-               OSGI-INF/l10n/bundle.properties
+               OSGI-INF/l10n/bundle.properties,\
+               OSGI-INF/l10n/bundle_de.properties,\
+               OSGI-INF/l10n/bundle_en.properties,\
+               OSGI-INF/l10n/messages.properties,\
+               OSGI-INF/l10n/messages_de.properties,\
+               OSGI-INF/l10n/messages_en.properties
 
index 44d489e5a759533a2f63881b7fa8d69902a4d258..95573ca219a15b86831d400deb29e099142f6e4c 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
 <plugin>
+   <extension-point id="eu.etaxonomy.taxeditor.store.cdmViewer" name="Cdm Viewer" schema="schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd"/>
    <extension
          point="org.eclipse.ui.preferencePages">
       <page
             name="%page.name.22">
       </page>
       <page
-            category="eu.etaxonomy.taxeditor.preferences.general"
-            class="eu.etaxonomy.taxeditor.preference.LanguagePreferencePage"
+            category="eu.etaxonomy.taxeditor.preference.defaultlanguagepditorpreferencePage"
+            class="eu.etaxonomy.taxeditor.preference.LanguageRepresentationPreferencePage"
             id="eu.etaxonomy.taxeditor.preferences.language"
             name="%page.name.23">
       </page>
       </page>
       <page
             category="eu.etaxonomy.taxeditor.preferences.general"
-            class="eu.etaxonomy.taxeditor.preference.DefaultLanguageEditorPreferencePage"
+            class="eu.etaxonomy.taxeditor.preference.LanguageEditorPreferencePage"
             id="eu.etaxonomy.taxeditor.preference.defaultlanguagepditorpreferencePage"
             name="%page.name.30">
       </page>
             </command>
             <command
                   commandId="org.eclipse.ui.views.showView"
-                  label="%command.label.1"
+                  id="org.eclipse.ui.views.showView.supplemental"
+                     label="%command.label.1"
                   style="push">
                <parameter
                      name="org.eclipse.ui.views.showView.viewId"
                      value="eu.etaxonomy.taxeditor.view.supplementalData">
                </parameter>
             </command>
+            <!-- Originally used by validation framework, currently not in use -->
+       <!--        <command
+                        id="org.eclipse.ui.views.showView.problems"
+                    commandId="org.eclipse.ui.views.showView"
+                    label="Problems"
+                    style="push">
+                 <parameter
+                       name="org.eclipse.ui.views.showView.viewId"
+                       value="org.eclipse.ui.views.ProblemView">
+                 </parameter>
+              </command>  -->
             <separator
                   name="eu.etaxonomy.taxeditor.store.showViewMenu.internal"
                   visible="true">
                commandId="eu.etaxonomy.taxeditor.editor.handler.openDerivateView"
                label="Open in Derivate Editor"
                style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <with
+                     variable="selection">
+                  <count
+                        value="+">
+                  </count>
+               </with>
+            </visibleWhen>
          </command>
       </menuContribution>
    </extension>
index 5273219f82e4586152b33e882360b484391a96a4..b18da903ef0b6429ee1ef38aff53110fb27aaf60 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
        <groupId>eu.etaxonomy</groupId>
        <artifactId>taxeditor-parent</artifactId>
-       <version>3.4.0-SNAPSHOT</version>
+       <version>3.4.1-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd b/eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd
new file mode 100644 (file)
index 0000000..d885f02
--- /dev/null
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="eu.etaxonomy.taxeditor.store" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="eu.etaxonomy.taxeditor.store" id="eu.etaxonomy.taxeditor.store.cdmViewer" name="Cdm Viewer"/>
+      </appInfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+         <documentation>
+            Extensions must provide and ICdmViewer which maps input elements to viewers which are able to display information for them.
+         </documentation>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="cdmViewer" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="att" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="cdmViewer">
+      <annotation>
+         <documentation>
+            A Cdm Viewer knows what viewer or editor can show which input.
+         </documentation>
+      </annotation>
+      <complexType>
+         <sequence>
+         </sequence>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The class of the viewer.
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn=":eu.etaxonomy.taxeditor.view.ICdmViewer"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiinfo"/>
+      </appInfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
index da13e5e869cc8c62ba2fa8091682835fcd7df862..d676ca2a2ace038346efb62bceadab981bee56e5 100644 (file)
@@ -45,18 +45,18 @@ public class CdmDataSourceRepository{
        private static final String CURRENT_DATASOURCE = "currentDataSource";
        private static final String CURRENT_DATASOURCE_POSTFIX = "currentDataSourcePostFix";
        private static final String DEFAULT_DATASOURCE_STATE_FILENAME = "datasource.xml";
-       
+
        private static final String DEFAULT_DATASOURCE_NAME = "cdm";
        private static final String DEFAULT_DATASOURCE_POSTFIX = CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX;
-       
+
        private static ICdmSource currentCdmSource;
        private static IMemento memento;
-       
+
        private static String lastUsedCdmSourceName;
        private static String lastUsedCdmSourcePostFix;
-       
-       
-       
+
+
+
        /**
         * <p>Getter for the field <code>lastUsedDataSourceName</code>.</p>
         *
@@ -64,12 +64,12 @@ public class CdmDataSourceRepository{
         */
        public static void updateLastUsedDataSource(){
                if(lastUsedCdmSourceName == null){
-                       memento = readMemento();                
+                       memento = readMemento();
                        lastUsedCdmSourceName = memento != null ? memento.getString(CURRENT_DATASOURCE) : DEFAULT_DATASOURCE_NAME;
                        lastUsedCdmSourcePostFix = memento != null ? memento.getString(CURRENT_DATASOURCE_POSTFIX) : DEFAULT_DATASOURCE_POSTFIX;
-                       
+
                }
-               
+
        }
 
        /**
@@ -83,7 +83,7 @@ public class CdmDataSourceRepository{
                return true;
        }
 
-       
+
        /**
         * <p>getAll</p>
         *
@@ -91,7 +91,7 @@ public class CdmDataSourceRepository{
         */
        public static List<ICdmSource> getAll() {
                List<ICdmSource> remoteSources = new ArrayList<ICdmSource>();
-               
+
                for(ICdmDataSource dataSource : CdmPersistentDataSource.getAllDataSources()){
                        try {
                                remoteSources.add(CdmPersistentDataSource.NewInstance(dataSource.getName()));
@@ -99,20 +99,20 @@ public class CdmDataSourceRepository{
                                MessagingUtils.error(CdmDataSourceRepository.class, "Could not find dataSource", e);
                        }
                }
-               
+
                try {
-                       for(ICdmRemoteSource remoteSource : CdmPersistentRemoteSource.getAllRemoteSources()){                   
+                       for(ICdmRemoteSource remoteSource : CdmPersistentRemoteSource.getAllRemoteSources()){
                                remoteSources.add(remoteSource);
                        }
                } catch (CdmRemoteSourceException e) {
                        MessagingUtils.error(CdmDataSourceRepository.class, "Error retrieving remote sources", e);
                }
-               
+
                // TODO sort by database name
-               
+
                return remoteSources;
        }
-       
+
        /**
         * <p>getDataSource</p>
         *
@@ -120,7 +120,7 @@ public class CdmDataSourceRepository{
         * @return a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
         */
        public static ICdmDataSource getDataSource(String name){
-               
+
                for(ICdmDataSource dataSource : CdmPersistentDataSource.getAllDataSources()){
                        try {
                                if(dataSource.getName().equals(name)){
@@ -130,22 +130,22 @@ public class CdmDataSourceRepository{
                                MessagingUtils.error(CdmDataSourceRepository.class, "Could not find dataSource", e);
                        }
                }
-               
+
                return null;
        }
-       
-               
+
+
        /**
         * <p>Getter for the field <code>currentDataSource</code>.</p>
         *
         * @return a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
-        * @throws CdmRemoteSourceException 
+        * @throws CdmRemoteSourceException
         */
        public static ICdmSource getCurrentCdmSource() throws CdmRemoteSourceException {
-               
+
                if (currentCdmSource == null) {
                        updateLastUsedDataSource();
-                       
+
                        if(lastUsedCdmSourceName == null) {
                                return null;
                        }
@@ -155,12 +155,9 @@ public class CdmDataSourceRepository{
                                        currentCdmSource = CdmPersistentDataSource.NewInstance(lastUsedCdmSourceName);
                                } catch (DataSourceNotFoundException e) {
                                        // fallback creates a new default
-                                       ICdmDataSource h2DataSource = CdmDataSource.NewH2EmbeddedInstance(
-                                                       DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode());
-                                       save(h2DataSource.getName(), h2DataSource);
-                                       setCurrentCdmSource(h2DataSource);
+                                       setCurrentCdmSource(createDefaultH2DataSource());
                                }
-                       } else if (lastUsedCdmSourcePostFix.equals(CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX)) {                              
+                       } else if (lastUsedCdmSourcePostFix.equals(CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX)) {
                                currentCdmSource = CdmPersistentRemoteSource.NewInstance(lastUsedCdmSourceName);
                        } else {
                                throw new CdmRemoteSourceException("Unkown Cdm Source Type");
@@ -168,7 +165,19 @@ public class CdmDataSourceRepository{
                }
                return currentCdmSource;
        }
-       
+
+       /**
+        * Creates a default H2 CDM Data Source
+        *
+        * @return the newly created data source
+        */
+       public static ICdmDataSource createDefaultH2DataSource() {
+           ICdmDataSource h2DataSource = CdmDataSource.NewH2EmbeddedInstance(
+                DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode());
+        save(h2DataSource.getName(), h2DataSource);
+        return h2DataSource;
+       }
+
        /**
         * <p>Setter for the field <code>currentDataSource</code>.</p>
         *
@@ -179,7 +188,7 @@ public class CdmDataSourceRepository{
                currentCdmSource = cdmSource;
                NomenclaturalCode dataSourceNomenclaturalCode = cdmSource.getNomenclaturalCode();
                NomenclaturalCode applicationNomenclaturalCode = PreferencesUtil.getPreferredNomenclaturalCode();
-               
+
                if( dataSourceNomenclaturalCode != null && ! dataSourceNomenclaturalCode.equals(applicationNomenclaturalCode)){
                        PreferencesUtil.setPreferredNomenclaturalCode(dataSourceNomenclaturalCode);
                        MessagingUtils.informationDialog("Nomenclatural Code Change", "The Datasource that was just " +
@@ -187,8 +196,8 @@ public class CdmDataSourceRepository{
                                        "The nomenclatural code was changed in the application.");
                }
                return true;
-       }       
-               
+       }
+
        /**
         * <p>changeDataSource</p>
         *
@@ -196,9 +205,9 @@ public class CdmDataSourceRepository{
         * @return a boolean.
         */
        public static boolean changeDataSource(final ICdmSource cdmSource) {
-               saveAsCurrentDatabaseToMemento(cdmSource);              
+               saveAsCurrentDatabaseToMemento(cdmSource);
                CdmStore.connect(cdmSource);
-               
+
                return true;
        }
 
@@ -208,24 +217,24 @@ public class CdmDataSourceRepository{
         * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
         * @param strDataSourceName a {@link java.lang.String} object.
         * @return a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
-        * @throws CdmRemoteSourceException 
+        * @throws CdmRemoteSourceException
         */
        public static ICdmPersistentSource save(String strCdmSourceName, ICdmRemoteSource cdmSource) throws CdmRemoteSourceException {
-               return CdmPersistentRemoteSource.save(strCdmSourceName, cdmSource);             
+               return CdmPersistentRemoteSource.save(strCdmSourceName, cdmSource);
        }
-       
+
        /**
         * <p>save</p>
         *
         * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
         * @param strDataSourceName a {@link java.lang.String} object.
         * @return a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
-        * @throws CdmRemoteSourceException 
+        * @throws CdmRemoteSourceException
         */
-       public static ICdmPersistentSource save(String strCdmSourceName, ICdmDataSource cdmSource)  {           
-               return CdmPersistentDataSource.save(strCdmSourceName, cdmSource);                               
+       public static ICdmPersistentSource save(String strCdmSourceName, ICdmDataSource cdmSource)  {
+               return CdmPersistentDataSource.save(strCdmSourceName, cdmSource);
        }
-       
+
        /**
         * <p>update</p>
         *
@@ -241,7 +250,7 @@ public class CdmDataSourceRepository{
                }
                return null;
        }
-       
+
        public static ICdmPersistentSource replace(String strCdmSourceName, ICdmDataSource cdmSource){
                try {
                        return CdmPersistentDataSource.replace(strCdmSourceName, cdmSource);
@@ -250,7 +259,7 @@ public class CdmDataSourceRepository{
                }
                return null;
        }
-       
+
        /**
         * <p>update</p>
         *
@@ -260,35 +269,35 @@ public class CdmDataSourceRepository{
         */
        public static ICdmPersistentSource update(String strCdmSourceName, ICdmRemoteSource cdmSource){
                try {
-                       return CdmPersistentRemoteSource.update(strCdmSourceName, cdmSource);   
+                       return CdmPersistentRemoteSource.update(strCdmSourceName, cdmSource);
                } catch (Exception e) {
                        MessagingUtils.error(CdmDataSourceRepository.class, "Error updating CDM Source", e);
-                       
+
                }
                return null;
        }
-       
+
        /*********************************************************
         * Memento Handling                                                                              *
         *********************************************************/
-       
+
        private static void saveAsCurrentDatabaseToMemento(ICdmSource cdmSource){
                if(memento == null) {
                        memento = readMemento();
                }
                memento.putString(CURRENT_DATASOURCE, cdmSource.getName());
-               
+
                // Set postfix to distinguish between data and remote sources
                if(cdmSource instanceof CdmPersistentRemoteSource) {
                        memento.putString(CURRENT_DATASOURCE_POSTFIX, CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX);
                } else {
                        memento.putString(CURRENT_DATASOURCE_POSTFIX, CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX);
                }
-               
-               
+
+
                saveMementoToFile(memento);
        }
-       
+
        /*
         * Answer the workbench state file.
         */
@@ -300,7 +309,7 @@ public class CdmDataSourceRepository{
                path = path.append(DEFAULT_DATASOURCE_STATE_FILENAME);
                return path.toFile();
        }
-       
+
        private static IMemento readMemento(){
                try {
                        return MementoHelper.readMementoFromFile(getCdmSourceStateFile());
@@ -308,14 +317,14 @@ public class CdmDataSourceRepository{
                        return initializeMemento();
                }
        }
-       
+
 
        private static IMemento initializeMemento() {
-               
+
                XMLMemento memento = XMLMemento.createWriteRoot(TAG_DATASOURCE);
                memento.putString(CURRENT_DATASOURCE, DEFAULT_DATASOURCE_NAME);
                saveMementoToFile(memento);
-               
+
                return readMemento();
        }
 
@@ -324,5 +333,5 @@ public class CdmDataSourceRepository{
         */
        private static IMemento saveMementoToFile(IMemento memento) {
                return MementoHelper.saveMementoToFile(memento, getCdmSourceStateFile());
-       }       
+       }
 }
index 858214f8782be51b181777868754b8806bd89f11..04c9eb4b51322980ffa8363aa949d837ce3128bf 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -46,12 +46,12 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  */
 public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage implements ModifyListener {
        private ICdmDataSource dataSource;
-       
+
        protected Text text_password;
        protected Text text_databaseName;
        protected Text text_dataSourceName;
        protected Text text_username;
-       
+
        protected Group authenticationGroup;
        protected Group locationGroup;
        protected Group nomenclaturalCodeGroup;
@@ -64,11 +64,11 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        protected String database;
        protected String username;
        protected String password;
-       
+
        protected NomenclaturalCode nomenclaturalCode;
-       
+
        CdmDataSourceWizard.Mode mode;
-       
+
        /**
         * <p>Constructor for CdmDataSourceCredentialsWizardPage.</p>
         *
@@ -77,10 +77,10 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        protected CdmDataSourceCredentialsWizardPage(String pageName, ICdmDataSource dataSource) {
                super(pageName);
                this.setPageComplete(false);
-               setDataSource(dataSource);              
+               setDataSource(dataSource);
                mode = CdmDataSourceWizard.Mode.CREATE;
        }
-       
+
        /**
         * <p>Constructor for CdmDataSourceCredentialsWizardPage.</p>
         *
@@ -89,23 +89,24 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        protected CdmDataSourceCredentialsWizardPage(String pageName, ICdmDataSource dataSource, CdmDataSourceWizard.Mode mode) {
                super(pageName);
                this.setPageComplete(false);
-               
+
                this.mode = mode;
                if(mode == CdmDataSourceWizard.Mode.CLONE) {
-                       setDataSource(CdmDataSource.NewInstance(dataSource));                                           
+                       setDataSource(CdmDataSource.NewInstance(dataSource));
                } else {
-                       setDataSource(dataSource);      
+                       setDataSource(dataSource);
                }
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
         */
        /** {@inheritDoc} */
-       public void createControl(Composite parent) {
+       @Override
+    public void createControl(Composite parent) {
                this.parent = parent;
-               
-               // Create top-level composite 
+
+               // Create top-level composite
                parent.setLayout(new GridLayout());
                composite = new Composite(parent, SWT.NONE);
                composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false,2,5));
@@ -132,28 +133,28 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                if(getDataSource() == null) {
                        editDatasourceComposite.setVisible(false);
                }
-               
+
                // create a database specific form
                createDatabaseForm();
-               
+
                // create the authentication input fields
                createAuthenticationForm();
-               
+
                // create nomenclatural code combo
                createNomenclaturalCodeForm();
-               
+
                // Create composite for buttons
                Composite buttonComposite = new Composite(composite, SWT.NONE);
                buttonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));
                GridLayout buttonLayout = new GridLayout();
                buttonLayout.numColumns = 1;
                buttonComposite.setLayout(buttonLayout);
-               
+
                // Create test connection button
                Button testButton = new Button(buttonComposite, SWT.NONE);
                testButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
                testButton.setText("Test connection");
-               
+
                // Test connection when button is pressed
                testButton.addSelectionListener(new SelectionAdapter() {
                        /* (non-Javadoc)
@@ -164,11 +165,11 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                                testDbConfiguration();
                        }
                });
-               
+
                setControl(composite);
-                               
-               init(); 
-                               
+
+               init();
+
        }
 
        /**
@@ -182,7 +183,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                GridLayout authenticationLayout = new GridLayout();
                authenticationLayout.numColumns = 2;
                authenticationGroup.setLayout(authenticationLayout);
-               
+
                // Create database name label
                Label databaseNameLabel = new Label(authenticationGroup, SWT.NONE);
                databaseNameLabel.setText("Database Name:");
@@ -190,17 +191,17 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                // Create database name input
                text_databaseName = new Text(authenticationGroup, SWT.BORDER);
                text_databaseName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
+
 
                // Create username label
                Label usernameLabel = new Label(authenticationGroup, SWT.NONE);
                usernameLabel.setText("User Name:");
-               
+
                // Create username input
                text_username = new Text(authenticationGroup, SWT.BORDER);
                text_username.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
-               
+
+
                // Create password label
                Label passwordLabel = new Label(authenticationGroup, SWT.NONE);
                passwordLabel.setText("Password:");
@@ -208,15 +209,15 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                // Create password input
                text_password = new Text(authenticationGroup, SWT.BORDER | SWT.PASSWORD);
                text_password.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
+
        }
-       
+
        /**
         * Initialize text fields
         */
-       public void init() {            
+       public void init() {
                removeListeners();
-               if(getDataSource() != null){                                    
+               if(getDataSource() != null){
                        text_dataSourceName.setText(getDataSource().getName());
                        text_databaseName.setText(getDataSource().getDatabase());
                        text_username.setText(getDataSource().getUsername());
@@ -225,25 +226,25 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                // add listeners after setting text to avoid the modify event being called
                // for the initial value
                addListeners();
-               
+
                // in the case of cloning we use the same datasource info
                // except for the name
                if(mode == CdmDataSourceWizard.Mode.CLONE) {
-                       getDataSource().setName("");                    
-                       text_dataSourceName.setText("");                        
+                       getDataSource().setName("");
+                       text_dataSourceName.setText("");
                } else {
                        name = text_dataSourceName.getText();
                }
-               
+
        }
-       
+
        private void addListeners() {
-               text_dataSourceName.addModifyListener(this);            
+               text_dataSourceName.addModifyListener(this);
                text_databaseName.addModifyListener(this);
                text_username.addModifyListener(this);
                text_password.addModifyListener(this);
        }
-       
+
        private void removeListeners() {
                text_dataSourceName.removeModifyListener(this);
                text_databaseName.removeModifyListener(this);
@@ -256,9 +257,9 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        private void createNomenclaturalCodeForm() {
                nomenclaturalCodeGroup = new Group(composite , SWT.NONE);
                nomenclaturalCodeGroup.setLayout(new GridLayout());
-               
+
                nomenclaturalCode = dataSource != null ? dataSource.getNomenclaturalCode() : PreferencesUtil.getPreferredNomenclaturalCode();
-               
+
                for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) {
                        Button button = new Button(nomenclaturalCodeGroup, SWT.RADIO);
                        button.setText(NomenclaturalCodeHelper.getDescription(code));
@@ -267,18 +268,19 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                                button.setSelection(nomenclaturalCode.equals(code));
                        }
                        button.addSelectionListener(new SelectionAdapter() {
-                               public void widgetSelected(SelectionEvent e) {
+                               @Override
+                public void widgetSelected(SelectionEvent e) {
                                        nomenclaturalCode = (NomenclaturalCode) e.widget.getData();
                                        modifyText(null);
                                }
                        });
-               }               
+               }
        }
-       
+
        public void testDbConfiguration(){
                testDbConfiguration(false);
        }
-       
+
        /**
         * Tries to open a connection to the given dataSource. Generates a message on either
         * failure or success
@@ -292,35 +294,33 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                                MessageDialog.openConfirm(parent.getShell(), "Connection Test successful", "Test successful!");
                        }
                } catch(SQLException e){
-                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage() 
+                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage()
                                        + System.getProperty("line.separator")    //we may use System.lineSeparator when migrated to Java 1.7
                                        + System.getProperty("line.separator")
                                        + "Please double check the connection fields");
-                       throw new RuntimeException(e);
                } catch (ClassNotFoundException e) {
-                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage()                                        
+                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage()
                                        + System.getProperty("line.separator")    //we may use System.lineSeparator when migrated to Java 1.7
                                        + System.getProperty("line.separator")
                                        + "Please double check the connection fields");
-                       throw new RuntimeException(e);
-               } 
+               }
        }
-       
+
        /**
         * Form implementation for the specific database
         */
-       public abstract void createDatabaseForm(); 
-       
+       public abstract void createDatabaseForm();
+
        /**
         * <p>updateLocation</p>
         */
        public abstract void updateLocation();
-       
+
        /**
         * <p>updateDataSource</p>
         */
        public abstract void updateDataSource();
-       
+
        /**
         * <p>checkPageComplete</p>
         */
@@ -328,18 +328,18 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                boolean complete = false;
                if(mode == CdmDataSourceWizard.Mode.CREATE) {
                        complete = database.length() != 0;
-               } else {                        
+               } else {
                        complete = name.length() != 0 && database.length() != 0;
-               }       
+               }
                this.setPageComplete(complete);
        }
-       
 
-       
+
+
        /**
         * updates the current datasource with form values
         */
-       public void updateAuthentication(){                             
+       public void updateAuthentication(){
                database = text_databaseName.getText();
                username = text_username.getText();
                password = text_password.getText();
@@ -359,7 +359,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
         *
         * @param dataSource the dataSource to set
         */
-       public void setDataSource(ICdmDataSource dataSource) {          
+       public void setDataSource(ICdmDataSource dataSource) {
                this.dataSource = dataSource;
        }
 
@@ -372,11 +372,11 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                updateDataSource();
                return dataSource;
        }
-       
-       protected ICdmDataSource getDataSource() {              
+
+       protected ICdmDataSource getDataSource() {
                return dataSource;
        }
-       
+
        /**
         * <p>getDataSourceName</p>
         *
@@ -385,19 +385,20 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        public String getDataSourceName() {
                return name;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.swto.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
         */
        /** {@inheritDoc} */
-       public void modifyText(ModifyEvent e) {
-               
+       @Override
+    public void modifyText(ModifyEvent e) {
+
                name = text_dataSourceName.getText();
                database = text_databaseName.getText();
 
                switch(mode) {
                case EDIT:
-                       if(name.length() == 0){                 
+                       if(name.length() == 0){
                                name = "";
                                setErrorMessage("DataSource name must not be empty.");
                                this.setPageComplete(false);
@@ -410,7 +411,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                        }
                        break;
                case CLONE:
-                       if(name.length() == 0){                 
+                       if(name.length() == 0){
                                name = "";
                                setErrorMessage("DataSource name must not be empty.");
                                this.setPageComplete(false);
@@ -425,17 +426,17 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                default:
                        break;
                }
-               
-               if(database.length() == 0){                                     
+
+               if(database.length() == 0){
                        setErrorMessage("Database name must not be empty.");
                        this.setPageComplete(false);
-               } else {                        
+               } else {
                        updateAndCheck();
-                       setErrorMessage(null);                  
-               }                       
-       }               
+                       setErrorMessage(null);
+               }
+       }
+
 
-       
        private void updateAndCheck() {
                updateLocation();
                updateAuthentication();
index c2975144f35b7012631f9300aacc0a7890a0ac6b..19eb4604d84c79aa0919c8bc74c5664ab84ae361 100644 (file)
@@ -21,7 +21,9 @@ import org.eclipse.ui.IWorkbench;
 
 import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
 /**
  * <p>AbcdImportWizard class.</p>
@@ -36,6 +38,7 @@ public class AbcdImportWizard extends AbstractImportWizard<Abcd206ImportConfigur
 
        private Abcd206ImportConfigurator configurator;
        private ImportFromFileDataSourceWizardPage dataSourcePage;
+       private ClassificationChooserWizardPage classificationChooserWizardPage;
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.io.wizard.AbstractImportWizard#getConfigurator()
@@ -56,11 +59,17 @@ public class AbcdImportWizard extends AbstractImportWizard<Abcd206ImportConfigur
                try {
             configurator.setSource(new FileInputStream(new File(source)));
         } catch (FileNotFoundException e) {
+            MessagingUtils.errorDialog("File not found.", this, "Import file was not found.", TaxeditorStorePlugin.PLUGIN_ID, e, false);
             logger.error("File not found!", e);
             return false;
         }
                configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
 
+               if(classificationChooserWizardPage.getClassification()!=null){
+                   configurator.setClassificationUuid(classificationChooserWizardPage.getClassification().getUuid());
+               }
+               configurator.setReportUri(classificationChooserWizardPage.getReportUri());
+
                CdmStore.getImportManager().run(configurator);
                return true;
 
@@ -84,7 +93,9 @@ public class AbcdImportWizard extends AbstractImportWizard<Abcd206ImportConfigur
        public void addPages() {
                super.addPages();
 
+               classificationChooserWizardPage = ClassificationChooserWizardPage.createPage();
                dataSourcePage = ImportFromFileDataSourceWizardPage.XML();
+               addPage(classificationChooserWizardPage);
                addPage(dataSourcePage);
        }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ClassificationChooserWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ClassificationChooserWizardPage.java
new file mode 100644 (file)
index 0000000..da35311
--- /dev/null
@@ -0,0 +1,174 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.io.wizard;
+
+import java.io.File;
+import java.net.URI;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wb.swt.ResourceManager;
+
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
+
+/**
+ * <p>ImportFromFileDataSourceWizardPage class.</p>
+ *
+ * @author n.hoffmann
+ * @created 04.08.2009
+ * @version 1.0
+ */
+public class ClassificationChooserWizardPage extends WizardPage implements Listener{
+
+       public static final String PAGE_NAME = "ClassificationChooserWizardPage";
+
+       //classification
+    private Text textClassification;
+    private Classification classification;
+    private Button btnBrowseClassification;
+
+    private Button btnClear;
+
+    //report
+    private FileDialog fileDialogReport;
+    private Text textFileReport;
+
+       /**
+        * <p>Constructor for ImportFromFileDataSourceWizardPage.</p>
+        *
+        * @param title a {@link java.lang.String} object.
+        * @param description a {@link java.lang.String} object.
+        * @param extensions an array of {@link java.lang.String} objects.
+        */
+       protected ClassificationChooserWizardPage(String title, String description) {
+               super(PAGE_NAME);
+
+               setTitle(title);
+
+               setDescription(description);
+
+       }
+
+       /**
+        * <p>XML</p>
+        *
+        * @return a {@link eu.etaxonomy.taxeditor.io.wizard.ClassificationChooserWizardPage} object.
+        */
+       protected static ClassificationChooserWizardPage createPage(){
+               return new ClassificationChooserWizardPage("Configure import destinations", "Note: Selecting no classification will create a default one.");
+       }
+
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       /** {@inheritDoc} */
+       @Override
+    public void createControl(Composite parent) {
+               final Composite composite = new Composite(parent, SWT.NULL);
+
+               GridLayout gridLayout = new GridLayout();
+               gridLayout.numColumns = 4;
+               composite.setLayout(gridLayout);
+
+               //classification
+               Label label = new Label(composite, SWT.NONE);
+               label.setText("Classification");
+               textClassification = new Text(composite, SWT.NONE);
+               textClassification.setEnabled(false);
+               textClassification.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+               btnBrowseClassification = new Button(composite, SWT.NONE);
+               btnBrowseClassification.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/open.gif"));
+               btnBrowseClassification.addListener(SWT.Selection, this);
+               btnClear = new Button(composite, SWT.NONE);
+               btnClear.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/trash.gif"));
+               btnClear.addListener(SWT.Selection, this);
+
+               //report
+               Label labelReportFile = new Label(composite, SWT.NONE);
+        labelReportFile.setText("Report File");
+
+        fileDialogReport = new FileDialog(parent.getShell());
+
+        fileDialogReport.setFilterExtensions(new String[]{"*.*"});
+
+        textFileReport = new Text(composite, SWT.BORDER);
+        textFileReport.setEditable(false);
+        textFileReport.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+
+        Button buttonReport = new Button(composite, SWT.PUSH);
+        buttonReport.setText("Browse...");
+
+        buttonReport.addSelectionListener(new SelectionAdapter(){
+
+            /* (non-Javadoc)
+             * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+             */
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                String path = fileDialogReport.open();
+                if(path!=null){
+                    textFileReport.setText(path);
+                    setPageComplete(true);
+                }
+            }
+
+        });
+
+               setControl(composite);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+        */
+       @Override
+       public void handleEvent(Event event) {
+           if(event.widget==btnBrowseClassification){
+               classification = SelectionDialogFactory.getSelectionFromDialog(Classification.class, getShell(), null, null);
+               if(classification!=null){
+                   textClassification.setText(classification.getTitleCache());
+               }
+           }
+           else if(event.widget==btnClear){
+               classification = null;
+               textClassification.setText("");
+           }
+       }
+
+    /**
+     * @return the classification
+     */
+    public Classification getClassification() {
+        return classification;
+    }
+
+    public URI getReportUri(){
+        String text = textFileReport.getText();
+        if(text==null || text.isEmpty()){
+            return null;
+        }
+        return new File(text).toURI();
+    }
+}
index fec238815d0f770d2353a1c274d0a9bdeb0be151..744044a2b4efeaa97acf39a7f06121d62e10a2d7 100644 (file)
@@ -76,7 +76,7 @@ public class ExcelNormalExplicitTaxaImportWizard extends AbstractImportWizard<No
                super.addPages();
 
                dataSourcePage = new ImportFromFileDataSourceWizardPage("Choose NormalExplicit",
-                               "Please choose an xls file in the NormalExplicit format.", new String[]{"*.xls" ,"*.xlsx", "*.*"});
+                               "Please choose an xls file in the NormalExplicit format.", new String[]{"*.xlsx", "*.xls", "*.*"});
                addPage(dataSourcePage);
        }
 }
index 645ddbed9549232e8c55d0fa7c0444e506b8c205..7542acfcd5f0d8554cbdb5d99f476f82e41af4f7 100644 (file)
@@ -12,6 +12,8 @@ package eu.etaxonomy.taxeditor.io.wizard;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
@@ -130,6 +132,24 @@ public class GenericConfiguratorWizardPage extends WizardPage {
         composite.setLayout(gridLayout);
 
         List<Method> methods = getConfiguratorsBooleanSetMethods(configurator);
+        Collections.sort(methods, new Comparator<Method>() {
+            /* (non-Javadoc)
+             * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+             */
+            @Override
+            public int compare(Method o1, Method o2) {
+                if(o1.getName()==null && o2.getName()!=null){
+                    return -1;
+                }
+                if(o1.getName()!=null && o2.getName()==null){
+                    return 1;
+                }
+                if(o1.getName()==null && o2.getName()==null){
+                    return 0;
+                }
+                return o1.getName().compareTo(o2.getName());
+            }
+        });
 
         for (Method method : methods) {
             createCheckbox(composite, method, configurator);
index 7b585050d5e55eeddbbca9a357907b1aa06c3aee..2d2415d96cc18e0e627bfef250e48c1bd33c6322 100644 (file)
@@ -67,7 +67,7 @@ public class ImportFromFileDataSourceWizardPage extends WizardPage {
         * @return a {@link eu.etaxonomy.taxeditor.io.wizard.ImportFromFileDataSourceWizardPage} object.
         */
        protected static ImportFromFileDataSourceWizardPage XML(){
-               return new ImportFromFileDataSourceWizardPage("Xml File", "Select XML file.", new String[]{"*.xml"});
+               return new ImportFromFileDataSourceWizardPage("Xml File", "Select XML file.", new String[]{"*.xml","*.*"});
        }
 
 
@@ -117,6 +117,7 @@ public class ImportFromFileDataSourceWizardPage extends WizardPage {
 
                });
 
+
                setControl(composite);
        }
 
@@ -137,4 +138,6 @@ public class ImportFromFileDataSourceWizardPage extends WizardPage {
        public URI getUri() {
                return getFile().toURI();
        }
+
+
 }
index 361fcaf63392554d60bfd09c452964bd0d4812d1..af287cab18238f968d32a0a9cba03a6c98b44cea 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -34,17 +34,19 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  * @version 1.0
  */
 public class NomenclaturalCodeWizardPage extends WizardPage {
-       
-       private IImportConfigurator configurator;
+
+    private static final Logger logger = Logger.getLogger(NomenclaturalCodeWizardPage.class);
+
+    private IImportConfigurator configurator;
 
        /**
         * <p>Constructor for NomenclaturalCodeWizardPage.</p>
         */
        public NomenclaturalCodeWizardPage() {
                super("Choose nomenclatural code");
-               
+
                this.setTitle("Choose nomenclatural code");
-               
+
                this.setDescription("Choose which code to use for imported names.");
        }
 
@@ -58,37 +60,40 @@ public class NomenclaturalCodeWizardPage extends WizardPage {
                this.configurator = configurator;
        }
 
-       private static final Logger logger = Logger
-                       .getLogger(NomenclaturalCodeWizardPage.class);
 
        /* (non-Javadoc)
         * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
         */
        /** {@inheritDoc} */
-       public void createControl(Composite parent) {
+       @Override
+    public void createControl(Composite parent) {
                Composite container = new Composite(parent, SWT.NULL);
                container.setLayout(new FillLayout());
-                               
+
                final Group group = new Group(container, SWT.NONE);
                group.setLayout(new GridLayout());
-               
+
                NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode();
-               
+
                // set preferred code as default
                configurator.setNomenclaturalCode(preferredCode);
-               
+
                for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) {
                        Button button = new Button(group, SWT.RADIO);
                        button.setText(NomenclaturalCodeHelper.getDescription(code));
                        button.setData(code);
                        button.setSelection(preferredCode.equals(code));
                        button.addSelectionListener(new SelectionAdapter() {
-                               public void widgetSelected(SelectionEvent e) {
+                               @Override
+                public void widgetSelected(SelectionEvent e) {
                                        configurator.setNomenclaturalCode((NomenclaturalCode) e.widget.getData());
                                }
                        });
-               }               
-               
+               }
+
+
                setControl(container);
        }
+
+
 }
index 028225f0ab50c9a65d96d3ac316a112e008bb804..3b8a6e7564cee68f363f7681bd4e66e70677f26e 100644 (file)
@@ -63,7 +63,7 @@ public class SpecimenCdmExcelImportWizard extends AbstractImportWizard<SpecimenC
                super.addPages();
 
                dataSourcePage = new ImportFromFileDataSourceWizardPage("Choose Specimen CDM Excel",
-                               "Please choose an xls file in the SpecimenCdmExcel format.", new String[]{"*.xls" ,"*.xlsx", "*.*"});
+                               "Please choose an xls file in the SpecimenCdmExcel format.", new String[]{"*.xlsx", "*.xls", "*.*"});
                addPage(dataSourcePage);
        }
 
index af6a0674be5f4dca96509a0a23a387abec4381a8..8b913c614db9f42905532f0758fc2d40c0a459de 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -36,7 +36,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;
 import eu.etaxonomy.cdm.model.description.TextData;
@@ -55,7 +55,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @version 1.0
  */
 public class DescriptionHelper {
-       
+
        /**
         * Returns whatever the element's title cache equivalent is,
         * depending on its class.
@@ -64,7 +64,7 @@ public class DescriptionHelper {
         * @param language a {@link eu.etaxonomy.cdm.model.common.Language} object.
         * @return a {@link java.lang.String} object.
         */
-       public static String getCache(DescriptionElementBase element, 
+       public static String getCache(DescriptionElementBase element,
                        Language language) {
                String cache = null;
                if (element instanceof TextData) {
@@ -80,16 +80,16 @@ public class DescriptionHelper {
                        }else{
                                cache = "No taxon chosen";
                        }
-                       
+
                }
                if (element instanceof Distribution) {
                        Distribution distribution = (Distribution) element;
-                       
+
                        NamedArea area = distribution.getArea();
                        if(area != null){
                                cache =  area.getLabel();
-                               
-                               PresenceAbsenceTermBase<?> status = distribution.getStatus();
+
+                               PresenceAbsenceTerm status = distribution.getStatus();
                                if (status == null){
                                        cache += ", no status";
                                }else {
@@ -110,7 +110,7 @@ public class DescriptionHelper {
        public static String getCache(DescriptionElementBase element) {
                return getCache(element, CdmStore.getDefaultLanguage());
        }
-       
+
        /**
         * Set whatever the element's title cache equivalent is,
         * depending on its class.
@@ -130,7 +130,7 @@ public class DescriptionHelper {
                        return;
                }
                if (element instanceof TaxonInteraction) {
-                       
+
                }
                if(element instanceof Distribution){
                        MessagingUtils.warn(DescriptionHelper.class, "trying to set cache on distribution, don't know what to do at the moment.");
@@ -138,7 +138,7 @@ public class DescriptionHelper {
                }
                MessagingUtils.warn(DescriptionHelper.class, "No matching subclass found for DescriptionElementBase object, 'cache' not set.");
        }
-       
+
        /**
         * Set whatever the element's title cache equivalent is,
         * depending on its class, using the default language.
@@ -150,7 +150,7 @@ public class DescriptionHelper {
                        String value) {
                setCache(element, value, CdmStore.getDefaultLanguage());
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.IReferencingObjectsService#getObjectDescription(java.lang.Object)
         */
@@ -182,7 +182,7 @@ public class DescriptionHelper {
                                }else{
                                        throw new IllegalStateException("Unknown ISourceable object for given OriginalSourceBase");
                                }
-                               
+
                                return CdmUtils.concat("; ", new String[]{originalSource.getIdNamespace(), originalSource.getIdInSource(), sourceObjectTitle});
                        }catch(LazyInitializationException e){
                                String result = "Error initializing title cache for ISourceable of an OriginalSourceBase";
@@ -194,7 +194,7 @@ public class DescriptionHelper {
                        return ((LanguageStringBase) element).getText();
                }
                if (element instanceof DescriptionElementBase) {
-                       return getCache((DescriptionElementBase) element);              
+                       return getCache((DescriptionElementBase) element);
                }
                if (element instanceof Marker) {
                        Marker marker = (Marker) element;
@@ -214,7 +214,7 @@ public class DescriptionHelper {
        public static String getObjectClassname(Object element) {
                return element.getClass().getSimpleName();
        }
-       
+
        /**
         * <p>getFeatureNodeContainerText</p>
         *
@@ -242,7 +242,7 @@ public class DescriptionHelper {
         */
        public static String getQuantitativeDataText(QuantitativeData element) {
                TextData textData = quantitativeDescriptionBuilder.build(element, getLanguageList());
-               
+
                return textData.getText(CdmStore.getDefaultLanguage());
        }
 
@@ -254,17 +254,17 @@ public class DescriptionHelper {
         */
        public static String getCategoricalDataText(CategoricalData element) {
                TextData textData = categoricalDescriptionBuilder.build(element, getLanguageList());
-               
+
                return textData.getText(CdmStore.getDefaultLanguage());
        }
-       
+
        private static List<Language> getLanguageList(){
                return Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()});
        }
-       
+
        private static DescriptionBuilder<QuantitativeData> quantitativeDescriptionBuilder = new DefaultQuantitativeDescriptionBuilder();
        private static DescriptionBuilder<CategoricalData> categoricalDescriptionBuilder = new DefaultCategoricalDescriptionBuilder();
-       
+
 
        /**
         * <p>getDistributionText</p>
@@ -273,18 +273,18 @@ public class DescriptionHelper {
         * @return a {@link java.lang.String} object.
         */
        public static String getDistributionText(Distribution element) {
-               
+
                String text = "EMPTY";
-               
-               Distribution distribution = (Distribution) element;
-               
+
+               Distribution distribution = element;
+
                NamedArea area = distribution.getArea();
                if(area != null){
-                       
+
                        text = NamedArea.labelWithLevel(area, CdmStore.getDefaultLanguage());
-                       
-                       PresenceAbsenceTermBase<?> status = distribution.getStatus();
-                       
+
+                       PresenceAbsenceTerm status = distribution.getStatus();
+
                        if (status != null) {
                                text += ", " + status.getLabel();
                        }else{
@@ -308,15 +308,15 @@ public class DescriptionHelper {
                return "No title.";
        }
 
-       
-       
+
+
        /**
         * <p>getElementText</p>
         *
         * @param element a {@link eu.etaxonomy.cdm.model.description.TextData} object.
         * @return a {@link java.lang.String} object.
         */
-       public static  String getElementText(TextData element) {        
+       public static  String getElementText(TextData element) {
                String text = null;
                if(element.getFeature().equals(Feature.CITATION())){
                        text = "";
@@ -338,7 +338,7 @@ public class DescriptionHelper {
                }
                return CdmUtils.isEmpty(text) ? "No text provided" : text;
        }
-       
+
        /**
         * <p>getTaxonInteractionText</p>
         *
@@ -347,13 +347,13 @@ public class DescriptionHelper {
         */
        public static  String getTaxonInteractionText(TaxonInteraction element) {
                String text = "";
-               Taxon taxon2 = ((TaxonInteraction) element).getTaxon2();
+               Taxon taxon2 = element.getTaxon2();
                if(taxon2 != null && taxon2.getName() != null){
                        text = taxon2.getName().getTitleCache();
                }else{
                        text = "No taxon chosen";
                }
-               
+
                return text;
        }
 
@@ -388,10 +388,10 @@ public class DescriptionHelper {
                if (text == null || text.length() == 0) {
                        text = "No label provided";
                }
-               
+
                return "Description: " + text;
        }
-       
+
        /**
         * <p>getIndividualsAssociationText</p>
         *
@@ -423,11 +423,11 @@ public class DescriptionHelper {
                        return getCategoricalDataText((CategoricalData) element);
                }
                else if (element instanceof CommonTaxonName) {
-                       return getCommonNameText((CommonTaxonName) element);                    
+                       return getCommonNameText((CommonTaxonName) element);
                }
                else if (element instanceof Distribution) {
-                       return getDistributionText((Distribution) element);                     
-               }       
+                       return getDistributionText((Distribution) element);
+               }
                else if (element instanceof IndividualsAssociation) {
                        return getIndividualsAssociationText((IndividualsAssociation) element);
                }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDerivedUnitFacadePart.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDerivedUnitFacadePart.java
new file mode 100644 (file)
index 0000000..a773b8b
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id$
+/**
+* Copyright (C) 2014 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.model;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+
+/**
+ * Clients implementing this interface indicate, that they use {@link DerivedUnitFacade}s
+ * for specimen data instead of {@link DerivedUnit}s and {@link FieldUnit}s themselves.
+ *
+ * @author pplitzner
+ * @date Dec 3, 2014
+ *
+ */
+public interface IDerivedUnitFacadePart {
+
+}
index e9033c3925ca875a46b6840bd22b1ebcd6482f8a..e44ad8f82ec17ebc7152a31cf7070174096f8df1 100644 (file)
@@ -490,6 +490,20 @@ public class MessagingUtils {
         MessagingUtils.warningDialog(title, source, status.getMessage());
     }
 
+    /**
+     * Standard warning dialog for the case when the application is not yet connected to the datasource
+     *
+     * @param source
+     */
+    public static void noDataSourceWarningDialog(Object source) {
+        MessagingUtils
+        .warningDialog(
+                "Application is not connected to a datastore",
+                source,
+                "The requested operation is only available when "
+                + "connected to a datasource. You may choose a datasource to connect to or create a new one in the datasource view.");
+    }
+
     /**
      * Displays a warning {@link org.eclipse.jface.dialogs.MessageDialog}.
      *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationCloningWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationCloningWizardPage.java
deleted file mode 100644 (file)
index 02c1d12..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2014 EDIT
- * European Distributed Institute of Taxonomy
- * http://www.e-taxonomy.eu
- *
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-package eu.etaxonomy.taxeditor.newWizard;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationCloningDetailElement;
-
-/**
- * @author pplitzner
- * @date 11.03.2014
- *
- */
-public class AmplificationCloningWizardPage extends AbstractCdmEntityWizardPage<Amplification> {
-
-    /**
-     * @param formFactory
-     * @param conversation
-     * @param entity
-     */
-    public AmplificationCloningWizardPage(CdmFormFactory formFactory,
-            ConversationHolder conversation, Amplification entity) {
-        super(formFactory, conversation, entity);
-        setTitle("Amplification Cloning Data");
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
-     */
-    @Override
-    protected void checkComplete() {
-        setPageComplete(true);
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
-     */
-    @Override
-    public AbstractCdmDetailElement<Amplification> createElement(ICdmFormElement rootElement) {
-        AmplificationCloningDetailElement detailElement = formFactory.createAmplificationCloningDetailElement(rootElement);
-        detailElement.setEntity(getEntity());
-        checkComplete();
-        return detailElement;
-    }
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationGelPhotoWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/AmplificationGelPhotoWizardPage.java
deleted file mode 100644 (file)
index 1fc4ecd..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2014 EDIT
- * European Distributed Institute of Taxonomy
- * http://www.e-taxonomy.eu
- *
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-package eu.etaxonomy.taxeditor.newWizard;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGelPhotoDetailElement;
-
-/**
- * @author pplitzner
- * @date 11.03.2014
- *
- */
-public class AmplificationGelPhotoWizardPage extends AbstractCdmEntityWizardPage<Amplification> {
-
-    /**
-     * @param formFactory
-     * @param conversation
-     * @param entity
-     */
-    public AmplificationGelPhotoWizardPage(CdmFormFactory formFactory,
-            ConversationHolder conversation, Amplification entity) {
-        super(formFactory, conversation, entity);
-        setTitle("Amplification Gel Photo");
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
-     */
-    @Override
-    protected void checkComplete() {
-        setPageComplete(true);
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
-     */
-    @Override
-    public AbstractCdmDetailElement<Amplification> createElement(ICdmFormElement rootElement) {
-        AmplificationGelPhotoDetailElement detailElement = formFactory.createAmplificationGelPhotoDetailElement(rootElement);
-        detailElement.setEntity(getEntity());
-        checkComplete();
-        return detailElement;
-    }
-
-}
index df056f0470effa320303c8f0381eb188303e53a9..7457bb76d8172a2c1f3a4e7645ac5785186a0913 100644 (file)
@@ -11,13 +11,11 @@ package eu.etaxonomy.taxeditor.newWizard;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
-import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.PrimerGeneralDetailElement;
 
 /**
  * @author pplitzner
@@ -42,6 +40,8 @@ public class AmplificationGeneralWizardPage extends AbstractCdmEntityWizardPage<
      */
     @Override
     protected void checkComplete() {
+        //TODO: check for institution, staff and date
+        //one of them has to be set otherwise setPageComplete(false);
         setPageComplete(true);
     }
 
index fddcbbdc210d8ae245bbf8ba78a6bff3cc2ca1b1..e9f2eef6a52108b91be1330c83c9d92e2de35e4a 100644 (file)
@@ -21,18 +21,12 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class NewAmplificationWizard  extends AbstractNewEntityWizard<Amplification> {
 
     private AmplificationGeneralWizardPage amplificationGeneralPage;
-    private AmplificationCloningWizardPage amplificationCloningPage;
-    private AmplificationGelPhotoWizardPage amplificationGelPhotoWizardPage;
 
     /** {@inheritDoc} */
     @Override
     public void addPages() {
         amplificationGeneralPage = new AmplificationGeneralWizardPage(formFactory, getConversationHolder(), getEntity());
         addPage(amplificationGeneralPage);
-        amplificationCloningPage = new AmplificationCloningWizardPage(formFactory, getConversationHolder(), getEntity());
-        addPage(amplificationCloningPage);
-        amplificationGelPhotoWizardPage = new AmplificationGelPhotoWizardPage(formFactory, getConversationHolder(), getEntity());
-        addPage(amplificationGelPhotoWizardPage);
     }
 
     /** {@inheritDoc} */
@@ -52,8 +46,6 @@ public class NewAmplificationWizard  extends AbstractNewEntityWizard<Amplificati
     public void setEntity(Amplification entity) {
         super.setEntity(entity);
         amplificationGeneralPage.getDetailElement().setEntity(entity);
-        amplificationCloningPage.getDetailElement().setEntity(entity);
-        amplificationGelPhotoWizardPage.getDetailElement().setEntity(entity);
     }
 
     @Override
index c7c6cf5639c9f0b4a45a7f1928c5683f4a48eb58..6849014316f3ee9d65d1590c5769ca6c7eacdb61 100644 (file)
@@ -13,11 +13,13 @@ package eu.etaxonomy.taxeditor.newWizard;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
@@ -33,7 +35,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
  * @created Jun 16, 2010
  * @version 1.0
  */
-public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase> {
+public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase> implements IDerivedUnitFacadePart{
        private SpecimenOrObservationType specOrObsType = null;
 
        public NewDerivedUnitBaseWizard() {
@@ -82,7 +84,10 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOr
         } else {
             if (SpecimenOrObservationType.Media.equals(specOrObsType)
                     || ((specOrObsType.getKindOf() != null) && specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
-                   return MediaSpecimen.NewInstance(specOrObsType);
+                   MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specOrObsType);
+                   //a MediaSpecimen with no media attached does not make sense. Hence, we add one
+                mediaSpecimen.setMediaSpecimen(Media.NewInstance());
+                return mediaSpecimen;
             } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
                 return FieldUnit.NewInstance();
             } else {
index a85d94b6c6d5f39793a07522f9730c64ff145195..c5363d6e3212107a389f16d9dea51a08a1b5ca60 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -31,6 +31,7 @@ import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -44,7 +45,7 @@ public class DefaultFeatureTreePreferenecs extends PreferencePage implements IWo
 
        private FeatureTree defaultFeatureTreeForTextualDescription;
        private FeatureTree defaultFeatureTreeForStructuredDescription;
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
         */
@@ -53,70 +54,73 @@ public class DefaultFeatureTreePreferenecs extends PreferencePage implements IWo
        protected Control createContents(Composite parent) {
                defaultFeatureTreeForTextualDescription = PreferencesUtil.getDefaultFeatureTreeForTextualDescription();
                defaultFeatureTreeForStructuredDescription = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();
-               
+
                Composite composite = new Composite(parent, SWT.NULL);
                composite.setLayout(new GridLayout());
-               
-               createTextTreeSelection(composite);
-               createStructureTreeSelection(composite);
-               
+               if(!CdmStore.isActive()) {
+            MessagingUtils.noDataSourceWarningDialog(null);
+               }else{
+                   createTextTreeSelection(composite);
+                   createStructureTreeSelection(composite);
+               }
+
                return composite;
        }
-       
+
        private void createTextTreeSelection(Composite parent){
                final CLabel label = new CLabel(parent, SWT.NONE);
                label.setText("Deafult Feature Tree to be used for textual descriptions");
-               
+
                final ListViewer viewer = new ListViewer(parent);
                viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-               
+
                viewer.setContentProvider(new FeatureTreeContentProvider());
                viewer.setLabelProvider(new FeatureTreeLabelProvider());
-               
+
                viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-                       
+
                        @Override
                        public void selectionChanged(SelectionChangedEvent arg0) {
                                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
-                               
+
                                defaultFeatureTreeForTextualDescription = (FeatureTree) selection.getFirstElement();
                        }
                });
-               
+
                List<FeatureTree> input = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null);
-                               
+
                viewer.setInput(input);
-               
+
                if(defaultFeatureTreeForTextualDescription != null){
                        IStructuredSelection selection = new StructuredSelection(defaultFeatureTreeForTextualDescription);
                        viewer.setSelection(selection, true);
                }
        }
-       
+
        private void createStructureTreeSelection(Composite parent){
                final CLabel label = new CLabel(parent, SWT.NONE);
                label.setText("Deafult Feature Tree to be used for structured descriptions");
-               
+
                final ListViewer viewer = new ListViewer(parent);
                viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-               
+
                viewer.setContentProvider(new FeatureTreeContentProvider());
                viewer.setLabelProvider(new FeatureTreeLabelProvider());
-               
+
                viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-                       
+
                        @Override
                        public void selectionChanged(SelectionChangedEvent arg0) {
                                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
-                               
+
                                defaultFeatureTreeForStructuredDescription = (FeatureTree) selection.getFirstElement();
                        }
                });
-               
+
                List<FeatureTree> input = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null);
-                               
+
                viewer.setInput(input);
-               
+
                if(defaultFeatureTreeForStructuredDescription != null){
                        IStructuredSelection selection = new StructuredSelection(defaultFeatureTreeForStructuredDescription);
                        viewer.setSelection(selection, true);
@@ -128,23 +132,23 @@ public class DefaultFeatureTreePreferenecs extends PreferencePage implements IWo
        public void init(IWorkbench workbench) {
                setPreferenceStore(PreferencesUtil.getPreferenceStore());
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public boolean performOk() {
                String defaultFeatureTreeForTextualDescriptionUuid = "";
                String defaultFeatureTreeForStructuredDescriptionUuid = "";
-               
+
                if(defaultFeatureTreeForTextualDescription != null){
                        defaultFeatureTreeForTextualDescriptionUuid = defaultFeatureTreeForTextualDescription.getUuid().toString();
                }
                if(defaultFeatureTreeForStructuredDescription != null){
                        defaultFeatureTreeForStructuredDescriptionUuid = defaultFeatureTreeForStructuredDescription.getUuid().toString();
                }
-               
+
                getPreferenceStore().setValue(IPreferenceKeys.FEATURE_TREE_DEFAULT_TEXT, defaultFeatureTreeForTextualDescriptionUuid);
                getPreferenceStore().setValue(IPreferenceKeys.FEATURE_TREE_DEFAULT_STRUCTURE, defaultFeatureTreeForStructuredDescriptionUuid);
-               
+
                return super.performOk();
        }
 }
index dfc178da04deaec541c5d07fb840d1a0a2b061da..a748e14c661f218e2d57a50206435585dccc5286 100644 (file)
@@ -121,6 +121,7 @@ public interface IPreferenceKeys {
 
     public static final String SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION = "eu.etaxonomy.taxeditor.specimen.showCollectingAreasInGeneralSection";
 
+    public static final String SHOW_TAXON_ASSOCIATIONS = "eu.etaxonomy.taxeditor.specimen.showTaxonAssociations";
 
     public static final String DISTRIBUTION_AREA_PREFRENCES_ACTIVE = "eu.etaxonomy.taxeditor.checklist.distributionAreaPreferencesActive";
 
@@ -31,7 +31,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
  * @created Dec 3, 2010
  * @version 1.0
  */
-public class DefaultLanguageEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
+public class LanguageEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
 
     private CCombo combo;
     PreferencesUtil preferencesUtil = new PreferencesUtil();
@@ -57,7 +57,7 @@ public class DefaultLanguageEditorPreferencePage extends PreferencePage implemen
         description.setText("After changing the default language, a restart is required,\nin order for the new settings to take effect.");
 
         final Label label = new Label(container, SWT.NONE);
-        label.setText("Please choose your default language: ");
+        label.setText("Please choose your default language for the editor: ");
 
         GridData oneLine = new GridData();
         oneLine.grabExcessHorizontalSpace = true;
similarity index 94%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguagePreferencePage.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageRepresentationPreferencePage.java
index e1a6b959c7b3b4c3ac3071c24029aa81900c0f59..901a5b91f01cc02d650e8755f00086126abc6102 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -35,18 +35,18 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created Dec 3, 2010
  * @version 1.0
  */
-public class LanguagePreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
+public class LanguageRepresentationPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
 
        private boolean isMultilanguageTextEditingCapability;
        private Language globalLanguage;
-       
+
        private Composite createComposite(Composite parent){
                Composite composite = new Composite(parent, SWT.NULL);
                composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
                composite.setLayout(new RowLayout(SWT.HORIZONTAL));
                return composite;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
         */
@@ -55,14 +55,14 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
                Composite container = new Composite(parent, SWT.NULL);
                final GridLayout gridLayout = new GridLayout();
                container.setLayout(gridLayout);
-               
+
                createSetDefaultLanguage(container);
-               
+
                createSetMultiLanguageTextEditingCapability(container);
-                               
+
                return container;
-               
-               
+
+
        }
 
        /**
@@ -70,19 +70,23 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
         */
        private void createSetDefaultLanguage(Composite parent) {
                globalLanguage = PreferencesUtil.getGlobalLanguage();
-               
+
+               if(globalLanguage == null) {
+                   return;
+               }
+
                int curentSelectionIndex = 0;
-               
+
                final Composite composite = createComposite(parent);
                composite.setLayout(new RowLayout(1));
-               
+
                final Label label = new Label(composite, SWT.NONE);
                label.setText("Choose the global language that will be used throughout the editor to get representations in.");
-               
-               final Combo combo_globalLanguage = new Combo(composite, SWT.NONE); 
-               
+
+               final Combo combo_globalLanguage = new Combo(composite, SWT.NONE);
+
                List<Language> preferredLanguages = CdmStore.getTermManager().getPreferredTerms(Language.class);
-               
+
                for(int i = 0; i < preferredLanguages.size(); i++){
                        Language language = preferredLanguages.get(i);
                        combo_globalLanguage.add(language.getLabel(), i);
@@ -90,9 +94,9 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
                                curentSelectionIndex = i;
                        }
                }
-               
+
                combo_globalLanguage.select(curentSelectionIndex);
-               
+
                combo_globalLanguage.addSelectionListener(new SelectionAdapter() {
                        /* (non-Javadoc)
                         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
@@ -102,25 +106,25 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
                                int selectionIndex = combo_globalLanguage.getSelectionIndex();
                                globalLanguage = Language.getLanguageByLabel(combo_globalLanguage.getItem(selectionIndex));
                        }
-               });             
+               });
        }
 
        /**
-        * 
+        *
         */
        private void createSetMultiLanguageTextEditingCapability(Composite parent) {
                isMultilanguageTextEditingCapability = getPreferenceStore().getBoolean(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
-               
+
                final Composite composite = createComposite(parent);
-               
-               final Button button_toggle = new Button(composite, SWT.CHECK);          
-               
-               
+
+               final Button button_toggle = new Button(composite, SWT.CHECK);
+
+
                button_toggle.setText("Enable Multiple Language Editing Capability");
-               
+
                button_toggle.setSelection(isMultilanguageTextEditingCapability);
-               
-               
+
+
                button_toggle.addSelectionListener(new SelectionAdapter(){
                        /* (non-Javadoc)
                         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
@@ -147,7 +151,7 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
        public boolean performOk() {
                getPreferenceStore().setValue(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY, isMultilanguageTextEditingCapability);
                PreferencesUtil.setGlobalLanguage(globalLanguage);
-               
+
                return super.performOk();
        }
 }
index 8a00f1ff73be6da4e71414d9ede15a3b238b7dab..62c31c9195624eb7e7c40e22556024c6f86155d1 100644 (file)
@@ -12,6 +12,8 @@ package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.core.expressions.PropertyTester;
 
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
 /**
  * @author n.hoffmann
  * @created Jan 26, 2011
@@ -22,7 +24,9 @@ public class PreferencePropertyTester extends PropertyTester {
 
        private static final String SHOW_EXPERIMENTAL_FEATURES = "isShowExperimentalFeatures";
 
-       private static final String SHOW_CHECKLIST_EDITOR = "isChecklistEditorEnabled";
+    private static final String SHOW_CHECKLIST_EDITOR = "isChecklistEditorEnabled";
+
+       private static final String EDITOR_IS_CONNECTED_TO_DB = "isCdmStoreConnected";
 
        /* (non-Javadoc)
         * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
@@ -37,6 +41,9 @@ public class PreferencePropertyTester extends PropertyTester {
            if(SHOW_CHECKLIST_EDITOR.equals(property)){
                return isChecklistEditorEnabled();
            }
+           if(EDITOR_IS_CONNECTED_TO_DB.equals(property)){
+               return isCdmStoreConnected();
+           }
 
                return false;
        }
@@ -51,4 +58,9 @@ public class PreferencePropertyTester extends PropertyTester {
        private boolean isChecklistEditorEnabled() {
         return PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE);
     }
+
+       private boolean isCdmStoreConnected(){
+           boolean active = CdmStore.isActive();
+           return active;
+       }
 }
index 484a133579ee30ddfa7fe9602f0cc232ceb9c900..62414dcfd669bdc1906a5783521a81625ae3bd38 100644 (file)
@@ -28,6 +28,7 @@ import java.util.UUID;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement;
 import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
 
@@ -50,10 +51,10 @@ import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.MatchException;
 import eu.etaxonomy.cdm.strategy.match.MatchMode;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 import eu.etaxonomy.taxeditor.ui.dialog.DefaultLanguageDialog;
 
@@ -392,6 +393,7 @@ public class PreferencesUtil implements IPreferenceKeys {
                                "http://www.biodiversitylibrary.org/openurl");
                getPreferenceStore().setDefault(OPENURL_IMAGE_MAX_WIDTH, "1000");
                getPreferenceStore().setDefault(OPENURL_IMAGE_MAX_HEIGHT, "1000");
+               getPreferenceStore().setDefault(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE, false);
        }
 
        /**
@@ -431,9 +433,9 @@ public class PreferencesUtil implements IPreferenceKeys {
 
        public static void checkDefaultLanguage(){
            if(PreferencesUtil.getPreferredDefaultLangugae() == null){
-              Shell shell = StoreUtil.getShell();
+              Shell shell = AbstractUtility.getShell();
               int open = new DefaultLanguageDialog(shell).open();
-              if(open == 0){//FIXME:window performed ok. Find variable for it
+              if(open == Window.OK){
                   PlatformUI.getWorkbench().restart();
               }
            }else{
@@ -523,9 +525,16 @@ public class PreferencesUtil implements IPreferenceKeys {
        }
 
        public static Language getGlobalLanguage() {
+
+
                String languageUuidString = getPreferenceStore().getString(
                                GLOBAL_LANGUAGE_UUID);
 
+               if(!CdmStore.isActive()) {
+            MessagingUtils.noDataSourceWarningDialog(languageUuidString);
+            return null;
+        }
+
                if (CdmUtils.isBlank(languageUuidString)) {
                        return Language.getDefaultLanguage();
                }
@@ -536,9 +545,11 @@ public class PreferencesUtil implements IPreferenceKeys {
        }
 
        public static void setGlobalLanguage(Language language) {
-               getPreferenceStore().setValue(GLOBAL_LANGUAGE_UUID,
-                               language.getUuid().toString());
-               CdmStore.setDefaultLanguage(language);
+           if(language != null) {
+               getPreferenceStore().setValue(GLOBAL_LANGUAGE_UUID,language.getUuid().toString());
+               CdmStore.setDefaultLanguage(language);
+           }
+
        }
 
        /**
index 93ebade8b6d5af2adbbd2c6445a2f1ac5d3d363c..9c9bd5aee17d34aaf503280f48c7394b1a51b4bd 100644 (file)
@@ -40,6 +40,9 @@ public class SpecimenOrObservationPreferences extends FieldEditorPreferencePage
         addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_COLLECTING_AREAS_IN_GENERAL_SECTION,
                 "Show \"Collecting Areas\" in \"General\" section of details view",
                 getFieldEditorParent()));
+        addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_TAXON_ASSOCIATIONS,
+                "Show taxon associations of a specimen in the details view",
+                getFieldEditorParent()));
 
     }
 
index 79ac53cd873793fc34eafad7b99b25f225d79dd7..e09625ccecdfd2c3703a481ef9be111123a26838 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.strategy.match.MatchException;
 import eu.etaxonomy.cdm.strategy.match.MatchMode;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.parser.MatchStrategyConfigurator;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>Abstract AbstractMatchingPreferences class.</p>
@@ -52,13 +53,13 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
                                "|parsingProblem|problemStarts|problemEnds|PROTECTED|NOT_PROTECTED|propertyChangeSupport";
 
        protected IMatchStrategy matchStrategy;
-       
+
        protected Class<T> clazz;
 
        private List<MatchMode> matchModeList;
-       
+
        protected Map<String, Combo> matchModeCombos = new HashMap<String, Combo>();
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
         */
@@ -69,70 +70,72 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
                GridLayout gridLayout = new GridLayout();
                gridLayout.numColumns = 2;
                composite.setLayout(gridLayout);
-               
-               
-               for(String fieldName : getFieldNames()){
-                       createFieldWidget(composite, fieldName);
-               }
-               
+
+               if(!CdmStore.isActive()) {
+            MessagingUtils.noDataSourceWarningDialog(null);
+        }else{
+            for(String fieldName : getFieldNames()){
+                createFieldWidget(composite, fieldName);
+            }
+        }
+
                return composite;
        }
-       
+
        /**
         * Creates a widget for a field consisting of the label and a combo
-        * 
+        *
         * @see {@link #createMatchModeCombo(Composite, String, MatchMode)}
         * @param composite
         * @param fieldName
         */
        private void createFieldWidget(Composite parent, String fieldName) {
-               CLabel label = new CLabel(parent, SWT.NONE);
-               label.setText(fieldName);
-               
-               MatchMode matchMode = matchStrategy.getMatchMode(fieldName);
-               
-               createMatchModeCombo(parent, fieldName, matchMode);             
-       }       
-       
+           CLabel label = new CLabel(parent, SWT.NONE);
+           label.setText(fieldName);
+           MatchMode matchMode = matchStrategy.getMatchMode(fieldName);
+
+           createMatchModeCombo(parent, fieldName, matchMode);
+       }
+
        /**
         * Creates a combo for a field with the currently selected match mode for that field preselected
-        * 
+        *
         * @param parent
         * @param matchMode
         */
        private void createMatchModeCombo(Composite parent, String fieldName, MatchMode selectedMatchMode) {
                Combo matchModeCombo = new Combo(parent, SWT.NULL);
-               
+
                for (MatchMode matchMode : getMatchModeList()) {
                        matchModeCombo.add(matchMode.name());
                }
-               
+
                int index = getMatchModeList().indexOf(selectedMatchMode);
-               
+
                matchModeCombo.select(index);
-               
+
                matchModeCombo.addSelectionListener(new MatchModeComboSelectionListener(matchModeCombo, fieldName));
-               
+
                matchModeCombos.put(fieldName, matchModeCombo);
        }
-       
+
        /**
         * This listener updates the cache strategy when a value was changed in one of the combos
-        * 
+        *
         * @author n.hoffmann
         * @created Jan 28, 2010
         * @version 1.0
         */
        private class MatchModeComboSelectionListener extends SelectionAdapter{
-               
-               private Combo matchModeCombo;
-               private String fieldName;
+
+               private final Combo matchModeCombo;
+               private final String fieldName;
 
                MatchModeComboSelectionListener(Combo matchModeCombo, String fieldName){
                        this.matchModeCombo = matchModeCombo;
                        this.fieldName = fieldName;
                }
-               
+
                /* (non-Javadoc)
                 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
                 */
@@ -151,7 +154,7 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
 
        /**
         * Transforms the MatchMode enum into a list.
-        * 
+        *
         * @return
         */
        private List<MatchMode> getMatchModeList(){
@@ -163,25 +166,25 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
 
        /**
         * Get names of all declared fields
-        * 
+        *
         * @return
         */
-       private List<String> getFieldNames(){                           
+       private List<String> getFieldNames(){
                List<Field> fields = new ArrayList<Field>();
-               
+
                fields = getAllFields(fields, clazz);
                List<String> fieldNames = new ArrayList<String>();
-               
+
                for(Field field : fields){
                        String fieldName = field.getName();
                        if(! fieldName.matches(ExcludePattern)){
                                fieldNames.add(fieldName);
                        }
                }
-               
+
                return fieldNames;
        }
-       
+
        /**
         * Get all declared fields including fields of the superclasses.
         *
@@ -198,7 +201,7 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
 
            return fields;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#performApply()
         */
@@ -208,7 +211,7 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
                MatchStrategyConfigurator.setMatchStrategy(matchStrategy);
                super.performApply();
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
         */
@@ -218,21 +221,21 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
                try {
                        // set match strategy to default
                        matchStrategy = getDefaultMatchStrategy();
-                       
+
                        // set combos to their default values
                        for(String fieldName : matchModeCombos.keySet()){
                                Combo combo = matchModeCombos.get(fieldName);
                                MatchMode matchMode = matchStrategy.getMatchMode(fieldName);
                                combo.select(matchModeList.indexOf(matchMode));
                        }
-                       
+
                } catch (MatchException e) {
                        MessagingUtils.error(this.getClass(), e);
                        throw new RuntimeException(e);
                }
                super.performDefaults();
        }
-       
+
        /**
         * Returns the default match strategy for the respective class
         *
index c8a7fc5b2fd1cfe72070784482bc38c0b2756e31..e98123ac9d339b34739187da3747f00aaf9c963a 100644 (file)
@@ -95,7 +95,11 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        }
 
        protected List<T> getTerms(){
-               return TermStore.getTerms(getTermClass());
+           if(!CdmStore.isActive()) {
+               return new ArrayList<T>();
+           } else {
+               return TermStore.getTerms(getTermClass());
+           }
        }
 
        /**
@@ -274,8 +278,13 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        /** {@inheritDoc} */
        @Override
     public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPreferenceStore());
-               getConversationHolder().bind();
+           setPreferenceStore(PreferencesUtil.getPreferenceStore());
+           if(!CdmStore.isActive()) {
+               MessagingUtils.noDataSourceWarningDialog(null);
+
+           } else {
+               getConversationHolder().bind();
+           }
        }
 
        /*
@@ -305,6 +314,10 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        /** {@inheritDoc} */
        @Override
        public boolean performOk() {
+           if(!CdmStore.isActive()) {
+               return true;
+           }
+
                if(checkNoneChecked()){
                        return false;
                }
index d71ae560b7b652cb2b530914da241c97ce31c930..5008036f04c896db47f806006f7cebef6e489440 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.preference.menu;
 
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 
 /**
  * <p>PresenceAbsenceMenuPreferences class.</p>
@@ -21,14 +21,14 @@ import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
  * @created 25.06.2009
  * @version 1.0
  */
-public class PresenceAbsenceMenuPreferences extends AbstractMenuPreferences<PresenceAbsenceTermBase> implements
+public class PresenceAbsenceMenuPreferences extends AbstractMenuPreferences<PresenceAbsenceTerm> implements
                IWorkbenchPreferencePage {
 
        /**
         * <p>Constructor for PresenceAbsenceMenuPreferences.</p>
         */
        public PresenceAbsenceMenuPreferences() {
-               super("Distribution Status Preferences", 
+               super("Distribution Status Preferences",
                                "Choose which distribution states should be shown.",
                                false);
        }
@@ -38,8 +38,8 @@ public class PresenceAbsenceMenuPreferences extends AbstractMenuPreferences<Pres
         */
        /** {@inheritDoc} */
        @Override
-       protected Class<PresenceAbsenceTermBase> getTermClass() {
-               return PresenceAbsenceTermBase.class;
+       protected Class<PresenceAbsenceTerm> getTermClass() {
+               return PresenceAbsenceTerm.class;
        }
-       
+
 }
index 8b151109d24e2cf12f5d26087a06c041ea6319ae..f6b224dfcdd64a69149303684001fb1937b22f60 100644 (file)
@@ -99,12 +99,7 @@ public class CdmStore {
                        return instance;
                } else{// if (instance == null || !instance.isConnected) {
 
-                       MessagingUtils
-                                       .warningDialog(
-                                                       "Application is not connected to a datastore",
-                                                       instance,
-                                                       "The requested operation is only available when "
-                                                       + "connected to a datasource. You may choose a datasource to connect to or create a new one in the datasource view.");
+                       MessagingUtils.noDataSourceWarningDialog(instance);
 
                        AbstractUtility.showView(CdmDataSourceViewPart.ID);
                        return null;
index fe8016fc1f7a565f868798730d0b4db3e26cd607..5896718b8b4f260715c4d45729ded9fdb301784a 100644 (file)
@@ -24,10 +24,8 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.description.AbsenceTerm;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
-import eu.etaxonomy.cdm.model.description.PresenceTerm;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
@@ -227,17 +225,16 @@ public class TermStore {
                        }
 
                });
-               termStoreEdgeCases.add(new ITermStoreEdgeCase<PresenceAbsenceTermBase>() {
+               termStoreEdgeCases.add(new ITermStoreEdgeCase<PresenceAbsenceTerm>() {
 
                        @Override
-                       public Class<PresenceAbsenceTermBase> getTermClass() {
-                               return PresenceAbsenceTermBase.class;
+                       public Class<PresenceAbsenceTerm> getTermClass() {
+                               return PresenceAbsenceTerm.class;
                        }
 
                        @Override
-                       public List<PresenceAbsenceTermBase> getTerms() {
-                               List presenceAbsenceTerms = TermStore.getTermsFromService(PresenceTerm.class, null);
-                               presenceAbsenceTerms.addAll(TermStore.getTermsFromService(AbsenceTerm.class, null));
+                       public List<PresenceAbsenceTerm> getTerms() {
+                               List<PresenceAbsenceTerm> presenceAbsenceTerms = TermStore.getTermsFromService(PresenceAbsenceTerm.class, null);
 
                                return presenceAbsenceTerms;
                        }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorComposite.java
new file mode 100644 (file)
index 0000000..51368df
--- /dev/null
@@ -0,0 +1,74 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author pplitzner
+ * @date Feb 16, 2015
+ *
+ */
+public class DeleteConfiguratorComposite extends Composite implements IExpansionListener{
+
+    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+    private final Section sctnConfigure;
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DeleteConfiguratorComposite(final Composite parent, int style) {
+        super(parent, SWT.NONE);
+
+        addDisposeListener(new DisposeListener() {
+            @Override
+            public void widgetDisposed(DisposeEvent e) {
+                toolkit.dispose();
+            }
+        });
+        toolkit.paintBordersFor(this);
+        setLayout(new FillLayout(SWT.HORIZONTAL));
+
+        sctnConfigure = toolkit.createSection(this, Section.CLIENT_INDENT | Section.TWISTIE);
+        sctnConfigure.addExpansionListener(this);
+        sctnConfigure.setBackground(getBackground());
+        toolkit.paintBordersFor(sctnConfigure);
+        sctnConfigure.setText("Configure");
+
+
+    }
+
+
+    public void addConfiguratorComposite(Composite configuratorComposite){
+        toolkit.paintBordersFor(configuratorComposite);
+        sctnConfigure.setClient(configuratorComposite);
+    }
+
+    @Override
+    public void expansionStateChanged(ExpansionEvent e) {
+        getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    }
+    @Override
+    public void expansionStateChanging(ExpansionEvent e) {
+    }
+    public Section getSectionConfigure() {
+        return sctnConfigure;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java
new file mode 100644 (file)
index 0000000..eb36eda
--- /dev/null
@@ -0,0 +1,106 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
+import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonBaseDeletionConfigurator;
+
+/**
+ * Abstract subclass of MessageDialog providing the functionality to configure
+ * a {@link DeleteConfiguratorBase}
+ * @author pplitzner
+ * @date Jan 28, 2015
+ *
+ */
+public class DeleteConfiguratorDialog extends MessageDialog{
+
+    private final DeleteConfiguratorBase configurator;
+
+    public DeleteConfiguratorDialog(DeleteConfiguratorBase configurator, Shell parentShell, String dialogTitle,
+            Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex) {
+        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
+        this.configurator = configurator;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    protected Control createCustomArea(Composite parent) {
+        DeleteConfiguratorComposite composite = new DeleteConfiguratorComposite(parent, NONE);
+        if(configurator instanceof TaxonBaseDeletionConfigurator){
+            composite.addConfiguratorComposite(new DeleteTaxonConfiguratorComposite((TaxonBaseDeletionConfigurator) configurator, composite.getSectionConfigure(), SWT.NONE));
+        }
+        else if(configurator instanceof SpecimenDeleteConfigurator){
+            composite.addConfiguratorComposite(new DeleteSpecimenConfiguratorComposite((SpecimenDeleteConfigurator) configurator, composite.getSectionConfigure(), SWT.NONE));
+        }
+        return composite;
+    }
+
+    public static boolean openConfirmWithConfigurator(DeleteConfiguratorBase configurator, Shell parent, String title, String message) {
+        DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(configurator, parent, title, getDefaultImage(), message, QUESTION, getButtonLabels(QUESTION), 0);
+        return dialog.open() == 0;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#isResizable()
+     */
+    @Override
+    protected boolean isResizable() {
+        return true;
+    }
+
+
+    /**
+     * @param kind
+     * @return
+     */
+    protected static String[] getButtonLabels(int kind) {
+        String[] dialogButtonLabels;
+        switch (kind) {
+        case ERROR:
+        case INFORMATION:
+        case WARNING: {
+            dialogButtonLabels = new String[] { IDialogConstants.OK_LABEL };
+            break;
+        }
+        case CONFIRM: {
+            dialogButtonLabels = new String[] { IDialogConstants.OK_LABEL,
+                    IDialogConstants.CANCEL_LABEL };
+            break;
+        }
+        case QUESTION: {
+            dialogButtonLabels = new String[] { IDialogConstants.YES_LABEL,
+                    IDialogConstants.NO_LABEL };
+            break;
+        }
+        case QUESTION_WITH_CANCEL: {
+            dialogButtonLabels = new String[] { IDialogConstants.YES_LABEL,
+                    IDialogConstants.NO_LABEL,
+                    IDialogConstants.CANCEL_LABEL };
+            break;
+        }
+        default: {
+            throw new IllegalArgumentException(
+                    "Illegal value for kind in MessageDialog.open()"); //$NON-NLS-1$
+        }
+        }
+        return dialogButtonLabels;
+    }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteSpecimenConfiguratorComposite.java
new file mode 100644 (file)
index 0000000..720b4e8
--- /dev/null
@@ -0,0 +1,104 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.PojoProperties;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
+
+/**
+ * @author pplitzner
+ * @date Feb 18, 2015
+ *
+ */
+public class DeleteSpecimenConfiguratorComposite extends Composite {
+    private final DataBindingContext m_bindingContext;
+
+    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+
+    private final SpecimenDeleteConfigurator configurator;
+    private final Button btnDeleteChildren;
+    private final Button btnDeleteFromTypeDesignation;
+    private final Button btnDeleteMolecularData;
+    private final Button btnDeleteIndividualsassociationsfactual;
+    private final Button btnDeleteSpecimenDescription;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DeleteSpecimenConfiguratorComposite(SpecimenDeleteConfigurator configurator, Composite parent, int style) {
+        super(parent, style);
+        this.configurator = configurator;
+        addDisposeListener(new DisposeListener() {
+            @Override
+            public void widgetDisposed(DisposeEvent e) {
+                toolkit.dispose();
+            }
+        });
+        toolkit.paintBordersFor(this);
+        setLayout(new RowLayout(SWT.VERTICAL));
+
+        btnDeleteChildren = new Button(this, SWT.CHECK);
+        btnDeleteChildren.setText("Delete Children");
+
+        btnDeleteFromTypeDesignation = new Button(this, SWT.CHECK);
+        btnDeleteFromTypeDesignation.setText("Delete from type designation");
+
+        btnDeleteMolecularData = new Button(this, SWT.CHECK);
+        btnDeleteMolecularData.setText("Delete molecular data");
+
+        btnDeleteIndividualsassociationsfactual = new Button(this, SWT.CHECK);
+        btnDeleteIndividualsassociationsfactual.setText("Delete from factual data");
+
+        btnDeleteSpecimenDescription = new Button(this, SWT.CHECK);
+        toolkit.adapt(btnDeleteSpecimenDescription, true, true);
+        btnDeleteSpecimenDescription.setText("Delete specimen description");
+        m_bindingContext = initDataBindings();
+
+    }
+    protected DataBindingContext initDataBindings() {
+        DataBindingContext bindingContext = new DataBindingContext();
+        //
+        IObservableValue observeSelectionBtnDeleteChildrenObserveWidget = WidgetProperties.selection().observe(btnDeleteChildren);
+        IObservableValue deleteChildrenConfiguratorObserveValue = PojoProperties.value("deleteChildren").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteChildrenObserveWidget, deleteChildrenConfiguratorObserveValue, null, null);
+        //
+        IObservableValue observeSelectionBtnDeleteFromTypeDesignationObserveWidget = WidgetProperties.selection().observe(btnDeleteFromTypeDesignation);
+        IObservableValue deleteFromTypeDesignationConfiguratorObserveValue = PojoProperties.value("deleteFromTypeDesignation").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteFromTypeDesignationObserveWidget, deleteFromTypeDesignationConfiguratorObserveValue, null, null);
+        //
+        IObservableValue observeSelectionBtnDeleteMolecularDataObserveWidget = WidgetProperties.selection().observe(btnDeleteMolecularData);
+        IObservableValue deleteMolecularDataConfiguratorObserveValue = PojoProperties.value("deleteMolecularData").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteMolecularDataObserveWidget, deleteMolecularDataConfiguratorObserveValue, null, null);
+        //
+        IObservableValue observeSelectionBtnDeleteIndividualsassociationsfactualObserveWidget = WidgetProperties.selection().observe(btnDeleteIndividualsassociationsfactual);
+        IObservableValue deleteFromIndividualsAssociationConfiguratorObserveValue = PojoProperties.value("deleteFromIndividualsAssociation").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteIndividualsassociationsfactualObserveWidget, deleteFromIndividualsAssociationConfiguratorObserveValue, null, null);
+        //
+        IObservableValue observeSelectionBtnDeleteSpecimenDescriptionObserveWidget = WidgetProperties.selection().observe(btnDeleteSpecimenDescription);
+        IObservableValue deleteFromDescriptionConfiguratorObserveValue = PojoProperties.value("deleteFromDescription").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteSpecimenDescriptionObserveWidget, deleteFromDescriptionConfiguratorObserveValue, null, null);
+        //
+        return bindingContext;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteTaxonConfiguratorComposite.java
new file mode 100644 (file)
index 0000000..cd48144
--- /dev/null
@@ -0,0 +1,72 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.PojoProperties;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+import eu.etaxonomy.cdm.api.service.config.TaxonBaseDeletionConfigurator;
+
+/**
+ * @author pplitzner
+ * @date Feb 18, 2015
+ *
+ */
+public class DeleteTaxonConfiguratorComposite extends Composite {
+    private final DataBindingContext m_bindingContext;
+
+    private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+    private final TaxonBaseDeletionConfigurator configurator;
+    private final Button btnDeleteTaxonName;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DeleteTaxonConfiguratorComposite(TaxonBaseDeletionConfigurator configurator, Composite parent, int style) {
+        super(parent, style);
+        this.configurator = configurator;
+        addDisposeListener(new DisposeListener() {
+            @Override
+            public void widgetDisposed(DisposeEvent e) {
+                toolkit.dispose();
+            }
+        });
+        toolkit.paintBordersFor(this);
+        setLayout(new RowLayout(SWT.VERTICAL));
+        setBackground(getBackground());
+
+        btnDeleteTaxonName = new Button(this, SWT.CHECK);
+        btnDeleteTaxonName.setText("Delete taxon name if possible");
+        m_bindingContext = initDataBindings();
+
+    }
+
+    protected DataBindingContext initDataBindings() {
+        DataBindingContext bindingContext = new DataBindingContext();
+        //
+        IObservableValue observeSelectionBtnDeleteTaxonNameObserveWidget = WidgetProperties.selection().observe(btnDeleteTaxonName);
+        IObservableValue deleteNameIfPossibleConfiguratorObserveValue = PojoProperties.value("deleteNameIfPossible").observe(configurator);
+        bindingContext.bindValue(observeSelectionBtnDeleteTaxonNameObserveWidget, deleteNameIfPossibleConfiguratorObserveValue, null, null);
+        //
+        return bindingContext;
+    }
+}
index f2e1cd211d05ddd31629b5080c7d124d83d71416..d6a35ccc57be621b42f2b4d45c4f26ad1b91fe75 100644 (file)
@@ -61,7 +61,7 @@ AbstractFilteredCdmResourceSelectionDialog<Amplification> {
     /** {@inheritDoc} */
     @Override
     protected void initModel() {
-        model = CdmStore.getService(IAmplificationService.class).getAmplificationUuidAndDescription();
+        model = CdmStore.getService(IAmplificationService.class).getAmplificationUuidAndLabelCache();
     }
 
     /* (non-Javadoc)
@@ -70,7 +70,7 @@ AbstractFilteredCdmResourceSelectionDialog<Amplification> {
     @Override
     protected String getTitle(Amplification cdmObject) {
         if(cdmObject!=null){
-            return cdmObject.getDescription();
+            return cdmObject.getLabelCache();
         }
         return super.getTitle(cdmObject);
     }
index e728ad0c1563e9b7b0fe0ac599e9c575386b39e7..54a28eb90e8da393a1672ef28cd52aa29d2a9c58 100644 (file)
@@ -16,6 +16,7 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
@@ -72,6 +73,10 @@ public class SelectionDialogFactory {
                if(clazz.equals(Team.class)){
                        return (T) TeamSelectionDialog.select(shell, conversation, (Team) currentSelection);
                }
+               if(clazz.equals(TeamOrPersonBase.class)){
+                   //TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
+                   return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection);
+               }
                if(clazz.equals(AgentBase.class)){
                        return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection);
                }
index 9e450f39bcca21d3dc52bfec836b3ce9a7746efb..e2d81214b845b12d84e2b310de88b164a724c4be 100644 (file)
@@ -165,6 +165,8 @@ import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.identifier.IdentifierDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.identifier.IdentifierDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.GeographicalScopeDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailSection;
@@ -204,8 +206,6 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.CurrentDeterminationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitFacadeDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitFacadeDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailElement;
@@ -224,6 +224,10 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.OriginalLabelDataSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SourceCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenHierarchyDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenHierarchyDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenCurrentDeterminationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenDetailSection;
@@ -233,6 +237,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecime
 import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenSourceCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractSampleDesignationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationCloningDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationCloningDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGelPhotoCollectionDetailSection;
@@ -718,63 +723,20 @@ public class CdmFormFactory extends FormToolkit {
                return element;
        }
 
-    /**
-     * <p>
-     * createLanguageStringWithLabelElement
-     * </p>
-     *
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     * @param labelString
-     *            a {@link java.lang.String} object.
-     * @param languageString
-     *            a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
-     * @param style
-     *            a int.
-     * @return a
-     *         {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
-     *         object.
-     */
     public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
             String labelString, LanguageString languageString, int style) {
-        LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
-                languageString, style);
-        adapt(element);
-        parentElement.addElement(element);
-        return element;
+        return createLanguageStringWithLabelElement(parentElement, labelString, languageString, null, false, style);
     }
 
-    /**
-     * <p>
-     * createLanguageStringWithLabelElement
-     * </p>
-     *
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     * @param labelString
-     *            a {@link java.lang.String} object.
-     * @param languageString
-     *            a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
-     * @param height
-     *            a int.
-     * @param style
-     *            a int.
-     * @return a
-     *         {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
-     *         object.
-     */
     public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
-            String labelString, LanguageString languageString, int height, int style) {
+            String labelString, LanguageString languageString, Integer height, boolean isMultiLine, int style) {
         LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
-                languageString, height, style);
+                languageString, height, isMultiLine, style);
         adapt(element);
         parentElement.addElement(element);
         return element;
     }
 
-
     /**
      * <p>
      * createKeyValueViewerElement
@@ -1611,12 +1573,6 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
-    public DerivedUnitFacadeDetailSection createDerivedUnitFacadeDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        DerivedUnitFacadeDetailSection section = new DerivedUnitFacadeDetailSection(this, conversation, parentElement, selectionProvider, style);
-        addAndAdaptSection(parentElement, section);
-        return section;
-    }
-
     public FieldUnitDetailSection createFieldUnitDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         FieldUnitDetailSection section = new FieldUnitDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
@@ -1629,12 +1585,24 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public SpecimenHierarchyDetailSection createSpecimenHierarchyDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        SpecimenHierarchyDetailSection section = new SpecimenHierarchyDetailSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public DerivedUnitBaseDetailSection createDerivedUnitBaseDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         DerivedUnitBaseDetailSection section = new DerivedUnitBaseDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
         return section;
     }
 
+    public TaxonAssociationDetailSection createTaxonAssociationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        TaxonAssociationDetailSection section = new TaxonAssociationDetailSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public OriginalLabelDataSection createOriginalLabelDataSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         OriginalLabelDataSection section = new OriginalLabelDataSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
@@ -1966,12 +1934,6 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
-    public DerivedUnitFacadeDetailElement createDerivedUnitFacadeDetailElement(ICdmFormElement parentElement){
-        DerivedUnitFacadeDetailElement element = new DerivedUnitFacadeDetailElement(this, parentElement);
-        addAndAdaptElement(parentElement, element);
-        return element;
-    }
-
     public NonViralNameDetailElement createNonViralNameDetailElement(ICdmFormElement parentElement){
         NonViralNameDetailElement element = new NonViralNameDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
@@ -2045,6 +2007,12 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public TaxonAssociationDetailElement createTaxonAssociationDetailElement(ICdmFormElement parentElement){
+        TaxonAssociationDetailElement element = new TaxonAssociationDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
+
     public PreservedSpecimenGeneralDetailElement createPreservedSpecimenGeneralDetailElement(ICdmFormElement parentElement){
         PreservedSpecimenGeneralDetailElement element = new PreservedSpecimenGeneralDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
@@ -2135,6 +2103,11 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public SpecimenHierarchyDetailElement createSpecimenHierarchyDetailElement(ICdmFormElement parentElement) {
+        SpecimenHierarchyDetailElement element = new SpecimenHierarchyDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
 
     public DerivedUnitBaseDetailElement createDerivedUnitBaseDetailElement(ICdmFormElement parentElement) {
         DerivedUnitBaseDetailElement element = new DerivedUnitBaseDetailElement(this, parentElement);
@@ -2326,6 +2299,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public IdentifierDetailSection createIdentifierDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        IdentifierDetailSection section = new IdentifierDetailSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public CurrentSampleDesignationDetailSection createCurrentSampleDesignationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         CurrentSampleDesignationDetailSection section = new CurrentSampleDesignationDetailSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
@@ -2561,7 +2540,12 @@ public class CdmFormFactory extends FormToolkit {
                 element = new ProtologueElement(this, parentElement, descriptionElement, removeListener, style);
             }
         } else if (entity instanceof Identifier) {
-            element = new SampleDesignationTextDetailElement(this, parentElement, (Identifier<DnaSample>) entity, removeListener, backgroundColor, style);
+            if(parentElement instanceof AbstractSampleDesignationDetailSection){
+                element = new SampleDesignationTextDetailElement(this, parentElement, (Identifier<DnaSample>) entity, removeListener, backgroundColor, style);
+            }
+            else{
+                element = new IdentifierDetailElement(this, parentElement, (Identifier) entity, removeListener, style);
+            }
         }
 
         if (element == null) {
index 0e7f2a04c9ca79fc157e0538c7baa5028686089e..084e57634898a1c62b232015b441ad2413d5b0d7 100644 (file)
@@ -54,9 +54,16 @@ public class LanguageStringWithLabelElement extends TextWithLabelElement {
        protected LanguageStringWithLabelElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, String labelString,
                        LanguageString languageString, Integer height, int style) {
-               super(formFactory, parentElement, labelString, null, height, true, style);
+               this(formFactory, parentElement, labelString, languageString, height, true, style);
+       }
+
+       protected LanguageStringWithLabelElement(CdmFormFactory formFactory,
+               ICdmFormElement parentElement, String labelString,
+               LanguageString languageString, Integer height, boolean isMultiLine, int style) {
+           super(formFactory, parentElement, labelString, null, height, isMultiLine, style);
+
+           setLanguageString(languageString);
 
-               setLanguageString(languageString);
        }
 
        /**
index ad379c37098de347e440b7f640c389d7b8621129..be80e262f9e9745bf89ddb62e4e573a9064fac3a 100644 (file)
@@ -16,8 +16,8 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -73,7 +73,7 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                        WizardDialog dialog = new WizardDialog(getLayoutComposite()
                                        .getShell(), wizard);
 
-                       if (dialog.open() == IStatus.OK) {
+                       if (dialog.open() == Window.OK) {
                                combo_language.setTerms(getLanguages());
                                updateControls();
                        }
@@ -119,7 +119,7 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
 
                element_languageString = this.formFactory
                                .createLanguageStringWithLabelElement(formElement, labelString,
-                                               null, textHeight, style);
+                                               null, textHeight, true, style);
 
                if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                        createMultilanguageTextEditingElements(formElement,
index 48c30ed7df9380d53bc4b4f078bf2a9d0c2a5e85..67031071347706b763ede006640c21634f7fa25c 100644 (file)
@@ -10,7 +10,6 @@
 package eu.etaxonomy.taxeditor.ui.element;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-import eu.etaxonomy.taxeditor.ui.mvc.OriginalLabelDataField;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -20,6 +19,8 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  */
 public class OriginalLabelDataElement extends AbstractCdmDetailElement<DerivedUnitFacade> {
 
+    private TextWithLabelElement textOriginalLabel;
+
     /**
      * @param formFactory
      * @param formElement
@@ -39,8 +40,7 @@ public class OriginalLabelDataElement extends AbstractCdmDetailElement<DerivedUn
     @Override
     protected void createControls(ICdmFormElement formElement,
             DerivedUnitFacade entity, int style) {
-        OriginalLabelDataField originalLabelDataField = new OriginalLabelDataField(formElement.getLayoutComposite(), style, entity.innerDerivedUnit(), getFormFactory());
-        originalLabelDataField.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+        textOriginalLabel = formFactory.createTextWithLabelElement(formElement, "Original Label Info", entity.getOriginalLabelInfo(), style);
     }
 
     /*
@@ -52,6 +52,9 @@ public class OriginalLabelDataElement extends AbstractCdmDetailElement<DerivedUn
      */
     @Override
     public void handleEvent(Object eventSource) {
+        if(eventSource==textOriginalLabel){
+            getEntity().setOriginalLabelInfo(textOriginalLabel.getText());
+        }
     }
 
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/OriginalLabelDataField.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/OriginalLabelDataField.java
deleted file mode 100644 (file)
index 3603e4d..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-// $Id$
-/**
-* Copyright (C) 2014 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.ui.mvc;
-
-import java.util.List;
-
-import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.jface.databinding.swt.SWTObservables;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-
-/**
- * @author pplitzner
- * @date 23.06.2014
- *
- */
-public class OriginalLabelDataField extends Composite {
-
-    private DataBindingContext m_bindingContext;
-    private DerivedUnit derivedUnit = null;
-    private final Text originalLabelInfoText;
-    private CdmFormFactory formFactory;
-
-    public OriginalLabelDataField(Composite parent, int style, DerivedUnit newDerivedUnit, CdmFormFactory formFactory) {
-        this(parent, style);
-        setDerivedUnit(newDerivedUnit);
-        this.formFactory = formFactory;
-    }
-
-    public OriginalLabelDataField(Composite parent, int style) {
-        super(parent, style);
-        setLayout(new GridLayout(2, false));
-
-        new Label(this, SWT.NONE).setText("Original Label Data");
-
-        originalLabelInfoText = new Text(this, SWT.BORDER | SWT.WRAP | SWT.MULTI);
-        originalLabelInfoText.addModifyListener(new ModifyListener() {
-            @Override
-            public void modifyText(ModifyEvent e) {
-                if(formFactory!=null){
-                    List<IPropertyChangeListener> propertyChangeListeners = formFactory.getPropertyChangeListeners();
-                    for (IPropertyChangeListener iPropertyChangeListener : propertyChangeListeners) {
-                        iPropertyChangeListener.propertyChange(new CdmPropertyChangeEvent(OriginalLabelDataField.this, e));
-                    }
-                }
-            }
-        });
-        originalLabelInfoText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-
-        if (derivedUnit != null) {
-            m_bindingContext = initDataBindings();
-        }
-    }
-
-    @Override
-    protected void checkSubclass() {
-        // Disable the check that prevents subclassing of SWT components
-    }
-
-    private DataBindingContext initDataBindings() {
-        IObservableValue originalLabelInfoObserveWidget = SWTObservables.observeText(originalLabelInfoText, SWT.Modify);
-        IObservableValue originalLabelInfoObserveValue = BeansObservables
-                .observeValue(derivedUnit, "originalLabelInfo");
-        //
-        DataBindingContext bindingContext = new DataBindingContext();
-        //
-        bindingContext.bindValue(originalLabelInfoObserveWidget, originalLabelInfoObserveValue, null, null);
-        //
-        return bindingContext;
-    }
-
-    public DerivedUnit getDerivedUnit() {
-        return derivedUnit;
-    }
-
-    public void setDerivedUnit(DerivedUnit newDerivedUnit) {
-        setDerivedUnit(newDerivedUnit, true);
-    }
-
-    public void setDerivedUnit(DerivedUnit newDerivedUnit, boolean update) {
-        derivedUnit = newDerivedUnit;
-        if (update) {
-            if (m_bindingContext != null) {
-                m_bindingContext.dispose();
-                m_bindingContext = null;
-            }
-            if (derivedUnit != null) {
-                m_bindingContext = initDataBindings();
-            }
-        }
-    }
-
-}
index 242e595b32c9a789743e5144987fcaa3b13a692b..3dbe100ef6134198a5933bbfcbff633414377f34 100644 (file)
@@ -13,6 +13,7 @@ package eu.etaxonomy.taxeditor.ui.password;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.swt.widgets.Display;
 import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.core.AuthenticationException;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
@@ -78,7 +79,10 @@ public class PasswordWizard extends Wizard implements IConversationEnabled{
                        return true;
                }catch(AccessDeniedException e){
                        MessagingUtils.warningDialog("Could not change password", this, "The old password is not correct.");
-                       
+                       return false;
+               }catch (AuthenticationException e){
+                       MessagingUtils.warningDialog("Could not change password", this, "The old password is not correct.");
+               
                        return false;
                }catch(Exception e){
                        MessagingUtils.warningDialog("Problem with changing password", this, "The password could not be changed. " + e.getMessage());
index 92cd0bf2d94cfe0eaa54e1bc53b206775edf8266..d349a64eed00b0506616e692277a58aa18a9e4ac 100644 (file)
@@ -182,12 +182,13 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
 
        /**
         * Call this method after dynamically changing the client area.
-        * If the options changed is set to true, will also fire a state changed
+        * If the options changed is set to <code>true</code>, will also fire a state changed
         * event to inform the user of unsaved changes.
         *
         * @param changed a boolean.
         */
        protected void internalUpdateSection(boolean changed){
+           setSectionTitle();
                destroyDynamicContent();
                if(isExpanded() || expandSectionWhenContentAvailable()) {
             renderContent(isExpanded());
index d97c62333cf7472f5ff7820bf1803aa3f3336ada..a4aca0cdea6031c80fa91da4dda52329cd7096d7 100644 (file)
@@ -70,15 +70,10 @@ public class MediaDetailsSection extends AbstractCdmDetailSection<Media> {
     protected Control createToolbar() {
         ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
 
-        final String label;
-        if(element_media.isAdvancedMediaView()){
-            label = "Use simple media view";
-        }
-        else{
-            label = "Use advanced media view";
-        }
-
-        Action addAction = new Action("Use advanced media view", IAction.AS_PUSH_BUTTON) {
+        //FIXME: duplicate code (see #4598)
+        final String label = "Change View Type";
+
+        Action addAction = new Action(label, IAction.AS_PUSH_BUTTON) {
             /* (non-Javadoc)
              * @see org.eclipse.jface.action.Action#run()
              */
index 33bf05da6975c95a5c611b880d7b16d0095b5a86..676990fa70defdd0db934fe445adaef93b39f8a6 100644 (file)
@@ -11,7 +11,7 @@
 package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
 import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -29,7 +29,7 @@ public class DistributionDetailElement extends
                AbstractDetailedDescriptionDetailElement<Distribution> {
 
        private EntitySelectionElement<NamedArea> selection_namedArea;
-       private TermComboElement<PresenceAbsenceTermBase> combo_presenceAbsence;
+       private TermComboElement<PresenceAbsenceTerm> combo_presenceAbsence;
 
 
        /**
@@ -52,7 +52,7 @@ public class DistributionDetailElement extends
                selection_namedArea = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
                                formElement, "Area",
                                entity.getArea(), EntitySelectionElement.NOTHING, style);
-        combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTermBase.class, this, "Distribution Status", entity.getStatus(), style);
+        combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTerm.class, this, "Distribution Status", entity.getStatus(), style);
 
        }
 
index b8f75fddae0aaf913a180604cef7622ca426fddf..30aa76de0429418b90d227a7a009f92036a9f705 100644 (file)
@@ -21,7 +21,7 @@ import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.common.UriUtils;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
@@ -102,7 +102,7 @@ public class FeatureDistributionDetailElement extends AbstractCdmDetailElement<F
         */
        private String getMapUriString(FeatureNodeContainer container){
                String accessPoint = PreferencesUtil.getMapServiceAccessPoint();
-               Map<PresenceAbsenceTermBase<?>, java.awt.Color> presenceAbsenceTermColors = null;
+               Map<PresenceAbsenceTerm, java.awt.Color> presenceAbsenceTermColors = null;
                // FIXME due to a bug in the rest map service we have to ensure that width will always be an even number
                // image.calculateWidth() % 2 == 1 ? image.calculateWidth() + 1 :
                int width = image.calculateWidth();
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailElement.java
new file mode 100644 (file)
index 0000000..9171b03
--- /dev/null
@@ -0,0 +1,111 @@
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+
+package eu.etaxonomy.taxeditor.ui.section.identifier;
+
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.Identifier;
+import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+
+/**
+ * <p>
+ * CollectionDetailElement class.
+ * </p>
+ *
+ * @author n.hoffmann
+ * @created Oct 13, 2010
+ * @version 1.0
+ */
+public class IdentifierDetailElement extends AbstractEntityCollectionElement<Identifier> {
+
+       private TextWithLabelElement textIdentifier;
+
+       private TermComboElement<DefinedTerm> comboIdentifierType;
+
+       /**
+     * <p>
+     * Constructor for CollectingAreasDetailElement.
+     * </p>
+     *
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param section
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
+     *            object.
+     * @param entity
+     *            a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
+     * @param removeListener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     * @param style
+     *            a int.
+     */
+    public IdentifierDetailElement(CdmFormFactory formFactory,
+            AbstractFormSection section, Identifier entity,
+            SelectionListener removeListener, int style) {
+        super(formFactory, section, entity, removeListener, null, style);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#setEntity
+     * (java.lang.Object)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void setEntity(Identifier entity) {
+        this.entity = entity;
+        textIdentifier.setText(entity.getIdentifier());
+        comboIdentifierType.setSelection(entity.getType());
+    }
+
+       /*
+        * (non-Javadoc)
+        *
+        * @see
+        * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
+        * (eu.etaxonomy.taxeditor.forms.ICdmFormElement,
+        * eu.etaxonomy.cdm.model.common.IAnnotatableEntity, int)
+        */
+       /** {@inheritDoc} */
+       @Override
+    public void createControls(ICdmFormElement formElement, int style) {
+               textIdentifier = formFactory.createTextWithLabelElement(formElement, "Identifier", null, style);
+               comboIdentifierType = formFactory.createDefinedTermComboElement(TermType.IdentifierType, formElement, "Type", null, style);
+       }
+
+       /*
+        * (non-Javadoc)
+        *
+        * @see
+        * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+        * .lang.Object)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public void handleEvent(Object eventSource) {
+               if (eventSource == textIdentifier) {
+                       getEntity().setIdentifier(textIdentifier.getText());
+               } else if (eventSource == comboIdentifierType) {
+                       getEntity().setType(comboIdentifierType.getSelection());
+               }
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/identifier/IdentifierDetailSection.java
new file mode 100644 (file)
index 0000000..03e13f8
--- /dev/null
@@ -0,0 +1,144 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.ui.section.identifier;
+
+import java.util.Collection;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.common.Identifier;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
+
+/**
+ * <p>
+ * CollectingAreasDetailSection class.
+ * </p>
+ *
+ * @author n.hoffmann
+ * @created Oct 14, 2010
+ * @version 1.0
+ */
+public class IdentifierDetailSection extends AbstractEntityCollectionSection<DerivedUnitFacade, Identifier> {
+
+       /**
+        * <p>Constructor for CollectingAreasDetailSection.</p>
+        *
+        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+        * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+        * @param style a int.
+        */
+       public IdentifierDetailSection(CdmFormFactory formFactory,
+                       ConversationHolder conversation, ICdmFormElement parentElement, int style) {
+               super(formFactory, conversation, parentElement, "Identifiers", style);
+       }
+
+       @Override
+    protected Control createToolbar() {
+        ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+
+        Action addAction = new Action("add", IAction.AS_PUSH_BUTTON){
+            /* (non-Javadoc)
+             * @see org.eclipse.jface.action.Action#run()
+             */
+            @Override
+            public void run() {
+                Identifier element = createNewElement();
+                if(element != null){
+                    if(! getSection().isExpanded()) {
+                        getSection().setExpanded(true);
+                    }
+                    internalUpdateSection(true);
+                }
+            }
+        };
+        addAction.setImageDescriptor(new ImageDescriptor() {
+
+            @Override
+            public ImageData getImageData() {
+                return ImageResources.getImage(ImageResources.ADD_ICON).getImageData();
+            }
+        });
+        addAction.setToolTipText(getTooltipString());
+
+        toolBarManager.add(addAction);
+
+        return toolBarManager.createControl(this);
+    }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getCollection(java.lang.Object)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public Collection<Identifier> getCollection(DerivedUnitFacade entity) {
+               return entity.getIdentifiers();
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#createNewElement()
+        */
+       /** {@inheritDoc} */
+       @Override
+       public Identifier createNewElement() {
+               return Identifier.NewInstance(getEntity().baseUnit(), null, null);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#addElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public void addElement(Identifier element) {
+               getEntity().addIdentifier(element);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#removeElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public void removeElement(Identifier element) {
+           getEntity().removeIdentifier(getEntity().getIdentifiers().get(0));
+           getConversationHolder().commit();
+           System.out.println();
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getEmptyString()
+        */
+       /** {@inheritDoc} */
+       @Override
+       public String getEmptyString() {
+               return "No identifiers yet.";
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected String getTooltipString() {
+               return "Add an identifier";
+       }
+
+}
index 78960e311d49f68f4dcea6823ee8fe19cadd4762..a61bfdc818e02f8b83353f1b8d75faf4b25efee9 100644 (file)
@@ -7,7 +7,6 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -71,7 +70,7 @@ public class MediaMetaElement extends AbstractEntityCollectionElement<Media> {
     public void createControls(ICdmFormElement element, int style) {
         text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
         selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
-        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, style);
+        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
         mediaDetailElement = formFactory.createMediaDetailElement(element);
     }
 
@@ -81,7 +80,7 @@ public class MediaMetaElement extends AbstractEntityCollectionElement<Media> {
         this.entity = element;
         mediaDetailElement.setEntity(element);
 
-        selection_artist.setEntity((TeamOrPersonBase<?>) HibernateProxyHelper
+        selection_artist.setEntity((AgentBase<?>) HibernateProxyHelper
                 .deproxy(element.getArtist()));
 
         text_description.setLanguageString(element.getDescription(CdmStore
index 0f19002fe4a251f20587af23880f9f45deaff0cd..6a7b2f2832d701b872558711e02d2e0971b49922 100644 (file)
@@ -17,11 +17,11 @@ import java.util.Collection;
 import org.apache.http.HttpException;
 import org.eclipse.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.common.UriUtils;
 import eu.etaxonomy.cdm.common.media.ImageInfo;
 import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -109,7 +109,7 @@ public class MediaRepresentationElement extends AbstractEntityCollectionElement<
                        ImageFile imageFile = (ImageFile) mediaRepresentationPart;
 
                        URI uri = imageFile.getUri();
-                       if(uri == null){
+                       if(!UriUtils.isServiceAvailable(uri)){
                                return;
                        }
                        try {
@@ -119,10 +119,14 @@ public class MediaRepresentationElement extends AbstractEntityCollectionElement<
                                getEntity().setMimeType(mimeType);
                                text_suffix.setText(imageInfo.getSuffix());
                                getEntity().setSuffix(imageInfo.getSuffix());
-                       } catch (IOException e) {
-                               MessagingUtils.error(getClass(), e);
-                       } catch (HttpException e) {
-                               MessagingUtils.error(getClass(), e);
+                       }
+                       //theses exceptions do not need to be logged
+                       //especially because this happens with every key stroke
+                       catch (IOException e) {
+//                             MessagingUtils.error(getClass(), e);
+                       }
+                       catch (HttpException e) {
+//                             MessagingUtils.error(getClass(), e);
                        }
                }
        }
index 17d1f305b37dbebd38d43aa7131d7d02844a3e98..e6c9d61042f3506e8c5dc40a54652b6638260f70 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * European Distributed Institute of Taxonomy
  * http://www.e-taxonomy.eu
- * 
+ *
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
@@ -12,41 +12,37 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 
 import java.util.Arrays;
 
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.name.NonViralName;
-import eu.etaxonomy.taxeditor.model.AuthorHelper;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NomenclaturalAuthorTeamSelectionElement;
-import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
  * <p>
  * AuthorshipDetailElement class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Mar 4, 2010
  * @version 1.0
  */
 public class AuthorshipDetailElement extends
-       AbstractIdentifiableEntityDetailElement<NonViralName> implements
-               IEnableableFormElement {
-
-       private NomenclaturalAuthorTeamSelectionElement selection_exBasionymAuthorTeam;
-       private NomenclaturalAuthorTeamSelectionElement selection_basionymAuthorTeam;
-       private NomenclaturalAuthorTeamSelectionElement selection_exCombinationAuthorTeam;
-       private NomenclaturalAuthorTeamSelectionElement selection_combinationAuthorTeam;
+       AbstractIdentifiableEntityDetailElement<NonViralName> {
 
+    private EntitySelectionElement<TeamOrPersonBase> selectionExBasionymAuthor;
+    private EntitySelectionElement<TeamOrPersonBase> selectionBasionymAuthor;
+    private EntitySelectionElement<TeamOrPersonBase> selectionExCombinationAuthor;
+    private EntitySelectionElement<TeamOrPersonBase> selectionCombinationAuthor;
        /**
         * <p>
         * Constructor for AuthorshipDetailElement.
         * </p>
-        * 
+        *
         * @param cdmFormFactory
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
         *            object.
@@ -68,35 +64,32 @@ public class AuthorshipDetailElement extends
                toggleable_cache = formFactory.createToggleableTextField(this,
                                "Authorship Cache", entity.getAuthorshipCache(),
                                entity.isProtectedAuthorshipCache(), style);
-               
+
                //TODO RL
                if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
                        toggleable_cache.setVisible(false);
                }
-               selection_combinationAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
+               selectionCombinationAuthor = formFactory.createSelectionElement(TeamOrPersonBase.class,
                                getConversationHolder(),
                                formElement, "Author",
-                               AuthorHelper.getAuthor(entity.getCombinationAuthorTeam()),
+                               entity.getCombinationAuthorTeam(),
                                EntitySelectionElement.ALL, style);
-               addElement(selection_combinationAuthorTeam);
-               selection_exCombinationAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
+               addElement(selectionCombinationAuthor);
+               selectionExCombinationAuthor = formFactory.createSelectionElement(TeamOrPersonBase.class,
                                getConversationHolder(),
                                formElement, "Ex Author",
-                               AuthorHelper.getAuthor(entity.getExCombinationAuthorTeam()),
+                               entity.getExCombinationAuthorTeam(),
                                EntitySelectionElement.ALL, style);
-               addElement(selection_exCombinationAuthorTeam);
-               selection_basionymAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
-                               getConversationHolder(),
-                               formElement, "Basionym Author",
-                               AuthorHelper.getAuthor(entity.getBasionymAuthorTeam()),
-                               EntitySelectionElement.ALL, style);
-               addElement(selection_basionymAuthorTeam);
-               selection_exBasionymAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
-                               getConversationHolder(),
-                               formElement, "Ex Basionym Author",
-                               AuthorHelper.getAuthor(entity.getExBasionymAuthorTeam()),
-                               EntitySelectionElement.ALL, style);
-               addElement(selection_exBasionymAuthorTeam);
+               addElement(selectionExCombinationAuthor);
+               selectionBasionymAuthor = formFactory.createSelectionElement(TeamOrPersonBase.class, getConversationHolder(),
+                formElement, "Basionym Author", entity.getBasionymAuthorTeam(),
+                EntitySelectionElement.ALL, style);
+               addElement(selectionBasionymAuthor);
+               selectionExBasionymAuthor = formFactory.createSelectionElement(TeamOrPersonBase.class, getConversationHolder(),
+                       formElement, "Ex Basionym Author", entity.getExBasionymAuthorTeam(),
+                       EntitySelectionElement.ALL, style);
+
+               addElement(selectionExBasionymAuthor);
        }
 
        /** {@inheritDoc} */
@@ -105,7 +98,7 @@ public class AuthorshipDetailElement extends
                if (getEntity() == null) {
                        setEntity(NonViralName.NewInstance(null));
                }
-               
+
                super.updateContent();
                toggleable_cache.setEnabled(getEntity().isProtectedAuthorshipCache());
 
@@ -127,18 +120,21 @@ public class AuthorshipDetailElement extends
                                setIrrelevant(toggleable_cache.getState(),
                                                Arrays.asList(new Object[] { toggleable_cache }));
                        }
-               } else if (eventSource == selection_combinationAuthorTeam) {
+               } else if (eventSource == selectionExBasionymAuthor) {
+                   getEntity().setCombinationAuthorTeam(
+                           selectionExBasionymAuthor.getSelection());
+               } else if (eventSource == selectionCombinationAuthor) {
                        getEntity().setCombinationAuthorTeam(
-                                       selection_combinationAuthorTeam.getSelection());
-               } else if (eventSource == selection_exCombinationAuthorTeam) {
+                                       selectionCombinationAuthor.getSelection());
+               } else if (eventSource == selectionExCombinationAuthor) {
                        getEntity().setExCombinationAuthorTeam(
-                                       selection_exCombinationAuthorTeam.getSelection());
-               } else if (eventSource == selection_basionymAuthorTeam) {
+                                       selectionExCombinationAuthor.getSelection());
+               } else if (eventSource == selectionBasionymAuthor) {
                        getEntity().setBasionymAuthorTeam(
-                                       selection_basionymAuthorTeam.getSelection());
-               } else if (eventSource == selection_exBasionymAuthorTeam) {
+                                       selectionBasionymAuthor.getSelection());
+               } else if (eventSource == selectionExBasionymAuthor) {
                        getEntity().setExBasionymAuthorTeam(
-                                       selection_exBasionymAuthorTeam.getSelection());
+                                       selectionExBasionymAuthor.getSelection());
                }
 
 //             if (eventSource != toggleable_cache) {
@@ -152,7 +148,7 @@ public class AuthorshipDetailElement extends
                        firePropertyChangeEvent(new CdmPropertyChangeEvent(
                                        getParentElement(), null));
        }
-       
+
        @Override
        public void updateToggleableCacheField() {
                if(! getEntity().isProtectedAuthorshipCache()){
index f9401eeee53caef77e05d91de846df7f47641399..8f444705eb0f195a1c0f5fed1a1cd44b2eb628c6 100644 (file)
@@ -103,7 +103,7 @@ public class ProtologueSection extends AbstractEntityCollectionSection<TaxonName
        /** {@inheritDoc} */
        public void setTaxonBase(TaxonBase entity) {
                this.taxonBase = entity;
-               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
+               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName(), NonViralName.class);
                setEntity(name);
        }
        
@@ -126,6 +126,9 @@ public class ProtologueSection extends AbstractEntityCollectionSection<TaxonName
         */
        private List<TaxonNameDescription> getTaxonNameDescriptions(TaxonNameBase<?,?> name){
                List<TaxonNameDescription> result = new ArrayList<TaxonNameDescription>();
+               if (name == null){
+                       return result;
+               }
                if(name.getDescriptions().size() == 0){
                        name.addDescription(TaxonNameDescription.NewInstance(name));
                }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java
deleted file mode 100644 (file)
index a736d50..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-// $Id$
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.ui.section.occurrence;
-
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
-
-/**
- * <p>DerivedUnitFacadeDetailElement class.</p>
- *
- * @author n.hoffmann
- * @created Jun 17, 2010
- * @version 1.0
- */
-public class DerivedUnitFacadeDetailElement extends AbstractCdmDetailElement<DerivedUnit> {
-
-       private DerivedUnitFacade facade;
-
-       private final DerivedUnitFacadeConfigurator configurator;
-
-       private DerivedUnitGeneralDetailSection section_general;
-       private GatheringEventDetailSection section_gatheringEvent;
-       private DerivedUnitBaseDetailSection section_derivedUnitBase;
-       private FieldUnitDetailSection section_fieldUnit;
-
-       /**
-        * <p>Constructor for DerivedUnitFacadeDetailElement.</p>
-        *
-        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        */
-       public DerivedUnitFacadeDetailElement(CdmFormFactory formFactory,
-                       ICdmFormElement formElement) {
-               super(formFactory, formElement);
-               configurator = DerivedUnitFacadeConfigurator.NewInstance();
-               configurator.setMoveDerivedUnitMediaToGallery(true);
-               configurator.setMoveFieldObjectMediaToGallery(true);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setEntity(DerivedUnit entity) {
-               super.setEntity(entity);
-               try {
-                       facade = DerivedUnitFacade.NewInstance(entity, configurator);
-
-                       section_general.setEntity(facade);
-                       section_derivedUnitBase.setEntity(facade);
-                       section_gatheringEvent.setEntity(facade);
-                       section_fieldUnit.setEntity(facade);
-
-               } catch (DerivedUnitFacadeNotSupportedException e) {
-                       MessagingUtils.messageDialog("Error", this, "SpecimenFacadeNotSupportedException while inititating SpecimenFacade", e);
-               }
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void removeElements() {
-               super.removeElements();
-               if(section_general != null){
-                       removeControl(section_general);
-                       section_general.dispose();
-                       section_general = null;
-               }
-               if(section_derivedUnitBase != null){
-                       removeControl(section_derivedUnitBase);
-                       section_derivedUnitBase.dispose();
-                       section_derivedUnitBase = null;
-               }
-               if(section_gatheringEvent != null){
-                       removeControl(section_gatheringEvent);
-                       section_gatheringEvent.dispose();
-                       section_gatheringEvent = null;
-               }
-               if(section_fieldUnit != null){
-                       removeControl(section_fieldUnit);
-                       section_fieldUnit.dispose();
-                       section_fieldUnit = null;
-               }
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public DerivedUnit getEntity() {
-               throw new IllegalArgumentException("Should not be called");
-       }
-
-       /**
-        * <p>Getter for the field <code>facade</code>.</p>
-        *
-        * @return a {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade} object.
-        */
-       public DerivedUnitFacade getFacade(){
-               return facade;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       protected void createControls(ICdmFormElement formElement,
-                       DerivedUnit entity, int style) {
-
-               section_general = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-               section_general.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-               addControl(section_general);
-               addElement(section_general);
-
-               section_gatheringEvent = formFactory.createGatheringEventDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE);
-               section_gatheringEvent.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-               addControl(section_gatheringEvent);
-               addElement(section_gatheringEvent);
-
-               section_fieldUnit = formFactory.createFieldUnitDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE);
-               section_fieldUnit.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-               addControl(section_fieldUnit);
-               addElement(section_fieldUnit);
-
-               section_derivedUnitBase = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE);
-               section_derivedUnitBase.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-               addControl(section_derivedUnitBase);
-               addElement(section_derivedUnitBase);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void handleEvent(Object eventSource) {
-               if(eventSource == section_derivedUnitBase || eventSource == section_gatheringEvent || eventSource == section_fieldUnit){
-                       if(getParentElement() instanceof AbstractCdmDetailSection) {
-                ((AbstractCdmDetailSection) getParentElement()).updateTitle();
-            }
-               }
-       }
-}
index c388bee71d579f04efeba6bb5491a767299052f2..25f24e317b0e0687c21b88028e628462531e0f70 100644 (file)
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
+import eu.etaxonomy.taxeditor.ui.element.GatheringEventUnitElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection;
+import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.PointElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
@@ -27,10 +39,21 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 public class DerivedUnitGeneralDetailElement extends
                AbstractCdmDetailElement<DerivedUnitFacade> {
 
+    boolean showOnlyDerivedUnitData = false;
+
        private ToggleableTextElement toggleableText_titleCache;
+       private EnumComboElement<SpecimenOrObservationType> combo_specorobstype;
+       private EntitySelectionElement<NamedArea> selection_country;
+       private LanguageStringWithLabelElement languageText_locality;
+       private PointElement element_point;
+       private NumberWithLabelElement number_elevation;
+       private TimePeriodElement element_date;
+       private EntitySelectionElement<AgentBase> selection_collector;
+       private TextWithLabelElement text_collectingNumber;
        private EntitySelectionElement<Collection> selection_collection;
        private TextWithLabelElement text_accessionNumber;
-
+       private GatheringEventUnitElement element_elevation;
+       private CheckboxElement checkIsPublish;
 
 
        /**
@@ -39,7 +62,7 @@ public class DerivedUnitGeneralDetailElement extends
         */
        public DerivedUnitGeneralDetailElement(CdmFormFactory formFactory,
                        ICdmFormElement formElement) {
-               super(formFactory, formElement);
+           super(formFactory, formElement);
        }
 
        /*
@@ -55,7 +78,34 @@ public class DerivedUnitGeneralDetailElement extends
                toggleableText_titleCache = formFactory.createToggleableTextField(
                                formElement, "Title Cache", entity.getTitleCache(),
                                entity.isProtectedTitleCache(), style);
-               toggleableText_titleCache.setEnabled(false);
+        //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
+               if(showOnlyDerivedUnitData){
+                   toggleableText_titleCache.setEnabled(false);
+               }
+               else{
+                   combo_specorobstype = formFactory.createEnumComboElement(SpecimenOrObservationType.class, formElement, style);
+                   combo_specorobstype.setSelection(entity.getType());
+                   selection_country = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
+                           formElement, "Country",
+                           entity.getCountry(), EntitySelectionElement.NOTHING, style);
+                   languageText_locality = formFactory
+                           .createLanguageStringWithLabelElement(formElement, "Locality",
+                                   entity.getLocality(), style);
+                   element_point = formFactory.createPointElement(formElement,
+                           entity.getExactLocation(), style);
+                   element_elevation = formFactory.createGatheringEventUnitElement(
+                           formElement, "Elevation : ", entity, MinMaxTextSection.UnitType.ELEVATION,  style);
+
+                   element_date = formFactory.createTimePeriodElement(formElement, "Date",
+                           entity.getGatheringPeriod(), style);
+                   selection_collector = formFactory
+                           .createSelectionElement(AgentBase.class,
+                                   getConversationHolder(), formElement, "Collector",
+                                   entity.getCollector(), EntitySelectionElement.ALL,
+                                   style);
+                   text_collectingNumber = formFactory.createTextWithLabelElement(formElement,
+                           "Collecting number", entity.getFieldNumber(), style);
+               }
                selection_collection = formFactory
                                .createSelectionElement(Collection.class,
                                                getConversationHolder(), formElement, "Collection",
@@ -64,6 +114,7 @@ public class DerivedUnitGeneralDetailElement extends
                text_accessionNumber = formFactory.createTextWithLabelElement(
                                formElement, "Accession Number", entity.getAccessionNumber(),
                                style);
+        checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
 
        }
 
@@ -76,18 +127,42 @@ public class DerivedUnitGeneralDetailElement extends
         */
        @Override
        public void handleEvent(Object eventSource) {
-           if (eventSource == toggleableText_titleCache) {
-               getEntity().setTitleCache(toggleableText_titleCache.getText(),
-                       toggleableText_titleCache.getState());
-           }
-           else if (eventSource == selection_collection) {
-               getEntity().setCollection(selection_collection.getSelection());
-           } else if (eventSource == text_accessionNumber) {
-               getEntity().setAccessionNumber(text_accessionNumber.getText());
-           }
-           if (eventSource != toggleableText_titleCache) {
-               toggleableText_titleCache.setText(getEntity().getTitleCache());
-           }
+               if (eventSource == toggleableText_titleCache) {
+                       getEntity().setTitleCache(toggleableText_titleCache.getText(),
+                                       toggleableText_titleCache.getState());
+               } else if (eventSource == selection_country) {
+                       getEntity().setCountry(selection_country.getSelection());
+               } else if (eventSource == languageText_locality) {
+                       LanguageString locality = languageText_locality.getLanguageString();
+                       getEntity().setLocality(locality);
+               } else if (eventSource == element_point) {
+                       getEntity().setExactLocation(element_point.getPoint());
+               } else if (eventSource == number_elevation) {
+                       getEntity().setAbsoluteElevation(number_elevation.getInteger());
+               } else if (eventSource == element_date) {
+                       getEntity().setGatheringPeriod(element_date.getTimePeriod());
+               } else if (eventSource == selection_collector) {
+                       getEntity().setCollector(selection_collector.getSelection());
+               } else if (eventSource == text_collectingNumber) {
+                       getEntity().setFieldNumber(text_collectingNumber.getText());
+               }
+                 else if (eventSource == selection_collection) {
+                       getEntity().setCollection(selection_collection.getSelection());
+               } else if (eventSource == text_accessionNumber) {
+                       getEntity().setAccessionNumber(text_accessionNumber.getText());
+               } else if (eventSource == combo_specorobstype) {
+                       getEntity().setType(combo_specorobstype.getSelection());
+               } else if (eventSource == checkIsPublish) {
+                   getEntity().innerDerivedUnit().setPublish(checkIsPublish.getSelection());
+               }
+
+               if (eventSource != toggleableText_titleCache) {
+                       toggleableText_titleCache.setText(getEntity().getTitleCache());
+               }
        }
 
+    public void setShowOnlyDerivedUnitData(boolean showOnlyDerivedUnitData) {
+        this.showOnlyDerivedUnitData = showOnlyDerivedUnitData;
+    }
+
 }
index 6b48d0796e3e2f732966c6e8f3170518214a58c0..2e2ff814237a3394ed25f97bba20381a7bd51b75 100644 (file)
@@ -26,7 +26,10 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class DerivedUnitGeneralDetailSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
 
-       /**
+    //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
+       private DerivedUnitGeneralDetailElement derivedUnitGeneralDetailElement;
+
+    /**
         * @param formFactory
         * @param conversation
         * @param parentElement
@@ -53,7 +56,12 @@ public class DerivedUnitGeneralDetailSection extends AbstractCdmDetailSection<De
         */
        @Override
        protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
-           return formFactory.createDerivedUnitGeneralDetailElement(parentElement);
+           derivedUnitGeneralDetailElement = formFactory.createDerivedUnitGeneralDetailElement(parentElement);
+        return derivedUnitGeneralDetailElement;
+       }
+
+       public void setShowOnlyDerivedUnitData(boolean showOnlyDerivedUnitData){
+           derivedUnitGeneralDetailElement.setShowOnlyDerivedUnitData(showOnlyDerivedUnitData);
        }
 
 }
index f9405739c604f5070a98b931d22b4e0c32005a19..9d9c4ab5e0b1aaefcfd4b0f85a3c34dc51cba340 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
@@ -38,6 +39,7 @@ public class DeterminationEventDetailElement extends
        private TermComboElement<DefinedTerm> combo_determinationModifier;
        private CheckboxElement checkbox_preferredFlag;
        private EntitySelectionElement<TaxonBase> selection_taxonBase;
+       private EntitySelectionElement<TaxonNameBase> selectionTaxonNameBase;
 
        // private TODO a set of references
 
@@ -79,6 +81,7 @@ public class DeterminationEventDetailElement extends
                this.entity = entity;
                combo_determinationModifier.setSelection(entity.getModifier());
                selection_taxonBase.setEntity(entity.getTaxon());
+               selectionTaxonNameBase.setEntity(entity.getTaxonName());
                super.setEntity(entity);
        }
 
@@ -92,6 +95,10 @@ public class DeterminationEventDetailElement extends
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
+           selectionTaxonNameBase = formFactory
+                   .createSelectionElement(TaxonNameBase.class,
+                           getConversationHolder(), element, "Taxon Name", null,
+                           EntitySelectionElement.NOTHING, style);
                selection_taxonBase = formFactory
                                .createSelectionElement(TaxonBase.class,
                                                getConversationHolder(), element, "Taxon", null,
@@ -124,8 +131,13 @@ public class DeterminationEventDetailElement extends
                        getEntity().setModifier(combo_determinationModifier.getSelection());
                } else if (eventSource == checkbox_preferredFlag) {
                        getEntity().setPreferredFlag(checkbox_preferredFlag.getSelection());
+               } else if (eventSource == selectionTaxonNameBase) {
+                   getEntity().setTaxonName(selectionTaxonNameBase.getSelection());
                } else if (eventSource == selection_taxonBase) {
-                       getEntity().setTaxon(selection_taxonBase.getSelection());
+                       TaxonBase taxon = selection_taxonBase.getSelection();
+            getEntity().setTaxon(taxon);
+            getEntity().setTaxonName(taxon.getName());
+            selectionTaxonNameBase.setEntity(taxon.getName());
                }
                // else if(eventSource == TODO set of references){
                //
index e127f9dd8b9aad7111a113a9a9627383ad8bf05f..e511bf6eb6af14dead8e3e255d3fbf3685a16c34 100644 (file)
@@ -20,6 +20,7 @@ import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.GatheringEventUnitElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
@@ -51,6 +52,7 @@ public class FieldUnitGeneralDetailElement extends AbstractCdmDetailElement<Deri
     private EntitySelectionElement<AgentBase> selection_collector;
     private TextWithLabelElement text_collectingNumber;
     private GatheringEventUnitElement element_elevation;
+    private CheckboxElement checkIsPublish;
 
     /**
      * @param formFactory
@@ -93,6 +95,7 @@ public class FieldUnitGeneralDetailElement extends AbstractCdmDetailElement<Deri
                 "Collector", entity.getCollector(), EntitySelectionElement.ALL, style);
         text_collectingNumber = formFactory.createTextWithLabelElement(formElement, "Collecting number",
                 entity.getFieldNumber(), style);
+        checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
     }
 
     /*
@@ -123,6 +126,8 @@ public class FieldUnitGeneralDetailElement extends AbstractCdmDetailElement<Deri
             getEntity().setFieldNumber(text_collectingNumber.getText());
         } else if (eventSource == combo_specorobstype) {
             getEntity().setType(combo_specorobstype.getSelection());
+        } else if (eventSource == checkIsPublish) {
+            getEntity().innerFieldUnit().setPublish(checkIsPublish.getSelection());
         }
 
         if (eventSource != toggleableText_titleCache) {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenHierarchyDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenHierarchyDetailElement.java
new file mode 100644 (file)
index 0000000..70623d7
--- /dev/null
@@ -0,0 +1,87 @@
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+
+package eu.etaxonomy.taxeditor.ui.section.occurrence;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.UUID;
+
+import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Tree;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateContentProvider;
+import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
+
+/**
+ * @author n.hoffmann
+ * @created Dec 16, 2010
+ * @version 1.0
+ */
+public class SpecimenHierarchyDetailElement extends AbstractCdmDetailElement<SpecimenOrObservationBase<?>> {
+
+    /**
+     * @param formFactory
+     * @param formElement
+     */
+    public SpecimenHierarchyDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
+     * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
+     */
+    @Override
+    protected void createControls(ICdmFormElement formElement, SpecimenOrObservationBase<?> entity, int style) {
+        TreeViewer viewer = new TreeViewer(getLayoutComposite());
+        DerivateLabelProvider labelProvider = new DerivateLabelProvider();
+        Tree tree = viewer.getTree();
+
+        labelProvider.setConversation(getConversationHolder());
+        tree.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
+        viewer.setContentProvider(new DerivateContentProvider());
+        viewer.setLabelProvider(labelProvider);
+        //get root (field unit)
+        Collection<FieldUnit> fieldUnits = CdmStore.getService(IOccurrenceService.class).getFieldUnits(entity.getUuid());
+        Collection<UUID> fieldUnitUuids = new HashSet<UUID>();
+        for (FieldUnit fieldUnit : fieldUnits) {
+            fieldUnitUuids.add(fieldUnit.getUuid());
+        }
+        viewer.setInput(Collections.singleton(fieldUnitUuids));
+
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+     * .lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+    }
+
+}
@@ -13,47 +13,50 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
 /**
- * <p>DerivedUnitFacadeDetailSection class.</p>
- *
  * @author n.hoffmann
- * @created Jun 17, 2010
+ * @created Dec 16, 2010
  * @version 1.0
  */
-public class DerivedUnitFacadeDetailSection extends AbstractCdmDetailSection<DerivedUnit> {
-
-       /**
-        * <p>Constructor for DerivedUnitFacadeDetailSection.</p>
-        *
-        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        * @param selectionProvider a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
-        * @param style a int.
+public class SpecimenHierarchyDetailSection extends AbstractCdmDetailSection<SpecimenOrObservationBase<?>> {
+
+       private SpecimenHierarchyDetailElement specimenHierarchyDetailElement;
+
+    /**
+        * @param formFactory
+        * @param conversation
+        * @param parentElement
+        * @param selectionProvider
+        * @param style
         */
-       public DerivedUnitFacadeDetailSection(CdmFormFactory formFactory, ConversationHolder conversation,
-                       ICdmFormElement parentElement,
+       public SpecimenHierarchyDetailSection(CdmFormFactory formFactory,
+                       ConversationHolder conversation, ICdmFormElement parentElement,
                        ISelectionProvider selectionProvider, int style) {
                super(formFactory, conversation, parentElement, selectionProvider, style);
        }
 
-       /** {@inheritDoc} */
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getHeading()
+        */
        @Override
        public String getHeading() {
-               return "Unit";
+               return "Specimen Hierarchy";
        }
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
         */
        @Override
-       protected AbstractCdmDetailElement<DerivedUnit> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnit> parentElement, int style) {
-           return formFactory.createDerivedUnitFacadeDetailElement(parentElement);
+       protected AbstractCdmDetailElement<SpecimenOrObservationBase<?>> createCdmDetailElement(AbstractCdmDetailSection<SpecimenOrObservationBase<?>> parentElement, int style) {
+           specimenHierarchyDetailElement = formFactory.createSpecimenHierarchyDetailElement(parentElement);
+        return specimenHierarchyDetailElement;
        }
+
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java
new file mode 100644 (file)
index 0000000..90c462a
--- /dev/null
@@ -0,0 +1,170 @@
+// $Id$
+/**
+ * Copyright (C) 2014 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.ui.section.occurrence.association;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IParameter;
+import org.eclipse.core.commands.NotEnabledException;
+import org.eclipse.core.commands.NotHandledException;
+import org.eclipse.core.commands.Parameterization;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date Dec 1, 2014
+ *
+ */
+public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<DerivedUnitFacade> implements IDoubleClickListener{
+
+
+    private TableViewer associationsViewer;
+    private TableViewer typeDesignationViewer;
+
+    public TaxonAssociationDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+
+        //TODO add context menu for deleting associations
+
+        Label associationsLabel = formFactory.createLabel(getLayoutComposite(), "Individuals Associations");
+        associationsLabel.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+
+        associationsViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+        associationsViewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        associationsViewer.setContentProvider(new ArrayContentProvider());
+        Collection<IndividualsAssociation> individualsAssociations = CdmStore.getService(IOccurrenceService.class).listIndividualsAssociations(entity.innerDerivedUnit(), null, null, null, null);
+        //TODO implement service method for this which is just used in the label provider
+        Collection<TaxonBase<?>> associatedTaxa = new HashSet<TaxonBase<?>>();
+        for (IndividualsAssociation individualsAssociation : individualsAssociations) {
+            if(individualsAssociation.getInDescription().isInstanceOf(TaxonDescription.class)){
+                TaxonDescription taxonDescription = HibernateProxyHelper.deproxy(individualsAssociation.getInDescription(), TaxonDescription.class);
+                associatedTaxa.add(taxonDescription.getTaxon());
+            }
+        }
+        associationsViewer.setInput(associatedTaxa);
+        associationsViewer.addDoubleClickListener(this);
+
+        Label typeLabel = formFactory.createLabel(getLayoutComposite(), "Type Designations");
+        typeLabel.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+
+        typeDesignationViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+        typeDesignationViewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        typeDesignationViewer.setContentProvider(new ArrayContentProvider());
+        Collection<SpecimenTypeDesignation> typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(entity.innerDerivedUnit(), null, null, null, null);
+        //TODO implement service method for this which is just used in the label provider
+        Collection<TaxonBase<?>> typedTaxa = new HashSet<TaxonBase<?>>();
+        for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignations) {
+            for (TaxonNameBase taxonNameBase : specimenTypeDesignation.getTypifiedNames()) {
+                Set taxa = taxonNameBase.getTaxa();
+                for (Object taxon : taxa) {
+                    if(taxon instanceof CdmBase && ((CdmBase)taxon).isInstanceOf(TaxonBase.class)){
+                        typedTaxa.add(HibernateProxyHelper.deproxy(taxon, TaxonBase.class));
+                    }
+                }
+            }
+        }
+        typeDesignationViewer.setInput(typedTaxa);
+        typeDesignationViewer.addDoubleClickListener(this);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void handleEvent(Object eventSource) {
+        //empty
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
+     */
+    @Override
+    public void doubleClick(DoubleClickEvent event) {
+        if(event.getSelection() instanceof IStructuredSelection){
+            Object firstElement = ((IStructuredSelection) event.getSelection()).getFirstElement();
+            if(firstElement instanceof TaxonBase<?>){
+                TaxonBase<?> taxonBase = (TaxonBase<?>)firstElement;
+                String commandId = "eu.etaxonomy.taxeditor.editor.openTaxonEditor";
+
+
+                ArrayList parameters = new ArrayList();
+                IParameter iparam = null;
+
+                //get the command from plugin.xml
+                IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+                ICommandService cmdService = (ICommandService)window.getService(ICommandService.class);
+                Command cmd = cmdService.getCommand(commandId);
+
+                //get the parameter
+                try {
+                    iparam = cmd.getParameter("eu.etaxonomy.taxeditor.editor.taxonParameter");
+                } catch (NotDefinedException e1) {
+                    MessagingUtils.error(this.getClass(), "Command not defined", e1);
+                }
+                Parameterization params = new Parameterization(iparam, (taxonBase).getUuid().toString());
+                parameters.add(params);
+
+                //build the parameterized command
+                ParameterizedCommand pc = new ParameterizedCommand(cmd, (Parameterization[]) parameters.toArray(new Parameterization[parameters.size()]));
+
+                //execute the command
+                IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
+                try {
+                    handlerService.executeCommand(pc, null);
+                } catch (ExecutionException e) {
+                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+                } catch (NotDefinedException e) {
+                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+                } catch (NotEnabledException e) {
+                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+                } catch (NotHandledException e) {
+                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+                }
+            }
+        }
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailSection.java
new file mode 100644 (file)
index 0000000..26999ef
--- /dev/null
@@ -0,0 +1,53 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.ui.section.occurrence.association;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ *
+ * @author pplitzner
+ * @date Dec 1, 2014
+ *
+ */
+public class TaxonAssociationDetailSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
+
+       public TaxonAssociationDetailSection(CdmFormFactory formFactory,
+                       ConversationHolder conversation, ICdmFormElement parentElement,
+                       ISelectionProvider selectionProvider, int style) {
+               super(formFactory, conversation, parentElement, selectionProvider, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getHeading()
+        */
+       /** {@inheritDoc} */
+       @Override
+       public String getHeading() {
+               return "Taxon Associations";
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+        */
+       @Override
+       protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+           return formFactory.createTaxonAssociationDetailElement(parentElement);
+       }
+}
index beae890df00451b47e6cea5c9b89a68cbe530ffb..4d2924a4c6d9e4b552948a87c75cf846ffc502ec 100644 (file)
@@ -39,8 +39,7 @@ public abstract class AbstractSampleDesignationDetailSection extends
        /** {@inheritDoc} */
        @Override
        public Identifier createNewElement() {
-           Identifier identifier = getEntity().addIdentifier(null, DerivateLabelProvider.getSampleDesignationTerm());
-               return identifier;
+               return Identifier.NewInstance(getEntity(), null, DerivateLabelProvider.getSampleDesignationTerm());
        }
 
        /* (non-Javadoc)
index 941e5dbf490f8560b900f385fddf291fe772f603..f44bccdb3d5fb2ba5c2ae907ef9e6ed4ddfc34bf 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
 import eu.etaxonomy.cdm.model.molecular.Cloning;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @date 15.01.2014
  *
  */
-public class AmplificationCloningDetailElement  extends AbstractCdmDetailElement<Amplification> {
+public class AmplificationCloningDetailElement extends AbstractCdmDetailElement<AmplificationResult> {
     private TextWithLabelElement textCloningStrain;
     private TimePeriodElement date;
     private EntitySelectionElement<AgentBase> selectionCloningStaff;
@@ -50,7 +50,7 @@ public class AmplificationCloningDetailElement  extends AbstractCdmDetailElement
      * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
      */
     @Override
-    protected void createControls(ICdmFormElement formElement, Amplification entity, int style) {
+    protected void createControls(ICdmFormElement formElement, AmplificationResult entity, int style) {
         Cloning cloning = entity.getCloning();
         textCloningStrain = formFactory.createTextWithLabelElement(formElement, "Cloning Strain", cloning==null?"":cloning.getStrain(), style);
         date = formFactory.createTimePeriodElement(formElement, "Cloning Date", cloning==null?null:cloning.getTimeperiod(), style);
index b4b2066a5b6d49edcce813136785f5f764517c4f..0de960b8a518fce45964a743d967dd17779719cc 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  * @date 15.01.2014
  *
  */
-public class AmplificationCloningDetailSection extends AbstractCdmDetailSection<Amplification> {
+public class AmplificationCloningDetailSection extends AbstractCdmDetailSection<AmplificationResult> {
 
     /**
      * @param formFactory
@@ -51,7 +51,7 @@ public class AmplificationCloningDetailSection extends AbstractCdmDetailSection<
      * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
      */
     @Override
-    protected AbstractCdmDetailElement<Amplification> createCdmDetailElement(AbstractCdmDetailSection<Amplification> parentElement, int style) {
+    protected AbstractCdmDetailElement<AmplificationResult> createCdmDetailElement(AbstractCdmDetailSection<AmplificationResult> parentElement, int style) {
         return formFactory.createAmplificationCloningDetailElement(parentElement);
     }
 
index ee60c70c9e212c0dc3d9630ead4da10e5e9e2887..7bf2e9f5519fe5a3da3250bfa134eaace0e8052a 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Collections;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
@@ -24,7 +24,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  * @date 26.02.2014
  *
  */
-public class AmplificationGelPhotoCollectionDetailSection extends AbstractEntityCollectionSection<Amplification, Media> {
+public class AmplificationGelPhotoCollectionDetailSection extends AbstractEntityCollectionSection<AmplificationResult, Media> {
 
     /**
      * @param formFactory
@@ -44,7 +44,7 @@ public class AmplificationGelPhotoCollectionDetailSection extends AbstractEntity
      * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#getCollection(java.lang.Object)
      */
     @Override
-    public Collection<Media> getCollection(Amplification entity) {
+    public Collection<Media> getCollection(AmplificationResult entity) {
         if(entity.getGelPhoto()!=null){
             return Collections.singleton(entity.getGelPhoto());
         }
index 8c0b4559e6d7bca98baf6d15a5f0c69e07da5ce3..b6c96c8e1d80d4f0c47ba2606f92a0226caa98c1 100644 (file)
@@ -9,7 +9,7 @@
 */
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
-import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
@@ -20,7 +20,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  * @date 15.01.2014
  *
  */
-public class AmplificationGelPhotoDetailElement  extends AbstractCdmDetailElement<Amplification> {
+public class AmplificationGelPhotoDetailElement  extends AbstractCdmDetailElement<AmplificationResult> {
     private AmplificationGelPhotoCollectionDetailSection sectionGelPhoto;
 
     /**
@@ -39,7 +39,7 @@ public class AmplificationGelPhotoDetailElement  extends AbstractCdmDetailElemen
      * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
      */
     @Override
-    protected void createControls(ICdmFormElement formElement, Amplification entity, int style) {
+    protected void createControls(ICdmFormElement formElement, AmplificationResult entity, int style) {
         sectionGelPhoto = formFactory.createAmplificationGelPhotoCollectionDetailSection(getConversationHolder(), formElement, style);
         sectionGelPhoto.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
         sectionGelPhoto.setEntity(entity);
index aa46c283dbb37fa4309a3650d15aaed8b3a1c581..57c02c415c9c3177ddb1ce8487381d38246ff99a 100644 (file)
@@ -13,7 +13,6 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
 import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
@@ -59,10 +58,10 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
      */
     @Override
     protected void createControls(ICdmFormElement formElement, Amplification entity, int style) {
-        textDesignation = formFactory.createTextWithLabelElement(formElement, "Designation", entity.getDescription(), style);
+        textDesignation = formFactory.createTextWithLabelElement(formElement, "Designation", entity.getLabelCache(), style);
         textDesignation.setEnabled(false);
-        //TODO institution
-//        selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", entity.getInstitution(), EntitySelectionElement.ALL, style);
+        textDesignation.setBackground(getPersistentBackground());
+        selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", entity.getInstitution(), EntitySelectionElement.ALL, style);
         selectionAmplificationStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Amplification staff", entity.getActor(), EntitySelectionElement.ALL, style);
         dateAmplification = formFactory.createTimePeriodElement(formElement, "Date", entity.getTimeperiod(), style);
         comboMarker = formFactory.createDefinedTermComboElement(TermType.DnaMarker, formElement, "DNA Marker", entity.getDnaMarker(), style);
@@ -72,60 +71,6 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
         AnnotationSection annotationSection = formFactory.createAnnotationSection(getConversationHolder(), formElement, style);
         annotationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
         annotationSection.setEntity(entity);
-
-        updateDesignationText();
-    }
-
-    private void updateDesignationText(){
-        String institutionName = "";
-        String staffName = "";
-        String dnaMarkerString = "";
-        String dateString = "";
-
-        //retrieve data
-        //TODO institution
-//        Institution selection = selectionInstitution.getSelection();
-//        if(selection!=null){
-//            institutionName = selection.getName();
-//        }
-        AgentBase staff = selectionAmplificationStaff.getSelection();
-        if(staff!=null){
-            staffName = staff.getTitleCache();
-        }
-        DefinedTerm dnaMarker = comboMarker.getSelection();
-        if(dnaMarker!=null){
-            dnaMarkerString = dnaMarker.generateTitle();
-        }
-        TimePeriod timePeriod = dateAmplification.getTimePeriod();
-        if(timePeriod!=null){
-            dateString = timePeriod.toString()!=null?timePeriod.toString():"";
-        }
-
-        //assemble string
-        String designation = "";
-        if(!institutionName.equals("")){
-            designation += institutionName;
-        }
-        if(!staffName.equals("")){
-            if(!designation.equals("")){
-                designation += "_";
-            }
-            designation += staffName;
-        }
-        if(!dnaMarkerString.equals("")){
-            if(!designation.equals("")){
-                designation += "_";
-            }
-            designation += dnaMarkerString;
-        }
-        if(!dateString.equals("")){
-            if(!designation.equals("")){
-                designation += "_";
-            }
-            designation += dateString;
-        }
-        textDesignation.setText(designation);
-        getEntity().setDescription(designation);
     }
 
     /*
@@ -145,16 +90,12 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
         }
         else if(eventSource==dateAmplification){
             getEntity().setTimeperiod(dateAmplification.getTimePeriod());
-            updateDesignationText();
         }
         else if(eventSource==selectionAmplificationStaff){
             getEntity().setActor(selectionAmplificationStaff.getEntity());
-            updateDesignationText();
         }
         else if(eventSource==selectionInstitution){
-            //TODO institution
-//            getEntity().setInstitution(selectionInstitution.getSelection());
-            updateDesignationText();
+            getEntity().setInstitution(selectionInstitution.getSelection());
         }
         else if(eventSource==selectionPrimerFW){
             getEntity().setForwardPrimer(selectionPrimerFW.getSelection());
@@ -162,5 +103,7 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
         else if(eventSource==selectionPrimerRW){
             getEntity().setReversePrimer(selectionPrimerRW.getSelection());
         }
+        getEntity().updateCache();
+        textDesignation.setText(getEntity().getLabelCache());
     }
 }
\ No newline at end of file
index dd1faa70e9e7c599c5ec2a82f04d548752947bb8..2cbf45f6bee259a6eac4a1096ad76c94a78d630d 100644 (file)
@@ -18,6 +18,7 @@ import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
@@ -34,10 +35,11 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaS
 
     private EntitySelectionElement<Institution> selectionInstitution;
     private EntitySelectionElement<AgentBase> selectionStaff;
-    private TimePeriodElement datePreservationDate;
+    private TimePeriodElement datePreparationDate;
     private NumberWithLabelElement numberPreservationTemperature;
     private TermComboElement<DefinedTerm> comboMaterialOrMethods;
     private TextWithLabelElement textBarcode;
+    private CheckboxElement checkIsPublish;
 
     /**
      * @param formFactory
@@ -60,7 +62,7 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaS
         AgentBase<?> staff = null;
         TimePeriod preparationDate = null;
         if(entity.getDerivedFrom()!=null){
-//            institution = entity.getDerivedFrom().getInstitution();
+            institution = entity.getDerivedFrom().getInstitution();
             staff = entity.getDerivedFrom().getActor();
             preparationDate = entity.getDerivedFrom().getTimeperiod();
         }
@@ -71,13 +73,13 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaS
             temperature = entity.getPreservation().getTemperature();
             definedMaterialOrMethod = entity.getPreservation().getDefinedMaterialOrMethod();
         }
-        //TODO institution
-//        selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", staff, EntitySelectionElement.ALL, style);
+        selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", institution, EntitySelectionElement.ALL, style);
         selectionStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Staff", staff, EntitySelectionElement.ALL, style);
-        datePreservationDate = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
+        datePreparationDate = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
         numberPreservationTemperature = formFactory.createNumberTextWithLabelElement(formElement, "Preservation Temp. [C°]", temperature, style);
         comboMaterialOrMethods = formFactory.createDefinedTermComboElement(TermType.MaterialOrMethod, formElement, "Materials & Methods", definedMaterialOrMethod, style);
         textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
+        checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
 
     }
 
@@ -90,11 +92,20 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaS
      */
     @Override
     public void handleEvent(Object eventSource) {
-        if(eventSource==datePreservationDate){
-            addPreservationMethod().setTimeperiod(datePreservationDate.getTimePeriod());
+        if(eventSource==datePreparationDate){
+            if(getEntity().getDerivedFrom()!=null){
+                getEntity().getDerivedFrom().setTimeperiod(datePreparationDate.getTimePeriod());
+            }
+        }
+        else if(eventSource==selectionInstitution){
+            if(getEntity().getDerivedFrom()!=null){
+                getEntity().getDerivedFrom().setInstitution(selectionInstitution.getSelection());
+            }
         }
         else if(eventSource==selectionStaff){
-            addPreservationMethod().setActor(selectionStaff.getSelection());
+            if(getEntity().getDerivedFrom()!=null){
+                getEntity().getDerivedFrom().setActor(selectionStaff.getSelection());
+            }
         }
         else if(eventSource==numberPreservationTemperature){
             addPreservationMethod().setTemperature(numberPreservationTemperature.getDouble());
@@ -105,6 +116,9 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaS
         else if(eventSource==textBarcode){
             getEntity().setBarcode(textBarcode.getText());
         }
+        else if(eventSource==checkIsPublish){
+            getEntity().setPublish(checkIsPublish.getSelection());
+        }
     }
 
     private PreservationMethod addPreservationMethod(){
index da429331e916ea70ce080e7f115b1afefd4d1f19..4a997e34266614adf0e54fba1c2d36ee21707796 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.cdm.model.molecular.SequenceString;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -56,14 +57,13 @@ public class PrimerGeneralDetailElement extends AbstractCdmDetailElement<Primer>
     @Override
     protected void createControls(ICdmFormElement formElement, Primer entity, int style) {
         textPrimerName = formFactory.createTextWithLabelElement(formElement, "Primer Name", entity.getLabel(), style);
-        String sequenceString = "";
+        String sequenceString = null;
         if(entity.getSequence()!=null){
             sequenceString = entity.getSequence().getString();
         }
         textPrimerSequence = formFactory.createTextWithLabelElement(formElement, "Primer seq. 5'->3'", sequenceString, style);
 
-        //TODO dnaMarker
-//        comboMarker = formFactory.createDefinedTermComboElement(TermType.DnaMarker, formElement, "DNA Marker", entity.getDnaMarker(), style);
+        comboMarker = formFactory.createDefinedTermComboElement(TermType.DnaMarker, formElement, "DNA Marker", entity.getDnaMarker(), style);
 
         selectionReference = formFactory
                 .createSelectionElement(Reference.class,
@@ -89,8 +89,7 @@ public class PrimerGeneralDetailElement extends AbstractCdmDetailElement<Primer>
             getEntity().setLabel(textPrimerName.getText());
         }
         else if(eventSource==comboMarker){
-            //TODO dnaMarker
-//            getEntity().setDnaMarker(comboMarker.getSelection());
+            getEntity().setDnaMarker(comboMarker.getSelection());
         }
         else if(eventSource==textPrimerSequence){
             SequenceString sequenceString = getEntity().getSequence();
index ef54fb2daf9bdde72fd0b045ce9b015bb14f65a9..90d754c8864e3890ce601bc5b51eb17b2eb20de6 100644 (file)
@@ -65,7 +65,11 @@ public class SampleDesignationTextDetailElement extends
     @Override
     public void handleEvent(Object eventSource) {
         if(eventSource==text_description){
-            this.entity.setIdentifier(text_description.getText());
+            String identifier = null;
+            if(!text_description.getText().isEmpty()){
+                identifier = text_description.getText();
+            }
+            this.entity.setIdentifier(identifier);
         }
     }
 
index e4ac9865c715f234b0ac01e570261d92d2d84045..b6d5775dbeb533802fe582525aab5252d08a2099 100644 (file)
@@ -22,7 +22,6 @@ import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
@@ -36,7 +35,6 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
 
     private TermComboElement<DefinedTerm> comboMarker;
     private TextWithLabelElement textConsensusSequence;
-    private NumberWithLabelElement textConsensusSequenceLength;
     private TextWithLabelElement textGeneticAccessNo;
     private UriWithLabelElement textNCBIUri;
     private UriWithLabelElement textENAUri;
@@ -109,7 +107,6 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
             }
             consensusSequence.setString(textConsensusSequence.getText());
             getEntity().setConsensusSequence(consensusSequence);
-            textConsensusSequenceLength.setNumber(consensusSequence.getLength());
         }
         else if(eventSource==textGeneticAccessNo){
             textGeneticAccessNo.setBackground(getPersistentBackground());
index 54f33c6fac6e0315550b92c0da3bc2f83c23b295..02cff91ee52fbb1f580bb0836d2aa9e1ab81b4ce 100644 (file)
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
 import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
 import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationSection;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
@@ -45,7 +48,24 @@ public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<Sin
     @Override
     protected void createControls(ICdmFormElement formElement, SingleRead entity, int style) {
         selectionPrimer = formFactory.createSelectionElement(Primer.class, getConversationHolder(), formElement, "Primer", entity.getPrimer(), EntitySelectionElement.ALL, style);
-        selectionAmplification = formFactory.createSelectionElement(Amplification.class, getConversationHolder(), formElement, "Amplification", entity.getAmplification(), EntitySelectionElement.ALL, style);
+        AmplificationResult amplificationResult = entity.getAmplificationResult();
+        if(amplificationResult==null){
+            amplificationResult = AmplificationResult.NewInstance();
+            amplificationResult.addSingleRead(entity);
+        }
+        selectionAmplification = formFactory.createSelectionElement(Amplification.class, getConversationHolder(), formElement, "Amplification", amplificationResult.getAmplification(), EntitySelectionElement.ALL, style);
+
+        AnnotationSection annotationSection = formFactory.createAnnotationSection(getConversationHolder(), formElement, style);
+        annotationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        annotationSection.setEntity(entity);
+
+        AmplificationCloningDetailSection cloningSection = formFactory.createAmplificationCloningDetailSection(getConversationHolder(), formElement, formFactory.getSelectionProvider(), style);
+        cloningSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        cloningSection.setEntity(amplificationResult);
+
+        AmplificationGelPhotoCollectionDetailSection gelPhotoSection = formFactory.createAmplificationGelPhotoCollectionDetailSection(getConversationHolder(), formElement, style);
+        gelPhotoSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        gelPhotoSection.setEntity(amplificationResult);
     }
 
     /*
@@ -60,8 +80,15 @@ public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<Sin
         if(eventSource==selectionPrimer){
             getEntity().setPrimer(selectionPrimer.getSelection());
         }
-        else if(eventSource==selectionAmplification){
-            selectionAmplification.getSelection().addSingleRead(getEntity());
+        else {
+            if(eventSource==selectionAmplification){
+                AmplificationResult amplificationResult = getEntity().getAmplificationResult();
+                if(amplificationResult==null){
+                    amplificationResult = AmplificationResult.NewInstance();
+                }
+                amplificationResult.setAmplification(selectionAmplification.getSelection());
+                amplificationResult.addSingleRead(getEntity());
+            }
         }
     }
 }
index ea72fbadf2ca383eabbc212bbda48a0dfde23667..59721c32fc63b65f2bac44a74a674f3359936dea 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 import org.apache.log4j.Logger;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
@@ -20,6 +21,7 @@ import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
@@ -36,13 +38,14 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<D
     static private final Logger logger = Logger.getLogger(TissueSampleGeneralDetailElement.class);
 
     private TermComboElement<DefinedTerm> comboKindOfTissue;
-    private EntitySelectionElement<AgentBase> selectionInstitution;
+    private EntitySelectionElement<Institution> selectionInstitution;
     private EntitySelectionElement<AgentBase> selectionStaff;
     private TimePeriodElement datePreparation;
     private TermComboElement<DefinedTerm> comboPreservationMedium;
     private EntitySelectionElement<Collection> selectionCollection;
     private TextWithLabelElement textAccessionNumber;
     private TextWithLabelElement textBarcode;
+    private CheckboxElement checkIsPublish;
 
 
     /**
@@ -62,25 +65,27 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<D
      */
     @Override
     protected void createControls(ICdmFormElement formElement, DnaSample entity, int style) {
-        //TODO handle all parameters here and in handleEvent()
         comboKindOfTissue = formFactory.createDefinedTermComboElement(TermType.KindOfUnit, formElement, "Kind Of Tissue", entity.getKindOfUnit(), style);
-        //TODO: institute
         TimePeriod preparationDate = null;
         DefinedTerm preservationMedium = null;
         AgentBase<?> staff = null;
+        Institution institution = null;
         if(entity.getDerivedFrom()!=null){
             staff = entity.getDerivedFrom().getActor();
             preparationDate = entity.getDerivedFrom().getTimeperiod();
+            institution = entity.getDerivedFrom().getInstitution();
         }
         if(entity.getPreservation()!=null){
             preservationMedium = entity.getPreservation().getMedium();
         }
+        selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", institution, EntitySelectionElement.ALL, style);
         selectionStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Staff", staff, EntitySelectionElement.ALL,style);
         datePreparation = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
         comboPreservationMedium = formFactory.createDefinedTermComboElement(TermType.MaterialOrMethod, formElement, "Preservation medium", preservationMedium, style);
         selectionCollection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
         textAccessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
         textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
+        checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
 
     }
 
@@ -93,7 +98,6 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<D
      */
     @Override
     public void handleEvent(Object eventSource) {
-        //TODO: institute
         if(eventSource==comboKindOfTissue) {
             getEntity().setKindOfUnit(comboKindOfTissue.getSelection());
         }
@@ -114,11 +118,19 @@ public class TissueSampleGeneralDetailElement extends AbstractCdmDetailElement<D
                 getEntity().getDerivedFrom().setTimeperiod(datePreparation.getTimePeriod());
             }
         }
+        else if(eventSource==selectionInstitution){
+            if(getEntity().getDerivedFrom()!=null){
+                getEntity().getDerivedFrom().setInstitution(selectionInstitution.getSelection());
+            }
+        }
         else if(eventSource==selectionStaff){
             if(getEntity().getDerivedFrom()!=null){
                 getEntity().getDerivedFrom().setActor(selectionStaff.getSelection());
             }
         }
+        else if(eventSource==checkIsPublish){
+            getEntity().setPublish(checkIsPublish.getSelection());
+        }
     }
 
     private PreservationMethod addPreservationMethod(){
index a1daa3a347e8a5d4d1bd01d023f5055c9537b0cc..0f6000b34a90e585d58d10cdddfe896ddcb65be1 100644 (file)
@@ -26,6 +26,7 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
@@ -51,6 +52,7 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
     private EntitySelectionElement<Collection> selection_collection;
     private TextWithLabelElement text_accessionNumber;
     private EntitySelectionElement<Reference> selection_publishedIn;
+    private CheckboxElement checkIsPublish;
 
     private MediaDetailElement mediaDetailElement;
     /**
@@ -92,6 +94,7 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
                 }
             }
             selection_publishedIn = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
+            checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
 
             mediaDetailElement = formFactory.createMediaDetailElement(formElement);
             mediaDetailElement.setEntity(media);
@@ -149,13 +152,21 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
                 primaryMediaSource.setCitation(selection_publishedIn.getSelection());
             }
         }
+        else if(eventSource==checkIsPublish){
+            getEntity().setPublish(checkIsPublish.getSelection());
+        }
     }
 
     public void toogleAdvancedMediaView() {
-        mediaDetailElement.toggleAdvancedMediaView();
+        if(mediaDetailElement!=null){
+            mediaDetailElement.toggleAdvancedMediaView();
+        }
     }
 
     public boolean isAdvancedMediaView() {
+        if(mediaDetailElement==null){
+            return false;
+        }
         return mediaDetailElement.isAdvancedMediaView();
     }
 
index 49dbea3a7c2e6dc7cf0037ed1023bfbad949a4ce..f8b342089b0a42e220ad1dd690da910bf2a678fa 100644 (file)
@@ -87,15 +87,8 @@ public class MediaSpecimenGeneralDetailSection  extends AbstractCdmDetailSection
     protected Control createToolbar() {
         ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
 
-        final String label;
-
-        if(mediaSpecimenGeneralDetailElement.isAdvancedMediaView()){
-            label = "Use simple media view";
-        }
-        else{
-            label = "Use advanced media view";
-        }
-        Action addAction = new Action("Use advanced media view", IAction.AS_PUSH_BUTTON) {
+        String actionLabel = "Change View Type";
+        Action addAction = new Action(actionLabel, IAction.AS_PUSH_BUTTON) {
             /* (non-Javadoc)
              * @see org.eclipse.jface.action.Action#run()
              */
@@ -104,7 +97,7 @@ public class MediaSpecimenGeneralDetailSection  extends AbstractCdmDetailSection
                 mediaSpecimenGeneralDetailElement.toogleAdvancedMediaView();
             }
         };
-        addAction.setToolTipText(label);
+        addAction.setToolTipText(actionLabel);
 
         toolBarManager.add(addAction);
 
index 018b6c754f91369740eb6316531a443e740d4415..a9175681804242fd4de0d0f0ebc5b5ffc80ca804 100644 (file)
@@ -35,8 +35,6 @@ import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.model.TextHelper;
-import eu.etaxonomy.taxeditor.newWizard.AmplificationCloningWizardPage;
-import eu.etaxonomy.taxeditor.newWizard.AmplificationGelPhotoWizardPage;
 import eu.etaxonomy.taxeditor.newWizard.AmplificationGeneralWizardPage;
 import eu.etaxonomy.taxeditor.newWizard.PrimerWizardPage;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -144,12 +142,6 @@ public class EditFromSelectionWizard extends Wizard implements
             addPage(new AmplificationGeneralWizardPage(formFactory,
                     selectionElement.getConversationHolder(),
                     (Amplification) entity));
-            addPage(new AmplificationCloningWizardPage(formFactory,
-                    selectionElement.getConversationHolder(),
-                    (Amplification) entity));
-            addPage(new AmplificationGelPhotoWizardPage(formFactory,
-                    selectionElement.getConversationHolder(),
-                    (Amplification) entity));
         } else {
                        MessagingUtils.warningDialog("Missing interface", this,
                                        "No detail element for current selection");
index 8f2ad3b6c523ea638f5d36994c45fca694add23e..0283c721d418df04c8b08337c05b79d4190ff013 100644 (file)
@@ -338,7 +338,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
             } else if (entity instanceof Primer){
                 return ((Primer) entity).getLabel();
             } else if (entity instanceof Amplification){
-                return ((Amplification) entity).getDescription();
+                return ((Amplification) entity).getLabelCache();
             }
 
                }
@@ -477,12 +477,13 @@ public class EntitySelectionElement<T extends ICdmBase> extends
                     }
                 }
                 else{
-                    try {
-                        //clone original
-                        clonedEntity = (T) ((CdmBase) originalEntity).clone();
-                    } catch (CloneNotSupportedException e1) {
-                        MessagingUtils.warningDialog(TRANSIENT_EDITING_WARNING_TITLE, this, TRANSIENT_EDITING_WARNING_TEXT);
-                    }
+                    //FIXME temporarily disabled cloning re-opening bug #2645 (EditFromSelectionWizard persists data even when canceled)
+//                    try {
+//                        //clone original
+//                        clonedEntity = (T) ((CdmBase) originalEntity).clone();
+//                    } catch (CloneNotSupportedException e1) {
+//                        MessagingUtils.warningDialog(TRANSIENT_EDITING_WARNING_TITLE, this, TRANSIENT_EDITING_WARNING_TEXT);
+//                    }
                 }
 
                    }
index 49a46a7dc39034f251cf9b6799d91f6fa29ed627..e486e7f5214747645392aaa9eed950261663fa77 100644 (file)
@@ -147,7 +147,7 @@ public class TranslationWizardPage extends WizardPage{
 
                LanguageString preferredLanguageString = MultilanguageTextHelper.getPreferredLanguageString(multilanguageText, getLanguages());
 
-               text_source = formFactory.createLanguageStringWithLabelElement(element, null, preferredLanguageString, TEXT_HEIGHT, SWT.NULL);
+               text_source = formFactory.createLanguageStringWithLabelElement(element, null, preferredLanguageString, TEXT_HEIGHT, false, SWT.NULL);
 
 //             text_source.setEnabled(false);
 
@@ -186,7 +186,7 @@ public class TranslationWizardPage extends WizardPage{
                        }
                });
 
-               text_target = formFactory.createLanguageStringWithLabelElement(element, null, null, TEXT_HEIGHT, SWT.NULL);
+               text_target = formFactory.createLanguageStringWithLabelElement(element, null, null, TEXT_HEIGHT, false, SWT.NULL);
 
                //
                // The automated translation did rely on the Google Translate API. Unfortunately this service is not free anymore.
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java
new file mode 100644 (file)
index 0000000..a862b69
--- /dev/null
@@ -0,0 +1,196 @@
+// $Id$
+/**
+ * Copyright (C) 2015 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.view;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
+
+/**
+ * This class provides the possibility to choose from a list of possible viewers
+ * which can be opened for a given input in a popup dialog.
+ *
+ * @author pplitzner
+ * @date Feb 23, 2015
+ *
+ */
+public class CdmViewerChooser extends PopupDialog implements ISelectionChangedListener, ILabelProvider{
+
+    private Object input;
+    private Map<Entry<Class<?>, String>, ICdmViewer> nameViewerMap;
+
+    public CdmViewerChooser(Shell parentShell) {
+        this(parentShell, SWT.RESIZE | SWT.ON_TOP, true, false, false, false, false, "Open in ...",
+                "Clicking will open the selected viewer");
+    }
+
+    public CdmViewerChooser(Shell parent, int shellStyle, boolean takeFocusOnOpen, boolean persistSize,
+            boolean persistLocation, boolean showDialogMenu, boolean showPersistActions, String titleText,
+            String infoText) {
+        super(parent, shellStyle, takeFocusOnOpen, persistSize, persistLocation, showDialogMenu, showPersistActions,
+                titleText, infoText);
+    }
+
+    /**
+     * Opens a popup dialog with all possible viewers for the given input.
+     * @param input the input for which the viewers are listed
+     */
+    public void chooseViewer(Object input){
+        this.input = input;
+        this.nameViewerMap = new HashMap<Entry<Class<?>, String>, ICdmViewer>();
+
+        IExtensionRegistry reg = Platform.getExtensionRegistry();
+        IConfigurationElement[] extensions = reg
+                .getConfigurationElementsFor("eu.etaxonomy.taxeditor.store.cdmViewer");
+        for (IConfigurationElement configElement : extensions) {
+            try {
+                Object object = configElement.createExecutableExtension("class");
+                if(object instanceof ICdmViewer){
+                    ICdmViewer cdmViewer = (ICdmViewer)object;
+                    Map<Class<?>, String> viewerClasses = cdmViewer.getViewerClasses(input);
+                    for (Entry<Class<?>, String> entry : viewerClasses.entrySet()) {
+                        nameViewerMap.put(entry, cdmViewer);
+                    }
+                }
+                else{
+                    MessagingUtils.error(CdmViewerChooser.class, new Status(IStatus.ERROR, TaxeditorStorePlugin.PLUGIN_ID, "Could not load cdmViewer extension"));
+                }
+            } catch (CoreException e) {
+                MessagingUtils.error(CdmViewerChooser.class, "Could not load cdmViewer extension", e);
+            }
+        }
+        //if only one editor is available then open it
+        if(nameViewerMap.size()==1){
+            Entry<Class<?>, String> next = nameViewerMap.keySet().iterator().next();
+            ICdmViewer cdmViewer = nameViewerMap.get(next);
+            cdmViewer.show(input, next.getKey());
+        }
+        else{
+            if(nameViewerMap.isEmpty()){
+                this.setInfoText("No viewers registered for this input");
+            }
+            this.open();
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    protected Control createDialogArea(Composite parent) {
+        TableViewer viewer = new TableViewer(new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
+        viewer.setContentProvider(new ArrayContentProvider());
+        viewer.setLabelProvider(this);
+        viewer.addSelectionChangedListener(this);
+        viewer.setInput(nameViewerMap.keySet());
+        return parent;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+     */
+    @Override
+    public void selectionChanged(SelectionChangedEvent event) {
+        ISelection selection = event.getSelection();
+        if(selection instanceof IStructuredSelection){
+            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+            if(nameViewerMap.containsKey(firstElement)){
+                Entry<Class<?>, String> entry = (Entry<Class<?>, String>)firstElement;
+                ICdmViewer cdmViewer = nameViewerMap.get(entry);
+                cdmViewer.show(input, entry.getKey());
+                this.close();
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+     */
+    @Override
+    public String getText(Object element) {
+        String text = null;
+        if(nameViewerMap.containsKey(element)){
+            Entry<Class<?>, String> entry = (Entry<Class<?>, String>) element;
+            text = entry.getValue();
+        }
+        return text;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+     */
+    @Override
+    public void addListener(ILabelProviderListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+     */
+    @Override
+    public void dispose() {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
+     */
+    @Override
+    public boolean isLabelProperty(Object element, String property) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+     */
+    @Override
+    public void removeListener(ILabelProviderListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+     */
+    @Override
+    public Image getImage(Object element) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java
new file mode 100644 (file)
index 0000000..0dd9e9b
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view;
+
+import java.util.Map;
+
+
+/**
+ * Implementors of this interface provide a mapping of input elements to views
+ * or editors which can display information or provide editing functionality for
+ * the input elements.
+ *
+ * @author pplitzner
+ * @date Feb 23, 2015
+ *
+ */
+public interface ICdmViewer {
+
+    /**
+     * For the given input a map specifying the available viewers classes as
+     * keys and their string representation as values is returned
+     *
+     * @param input
+     *            the input for which the viewer classes should be returned
+     * @return a map holding the viewer classes as keys and their string
+     *         representations as values
+     */
+    public Map<Class<?>, String> getViewerClasses(Object input);
+
+    /**
+     * Opens the viewer defined by the given viewerClass for the given input.
+     * @param input the input for which a viewer should be opened
+     * @param viewerClass the qualified class name of the viewer
+     */
+    public void show(Object input, Class<?> viewerClass);
+
+}
index 9521b5345640461fd994727301b913de944b44ea..efcd9d5702ef1c6b145d6143fd0c3caa4f9cf855 100644 (file)
@@ -79,10 +79,12 @@ public class UpdateDataSourceHandler extends AbstractDataSourceHandler {
                                                        }
                                                });
                                                status = Status.OK_STATUS;
+                                       }else{
+                                               throw new RuntimeException("An error occurred during the update.");
                                        }
                                }catch(Exception e){
                                        status = new Status(IStatus.ERROR, TaxeditorStorePlugin.PLUGIN_ID, e.getMessage(), e);
-                                       MessagingUtils.messageDialog("Could not run updater", getClass(), status.getMessage());
+                                       MessagingUtils.errorDialog("Could not complete updater", updater, status.getMessage(), status.getPlugin(), e, true);
                                }
                                }
 
@@ -1,4 +1,4 @@
-package eu.etaxonomy.taxeditor.editor.view.derivate;
+package eu.etaxonomy.taxeditor.view.derivateSearch;
 
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
@@ -35,13 +35,15 @@ public class DerivateContentProvider implements ITreeContentProvider {
        @Override
        public Object[] getElements(Object inputElement) {
            List<TreeNode> rootElements = new ArrayList<TreeNode>();
-           if(inputElement instanceof DerivateViewEditorInput){
-               Set<UUID> rootUUIDs = ((DerivateViewEditorInput) inputElement).getRootUUIDs();
-               for (UUID uuid : rootUUIDs) {
-                   SpecimenOrObservationBase<?> rootElement = CdmStore.getService(IOccurrenceService.class).load(uuid);
-                if(rootElement!=null){
-                    rootElements.add(new TreeNode(rootElement));
-                }
+           if(inputElement instanceof Set){
+               for (Object o: (Set)inputElement) {
+                   if(o instanceof UUID){
+                       UUID uuid = (UUID)o;
+                       SpecimenOrObservationBase<?> rootElement = CdmStore.getService(IOccurrenceService.class).load(uuid);
+                       if(rootElement!=null){
+                           rootElements.add(new TreeNode(rootElement));
+                       }
+                   }
             }
            }
            return rootElements.toArray();
index b304ca85199a1a73b9793b8f3878309c5663d992..76bed186ea4ad880456db650e01541a817c41182 100644 (file)
@@ -187,6 +187,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                 label += collection.getCode()!=null?"("+collection.getCode()+")"+separator:emptyString;
             }
             label += mediaSpecimen.getAccessionNumber()!=null?mediaSpecimen.getAccessionNumber()+separator:emptyString;
+            label += mediaSpecimen.getBarcode()!=null?mediaSpecimen.getBarcode()+separator:emptyString;
         }
         //TissueSample + DnaSample
         else if(derivate instanceof DnaSample){
@@ -201,7 +202,9 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                 }
             }
             else if(((DnaSample) derivate).getRecordBasis()==SpecimenOrObservationType.TissueSample){
-                label += dnaSample.getKindOfUnit()+separator;
+                if(dnaSample.getKindOfUnit()!=null){
+                    label += dnaSample.getKindOfUnit()+separator;
+                }
                 Identifier<DnaSample> currentSampleDesignation = getCurrentSampleDesignation(dnaSample);
                 if(currentSampleDesignation!=null && currentSampleDesignation.getIdentifier()!=null){
                     label += currentSampleDesignation.getIdentifier()+separator;
@@ -265,8 +268,11 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                     label += NO_SAMPLE_DESIGNATION+separator;
                 }
                 label += singleRead.getPrimer()!=null?singleRead.getPrimer().getLabel()+separator:emptyString;
-                if(sequence!=null){
-                    label += sequence.getDnaMarker()!=null?sequence.getDnaMarker():emptyString;
+                if(sequence!=null && sequence.getDnaMarker()!=null){
+                    label += sequence.getDnaMarker()+separator;
+                }
+                if(singleRead.getAmplificationResult()!=null && singleRead.getAmplificationResult().getAmplification()!=null){
+                    label += singleRead.getAmplificationResult().getAmplification().getLabelCache()+separator;
                 }
             }
         }
index 354f8752377daeada67212f36d6adb372b5ab673..0db71df83aec3b4933db863b847953dc7a368e7b 100644 (file)
@@ -88,8 +88,10 @@ public class DerivateSearchComposite extends Composite {
                 buttonSearch.setText("Search");
 
                 searchField = formToolkit.createText(this, "New Text", SWT.NONE);
-                searchField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
+                searchField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
                 searchField.setText("");
+                new Label(this, SWT.NONE);
+                new Label(this, SWT.NONE);
 
                 resultViewer = new TableViewer(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
                 table = resultViewer.getTable();
index d544df5fbdeedeb1c6c1c7b3d681b7218f56156b..cd780fc68c5d3f0d2e66420cae3c283d081f1aaf 100644 (file)
@@ -116,8 +116,9 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC
        /** {@inheritDoc} */
        @Override
        public void dispose() {
-               super.dispose();
                selectionService.removePostSelectionListener(this);
+               super.dispose();
+               
        }
 
        /**
index a03175185795dc9df7af384fb35f90209afaa8ac..f8950d456bd55fc2905bb272dc4440ed738b7e90 100644 (file)
@@ -39,7 +39,6 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.cdm.model.molecular.Amplification;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
@@ -52,7 +51,10 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
+import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -92,10 +94,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.OriginalLabelDataSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationCloningDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGelPhotoCollectionDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationPrimerDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection;
@@ -241,7 +240,7 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                 createSpecimenDescriptionSection(rootElement);
             }
             else{
-                Set<Marker> descriptionMarkers = ((DescriptionBase) input).getMarkers();
+                Set<Marker> descriptionMarkers = ((DescriptionBase<?>) input).getMarkers();
                 MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(
                         UsageTermCollection.uuidUseMarkerType);
                 Boolean isUseDescription = false;
@@ -250,7 +249,7 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                         isUseDescription = true;
                     }
                 }
-                if (((DescriptionBase) input).isImageGallery()) {
+                if (((DescriptionBase<?>) input).isImageGallery()) {
                     createImageGallerySection(rootElement);
 
                 } else if (isUseDescription) {
@@ -282,10 +281,20 @@ public class DetailsViewer extends AbstractCdmDataViewer {
 
         } else if (input instanceof DerivedUnitFacade) {
             if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.FieldUnit){
-                createFieldUnitSection(rootElement);
+                if(((DerivedUnitFacade) input).innerFieldUnit()==null){
+                    MessagingUtils.error(DetailsViewer.class, "FieldUnit of facade is null", null);
+                }
+                else{
+                    createFieldUnitSection(rootElement);
+                }
             }
             else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.PreservedSpecimen){
-                createDerivedUnitBaseElementSection(rootElement);
+                if(((DerivedUnitFacade) input).innerDerivedUnit()==null){
+                    MessagingUtils.error(DetailsViewer.class, "DerivedUnit of facade is null", null);
+                }
+                else{
+                    createDerivedUnitBaseElementSection(rootElement);
+                }
             }
             else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.TissueSample){
                 //TissueSample should only be created by using it's own class
@@ -306,9 +315,6 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         } else if (input instanceof MediaSpecimen){
             createMediaSpecimenSection(rootElement);
         }
-        else if(input instanceof Amplification){
-            createAmplificationSection(rootElement);
-        }
         else if(input instanceof Sequence){
             createSequenceSection(rootElement);
         }
@@ -655,46 +661,44 @@ public class DetailsViewer extends AbstractCdmDataViewer {
     private void createDerivedUnitBaseElementSection(RootElement parent) {
         destroySections();
 
-        //different order of sections (Specimen Details as second section and expanded)
-        if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS)){
-            DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-            addPart(derivedUnitGeneralDetailSection);
-
-            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+        DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+        //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
+        if(!(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
+            derivedUnitGeneralDetailSection.setShowOnlyDerivedUnitData(true);
+        }
+        addPart(derivedUnitGeneralDetailSection);
 
-            OriginalLabelDataSection originalLabelDataSection = formFactory.createOriginalLabelDataSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-            addPart(originalLabelDataSection);
+        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
-            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+        DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+        addPart(derivedUnitBaseDetailSection);
 
-            DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-            addPart(derivedUnitBaseDetailSection);
+        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
-        }
-        else{
-            DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-            addPart(derivedUnitGeneralDetailSection);
+        OriginalLabelDataSection originalLabelDataSection = formFactory.createOriginalLabelDataSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+        addPart(originalLabelDataSection);
 
+        //for editors working with facades
+        if(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart){
             formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
             GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
             addPart(gatheringEventDetailSection);
 
             formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
             FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
             addPart(fieldUnitDetailSection);
+        }
 
+        if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS)){
             formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
-            DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
-            addPart(derivedUnitBaseDetailSection);
-
-            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
             DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
             addPart(determinationDetailSection);
         }
+        if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_TAXON_ASSOCIATIONS)){
+            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+            TaxonAssociationDetailSection taxonAssociationDetailSection = formFactory.createTaxonAssociationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+            addPart(taxonAssociationDetailSection);
+        }
 
     }
 
@@ -753,29 +757,6 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         addPart(sampleDesignationDetailSection);
     }
 
-    private void createAmplificationSection(RootElement parent) {
-        destroySections();
-        AmplificationGeneralDetailSection generalSection = formFactory.createAmplificationGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-
-        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
-        AmplificationPrimerDetailSection primerSection = formFactory.createAmplificationPrimerDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-
-        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
-        AmplificationCloningDetailSection cloningSection = formFactory.createAmplificationCloningDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-
-        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
-        AmplificationGelPhotoCollectionDetailSection gelPhotoSection = formFactory.createAmplificationGelPhotoCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-
-
-        addPart(generalSection);
-        addPart(primerSection);
-        addPart(cloningSection);
-        addPart(gelPhotoSection);
-    }
-
     private void createSequenceSection(RootElement parent) {
         destroySections();
 
@@ -799,13 +780,13 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         destroySections();
 
         SingleReadGeneralDetailSection section = formFactory.createSingleReadGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+        addPart(section);
 
         formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
         SingleReadPherogramCollectionDetailSection pherogramSection = formFactory.createSingleReadPherogramCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
-
-        addPart(section);
         addPart(pherogramSection);
+
     }
 
     private void createMediaSpecimenSection(RootElement parent) {
index 8d1923a5b0723554cb9d3ab31fd34935df20b31a..ce9f26a8d0e79de99c3a4d453c1962b1182c3b7c 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" application="eu.etaxonomy.taxeditor.application.application" version="3.4.0.qualifier" useFeatures="true" includeLaunchers="true">
+<product name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" application="eu.etaxonomy.taxeditor.application.application" version="3.4.1.qualifier" useFeatures="true" includeLaunchers="true">
 
    <aboutInfo>
       <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
index d767dac9d594704c6ad67304616fad55dc311a17..8402df69e656f362a7bee6d5b613c9371169789d 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>3.4.0-SNAPSHOT</version>
+    <version>3.4.1-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/pom.xml b/pom.xml
index fa6f9ffa10d1a5030592ca982d5c351ac93a1098..4f816be18018001a875e3f5d7093b5221b7d1fad 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,13 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <prerequisites>
     <maven>3.0</maven>
   </prerequisites>
   <groupId>eu.etaxonomy</groupId>
   <artifactId>taxeditor-parent</artifactId>
-  <version>3.4.0-SNAPSHOT</version>
+  <version>3.4.1-SNAPSHOT</version>
   <name>EDIT Taxonomic Editor</name>
   <description>The Taxonomic Editor for EDIT's platform for
     cybertaxonomy</description>
   <properties>
     <java.codelevel>1.6</java.codelevel>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <cdmlib.version>3.4.0-SNAPSHOT</cdmlib.version>
+    <cdmlib.version>3.4.1-SNAPSHOT</cdmlib.version>
     <!-- TODO can we use project.version ????? -->
     <tycho.version>0.14.0</tycho.version>
-    <taxeditor.version>3.4.0-SNAPSHOT</taxeditor.version>
+    <taxeditor.version>3.4.1-SNAPSHOT</taxeditor.version>
     <update.dir>snapshot</update.dir>
   </properties>
   <modules>
@@ -35,7 +34,6 @@
     <module>eu.etaxonomy.taxeditor.feature.platform</module>
     <module>eu.etaxonomy.taxeditor.feature</module>
     <module>eu.etaxonomy.taxeditor</module>
-
   </modules>
   <scm>
     <connection>scm:svn:http://dev.e-taxonomy.eu/svn/trunk/taxeditor/</connection>
@@ -79,7 +77,7 @@
         <role>Java Developer</role>
         <role>Architect</role>
       </roles>
-      <url />
+      <url/>
     </developer>
     <developer>
       <!-- your SVN account id please! -->
@@ -97,7 +95,7 @@
         <role>Java Developer</role>
         <role>Architect</role>
       </roles>
-      <url />
+      <url/>
     </developer>
   </developers>
   <issueManagement>
           <tagBase>http://dev.e-taxonomy.eu/svn/tags/taxeditor</tagBase>
         </configuration>
       </plugin>
-
     </plugins>
     <extensions>
       <extension>
       <url>scpexe://wp5.e-taxonomy.eu/var/www/wp5.e-taxonomy.eu/mavenrepo/</url>
     </repository>
   </distributionManagement>
-
 </project>