Merge branch 'release/4.3.0' 4.3.0
authorjenkins <jenkins-int@bgbm.org>
Fri, 23 Sep 2016 14:24:11 +0000 (16:24 +0200)
committerjenkins <jenkins-int@bgbm.org>
Fri, 23 Sep 2016 14:24:11 +0000 (16:24 +0200)
227 files changed:
eu.etaxonomy.taxeditor.application/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.application/pom.xml
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/annotatedlineeditor/AnnotatedLineDocumentProvider.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java
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/command/BulkEditorSelectionPropertyTester.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntity.java [new file with mode: 0644]
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/MediaEditorInput.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/ReferenceEditorInput.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/UserCreator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties
eu.etaxonomy.taxeditor.cdmlib/pom.xml
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CacheLoader.java
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/EntityCacherDebugResult.java
eu.etaxonomy.taxeditor.editor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/messages.properties
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/messages_de.properties
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties
eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_de.properties
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/pom.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/Messages.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/group/authority/CdmAuthorityEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenChecklistEditorHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenParentHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenSpecimenEditorForTypeSpecimenHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenTaxonEditorForTaxonBaseHandler.java [moved from eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenTaxonEditorForTaxonHandler.java with 77% similarity]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphContentProvider.java [moved from eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyContentProvider.java with 96% similarity]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/container/AbstractGroupedContainer.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/container/LineBreakListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/GroupBasionymContributionItem.java [deleted file]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java
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/ChecklistEditorInput.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/concept/ConceptContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptLabelProvider.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/concept/graph/ConceptGraphView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/CreateConceptRelationHandler.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/contextMenu/CreateFieldUnitContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/SingleReadHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.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/media/MediaViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesViewPart.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/MoveTaxonOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/SwapSynonymAndAcceptedOperationTest.java
eu.etaxonomy.taxeditor.feature.jre.linux64/feature.xml
eu.etaxonomy.taxeditor.feature.jre.linux64/pom.xml
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.molecular.lib/.classpath
eu.etaxonomy.taxeditor.molecular.lib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.molecular.lib/pom.xml
eu.etaxonomy.taxeditor.molecular/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.molecular/pom.xml
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditorInput.java
eu.etaxonomy.taxeditor.navigation/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/bundle.properties
eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/bundle_de.properties
eu.etaxonomy.taxeditor.navigation/plugin.xml
eu.etaxonomy.taxeditor.navigation/pom.xml
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/NavigationUtil.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/RecentNamesContributionItem.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyLabelProvider.java [deleted file]
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.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/CreateClassificationHierarchyHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/RemotingDeleteTaxonNodeHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/operation/CreateClassification.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/messages.properties
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/messages_de.properties
eu.etaxonomy.taxeditor.store/icons/default_derivate-16x16-32.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/plugin.xml [changed mode: 0644->0755]
eu.etaxonomy.taxeditor.store/pom.xml
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/Messages.java
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/editor/definedterm/TermLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/TermEditorInput.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/EditFeatureTreeWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeEditorWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractIOManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.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
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/CsvExportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/CsvNameExportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/CsvPrintExportWizard.java
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/ExportToFileDestinationWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/JaxbExportWizard.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/SddExportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/SddImportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/TcsImportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.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/NewClassificationWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewCollectionWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewFieldUnitWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewGrantedAuthorityWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewGroupWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewInstitutionWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewNonViralNameWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPersonWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPolytomousKeyWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPrimerWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTeamWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewUserWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.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/wizard/AvailableDistributionPage.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/SearchManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/AbstractEntityCollectionElementWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/bar/AuthenticatedUserBar.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/VocabularyComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/RemotingLoginDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/deleteConfigurator/DeleteConfiguratorDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmResourceSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AgentSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/CdmFilteredItemsSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NamedAreaSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalPersonAuthorSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java [new file with mode: 0755]
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/dialog/selection/TaxonNodeSelectionDialog.java [changed mode: 0644->0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.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/RepresentationElement.java [changed mode: 0644->0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TranslatableRepresentationElement.java [changed mode: 0644->0755]
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/classification/TaxonNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/TaxonInteractionDetailElement.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/name/AuthorshipDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceContigFileCollectionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SingleReadPherogramCollectionDetailSection.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/TermTranslationWizardPage.java [changed mode: 0644->0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/ApplicationUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmDataViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/BioCaseEditorInput.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/DataImportEditorContextMenu.java [changed mode: 0644->0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/GbifResponseComparator.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/GbifResponseImportView.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/SaveImportedSpecimenAction.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/SpecimenImportView.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/SpecimenSearchWizard.java
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/detail/DetailsViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewer.java
eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.test/pom.xml
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java
eu.etaxonomy.taxeditor.webapp/.classpath
eu.etaxonomy.taxeditor.webapp/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.webapp/build.properties
eu.etaxonomy.taxeditor.webapp/pom.xml
eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product
eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product.with.jre
eu.etaxonomy.taxeditor/pom.xml
eu.etaxonomy.taxeditor/rcp.target
pom.xml

index db76b10b999e4fbad8ebe1fe3e829a5045e8ddef..845d0ac566bcb9beb2e1d885afead77b6a7f74a6 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: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin
 Bundle-Vendor: EDIT
 Bundle-Localization: OSGI-INF/l10n/plugin
index 282140ed4cf330a35bd1549b5f5ecc9325fefb71..76fef54b0cfb62a9d840d4e809a3fec99e9fd7c3 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index f154f267ea68566f17c80c13c44db615811abac3..3305fff32680cb36717366f58ea2fab3ec1efe92 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: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
index 9d2bf6586965827cbd470531f0bde97a56cf50c0..abb836ab25513f66bc7336c174c9927424507af9 100644 (file)
@@ -99,8 +99,8 @@
             </visibleWhen>
          </menu>
          <separator
-               name="taxeditor-bulkeditor.separator4"\r
-               visible="true">\r
+               name="taxeditor-bulkeditor.separator4"
+               visible="true">
          </separator>
          <command
                commandId="bulkeditor.commands.setmergetarget"
                </reference>
             </visibleWhen>
          </command>
-         <separator\r
-               name="eu.etaxonomy.taxeditor.bulkeditor.separator1"\r
-               visible="true">\r
-         </separator>\r
+         <separator
+               name="eu.etaxonomy.taxeditor.bulkeditor.separator1"
+               visible="true">
+         </separator>
          <command
                commandId="eu.etaxonomy.taxeditor.bulkeditor.convertTeam2Person"
                label="%command.label.5"
             allPopups="false"
             locationURI="menu:eu.etaxonomy.taxeditor.menu.showView?after=org.eclipse.ui.views.showView.supplemental">
          <command
-               commandId="eu.etaxonomy.taxeditor.openReferencingObjectsView"
+               commandId="eu.etaxonomy.taxeditor.openReferencingObjectsViewFromMenu"
                label="%command.label.OPEN_REFERENCING_OBJECTS_VIEW"
                style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isCdmStoreConnected">
+               </reference>
+            </visibleWhen>
          </command>
       </menuContribution>
    </extension>
             name="%command.name.10">
       </command>
       <command
-            defaultHandler="eu.etaxonomy.taxeditor.handler.defaultHandler.OpenReferencingObjectsView"
             id="eu.etaxonomy.taxeditor.openReferencingObjectsView"
             name="%command.name.OPEN_REFERENCING_OBJECTS_VIEW">
       </command>
             id="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForTaxonNode"
             name="%command.name.OPEN_BULK_EDITOR_FOR_TAXON_NODE">
       </command>
+      <command
+            id="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity"
+            name="Open bulk editor for identifiable entity">
+         <commandParameter
+               id="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity.uuid"
+               name="Identifiable Entity UUID"
+               optional="true"
+               typeId="eu.etaxonomy.taxeditor.uuidParameterType">
+         </commandParameter>
+      </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.handler.defaultHandler.OpenReferencingObjectsView"
+            id="eu.etaxonomy.taxeditor.openReferencingObjectsViewFromMenu"
+            name="%command.name.OPEN_REFERENCING_OBJECTS_VIEW">
+      </command>
       <!--command
             defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewEntityHandler"
             id="eu.etaxonomy.taxeditor.bulkeditor.command.new"
             </test>
          </with>
       </definition>
+      <definition
+            id="isBulkEditorSupported">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorSelectionPropertyTester.isBulkEditorSupported">
+            </test>
+         </with>
+      </definition>
+      <definition
+            id="isGroupEditor">
+         <with
+               variable="activeEditor">
+            <test
+                  property="taxeditor-bulkeditor.propertyTester.isGroupEditor">
+            </test>
+         </with>
+      </definition>
    </extension>
    <extension
          point="org.eclipse.core.expressions.propertyTesters">
             properties="isTeam, isPerson"
             type="java.lang.Object">
       </propertyTester>
+      <propertyTester
+            class="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorSelectionPropertyTester"
+            id="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorSelectionPropertyTester"
+            namespace="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorSelectionPropertyTester"
+            properties="isBulkEditorSupported"
+            type="org.eclipse.jface.viewers.IStructuredSelection">
+      </propertyTester>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
             class="eu.etaxonomy.taxeditor.bulkeditor.handler.ConvertPerson2TeamHandler"
             commandId="eu.etaxonomy.taxeditor.bulkeditor.convertPerson2Team">
       </handler>
+      <handler
+            class="eu.etaxonomy.taxeditor.bulkeditor.handler.defaultHandler.OpenBulkEditorForIdentifiableEntity"
+            commandId="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity">
+         <activeWhen>
+            <reference
+                  definitionId="isBulkEditorSupported">
+            </reference>
+         </activeWhen>
+      </handler>
       
    </extension>
    <extension
             selection="eu.etaxonomy.cdm.model.taxon.TaxonNode"
             viewerName="%viewCommandMapping.viewerName.BULK_EDITOR">
       </viewCommandMapping>
+      <viewCommandMapping
+            commandId="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity"
+            selection="eu.etaxonomy.cdm.model.common.IdentifiableEntity"
+            viewerName="%viewCommandMapping.viewerName.BULK_EDITOR">
+      </viewCommandMapping>
    </extension>
 <!-- start set marker -->
 
index 9ad68a2c297648877b944209ca994d483abe7491..d9b805cd62bbd202f5f312713e42337623986f9c 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>4.2.0</version>
+               <version>4.3.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 3243ffbe49299cddaee36b43327ac5139893df83..1ad5dc7d6cf7dff1b70a1c2e1bd4d42a8f7e00c1 100644 (file)
@@ -25,6 +25,7 @@ import org.eclipse.jface.text.source.IAnnotationModel;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.texteditor.AbstractDocumentProvider;
 
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 
@@ -58,6 +59,21 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        private ILineDisplayStrategy lineDisplayStrategy;
 
        private final IEditorInput input;
+       private ConversationHolder conversation;
+
+       /**
+        * @return the conversation
+        */
+       public ConversationHolder getConversation() {
+               return conversation;
+       }
+
+       /**
+        * @param conversation the conversation to set
+        */
+       public void setConversation(ConversationHolder conversation) {
+               this.conversation = conversation;
+       }
 
        /**
         * <p>Constructor for AnnotatedLineDocumentProvider.</p>
@@ -66,6 +82,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
         */
        public AnnotatedLineDocumentProvider(IEditorInput input){
                this.input = input;
+               this.conversation = ((AbstractBulkEditorInput)input).getConversation();
        }
 
        /** {@inheritDoc} */
@@ -232,11 +249,17 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        // Get new containers from annotation model
                        LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element);
                        Iterator iterator = model.getAnnotationIterator();
+                       if (!this.conversation.isBound()){
+                               this.conversation.bind();
+                       }
+                       
                        while (iterator.hasNext()) {
                                Annotation annotation = (Annotation) iterator.next();
                                if (annotation instanceof IEntityContainer<?>) {
                                        IEntityContainer<?> container = (IEntityContainer<?>) annotation;
+                                       
                                        if (container.isMarkedAsNew() || container.isDirty()) {
+                                               
                                                Object entity = persistenceService.save(container.getEntity()); // save
                                                container.setEntity(entity);
                                                container.setDirty(false);
@@ -244,6 +267,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                        }
                                }
                        }
+                       this.conversation.commit(true);
                        for (LineAnnotation annotation : model.getDeletedAnnotations()) {
                                if (annotation.isMarkedAsNew()) {
                                        continue;
index e7640f011c211fac76387e65b040e4cc0c0d4575..03ee6e9fe9c5080ee7a29ee9668fa330f9ef6ed0 100644 (file)
@@ -71,7 +71,7 @@ public class AnnotatedLineEditor extends TextEditor implements IConversationEnab
     protected void doSetInput(IEditorInput input) throws CoreException {
 
         AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input);
-
+        
         provider.setLineDisplayStrategy(lineDisplayStrategy, input);
         setDocumentProvider(provider);
 
@@ -197,6 +197,8 @@ public class AnnotatedLineEditor extends TextEditor implements IConversationEnab
     public LineAnnotation createAnnotatedLine(Object entity) {
 
         IEditorInput input = getEditorInput();
+        this.conversation.close();
+        this.conversation = ((AbstractBulkEditorInput)input).getConversation();
         AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider();
 
         LineAnnotation annotation = null;
index fa41c940b36db7336debf8c330afcd202f7489fe..d3d9d482ec0d96bbf2825cc898491af012fe0f94 100644 (file)
@@ -10,6 +10,8 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor;
 
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.commands.operations.UndoContext;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -71,8 +73,11 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
 
        private boolean isDirty;
 
+    private IUndoContext undoContext;
+
        public BulkEditor() {
                super(CdmStore.createConversation());
+        undoContext = new UndoContext();
        }
 
        /** {@inheritDoc} */
@@ -169,7 +174,6 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        @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
                //      Editor are displayed
@@ -178,6 +182,7 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                        isInitialFocus = false;
                }
                super.setFocus();
+               searchBar.setFocus();
        }
 
        private void displayWarningDialog() {
@@ -270,19 +275,22 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
 
                        // TODO check if dirty, prompt save
                        if (isDirty()) {
-                               boolean proceed = MessageDialog.openQuestion(getEditorSite().getShell(),
-                                               "Save changes", "You have made changes that must be saved before this query can be executed. Would you like to proceed?");
-                               if (proceed) {
+                               String[] labels = {"Save (and Search)", "Don't save (and Search)","Cancel"};
+                               MessageDialog dialog =new MessageDialog(getEditorSite().getShell(), "Save changes", null, "You have made changes that must be saved before this query can be executed. Would you like to proceed?", MessageDialog.QUESTION,labels, 0);
+                               int result = dialog.open();
+                                               //MessageDialog.openQuestion(getEditorSite().getShell(),
+                                               //"Save changes", "You have made changes that must be saved before this query can be executed. Would you like to proceed?");
+                               if (result == 0) {
                                        doSave(null);
-                               } else {
+                               } else if (result == 2){
                                        return;
                                }
                        }
                        conversation.clear();
                        conversation.commit(true);
-                       
+
                        getEditorInput().dispose();
-                       initializeEditor();
+                       getEditorInput().bind();
                        getEditorInput().performSearch(query);
 
                        refresh();
@@ -324,4 +332,8 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        public boolean canAttachMedia() {
            return getEditorInput() instanceof TaxonEditorInput?true:false;
        }
+
+    public IUndoContext getUndoContext() {
+        return undoContext;
+    }
 }
index 613ee50fb72e90d917b811439686212deb5f7181..e1e9867976655894a15185580876965f80a3a950 100644 (file)
@@ -162,16 +162,7 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
        /** {@inheritDoc} */
        @Override
     public String getEmptyCacheMessage(Object entity) {
-               if (entity instanceof Reference) {
-                       return "No reference title cache";
-               }
-               if (entity instanceof TaxonNameBase) {
-                       return "No name title cache";
-               }
-               if (entity instanceof AgentBase) {
-                       return "No title cache";
-               }
-               return "";
+               return entity.toString();
        }
 
        /* (non-Javadoc)
index bbfe04df5fd667756cad809a46a1dec119c85e39..20a4c5de0b37c61dd97605476d325ebdc7a1de99 100644 (file)
@@ -22,8 +22,6 @@ import eu.etaxonomy.taxeditor.bulkeditor.input.OccurrenceEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
 
 /**
- * <p>BulkEditorPropertyTester class.</p>
- *
  * @author p.ciardelli
  * @created 21.09.2009
  * @version 1.0
@@ -43,16 +41,13 @@ public class BulkEditorPropertyTester extends PropertyTester {
     public static final String IS_PERSON = "isPerson";
     public static final String IS_TEAM = "isTeam";
     public static final String IS_MEDIA_EDITOR = "isMediaEditor";
-       /* (non-Javadoc)
-        * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
-        */
-       /** {@inheritDoc} */
+
+    /** {@inheritDoc} */
        @Override
     public boolean test(Object receiver, String property, Object[] args,
                        Object expectedValue) {
                BulkEditor bulkEditor = null;
 
-
                bulkEditor = (BulkEditor) receiver;
                if (IS_MERGING_ENABLED.equals(property)) {
                        IEditorInput input = bulkEditor.getEditorInput();
@@ -74,16 +69,10 @@ public class BulkEditorPropertyTester extends PropertyTester {
                }
         else if(IS_TAXON_EDITOR.equals(property)){
             return bulkEditor.getEditorInput() instanceof TaxonEditorInput;
-        } else if(IS_MEDIA_EDITOR.equals(property)){
+        }
+        else if(IS_MEDIA_EDITOR.equals(property)){
             return bulkEditor.getEditorInput() instanceof MediaEditorInput;
         }
-
-//             if (("isPublishFlagEditingEnabled").equals(property)) {
-//                     IEditorInput input = bulkEditor.getEditorInput();
-//                     if (input instanceof NameEditorInput) {
-//                             return ((NameEditorInput) input).isPublishFlagEnabled();
-//                     }
-//             }
                return false;
        }
 }
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorSelectionPropertyTester.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorSelectionPropertyTester.java
new file mode 100644 (file)
index 0000000..1f5b701
--- /dev/null
@@ -0,0 +1,31 @@
+package eu.etaxonomy.taxeditor.bulkeditor.command;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputType;
+
+public class BulkEditorSelectionPropertyTester extends PropertyTester {
+
+    public static final String IS_BULK_EDITOR_SUPPORTED = "isBulkEditorSupported";
+
+       @Override
+       public boolean test(Object receiver, String property, Object[] args,
+                       Object expectedValue) {
+               if(IS_BULK_EDITOR_SUPPORTED.equals(property)){
+                       if(receiver instanceof IStructuredSelection){
+                               IStructuredSelection selection = (IStructuredSelection) receiver;
+                               Object selectedElement = selection.getFirstElement();
+                               if(selectedElement!=null){
+                                   if(selectedElement instanceof UuidAndTitleCache){
+                                       return BulkEditorInputType.getByType(((UuidAndTitleCache) selectedElement).getType())!=null;
+                                   }
+                                       return BulkEditorInputType.getByType(selectedElement.getClass())!=null;
+                               }
+                       }
+               }
+               return false;
+       }
+
+}
index dc4d133e2f6c0676640ea273d391c2081224ce61..9f733f33ea084fdb3a02e46ddd20a2b0603a6e32 100644 (file)
@@ -19,6 +19,7 @@ import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>OpenBulkEditorHandler class.</p>
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntity.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntity.java
new file mode 100644 (file)
index 0000000..6910f3d
--- /dev/null
@@ -0,0 +1,31 @@
+package eu.etaxonomy.taxeditor.bulkeditor.handler.defaultHandler;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
+import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class OpenBulkEditorForIdentifiableEntity extends DefaultOpenHandlerBase<IdentifiableEntity> {
+
+       @Override
+       protected IdentifiableEntity getEntity(UUID uuid) {
+               return CdmStore.getCommonService().find(IdentifiableEntity.class, uuid);
+       }
+
+       @Override
+       protected void open(ExecutionEvent event, IdentifiableEntity entity) {
+               try {
+                       BulkEditorUtil.openEditor(entity);
+               } catch (PartInitException e) {
+            MessagingUtils.error(this.getClass(), "Bulk Editor could not be opened for "+entity, e);
+               }
+       }
+
+
+}
index 00f746d977cb26c97514f565407ab3a4928d0453..d57ea686635b84c2219f18ff87d83e6e1c1873d6 100644 (file)
@@ -10,7 +10,6 @@
 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;
@@ -21,6 +20,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
@@ -41,8 +41,6 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
- * <p>Abstract AbstractBulkEditorInput class.</p>
- *
  * @author p.ciardelli
  * @created 25.06.2009
  * @version 1.0
@@ -56,33 +54,20 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
        private List<T> model;
 
        private IEntityCreator<T> entityCreator;
-
-       private static Class serviceClass;
+       private final ConversationHolder conversation;
 
        public AbstractBulkEditorInput() {
            super(true);
+           this.conversation = CdmStore.createConversation();
        }
 
-       /**
-        * <p>NewInstance</p>
-        *
-        * @param inputType a {@link eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputTypeValues.BulkEditorInputType} object.
-        * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
-        */
        static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {
 
                return BulkEditorInputType.getInput(inputType);
        }
 
-       /**
-        * <p>NewInstance</p>
-        *
-        * @param entity a {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity} object.
-        * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
-        */
        public static AbstractBulkEditorInput NewInstance(IdentifiableEntity entity) {
 
-
                BulkEditorInputType inputType = BulkEditorInputType.getByType(entity.getClass());
 
                AbstractBulkEditorInput editorInput = NewInstance(inputType);
@@ -92,83 +77,35 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
                return editorInput;
        }
 
-       /**
-        * <p>listEntities</p>
-        *
-        * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object.
-        * @return a {@link java.util.List} object.
-        */
        protected abstract List<T> listEntities(IIdentifiableEntityServiceConfigurator configurator);
 
-       /**
-        * <p>loadEntity</p>
-        *
-        * @param entityUuid a {@link java.util.UUID} object.
-        * @return a T object.
-        */
-       protected T loadEntity(UUID entityUuid) {
-               List<String> propertyPaths = Arrays.asList(new String[]{});
-               return (T) CdmStore.getService(serviceClass).load(entityUuid, propertyPaths);
-       }
+       protected abstract T loadEntity(UUID entityUuid);
 
        private void setEntityUuid(UUID entityUuid){
                this.entityUuid = entityUuid;
        }
 
-       /**
-        * <p>Getter for the field <code>entityUuid</code>.</p>
-        *
-        * @return a {@link java.util.UUID} object.
-        */
        public UUID getEntityUuid() {
                return entityUuid;
        }
 
-
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#exists()
-        */
-       /**
-        * <p>exists</p>
-        *
-        * @return a boolean.
-        */
        @Override
     public boolean exists() {
                // TODO Auto-generated method stub
                return false;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
-        */
-       /**
-        * <p>getImageDescriptor</p>
-        *
-        * @return a {@link org.eclipse.jface.resource.ImageDescriptor} object.
-        */
        @Override
     public ImageDescriptor getImageDescriptor() {
                // TODO Auto-generated method stub
                return null;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#getPersistable()
-        */
-       /**
-        * <p>getPersistable</p>
-        *
-        * @return a {@link org.eclipse.ui.IPersistableElement} object.
-        */
        @Override
     public IPersistableElement getPersistable() {
                return null;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-        */
        /** {@inheritDoc} */
        @Override
     @SuppressWarnings("unchecked")
@@ -176,11 +113,6 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
                return null;
        }
 
-       /**
-        * <p>Setter for the field <code>query</code>.</p>
-        *
-        * @param bulkEditorQuery a {@link eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery} object.
-        */
        public void performSearch(final BulkEditorQuery bulkEditorQuery) {
 
                List<T> entityList = new ArrayList<T>();
@@ -206,29 +138,14 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
                model = entityList;
        }
 
-       /**
-        * <p>isMergingEnabled</p>
-        *
-        * @return a boolean.
-        */
        public boolean isMergingEnabled() {
                return false;
        }
 
-       /**
-        * <p>isMergingEnabled</p>
-        *
-        * @return a boolean.
-        */
        public boolean isConvertingEnabled() {
                return false;
        }
-       /**
-        * <p>isMarkerTypeEditingEnabled</p>
-        *
-        * @param markerType a {@link eu.etaxonomy.cdm.model.common.MarkerType} object.
-        * @return a boolean.
-        */
+
        public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {
                return false;
        }
@@ -266,9 +183,6 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
                return entityCreator;
        }
 
-       /**
-        * @return
-        */
        protected abstract IEntityCreator<T> createEntityCreator();
 
        /**
@@ -295,10 +209,6 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
                return entity.getClass().getSimpleName();
        }
 
-       /**
-        * @param entity
-        * @return
-        */
        public String getText(T entity) {
                if(entity instanceof IdentifiableEntity){
                        IdentifiableEntity identifiableEntity = (IdentifiableEntity) HibernateProxyHelper.deproxy(entity);
@@ -309,9 +219,6 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
                return "No text. Implement in subclass";
        }
 
-       /**
-        * @return
-        */
        public List<T> getModel() {
                return model;
        }
@@ -326,21 +233,19 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
            }
        }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
-     */
     @Override
     public   List<T> getRootEntities() {
         return getModel();
     }
 
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
-     */
     @Override
     public Map<Object, List<String>> getPropertyPathsMap() {
         // TODO Auto-generated method stub
         return null;
     }
+
+       public ConversationHolder getConversation() {
+               return conversation;
+       }
 }
index f7f65de9f095b112fbc3e781544aba790d752daf..31b7498ca2421f463b3fc1b38d3fcb449d6a5b04 100644 (file)
@@ -9,11 +9,14 @@
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
@@ -147,12 +150,8 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
 
        @Override
        public TeamOrPersonBase save(TeamOrPersonBase entity) {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return (TeamOrPersonBase) CdmStore.getService(IAgentService.class).merge(entity, true).getMergedEntity();
-           } else {
-               CdmStore.getService(IAgentService.class).saveOrUpdate(entity) ;
-               return entity;
-           }
+          return (TeamOrPersonBase) CdmStore.getService(IAgentService.class).merge(entity, true).getMergedEntity();
+          
        }
 
        @Override
@@ -171,4 +170,12 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
     }
 
 
+       @Override
+       protected TeamOrPersonBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), TeamOrPersonBase.class);
+       }
+
+
+
 }
index a509aecbddfa4e436d9563d672c08961f26275f0..bbbc9a27da7c2648a2d91daef5aef0fb22cbb7ea 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.model.name.NameRelationship;
 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.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
 
 public enum BulkEditorInputType {
@@ -100,7 +100,7 @@ public enum BulkEditorInputType {
                        return GROUP;
                } else if (User.class.isAssignableFrom(clazz)) {
                        return USER;
-               } else if (Taxon.class.isAssignableFrom(clazz)){
+               } else if (TaxonBase.class.isAssignableFrom(clazz)){
                        return TAXON;
                } else if (Media.class.isAssignableFrom(clazz)){
             return MEDIA;
index 0082939986a984d95527749de20bf64d7bfb53ca..440af4567837e95f5fe471146040569e163821d0 100644 (file)
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
+import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.IGroupService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.GroupCreator;
@@ -62,12 +66,8 @@ public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
         */
        @Override
        public Group save(Group entity) {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return CdmStore.getService(IGroupService.class).merge(entity, true).getMergedEntity();
-           } else {
-               CdmStore.getService(IGroupService.class).saveOrUpdate(entity);
-               return entity;
-           }
+           return CdmStore.getService(IGroupService.class).merge(entity, true).getMergedEntity();
+           
        }
 
        /* (non-Javadoc)
@@ -120,6 +120,12 @@ public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
 
     }
 
+       @Override
+       protected Group loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), Group.class);
+       }
+
 
 
 }
index 6f3ccb262a399b5797e9cf26170e2b5d539526d7..697118e4610fa7614fb72e2d2c54f2da3dfa180e 100644 (file)
@@ -9,7 +9,9 @@
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IMediaService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -54,12 +56,8 @@ public class MediaEditorInput extends AbstractBulkEditorInput<Media> {
 
     @Override
     public Media save(Media entity) {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            return CdmStore.getService(IMediaService.class).merge(entity, true).getMergedEntity();
-        } else {
-            CdmStore.getService(IMediaService.class).saveOrUpdate(entity) ;
-            return entity;
-        }
+       return CdmStore.getService(IMediaService.class).merge(entity, true).getMergedEntity();
+       
     }
 
     @Override
@@ -91,4 +89,11 @@ public class MediaEditorInput extends AbstractBulkEditorInput<Media> {
 
         return sortProviders;
     }
+    
+       @Override
+       protected Media loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(IMediaService.class).load(entityUuid, propertyPaths);
+       }
+
 }
index 6116162d2857d9b597787d6de27db0edb2ffdbb7..9017638d02c7cabc867d1ae9211516a9175ab3d7 100644 (file)
@@ -10,7 +10,9 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -98,7 +100,9 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
        /** {@inheritDoc} */
        @Override
        public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
-               return CdmStore.getSearchManager().findNames(configurator);
+               
+               configurator.setPropertyPaths(getPropertyPaths());
+               return CdmStore.getSearchManager().findNames(configurator, this.getConversation());
        }
 
        /** {@inheritDoc}
@@ -118,12 +122,10 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
        /** {@inheritDoc} */
        @Override
     public TaxonNameBase save(TaxonNameBase entity) {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity();
-           } else {
-               CdmStore.getService(INameService.class).saveOrUpdate(entity);
-               return entity;
-           }
+               TaxonNameBase mergedName = null;
+               mergedName =  CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity();
+               return mergedName;
+               
        }
 
        /* (non-Javadoc)
@@ -173,5 +175,26 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
 
     }
 
+       @Override
+       protected TaxonNameBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(INameService.class).load(entityUuid, getPropertyPaths());
+       }
+
+
+    private List<String> getPropertyPaths(){
+        List<String> nameBasePropertyPaths = Arrays.asList(new String[] {
+        "name.descriptions",
+         "name.typeDesignations",
+         "name.status",
+         "name.nomenclaturalReference.inReference",
+         "name.taxonBases.taxonNodes",
+         "name.relationsFromThisName",
+         "name.relationsToThisName",
+         "name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations.synonym.name.status",
+         "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName"});
+        
+        return nameBasePropertyPaths;
+    }
 
 }
index 929379d2731220a67cd558a7815b56545c18e923..b247659c2420489dde582728704e45dc114bed2a 100644 (file)
@@ -10,7 +10,9 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -137,12 +139,8 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
        /** {@inheritDoc} */
        @Override
     public SpecimenOrObservationBase<IIdentifiableEntityCacheStrategy> save(SpecimenOrObservationBase entity) {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return CdmStore.getService(IOccurrenceService.class).merge(entity, true).getMergedEntity();
-           } else {
-               CdmStore.getService(IOccurrenceService.class).save(entity);
-               return entity;
-           }
+           return CdmStore.getService(IOccurrenceService.class).merge(entity, true).getMergedEntity();
+          
        }
 
 
@@ -173,4 +171,11 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
     public void merge() {
 
     }
+
+       @Override
+       protected SpecimenOrObservationBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(IOccurrenceService.class).load(entityUuid, propertyPaths);
+       }
+
 }
index 8b8c11360c4442e1c160b9ed43ea630209e3b738..a269df46a5f098281d8780630ee10c49d17ad787 100644 (file)
@@ -139,12 +139,7 @@ public class ReferenceEditorInput extends AbstractBulkEditorInput<Reference> {
        /** {@inheritDoc} */
        @Override
     public Reference save(Reference entity) {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return CdmStore.getService(IReferenceService.class).merge(entity, true).getMergedEntity();
-           } else {
-               CdmStore.getService(IReferenceService.class).saveOrUpdate(entity);
-               return entity;
-           }
+          return CdmStore.getService(IReferenceService.class).merge(entity, true).getMergedEntity();
        }
 
        /* (non-Javadoc)
index aa6dd1537bbae92c19b7a49adc5b35dbb09964eb..5ea635f3b156e82c05d07745a4264d00b44f7f21 100644 (file)
@@ -71,12 +71,7 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
        }\r
        @Override\r
        public TaxonBase save(TaxonBase entity) {\r
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {\r
-               return CdmStore.getService(ITaxonService.class).merge(entity, true).getMergedEntity();\r
-           } else {\r
-               CdmStore.getService(ITaxonService.class).saveOrUpdate(entity);\r
-               return entity;\r
-           }\r
+           return CdmStore.getService(ITaxonService.class).merge(entity, true).getMergedEntity();\r
        }\r
 \r
 \r
index 72dd138a4fc45db2581d631c2517b9b69ec6a1ae..f78e19d0d4111b757db6380e538d3e4d484193d3 100644 (file)
@@ -10,7 +10,9 @@
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -62,13 +64,7 @@ public class UserEditorInput extends AbstractBulkEditorInput<User> {
         */
        @Override
        public User save(User entity) {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return CdmStore.getService(IUserService.class).merge(entity, true).getMergedEntity();
-           } else {
-               CdmStore.getService(IUserService.class).saveOrUpdate(entity);
-               return entity;
-           }
-
+           return CdmStore.getService(IUserService.class).merge(entity, true).getMergedEntity();
        }
 
        /* (non-Javadoc)
@@ -121,6 +117,14 @@ public class UserEditorInput extends AbstractBulkEditorInput<User> {
     public void merge() {
 
     }
+    
+
+       @Override
+       protected User loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(IUserService.class).load(entityUuid, propertyPaths);
+       }
+
 
 
 }
index 81ebab53c8c63236ee855d06810806a8a13b884d..c9f014554a3efa6580f0c8d9b5177a4f87ff46ed 100644 (file)
@@ -43,12 +43,8 @@ public class UserCreator  implements IEntityCreator<User>{
        public User createEntity(Object key, String text) {
                try{
                        User user = User.NewInstance(text, text);
-                        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                            CdmStore.getService(IUserService.class).createUser(user);
-                            user = CdmStore.getService(IUserService.class).loadWithUpdate(user.getUuid());
-                        } else {
-                            CdmStore.getService(IUserService.class).createUser(user);
-                        }
+                       CdmStore.getService(IUserService.class).createUser(user);
+                       user = CdmStore.getService(IUserService.class).loadWithUpdate(user.getUuid());
                        return user;
                } catch (AccessDeniedException e){
                        MessagingUtils.messageDialog("Access denied", getClass(), e.getMessage(), e);
index c8a273fa6f3e3db6e394ee4e318f96a703357b82..ff5b0a6dfc3a8ab721487348af9ddeebb4f669ed 100644 (file)
@@ -255,6 +255,9 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
                 referencedObject = CdmStore.getService(IUserService.class).load(entity, null);
             } else if (Group.class.isAssignableFrom(objectClass)){
                 referencedObject = CdmStore.getService(IGroupService.class).load(entity, null);
+            }
+            else if(CdmBase.class.isAssignableFrom(objectClass)){
+                referencedObject = CdmStore.getCommonService().find(objectClass, entity);
             }
                        //referencedObject =(CdmBase) CdmStore.getService(IIdentifiableEntityService.class).load(referencedObject.getUuid());
                Set<CdmBase> setOfReferencingObjects = null;
@@ -389,4 +392,9 @@ public class ReferencingObjectsView extends AbstractCdmViewPart {
 
        }
 
+       @Override
+       protected String getViewName() {
+               return "Referencing Objects";
+       }
+
 }
index be5bfdb9ab2718e2212fec600958004da5b9cb54..e3690c7352f4e92ba1172e7f97eb42b61ed6dacf 100644 (file)
        <classpathentry exported="true" kind="lib" path="lib/batik-util-1.7.jar"/>\r
        <classpathentry exported="true" kind="lib" path="lib/batik-xml-1.7.jar"/>\r
        <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.5.2.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-4.2.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-4.2.0.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-services/4.1.0-SNAPSHOT/cdmlib-services-4.2.0-sources.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-test-4.2.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-4.3.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-4.3.0.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-ext/4.3.0-SNAPSHOT/cdmlib-ext-4.3.0-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-4.3.0.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-io/4.3.0-SNAPSHOT/cdmlib-io-4.3.0-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-4.3.0.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-model/4.3.0-SNAPSHOT/cdmlib-model-4.3.0-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-4.3.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-4.3.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-4.3.0.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-4.3.0.jar" sourcepath="C:/Users/k.luther/.m2/repository/eu/etaxonomy/cdmlib-services/4.3.0-SNAPSHOT/cdmlib-services-4.3.0-sources.jar"/>\r
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-test-4.3.0.jar"/>\r
        <classpathentry exported="true" kind="lib" path="lib/cglib-3.2.0.jar"/>\r
        <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-3.2.0.jar"/>\r
        <classpathentry exported="true" kind="lib" path="lib/classmate-1.3.1.jar"/>\r
index 0f8ba7c5b3480e41ad302220ce39bf21e082c056..806d0b90b524c99f6f25a607ca0b9ae4bdda46dc 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: CDM Library Dependencies Plugin
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.cdmlib;singleton:=true
-Bundle-Version: 4.2.0
+Bundle-Version: 4.3.0
 Eclipse-BundleShape: dir
 Export-Package: com.google.api,
  com.google.api.detect,
@@ -82,6 +82,7 @@ Export-Package: com.google.api,
  eu.etaxonomy.cdm.io.specimen,
  eu.etaxonomy.cdm.io.specimen.abcd206.in,
  eu.etaxonomy.cdm.io.specimen.excel.in,
+ eu.etaxonomy.cdm.io.specimen.gbif.in,
  eu.etaxonomy.cdm.io.taxonx,
  eu.etaxonomy.cdm.io.tcsxml,
  eu.etaxonomy.cdm.io.tcsxml.in,
@@ -497,15 +498,15 @@ Bundle-ClassPath: .,
  lib/batik-util-1.7.jar,
  lib/batik-xml-1.7.jar,
  lib/c3p0-0.9.5.2.jar,
- lib/cdmlib-commons-4.2.0.jar,
- lib/cdmlib-ext-4.2.0.jar,
- lib/cdmlib-io-4.2.0.jar,
- lib/cdmlib-model-4.2.0.jar,
- lib/cdmlib-persistence-4.2.0.jar,
- lib/cdmlib-print-4.2.0.jar,
- lib/cdmlib-remote-4.2.0.jar,
- lib/cdmlib-services-4.2.0.jar,
- lib/cdmlib-test-4.2.0.jar,
+ lib/cdmlib-commons-4.3.0.jar,
+ lib/cdmlib-ext-4.3.0.jar,
+ lib/cdmlib-io-4.3.0.jar,
+ lib/cdmlib-model-4.3.0.jar,
+ lib/cdmlib-persistence-4.3.0.jar,
+ lib/cdmlib-print-4.3.0.jar,
+ lib/cdmlib-remote-4.3.0.jar,
+ lib/cdmlib-services-4.3.0.jar,
+ lib/cdmlib-test-4.3.0.jar,
  lib/cglib-3.2.0.jar,
  lib/cglib-nodep-3.2.0.jar,
  lib/classmate-1.3.1.jar,
index 2949e53d45941ff315a3e2bcce96b06fdef42a51..93df38045378eb1111247f34b6c70667dd11d305 100644 (file)
@@ -25,15 +25,15 @@ bin.includes = META-INF/,\
                lib/batik-util-1.7.jar,\
                lib/batik-xml-1.7.jar,\
                lib/c3p0-0.9.5.2.jar,\
-               lib/cdmlib-commons-4.2.0.jar,\
-               lib/cdmlib-ext-4.2.0.jar,\
-               lib/cdmlib-io-4.2.0.jar,\
-               lib/cdmlib-model-4.2.0.jar,\
-               lib/cdmlib-persistence-4.2.0.jar,\
-               lib/cdmlib-print-4.2.0.jar,\
-               lib/cdmlib-remote-4.2.0.jar,\
-               lib/cdmlib-services-4.2.0.jar,\
-               lib/cdmlib-test-4.2.0.jar,\
+               lib/cdmlib-commons-4.3.0.jar,\
+               lib/cdmlib-ext-4.3.0.jar,\
+               lib/cdmlib-io-4.3.0.jar,\
+               lib/cdmlib-model-4.3.0.jar,\
+               lib/cdmlib-persistence-4.3.0.jar,\
+               lib/cdmlib-print-4.3.0.jar,\
+               lib/cdmlib-remote-4.3.0.jar,\
+               lib/cdmlib-services-4.3.0.jar,\
+               lib/cdmlib-test-4.3.0.jar,\
                lib/cglib-3.2.0.jar,\
                lib/cglib-nodep-3.2.0.jar,\
                lib/classmate-1.3.1.jar,\
index 2cc4ba1f351487e07a657521cf79bcdab01601f4..b285179f364bf1564ceefbfd6ef7d96ba21adab9 100644 (file)
@@ -4,7 +4,7 @@
   <parent>\r
     <groupId>eu.etaxonomy</groupId>\r
     <artifactId>taxeditor-parent</artifactId>\r
-    <version>4.2.0</version>\r
+    <version>4.3.0</version>\r
   </parent>\r
   <modelVersion>4.0.0</modelVersion>\r
   <artifactId>eu.etaxonomy.taxeditor.cdmlib</artifactId>\r
       <version>${cdmlib.version}</version>\r
     </dependency>\r
 \r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-server</artifactId> -->\r
-    <!-- <version>9.1.3.v20140225</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-util</artifactId> -->\r
-    <!-- <version>9.1.3.v20140225</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-xml</artifactId> -->\r
-    <!-- <version>9.1.3.v20140225</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-servlet</artifactId> -->\r
-    <!-- <version>9.1.3.v20140225</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-webapp</artifactId> -->\r
-    <!-- <version>9.1.3.v20140225</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-security</artifactId> -->\r
-    <!-- <version>9.1.3.v20140225</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-http</artifactId> -->\r
-    <!-- <version>${jetty.version}</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>org.eclipse.jetty</groupId> -->\r
-    <!-- <artifactId>jetty-io</artifactId> -->\r
-    <!-- <version>${jetty.version}</version> -->\r
-    <!-- </dependency> -->\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>javax.servlet</groupId> -->\r
-    <!-- <artifactId>javax.servlet-api</artifactId> -->\r
-    <!-- <version>3.1.0</version> -->\r
-    <!-- </dependency> -->\r
-\r
-    <!-- <dependency> -->\r
-    <!-- <groupId>javax.servlet</groupId> -->\r
-    <!-- <artifactId>jsp-api</artifactId> -->\r
-    <!-- <version>2.0</version> -->\r
-    <!-- </dependency> -->\r
-\r
     <dependency>\r
       <groupId>net.sf.ehcache</groupId>\r
       <artifactId>ehcache-core</artifactId>\r
       <artifactId>hamcrest-core</artifactId>\r
       <version>1.3</version>\r
     </dependency>\r
-    <dependency>\r
-      <groupId>com.mchange</groupId>\r
-      <artifactId>c3p0</artifactId>\r
-      <version>${c3p0.version}</version>\r
-    </dependency>\r
     <dependency>\r
       <groupId>org.jboss.spec.javax.transaction</groupId>\r
       <artifactId>jboss-transaction-api_1.1_spec</artifactId>\r
     </dependency>\r
 \r
     <!-- For Unit Tests Start -->\r
+       <!-- still needed? -->\r
 \r
-    <dependency>\r
-      <groupId>org.unitils</groupId>\r
-      <artifactId>unitils-core</artifactId>\r
-      <version>3.4.2</version>\r
-    </dependency>\r
-    <dependency>\r
-      <groupId>org.unitils</groupId>\r
-      <artifactId>unitils-spring</artifactId>\r
-      <version>3.4.2</version>\r
-    </dependency>\r
-    <dependency>\r
-      <groupId>org.unitils</groupId>\r
-      <artifactId>unitils-database</artifactId>\r
-      <version>3.4.2</version>\r
-    </dependency>\r
     <dependency>\r
       <groupId>commons-dbcp</groupId>\r
       <artifactId>commons-dbcp</artifactId>\r
       <artifactId>commons-pool</artifactId>\r
       <version>1.5.4</version>\r
     </dependency>\r
-    <dependency>\r
-      <groupId>org.unitils</groupId>\r
-      <artifactId>unitils-dbmaintainer</artifactId>\r
-      <version>3.4.2</version>\r
-    </dependency>\r
-    <dependency>\r
-      <groupId>com.h2database</groupId>\r
-      <artifactId>h2</artifactId>\r
-      <version>1.4.181</version>\r
-    </dependency>\r
-    <dependency>\r
-      <groupId>org.unitils</groupId>\r
-      <artifactId>unitils-dbunit</artifactId>\r
-      <version>3.4.2</version>\r
-    </dependency>\r
-    <dependency>\r
-      <groupId>org.dbunit</groupId>\r
-      <artifactId>dbunit</artifactId>\r
-      <version>2.4.9</version>\r
-    </dependency>\r
+\r
\r
     <!-- For Unit Tests End -->\r
 \r
     <!-- For Hibernate Mapping Start -->\r
                <version>5.5.8</version>\r
                <scope>compile</scope>\r
        </dependency>\r
-    \r
 \r
   </dependencies>\r
 </project>\r
index c9f360f44b6669cb364d064bcc174b7fefacb763..2cb31436b9f5f14cb5e81d8d3235b8703ab57d52 100644 (file)
@@ -59,6 +59,7 @@ import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;\r
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
+import eu.etaxonomy.cdm.api.service.IPreferenceService;\r
 import eu.etaxonomy.cdm.api.service.IProgressMonitorService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.IService;\r
@@ -413,6 +414,11 @@ public class CdmApplicationRemoteConfiguration implements ICdmApplicationConfigu
     public IGroupService getGroupService(){\r
         return (IGroupService) getService(IGroupService.class, "/remoting/group.service", new CdmServiceRequestExecutor());\r
     }\r
+    \r
+    @Override\r
+    public IPreferenceService getPreferenceService(){\r
+        return (IPreferenceService) getService(IPreferenceService.class, "/remoting/preference.service", new CdmServiceRequestExecutor());\r
+    }\r
 \r
 \r
     @Override\r
index c99ce01b646bc73feed2bcbf36485ad9210d103b..8b079fcfaa7467cca279c51dc2f6a42c1277ae71 100644 (file)
@@ -71,8 +71,8 @@ public class CacheLoader {
         } else if (obj instanceof Collection) {
             return (T) load((Collection<T>)obj, recursive, update);
         } else if(obj instanceof Pager) {
-             load(((Pager)obj).getRecords(), recursive, update);
-             return obj;
+               load(((Pager)obj).getRecords(), recursive, update);
+            return obj;
         } else if(obj instanceof MergeResult) {
             return (T) load((MergeResult<CdmBase>)obj, recursive, update);
         }
@@ -153,7 +153,7 @@ public class CacheLoader {
         return map;
     }
 
-    public <T extends Object> Collection<T> load(Collection<T> collection, boolean recursive, boolean update){
+    public <T extends Object> Collection<T> load(Collection<T> collection,  boolean recursive, boolean update){
 
         Collection<T> loadedCollection;
         if(isRecursiveEnabled && recursive) {
index 73195291608f0363f62a0505b6b2903060f90f85..442bc6112b88e24a7899aad191f39eed6001b7e4 100644 (file)
@@ -246,10 +246,7 @@ public class EntityCacherDebugResult {
             return;
         }
 
-        int originalMapSize = map.size();
-
         Iterator<Map.Entry<T,T>> iter = map.entrySet().iterator();
-        int i=0;
         while ( iter.hasNext() ) {
             Map.Entry<T,T> e = iter.next();
             CdmEntityInfo childCei = new CdmEntityInfo(e);
@@ -268,15 +265,22 @@ public class EntityCacherDebugResult {
     private <T extends Object> void debug(Collection<T> collection,
             List<CdmEntityInfo> alreadyVisitedEntities,
             CdmEntityInfo cei) {
-        int length = collection.size();
-        Object[] result = new Object[length];
         Iterator<T> collectionItr = collection.iterator();
 
         while(collectionItr.hasNext()) {
             Object obj = collectionItr.next();
-            CdmEntityInfo childCei = new CdmEntityInfo(ProxyUtils.deproxy(obj));
-            cei.addChild(childCei);
-            debugRecursive(obj, alreadyVisitedEntities, childCei);
+            boolean alreadyVisited = false;
+            for (CdmEntityInfo entityInfo: alreadyVisitedEntities) {
+                if(obj.equals(entityInfo.getObject())){
+                    alreadyVisited = true;
+                    break;
+                }
+            }
+            if(!alreadyVisited){
+                CdmEntityInfo childCei = new CdmEntityInfo(ProxyUtils.deproxy(obj));
+                cei.addChild(childCei);
+                debugRecursive(obj, alreadyVisitedEntities, childCei);
+            }
 
         }
 
@@ -312,7 +316,6 @@ public class EntityCacherDebugResult {
                 // retrieve the actual object corresponding to the field.
                 // this object will be either a CdmBase or a Collection / Map
                 // with CdmBase as the generic type
-                String f = field;
                 CdmEntityInfo childCei = getDebugCdmBaseTypeFieldValue(cdmEntity, field, alreadyVisitedEntities, cei);
                 if(!childCei.isProxy()) {
                     Object object = childCei.getObject();
@@ -356,9 +359,6 @@ public class EntityCacherDebugResult {
             o = ProxyUtils.deproxy(o);
             CdmBase cdmEntityInSubGraph = null;
 
-            boolean isHibernateProxy = false;
-            boolean isPersistentCollection = false;
-
             childCei = new CdmEntityInfo(o);
             cei.addChild(childCei);
             childCei.setField(field);
@@ -419,9 +419,10 @@ public class EntityCacherDebugResult {
             for(CdmEntityInfo cei : ceiSet) {
                 if(cei.getObject() == objectToCompare) {
                     foundIdentical = true;
-                } else if(objectToCompare.equals(cei.getObject())) {
-                    return false;
                 }
+//                } else if(objectToCompare.equals(cei.getObject())) {
+//                    return false;
+//                }
             }
         }
         return foundIdentical;
index 44e4537ff69668eed226792b27a81bce6262f368..cf3616e5a115c3e8a1825af13c9a53a0e7308849 100644 (file)
@@ -2,12 +2,13 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Editor Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.editor;singleton:=true
-Bundle-Version: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Activator: eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: OSGI-INF/l10n/plugin
 Export-Package: eu.etaxonomy.taxeditor.editor,
  eu.etaxonomy.taxeditor.editor.handler,
+ eu.etaxonomy.taxeditor.editor.handler.defaultHandler,
  eu.etaxonomy.taxeditor.editor.internal,
  eu.etaxonomy.taxeditor.editor.key.polytomous,
  eu.etaxonomy.taxeditor.editor.name,
index 868a4482a427dc57fcec719fdd382ad575d70156..b069ba2e463d56aec56418bdce884c9572d8c30d 100644 (file)
@@ -16,7 +16,7 @@ SingleReadSequenceContextMenu_REMOVE_FROM_SEQUENCE=Remove from this Sequence
 SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE=Reuse for other Sequence
 SingleReadSequenceContextMenu_REUSE_SINGLE_READ_HERE=Reuse SingleRead here
 
-DerivateView_DERIVATIVE_EDITOR=Derivative Editor
+DerivateView_DERIVATIVE_EDITOR=Specimen Editor
 DerivateView_SAVING_HIERARCHY=Saving hierarchy
 DerivateView_UNSAVED_CHANGES=View has unsaved changes
 DerivateView_YOU_NEED_TO_SAVE=You need to save before performing this action
@@ -34,7 +34,7 @@ DerivateViewEditorInput_NO_ROOT=No root element found\!
 MoveDerivateOperation_MOVE_NOT_POSSIBLE=Moving derivatives not possible\!
 MoveDerivateOperation_MOVE_TO_NOT_POSSIBLE=Moving "%s" to "%s" is not possible\!
 
-OpenDerivateEditorForTaxonHandler_COULD_NOT_OPEN_EDITOR=Could not open Derivative Editor
+OpenDerivateEditorForTaxonHandler_COULD_NOT_OPEN_EDITOR=Could not open Specimen Editor
 OpenDerivateEditorForTaxonHandler_FAILED_TO_OPEN=Failed to open Editor
 OpenDerivateEditorForTaxonHandler_HIERARCHY_CORRUPTED=The derivative hierarchy is corrupted\!
 OpenDerivateEditorForTaxonHandler_NO_DERIVATIVES_FOUND=No Derivatives found
@@ -47,3 +47,7 @@ DescriptiveViewPart_COLLAPSE_ALL=Collapse All
 DescriptiveViewPart_EXPAND_ALL=Expand All
 DescriptiveViewPart_FACTUAL_DATA=Factual Data
 DescriptiveViewPart_SHOW_ALL_DATA=Show all factual data
+
+ConceptGraphView_VIEWER_NAME=Concept Graph
+ConceptViewPart_VIEWER_NAME=Concept Relations
+UsesViewPart_VIEWER_NAME=Uses
index ef4316727da3a9289d8a3750bde53a02f0990192..f252b7d844d652d870d52961f6fd835764068079 100644 (file)
@@ -16,7 +16,7 @@ SingleReadSequenceContextMenu_REMOVE_FROM_SEQUENCE=Von Sequenz entfernen
 SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE=Für andere Sequenz verwenden
 SingleReadSequenceContextMenu_REUSE_SINGLE_READ_HERE=SingleRead hier verwenden
 
-DerivateView_DERIVATIVE_EDITOR=Derivat-Editor
+DerivateView_DERIVATIVE_EDITOR=Specimen-Editor
 DerivateView_SAVING_HIERARCHY=Speichere Hierarchie
 DerivateView_UNSAVED_CHANGES=Ungepeicherte Ã„nderungen
 DerivateView_YOU_NEED_TO_SAVE=Sie müssen speichern, um diese Aktion auszuführen
@@ -34,7 +34,7 @@ DerivateViewEditorInput_NO_ROOT=Kein Root-Element gefunden\!
 MoveDerivateOperation_MOVE_NOT_POSSIBLE=Verschieben von Derivaten nicht möglich\!
 MoveDerivateOperation_MOVE_TO_NOT_POSSIBLE=Verschieben von "%s" nach "%s" nicht möglich\!
 
-OpenDerivateEditorForTaxonHandler_COULD_NOT_OPEN_EDITOR=Konnte Derivat-Editor nicht Ã¶ffnen
+OpenDerivateEditorForTaxonHandler_COULD_NOT_OPEN_EDITOR=Konnte Specimen-Editor nicht Ã¶ffnen
 OpenDerivateEditorForTaxonHandler_FAILED_TO_OPEN=Öffnen des Editors fehlgeschlagen
 OpenDerivateEditorForTaxonHandler_HIERARCHY_CORRUPTED=Die Derivathierarchie ist korrumpiert\!
 OpenDerivateEditorForTaxonHandler_NO_DERIVATIVES_FOUND=Keine Derivate gefunden
@@ -47,3 +47,7 @@ DescriptiveViewPart_COLLAPSE_ALL=Alles einklappen
 DescriptiveViewPart_EXPAND_ALL=Alles ausklappen
 DescriptiveViewPart_FACTUAL_DATA=Faktendaten
 DescriptiveViewPart_SHOW_ALL_DATA=Zeige alle Faktendaten
+
+ConceptGraphView_VIEWER_NAME=Konzeptgraph
+ConceptViewPart_VIEWER_NAME=Konzeptrelationen
+UsesViewPart_VIEWER_NAME=Nutzung
index 486622a6c7750b70ccfcd02b0aca1731b0be891b..14420cb28163f51b7a7e2fae548a0549a910adc4 100644 (file)
@@ -9,7 +9,7 @@ editor.name.1 = Key
 editor.name.2 = Polytomous Key Graph Editor\r
 editor.name.3 = Polytomous Key List Editor\r
 editor.name.4 = Cdm Authority Editor\r
-editor.name.5 = Derivative Editor\r
+editor.name.5 = Specimen Editor\r
 view.name = Factual Data\r
 view.name.0 = Uses\r
 view.name.1 = Media\r
@@ -111,12 +111,12 @@ command.name.32 = Create Concept Relation
 command.name.33 = Open Related Concept\r
 category.name.7 = -- Group\r
 command.name.34 = Edit CDM Authorities\r
-command.name.35 = Open Derivative Editor\r
+command.name.35 = Open Specimen Editor\r
 scheme.description = The default key binding scheme for the Taxonomic Editor\r
 scheme.name = Taxonomic Editor Default Key Bindings\r
 editor.name.6 = Specimen Import Editor\r
 editor.name.7 = Gbif Import Editor\r
-editor.name.8 = Checklist Editor\r
+editor.name.8 = Distribution Editor\r
 view.name.4 = Specimen Import\r
 view.name.5 = GBIF Specimen Import\r
 command.label.46 = Name\r
@@ -126,7 +126,7 @@ command.label.49 = Misapplication
 command.label.50 = Use Existing Image\r
 command.name.36 = Create Misapplication\r
 command.name.37 = Use Existing Image\r
-command.name.38 = Open Checklist Editor\r
+command.name.38 = Open Distribution 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.\r
@@ -153,6 +153,9 @@ command.name.43 = Create Field Unit
 command.name.44 = Deep Delete\r
 command.name.46 = Move Synonym (Homotypical Group) to another Accepted Taxon\r
 command.label.56 = Move Synonym (Homotypical Group) to another Accepted Taxon\r
+command.name.57 =  Set as Basionym of Homotypical Group\r
+command.label.57 = Set as Basionym of Homotypical Group\r
+\r
 markerContentGenerator.name = Validation Problems Marker Generator\r
 command.name.45 = Delete\r
 command.name.47 = Delete\r
@@ -163,8 +166,8 @@ command.name.49 = delete
 command.name.50 = delete\r
 command.name.51 = delete
 \r
-editor.name.DERIVATIVE_EDITOR = Derivative Editor\r
-command.label.DERIVATIVE_EDITOR = Derivative Editor\r
+editor.name.DERIVATIVE_EDITOR = Specimen Editor\r
+command.label.DERIVATIVE_EDITOR = Specimen Editor\r
 command.label.LINK_WITH_TAXON_SELECTION = Link with taxon selection\r
 command.label.UNLINK_FROM_TAXON_SELECTION = Unlink from taxon selection\r
 command.label.REUSE_SINGLE_READ_HERE = Reuse single read here\r
@@ -172,7 +175,7 @@ command.label.REUSE_SINGLE_READ_FOR_OTHER_SEQUENCE = Reuse for other sequence
 command.label.REMOVE_SINGLE_READ_FROM_THIS_SEQUENCE = Remove from this sequence\r
 command.label.LINK_WITH_TAXON_SELECTIO = Link with Taxon Selection\r
 command.name.OPEN_NAME_EDITOR_FOR_TAXON_NODE = Open Taxon Editor for taxonnode\r
-command.name.OPEN_DERIVATIVE_EDITOR = Open Derivative Editor\r
+command.name.OPEN_DERIVATIVE_EDITOR = Open Specimen Editor\r
 command.name.LINK_WITH_TAXON_SELECTION = Link with taxon selection\r
 command.name.COPY_SINGLE_READ_TO_CLIPBOARD = Copy SingleRead to clipboard\r
 command.name.REUSE_SINGLE_READ = Reuse SingleRead\r
@@ -180,4 +183,5 @@ command.name.REMOVE_SINGLE_READ = Remove SingleRead from sequence
 command.name.TOGGLE_LINK_WITH_TAXON_SELECTION = Toggle link with taxon selection\r
 \r
 viewCommandMapping.viewerName.NAME_EDITOR = Name Editor\r
-viewCommandMapping.viewerName.SPECIMEN_EDITOR = Derivative Editor\r
+viewCommandMapping.viewerName.SPECIMEN_EDITOR = Specimen Editor\r
+viewCommandMapping.viewerName.CHECKLIST_EDITOR = Distribution Editor
\ No newline at end of file
index d7b53fba752c5c7998e433e96ca5fd903af3032d..4ea61bdd675431ab0eed5d375314bcdf15f6f88f 100644 (file)
@@ -26,7 +26,7 @@ command.label.5 = Medien
 command.label.6 = Konzeptrelationen
 command.label.7 = Konzeptgraph
 command.label.8 = \u00d6ffne Parent
-menu.label = Neue
+menu.label = Neu
 command.label.9 = Heterotypisches Synonym
 command.label.10 = Homotypisches Synonym
 command.label.11 = Synonym in Homotypischer Gruppe
@@ -68,6 +68,7 @@ menu.label.3 = Neue
 command.label.43 = \u00d6ffne verbundenes Konzept
 command.label.44 = L\u00f6schen
 command.label.45 = Bearbeite Rechte
+command.label.57 = Setze als Basionym der homotypischen Gruppe
 extension.name = Namensbefehle
 category.name.0 = -- Namenseditor
 command.name = \u00d6ffne Elter
@@ -116,7 +117,7 @@ scheme.description = Die Standard Tastenkombinationsschema f\u00fcr den Taxonomi
 scheme.name = Taxonomic Editor Standard Tastenkombinationen
 editor.name.6 = Specimen Import Editor
 editor.name.7 = GBIF Import Editor
-editor.name.8 = Checklist Editor
+editor.name.8 = Verbreitungs-Editor
 view.name.4 = Specimen Import
 view.name.5 = GBIF Specimen Import
 command.label.46 = Name
@@ -126,7 +127,7 @@ command.label.49 = Misapplication
 command.label.50 = Benutze vorhandenes Bild
 command.name.36 = Erstelle Misapplication
 command.name.37 = Benutze vorhandenes Bild
-command.name.38 = \u00d6ffne Checklist Editor
+command.name.38 = \u00d6ffne Verbreitungs-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.
@@ -151,8 +152,8 @@ command.name.41 = Nur Individuals Associations anzeigen
 command.name.42 = \u00d6ffne Taxon Editor
 command.name.43 = Neue Field Unit
 command.name.44 = L\u00f6schen (mit Kindern)
-command.name.46 = Verschiebe Synonym(Homotypische Gruppe) zu neuem Akzeptierten Taxon
-command.label.56 = Verschiebe Synonym(Homotypische Gruppe) zu neuem Akzeptierten Taxon
+command.name.46 = Verschiebe Synonym (homotypische Gruppe) zu neuem akzeptiertem Taxon
+command.label.56 = Verschiebe Synonym (homotypische Gruppe) zu neuem akzeptiertem Taxon
 markerContentGenerator.name = Validation Problems Marker Generator
 command.name.45 = L\u00f6schen
 command.name.47 = L\u00f6schen
@@ -162,6 +163,7 @@ command.name.48 = L\u00f6schen
 command.name.49 = L\u00f6schen
 command.name.50 = L\u00f6schen
 command.name.51 = L\u00f6schen
+command.name.57 = Setze als Basionym der homotypischen Gruppe
 
 editor.name.DERIVATIVE_EDITOR = Specimen-Editor
 command.label.DERIVATIVE_EDITOR = Specimen-Editor
@@ -180,4 +182,5 @@ command.name.REMOVE_SINGLE_READ = Entferne Single-Read von Sequenz
 command.name.TOGGLE_LINK_WITH_TAXON_SELECTION = De-/Aktiviere Verknüpfung mit Taxonauswahl
 
 viewCommandMapping.viewerName.NAME_EDITOR = Namenseditor
-viewCommandMapping.viewerName.SPECIMEN_EDITOR = Specimen-Editor
\ No newline at end of file
+viewCommandMapping.viewerName.SPECIMEN_EDITOR = Specimen-Editor
+viewCommandMapping.viewerName.CHECKLIST_EDITOR = Verbreitungs-Editor
\ No newline at end of file
index 83c8015b8108b114ed804308bc6c98ed9d453a4b..d44bd77183832366df05898333172c42d3cb6315 100644 (file)
                      definitionId="isSynonym">
                </reference>
             </visibleWhen>
+         </command>
+          <command
+               commandId="eu.etaxonomy.taxeditor.editor.name.setAsBasionym"
+               label="%command.label.57"
+               style="push">
+            <visibleWhen>
+              <reference
+                     definitionId="isSynonymInHomotypicalGroupWithMoreSynonyms">
+               </reference>
+           </visibleWhen>
          </command>
          <command
                   commandId="eu.etaxonomy.taxeditor.editor.name.moveSynonymToAnotherAcceptedTaxon"
             </with>
          </activeWhen>
       </handler>
-      <handler
-            class="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistEditorHandler"
-            commandId="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistEditorHandler">
-      </handler>
       <handler
             class="eu.etaxonomy.taxeditor.editor.view.derivate.handler.DeleteDerivateHandler"
             commandId="org.eclipse.ui.edit.delete">
             </with>
          </activeWhen>
       </handler>
+      <handler
+            class="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistEditorHandler"
+            commandId="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler">
+         <activeWhen>
+            <and>
+               <reference
+                     definitionId="isChecklistEditorEnabled">
+               </reference>
+               <or>
+                  <reference
+                        definitionId="isTaxonNode">
+                  </reference>
+                  <reference
+                        definitionId="isClassification">
+                  </reference>
+               </or>
+            </and>
+         </activeWhen>
+      </handler>
    </extension>
    <extension
          name="%extension.name"
             defaultHandler="eu.etaxonomy.taxeditor.editor.name.handler.SwapSynonymAndAcceptedHandler"
             id="eu.etaxonomy.taxeditor.editor.name.swapSynonymAndAccepted"
             name="%command.name.6">
+      </command>
+       <command
+            categoryId="eu.etaxonomy.taxeditor.editor.taxon.name.command.category"
+            defaultHandler="eu.etaxonomy.taxeditor.editor.name.handler.SetBasionymHandler"
+            id="eu.etaxonomy.taxeditor.editor.name.setAsBasionym"
+            name="%command.name.57">
       </command>
       <command
             categoryId="eu.etaxonomy.taxeditor.editor.taxon.name.command.category"
             name="%command.name.34">
       </command>
        <command
-             defaultHandler="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistEditorHandler"
              id="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler"
              name="%command.name.38">
+          <commandParameter
+                id="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler.uuid"
+                name="taxonNodeUuid"
+                optional="true"
+                typeId="eu.etaxonomy.taxeditor.uuidParameterType">
+          </commandParameter>
        </command>
       <command
             categoryId="eu.etaxonomy.taxeditor.editor.new.category"
             name="%command.name.41">
       </command>
       <command
-            defaultHandler="eu.etaxonomy.taxeditor.editor.handler.defaultHandler.DefaultOpenTaxonEditorForTaxonHandler"
             id="eu.etaxonomy.taxeditor.editor.openTaxonEditorForTaxon"
             name="%command.name.42">
          <commandParameter
             id="eu.etaxonomy.taxeditor.editor.derivative.toggleLinkWithTaxonSelection"
             name="%command.name.TOGGLE_LINK_WITH_TAXON_SELECTION">
       </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.handler.defaultHandler.DefaultOpenSpecimenEditorForTypeSpecimenHandler"
+            id="eu.etaxonomy.taxeditor.openSpecimenEditorForTypeSpecimen"
+            name="Open specimen editor for type specimen">
+      </command>
         
    </extension>
    <extension
                   property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isNotHomotypicSynonymOfAcceptedTaxon">
             </test>
          </with>
+      </definition>
+       <definition
+            id="isSynonymInHomotypicalGroupWithMoreSynonyms">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isSynonymInHomotypicalGroupWithMoreSynonyms">
+            </test>
+         </with>
       </definition>
       <definition
             id="isSynonym">
             </test>
          </with>
       </definition>
-      <definition
-            id="isGroupEditor">
-         <with
-               variable="activeEditor">
-            <test
-                  property="taxeditor-bulkeditor.propertyTester.isGroupEditor">
-            </test>
-         </with>
-      </definition>
       <definition
             id="isIndividualsAssociation">
          <with
             </test>
          </with>
       </definition>
+      <definition
+            id="isOrphanedTaxon">
+         <with
+               variable="selection">
+            <test
+                  forcePluginActivation="true"
+                  property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isOrphaned">
+            </test>
+         </with>
+      </definition>
    </extension>
    <extension
          point="org.eclipse.core.expressions.propertyTesters">
             class="eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester"
             id="eu.etaxonomy.taxeditor.editor.name.propertyTester"
             namespace="eu.etaxonomy.taxeditor.editor.name.propertyTester"
-            properties="isAcceptedTaxon,isSynonym,isMisapplication,isTaxonBase,hasEmptyNames,isAcceptedAndHasNoHomotypicSynonyms,isNotHomotypicSynonymOfAcceptedTaxon"
+            properties="isAcceptedTaxon,isSynonym,isMisapplication,isTaxonBase,hasEmptyNames,isAcceptedAndHasNoHomotypicSynonyms,isNotHomotypicSynonymOfAcceptedTaxon,isSynonymInHomotypicalGroupWithMoreSynonyms,isOrphaned"
             type="org.eclipse.jface.viewers.IStructuredSelection">
       </propertyTester>
       <propertyTester
             properties="isMedia,isDescription,isDescriptionElement,isDeletable,isFeatureNodeContainer,isImageGallery,isTaxonEditor,isBulkEditor,isDerivateEditor, isIndividualsAssociation"
             type="org.eclipse.jface.viewers.TreeSelection">
       </propertyTester>
-      <propertyTester
-            class="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorPropertyTester"
-            id="taxeditor-bulkeditor.PropertyTester"
-            namespace="taxeditor-bulkeditor.propertyTester"
-            properties="isGroupEditor"
-            type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">
-      </propertyTester>
       <propertyTester
             class="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester"
             id="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester"
             selection="eu.etaxonomy.cdm.model.taxon.TaxonNode"
             viewerName="%viewCommandMapping.viewerName.SPECIMEN_EDITOR">
       </viewCommandMapping>
+      <viewCommandMapping
+            commandId="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler"
+            selection="eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode"
+            viewerName="%viewCommandMapping.viewerName.CHECKLIST_EDITOR">
+      </viewCommandMapping>
+      <viewCommandMapping
+            commandId="eu.etaxonomy.taxeditor.openSpecimenEditorForTypeSpecimen"
+            selection="eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation"
+            viewerName="Specimen Editor">
+      </viewCommandMapping>
     </extension>
 </plugin>
index 7db2926aa0189678adc575b26e2161cd6c651986..bf94d7a8090d3165b922e7e86fcc2fe4cb8f2cf1 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
        <groupId>eu.etaxonomy</groupId>
        <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
   
   <modelVersion>4.0.0</modelVersion>
index f33625a185db1397dd9b41c5c503ec87458085cc..eab20bc3d2490183b44582f06ff028273d09808e 100644 (file)
@@ -18,7 +18,9 @@ import org.eclipse.osgi.util.NLS;
  */
 public class Messages extends NLS {
     private static final String BUNDLE_NAME = "OSGI-INF/l10n/messages"; //$NON-NLS-1$
-    public static String CreateDerivateContextMenu_ADD;
+    public static String ConceptGraphView_VIEWER_NAME;
+       public static String ConceptViewPart_VIEWER_NAME;
+       public static String CreateDerivateContextMenu_ADD;
     public static String CreateDerivateContextMenu_DNA_SAMPLE;
     public static String CreateDerivateContextMenu_MEDIA;
     public static String CreateDerivateContextMenu_MEDIA_EXISTING;
@@ -57,6 +59,7 @@ public class Messages extends NLS {
     public static String SingleReadSequenceContextMenu_REMOVE_FROM_SEQUENCE;
     public static String SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE;
     public static String SingleReadSequenceContextMenu_REUSE_SINGLE_READ_HERE;
+       public static String UsesViewPart_VIEWER_NAME;
     static {
         // initialize resource bundle
         NLS.initializeMessages(BUNDLE_NAME, Messages.class);
index d127c3f317347b866f89fcb6f23b84ce44643c29..98481d45899bd15cccfc78bdce04592fdf508221 100644 (file)
@@ -338,8 +338,8 @@ public class TaxonEditorInput  extends CdmEntitySessionInput implements IEditorI
     public boolean equals(Object obj) {
         if (TaxonEditorInput.class.equals(obj.getClass())
                 && getTaxon() != null
-                && getTaxon().equals(((TaxonEditorInput) obj).getTaxon())){
-            if(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase() != null){
+                && getTaxon().equals(((TaxonEditorInput) obj).getTaxon())) {
+            if (((TaxonEditorInput) obj).getInitiallySelectedTaxonBase() != null){
                 setInitiallySelectedTaxonBase(((TaxonEditorInput) obj).getInitiallySelectedTaxonBase());
             }
             return true;
@@ -454,9 +454,8 @@ public class TaxonEditorInput  extends CdmEntitySessionInput implements IEditorI
      */
     @Override
     public void merge() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
-        }
+       CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
+
     }
 
     @Override
index fa78b41d88044db94249d9b55fe250b10df73211..f4979367750683a514ae5263b75b6940999b7d34 100644 (file)
@@ -157,8 +157,7 @@ public class CdmAuthorityEditorInput extends CdmEntitySessionInput implements IE
      */
     @Override
     public void merge() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            group = CdmStore.getService(IGroupService.class).merge(group, true).getMergedEntity();
-        }
+        group = CdmStore.getService(IGroupService.class).merge(group, true).getMergedEntity();
+       
     }
 }
index cc2bbf04772df20c8212f1eb3fe2287dca68d3ad..44dadd8e9b9e8122486c3c291330d2be0c10677b 100644 (file)
@@ -1,65 +1,65 @@
 package eu.etaxonomy.taxeditor.editor.handler;
 
-import org.apache.log4j.Logger;
-import org.eclipse.core.commands.AbstractHandler;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 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.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
-public class OpenChecklistEditorHandler extends AbstractHandler {
+public class OpenChecklistEditorHandler extends DefaultOpenHandlerBase<ITaxonTreeNode> {
 
-    private static final Logger logger = Logger.getLogger(OpenChecklistEditorHandler.class);
+       @Override
+       protected ITaxonTreeNode getEntity(UUID uuid) {
+               ITaxonTreeNode taxonTreeNode = CdmStore.getService(ITaxonNodeService.class).load(uuid);
+               if(taxonTreeNode==null){
+                       taxonTreeNode = CdmStore.getService(IClassificationService.class).load(uuid);
+               }
+               return taxonTreeNode;
+       }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
-     * ExecutionEvent)
-     */
-    @Override
-    public Object execute(ExecutionEvent event) throws ExecutionException {
-        boolean isChecklistEditorActivated = PreferencesUtil.getPreferenceStore().getBoolean(
-                IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE);
-        if (isChecklistEditorActivated) {
-            ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
-            if (currentSelection instanceof IStructuredSelection) {
-                Object selectedElement = ((IStructuredSelection) currentSelection).getFirstElement();
-                if (selectedElement instanceof Classification) {
-                    ChecklistEditorInput input = new ChecklistEditorInput(((Classification) selectedElement));
-                    try {
-                        EditorUtil.open(input);
-                    } catch (PartInitException e) {
-                       MessagingUtils.error(OpenChecklistEditorHandler.class, "Could not open ChecklistView", e);
-                    } catch (NullPointerException npe) {
-                       MessagingUtils.messageDialog("Failed to open Editor", OpenChecklistEditorHandler.class,
-                                "Could not open ChecklistView. The hierarchy is corrupted!", npe);
-                    }
-                } else if (selectedElement instanceof TaxonNode) {
-                    ChecklistEditorInput input = new ChecklistEditorInput(((TaxonNode) selectedElement));
-                    try {
-                        EditorUtil.open(input);
-                    } catch (PartInitException e) {
-                       MessagingUtils.error(OpenChecklistEditorHandler.class, "Could not open ChecklistView", e);
-                    } catch (NullPointerException npe) {
-                       MessagingUtils.messageDialog("Failed to open Editor", OpenChecklistEditorHandler.class,
-                                "Could not open ChecklistView. The hierarchy is corrupted!", npe);
-                    }
-                }
-            }
-        }
-        return null;
-    }
+       @Override
+       protected void open(ExecutionEvent event, ITaxonTreeNode entity) {
+               if (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE)) {
+                       if (StringUtils.isBlank(PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.DISTRIBUTION_AREA_OCCURENCE_STATUS) )){
+                               MessagingUtils.informationDialog("No Areas to display", "Please choose the areas you want to display. "
+                                               + "For this go to the preferences, choose the Checklist Editor and choose the areas in the Distribution Selection Wizard.");
+                               this.dispose();
+                               return;
+                       }
+                       if (entity instanceof Classification) {
+                               ChecklistEditorInput input = new ChecklistEditorInput(((Classification) entity));
+                               try {
+                                       EditorUtil.open(input);
+                               } catch (PartInitException e) {
+                                       MessagingUtils.error(OpenChecklistEditorHandler.class, "Could not open Distribution Editor", e);
+                               } catch (NullPointerException npe) {
+                                       MessagingUtils.messageDialog("Failed to open Editor", OpenChecklistEditorHandler.class,
+                                                       "Could not open Distribution Editor. The hierarchy is corrupted!", npe);
+                               }
+                       } else if (entity instanceof TaxonNode) {
+                               ChecklistEditorInput input = new ChecklistEditorInput((TaxonNode) entity);
+                               try {
+                                       EditorUtil.open(input);
+                               } catch (PartInitException e) {
+                                       MessagingUtils.error(OpenChecklistEditorHandler.class, "Could not open Distribution Editor", e);
+                               } catch (NullPointerException npe) {
+                                       MessagingUtils.messageDialog("Failed to open Editor", OpenChecklistEditorHandler.class,
+                                                       "Could not open Distribution Editor. The hierarchy is corrupted!", npe);
+                               }
+                       }
+               }               
+       }
 }
index f8e3350a48f83acd44238c49237e91cc0a0c5dd8..73d4598c136727523479f0fbfb38a326f517f29f 100644 (file)
@@ -29,23 +29,21 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
  */
 public class OpenParentHandler extends AbstractHandler implements IHandler {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-        */
        /** {@inheritDoc} */
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               Taxon parent = EditorUtil.getActiveMultiPageTaxonEditor().getTaxon().getTaxonomicParent();
-               
-               if(parent != null){
-                       try {
-                               EditorUtil.openTaxonNode(parent.getUuid());
-                       } catch (PartInitException e) {
-                               throw new RuntimeException("Error opening parent taxon", e);
-                       } catch (Exception e) {
-                               MessagingUtils.warningDialog("Could not create Taxon", this, e.getMessage());
-                       }
-               }
-               
-               return null;
+               throw new RuntimeException("Open parent not supported anymore");
+//             Taxon parent = EditorUtil.getActiveMultiPageTaxonEditor().getTaxon().getTaxonomicParent();
+//             
+//             if(parent != null){
+//                     try {
+//                             EditorUtil.openTaxonNode(parent.getUuid());
+//                     } catch (PartInitException e) {
+//                             throw new RuntimeException("Error opening parent taxon", e);
+//                     } catch (Exception e) {
+//                             MessagingUtils.warningDialog("Could not create Taxon", this, e.getMessage());
+//                     }
+//             }
+//             
+//             return null;
        }
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenSpecimenEditorForTypeSpecimenHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenSpecimenEditorForTypeSpecimenHandler.java
new file mode 100644 (file)
index 0000000..3cbc0a4
--- /dev/null
@@ -0,0 +1,32 @@
+package eu.etaxonomy.taxeditor.editor.handler.defaultHandler;
+import java.util.UUID;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+
+public class DefaultOpenSpecimenEditorForTypeSpecimenHandler extends
+               DefaultOpenHandlerBase<SpecimenTypeDesignation> {
+
+       @Override
+       protected SpecimenTypeDesignation getEntity(UUID uuid) {
+               return CdmStore.getCommonService().find(SpecimenTypeDesignation.class, uuid);
+       }
+
+       @Override
+       protected void open(ExecutionEvent event, SpecimenTypeDesignation entity) {
+        try {
+            EditorUtil.open(new DerivateViewEditorInput(entity.getUuid()));
+        } catch (PartInitException e) {
+            MessagingUtils.error(DefaultOpenSpecimenEditorForTypeSpecimenHandler.class, "Derivative Editor could not be opened", e);
+        }              
+       }
+
+}
@@ -12,7 +12,7 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 
-public class DefaultOpenTaxonEditorForTaxonHandler extends DefaultOpenHandlerBase<TaxonBase> {
+public class DefaultOpenTaxonEditorForTaxonBaseHandler extends DefaultOpenHandlerBase<TaxonBase> {
 
     @Override
     protected TaxonBase getEntity(UUID uuid) {
@@ -24,7 +24,7 @@ public class DefaultOpenTaxonEditorForTaxonHandler extends DefaultOpenHandlerBas
         try {
             EditorUtil.openTaxonBase(entity.getUuid());
         } catch (PartInitException e) {
-            MessagingUtils.error(DefaultOpenTaxonEditorForTaxonHandler.class, "Could not open taxon editor for taxon/synonym "+entity, e);
+            MessagingUtils.error(DefaultOpenTaxonEditorForTaxonBaseHandler.class, "Could not open taxon editor for taxon/synonym "+entity, e);
         }
     }
 
index 7a190f4323be88cf4668390e437fc48080a72867..e75a1262272b753c8679e86ea875f44b25ab2f58 100644 (file)
@@ -91,9 +91,8 @@ public class PolytomousKeyEditorInput extends AbstractIdentificationEditorInput<
      */
     @Override
     public void merge() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            key = CdmStore.getService(IPolytomousKeyService.class).merge(key,true).getMergedEntity();
-        }
+       key = CdmStore.getService(IPolytomousKeyService.class).merge(key,true).getMergedEntity();
+      
     }
 
     @Override
@@ -26,7 +26,7 @@ import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
  * @created Mar 30, 2011
  * @version 1.0
  */
-class PolytomousKeyContentProvider implements IGraphContentProvider {
+class PolytomousKeyGraphContentProvider implements IGraphContentProvider {
 
        private List<PolytomousKeyRelationship> relations;
 
index 03a4b1aac0b0359f0e4a8411ce642b274b361eec..61544abb7ad1b16e1a280888c9f81d13d1bf464d 100644 (file)
@@ -47,6 +47,6 @@ public class PolytomousKeyGraphEditor extends
 
        @Override
        protected IContentProvider getContentProvider() {
-               return new PolytomousKeyContentProvider();
+               return new PolytomousKeyGraphContentProvider();
        }
 }
index 2806b80be20024832f40c6bbb8e363dcbde24a01..d9be7cb02a5c374ec53e69fbe3d05b685691e77d 100644 (file)
@@ -1123,21 +1123,10 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                                AbstractGroupedContainer.this.handleSplitText(text);
                        }
 
-                       @Override
-                       public void keyPressed(KeyEvent e) {
-                               // TODO Auto-generated method stub
-                               
-                       }
-
-                       @Override
-                       public void keyReleased(KeyEvent e) {
-                               // TODO Auto-generated method stub
-                               
-                       }
                };
 
                getNameViewer().getTextWidget().addVerifyListener(lineBreakListener);
-               getNameViewer().getTextWidget().addKeyListener(lineBreakListener);
+               
        }
 
        abstract class LabelEllipsisListener extends ControlAdapter {
index 8ef88c0b16bafc6beaec110eb18c08e253a7a6ad..adf17288ec2224cf21489c843e7c50bb264b02cb 100644 (file)
@@ -44,7 +44,9 @@ import org.eclipse.swt.events.VerifyListener;
  * @created 19.05.2008
  * @version 1.0
  */
-public abstract class LineBreakListener implements VerifyListener, KeyListener {
+
+public abstract class LineBreakListener implements VerifyListener{
+
 
        private static String LINE_BREAK = System.getProperty("line.separator");
        
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/GroupBasionymContributionItem.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/GroupBasionymContributionItem.java
deleted file mode 100644 (file)
index 0f42bf5..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * 
- */
-package eu.etaxonomy.taxeditor.editor.name.handler;
-
-import org.apache.log4j.Logger;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.CompoundContributionItem;
-import org.eclipse.ui.menus.CommandContributionItem;
-import org.eclipse.ui.menus.CommandContributionItemParameter;
-
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.labels.ILabelImageStrategy;
-import eu.etaxonomy.taxeditor.labels.LabelImageProvider;
-
-/**
- * <p>GroupBasionymContributionItem class.</p>
- *
- * @author p.ciardelli
- * @version $Id: $
- */
-public class GroupBasionymContributionItem extends CompoundContributionItem {
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(GroupBasionymContributionItem.class);
-
-       /**
-        * <p>Constructor for GroupBasionymContributionItem.</p>
-        */
-       public GroupBasionymContributionItem() {}
-
-       /**
-        * <p>Constructor for GroupBasionymContributionItem.</p>
-        *
-        * @param id a {@link java.lang.String} object.
-        */
-       public GroupBasionymContributionItem(String id) {
-               super(id);
-       }
-       
-
-       /** {@inheritDoc} */
-       @Override
-       protected IContributionItem[] getContributionItems() {
-               
-               IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-               
-               ISelectionService selectionService = window.getSelectionService();
-               
-               ISelection selection = selectionService.getSelection();
-               
-               if(selection instanceof IStructuredSelection){
-                       Object selectedObject = ((IStructuredSelection) selection).getFirstElement();
-                       
-                       if(selectedObject != null && selectedObject instanceof TaxonBase){
-                               
-                               TaxonNameBase name = (TaxonNameBase) HibernateProxyHelper.deproxy(((TaxonBase) selectedObject).getName());
-                               
-                               if(name != null && name.getHomotypicalGroup().getTypifiedNames().size() > 1){
-                               
-                                       CommandContributionItemParameter parameter = 
-                                               new CommandContributionItemParameter(
-                                                               window, null, getCommand(name), SWT.NONE);
-                                       
-                                       parameter.label = getLabel(name);               
-                                                       
-                                       return new IContributionItem[] {
-                                                       new CommandContributionItem(parameter)
-                                       };
-                               }
-                               
-                       }
-               }
-               
-               return new IContributionItem[]{};
-       }
-
-       /**
-        * @param name
-        * @return
-        */
-       private String getCommand(TaxonNameBase name) {
-               if(name.isGroupsBasionym()){
-                       return "eu.etaxonomy.taxeditor.editor.name.removeBasionym" ;
-               }
-               return "eu.etaxonomy.taxeditor.editor.name.setBasionym";
-       }
-
-       /**
-        * @param name
-        * @return
-        */
-       private String getLabel(TaxonNameBase name) {
-               ILabelImageStrategy strategy = LabelImageProvider.getLabelStrategy(name);
-               LabelImageProvider labelProvider = new LabelImageProvider(strategy);
-               return (name.isGroupsBasionym() ? "Remove" : "Set")
-                       + " as " + labelProvider.getNameRelationTypeDescription(NameRelationshipType.BASIONYM()) + " for Homotypic Group";
-       }
-}
index 85693469820c39d88c4993f5a16f9ef0d5ada961..3afdefcdf095ab2d96af303da513e893809c78cd 100644 (file)
 
 package eu.etaxonomy.taxeditor.editor.name.handler;
 
+import java.util.Set;
+
+import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
+import eu.etaxonomy.cdm.model.common.CdmBase;
 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.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.Page;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>NameEditorMenuPropertyTester class.</p>
@@ -26,7 +32,7 @@ import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
  * @created Jun 22, 2010
  * @version 1.0
  */
-public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.PropertyTester {
+public class NameEditorMenuPropertyTester extends PropertyTester {
 
        private static final String ACCEPTED = "isAcceptedTaxon";
        private static final String SYNONYM = "isSynonym";
@@ -36,7 +42,8 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
        private static final String EMPTY_NAMES = "hasEmptyNames";
        private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms";
        private static final String NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED = "isNotHomotypicSynonymOfAcceptedTaxon";
-
+       private static final String SYNONYM_WITH_HOMOTYPIC_SYNONYMS = "isSynonymInHomotypicalGroupWithMoreSynonyms";
+       private static final String IS_ORPHANED = "isOrphaned";
 
        /**
         * <p>Constructor for NameEditorMenuPropertyTester.</p>
@@ -57,6 +64,11 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                        IStructuredSelection selection = (IStructuredSelection) receiver;
 
                        Object selectedElement = selection.getFirstElement();
+                       if(selectedElement instanceof UuidAndTitleCache){
+                           UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache<?>)selectedElement;
+                           CdmBase cdmBase = CdmStore.getCommonService().find(uuidAndTitleCache.getType(), uuidAndTitleCache.getUuid());
+                           selectedElement = cdmBase;
+                       }
 
                        if(ACCEPTED.equals(property)){
                                return isAccepted(selectedElement);
@@ -78,9 +90,16 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                        }
                        else if(ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS.equals(property)){
                                return isAcceptedAndHasNoHomotypicSynonyms(selectedElement);
-                       }else if (NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){
+                       }
+                       else if (NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){
                                return isNotHomotypicSynonymOfAcceptedTaxon(selectedElement);
                        }
+                       else if (SYNONYM_WITH_HOMOTYPIC_SYNONYMS.equals(property)){
+                               return isSynonymInHomotypicalGroupWithMoreSynonyms(selectedElement);
+                       }
+                       else if (IS_ORPHANED.equals(property)){
+                           return isOrphaned(selectedElement);
+                       }
 
                }
 
@@ -96,6 +115,15 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                return false;
        }
 
+       private boolean isSynonymInHomotypicalGroupWithMoreSynonyms(Object selectedElement) {
+               if (isSynonym(selectedElement)){
+                       Synonym synonym = (Synonym) selectedElement;
+                       return synonym.getHomotypicGroup().getTypifiedNames().size()>1;
+               }
+               return false;
+       }
+
+
        private boolean isNotHomotypicSynonymOfAcceptedTaxon(Object selectedElement) {
                if (isSynonym(selectedElement)){
                        Synonym synonym = (Synonym) selectedElement;
@@ -143,4 +171,19 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
        private boolean isAccepted(Object selectedElement) {
                return (selectedElement instanceof Taxon  && ! ((Taxon) selectedElement).isMisapplication()) ? true : false;
        }
+
+       private boolean isOrphaned(Object selectedElement) {
+           if(selectedElement instanceof Taxon){
+               return ((Taxon) selectedElement).isOrphaned();
+           }
+           else if(selectedElement instanceof Synonym){
+               Set<Taxon> acceptedTaxa = ((Synonym) selectedElement).getAcceptedTaxa();
+               for (Taxon taxon : acceptedTaxa) {
+                if(!taxon.isOrphaned()){
+                    return false;
+                }
+            }
+           }
+           return false;
+       }
 }
index 6f4d65b2804533a3dcd55abf17b260e83bd79f4d..0d5cee3e09c5db800d7e100aa26f3acc51a9df5c 100644 (file)
@@ -73,6 +73,7 @@ import eu.etaxonomy.taxeditor.model.IContextListener;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -227,7 +228,14 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         selectionService.addSelectionListener(this);
         viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
         labelProvider = new ChecklistLabelProvider(this.viewer);
+        
         terms = labelProvider.getNamedAreas();
+        if (terms == null){
+                       MessagingUtils.informationDialog("No Areas to display", "Please choose the areas you want to display. "
+                                       + "Therefore go to the preferences, choose the Checklist Editor and choose the areas in the Distribution Selection Wizard.");
+                       this.dispose();
+                       return;
+               }
         filter = new ChecklistEditorFilter();
         createTopComposite(parent);
         loadDataInput();
@@ -303,6 +311,7 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
        private void createToolbarItems() {
                dropListener = new ChecklistDropdownSelectionListener(toolItem, this, terms);
+               
         for (DefinedTermBase<DefinedTermBase> term : terms) {
             if(term!=null){
                 dropListener.add(term);
@@ -468,11 +477,14 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
     /** {@inheritDoc} */
     @Override
     public void dispose() {
-        this.checklistEditorInput.dispose();
-
+       this.checklistEditorInput.dispose();
+       super.dispose();
+        
         conversation.unregisterForDataStoreChanges(this);
-        conversation.close();
-        super.dispose();
+        conversation.unbind();
+       
+        //conversation.close();
+               conversation = null;
     }
 
     /** {@inheritDoc} */
@@ -829,4 +841,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
         return conversation;
     }
+    
+    
 }
index e922646171264d8cce3cf4ea0554dbe26ac3aee4..4eefc824a67b4b8898627a5067c668fc3b2e2a83 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.ui.IPersistable;
 import org.eclipse.ui.IPersistableElement;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
@@ -54,12 +55,14 @@ public class ChecklistEditorInput extends CdmEntitySessionInput implements IEdit
      * @param taxonNode
      */
     public ChecklistEditorInput(TaxonNode taxonNode){
-        super(true);
+        super(false);
         this.conversation = CdmStore.createConversation();
-        this.taxonNode = CdmStore.getCurrentApplicationConfiguration().getTaxonNodeService().load(taxonNode.getUuid());
+        this.taxonNode =CdmStore.getService(ITaxonNodeService.class).load(taxonNode.getUuid(), getTaxonNodePropertyPaths());
        // getChildTaxa(taxonNode);
         classification = taxonNode.getClassification();
+        initSession();
     }
+    
 
     /**
      * @param taxonNode2
@@ -241,5 +244,59 @@ public class ChecklistEditorInput extends CdmEntitySessionInput implements IEdit
     public ConversationHolder getConversation() {
         return conversation;
     }
+    
+    private List<String> getTaxonNodePropertyPaths() {
+        List<String> taxonNodePropertyPaths = new ArrayList<String>();
+        for(String propertyPath : getTaxonBasePropertyPaths()) {
+            taxonNodePropertyPaths.add("taxon." + propertyPath);
+        }
+        return taxonNodePropertyPaths;
+    }
+
+    private List<String> getTaxonBasePropertyPaths() {
+        List<String> taxonBasePropertyPaths = Arrays.asList(new String[] {
+                "sec",
+                "createdBy",
+                "updatedBy",
+                "annotations",
+                "markers",
+                "credits",
+                "extensions",
+                "rights",
+                "sources",
+                "descriptions",
+                "relationsToThisTaxon",
+                "relationsFromThisTaxon",
+                "taxonNodes",
+                "descriptions.descriptionElements.feature",
+                "descriptions.descriptionElements.area",
+                "descriptions.descriptionElements.status",
+                "descriptions.markers",
+                "name.descriptions",
+                "name.typeDesignations",
+                "name.status",
+                "name.nomenclaturalReference.inReference",
+                "name.taxonBases.taxonNodes",
+                "name.relationsFromThisName",
+                "name.relationsToThisName",
+                "name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations.synonym.name.status",
+                "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName",
+                "synonymRelations.synonym.name.status.type",
+                "synonymRelations.synonym.name.relationsToThisName.fromName",
+                "synonymRelations.synonym.name.nomenclaturalReference.inReference.authorship",
+                "synonymRelations.synonym.name.nomenclaturalReference.authorship",
+                "synonymRelations.synonym.name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations"
+        });
+
+        return taxonBasePropertyPaths;
+    }
+    
+//    @Override
+//    public void dispose(){
+//     conversation.unbind();
+//     conversation.close();
+//     getCdmEntitySession().dispose();
+//     super.dispose();
+//    }
 
 }
index d9da0c0a2e3d705a8194197113ae4bf8e14b6a3b..014ff4fb7f231fcb20ed9b9d86b53527c2735a26 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
index 2acbc4a017e7970f7bac4baa789fb8b9ff54ab64..2e116e3ef39cf73cf9e47d4abe2ce2989234c751 100644 (file)
@@ -10,8 +10,8 @@
 
 package eu.etaxonomy.taxeditor.editor.view.concept;
 
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
@@ -28,42 +28,34 @@ import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
  */
 public class ConceptContentProvider implements IStructuredContentProvider {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-        */
        @Override
        public void dispose() {
-               // TODO Auto-generated method stub
                
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-        */
        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-               // TODO Auto-generated method stub
-               
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-        */
        @Override
        public Object[] getElements(Object inputElement) {
+               Taxon taxon = null;
                if(inputElement instanceof TaxonEditorInput){
-                       Taxon taxon = ((TaxonEditorInput) inputElement).getTaxon();
-                       
-                       Set<TaxonRelationship> filteredTaxonRelations = new HashSet<TaxonRelationship>();
+                       taxon = ((TaxonEditorInput) inputElement).getTaxon();
+               }
+               else if(inputElement instanceof Taxon){
+                       taxon = (Taxon) inputElement;
+               }
+               if(taxon!=null){
+                       Map<TaxonRelationship, Taxon> taxonToTaxonRelationsMap = new HashMap<>();
                        
                        for (TaxonRelationship relationship : taxon.getTaxonRelations()) {
                                if (! relationship.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) ||
                                                 relationship.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
-                                       filteredTaxonRelations.add(relationship);
+                                       taxonToTaxonRelationsMap.put(relationship, taxon);
                                }
                        }
-                       
-                       return filteredTaxonRelations.toArray();
+                       return taxonToTaxonRelationsMap.entrySet().toArray();
                }
                return new Object[0];
        }
index 6fb3d9c37e701b097d1aa05ecdf3cb318b758cba..157defcca34ca8a9c1d1f229f51e714ab2117dff 100644 (file)
 
 package eu.etaxonomy.taxeditor.editor.view.concept;
 
+import java.util.Map.Entry;
+
 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.StyledString;
 import org.eclipse.swt.graphics.Image;
 
-import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.reference.IReference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author n.hoffmann
@@ -34,24 +30,18 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class ConceptLabelProvider extends LabelProvider implements IStyledLabelProvider {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
-        */
        @Override
        public Image getImage(Object element) {
-               if(element instanceof TaxonRelationship){
-                       return getTaxonRelationshipImage((TaxonRelationship) element);
+               if(element instanceof Entry){
+                       return getTaxonRelationshipImage((TaxonRelationship) ((Entry<TaxonRelationship, Taxon>) element).getKey());
                }
                return super.getImage(element);
        }
        
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.ColumnLabelProvider#getText(java.lang.Object)
-        */
        @Override
        public String getText(Object element) {
-               if(element instanceof TaxonRelationship){
-                       return formatRelationship((TaxonRelationship) element);
+               if(element instanceof Entry){
+                       return formatRelationship((Entry<TaxonRelationship, Taxon>) element);
                }
                
                return "";
@@ -59,23 +49,20 @@ public class ConceptLabelProvider extends LabelProvider implements IStyledLabelP
        
        /**
         * Creates a string that holds a representation of the {@link TaxonRelationship} in relation to
-        * the accepted taxon of the currently active {@link MultiPageTaxonEditor}.
+        * the currently selected and accepted taxon.
         * 
         * @param relationship
         * @return a formatted String representation of the relationship
         */
-       private String formatRelationship(TaxonRelationship relationship){
-               Taxon sourceTaxon = EditorUtil.getActiveMultiPageTaxonEditor().getTaxon();
-               TaxonRelationshipTypeInverseContainer container = TaxonRelationshipTypeInverseContainer.CreateFromSource(sourceTaxon, relationship);
-               Taxon relatedTaxon = TaxonRelationshipTypeInverseContainer.RelatedTaxon(sourceTaxon, relationship);
+       private String formatRelationship(Entry<TaxonRelationship, Taxon> entry){
+               Taxon sourceTaxon = entry.getValue();
+               TaxonRelationshipTypeInverseContainer container = TaxonRelationshipTypeInverseContainer.CreateFromSource(sourceTaxon, entry.getKey());
+               Taxon relatedTaxon = TaxonRelationshipTypeInverseContainer.RelatedTaxon(sourceTaxon, entry.getKey());
                String string = String.format("%s %s", container.getAbbreviatedLabel(), relatedTaxon);
                
                return string;
        }
        
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object)
-        */
        @Override
        public StyledString getStyledText(Object element) {
                return  new StyledString(getText(element), StyledString.QUALIFIER_STYLER);
index 898301e69bd4f991adc81bf827d504f0bb7848c1..3dd020bb3b1edd54c9d06a9a5501b1020817ce14 100644 (file)
 
 package eu.etaxonomy.taxeditor.editor.view.concept;
 
+import java.util.Map.Entry;
+
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ListViewer;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.Viewer;
@@ -25,51 +28,80 @@ import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
 
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
+import eu.etaxonomy.taxeditor.editor.Messages;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 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.model.LineSelection;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
 
 /**
  * @author n.hoffmann
  * @created Jan 24, 2011
  * @version 1.0
  */
-public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData{
+public class ConceptViewPart extends AbstractCdmEditorViewPart 
+implements IPartContentHasDetails, IPartContentHasSupplementalData{
 
-       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept";
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept"; //$NON-NLS-1$
 
-       private ListViewer viewer;
+       private ConceptRelationViewer viewer;
 
        @Override
        protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
+               if(part == this){
+                   return;
+               }
                if(AbstractUtility.getActiveEditor() == null){
                        showEmptyPage();
                        return;
                }
-
-               if(part instanceof BulkEditor){
-                       showEmptyPage();
+               
+        if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart) {
+            // do not show empty page as these views are also used to edit the
+            // description selected in this view
+            return;
+        }
+        else if(part instanceof BulkEditor && selection instanceof LineSelection){
+                       if(((LineSelection) selection).getFirstElement() instanceof Taxon){
+                               showViewer(part, (LineSelection) selection);
+                       }
+                       else{
+                               showEmptyPage();
+                       }
                        return;
                }
-
-               if(part instanceof AbstractGraphKeyEditor){
+               else if(part instanceof AbstractGraphKeyEditor){
                        showEmptyPage();
                        return;
                }
-
-               if(part instanceof MultiPageTaxonEditor){
+               else if(part instanceof MultiPageTaxonEditor){
                        if(! part.equals(this.part)){
                                IEditorInput input = ((IEditorPart) part).getEditorInput();
                                showViewer(part, new StructuredSelection(input));
                        }
-                       showViewer();
+               }
+               else {
+                   showEmptyPage();
                }
 
        }
+       
+       @Override
+       protected String createPartTitle(Object selectedObject) {
+               if(selectedObject instanceof TaxonEditorInput){
+                       return super.createPartTitle(((TaxonEditorInput) selectedObject).getTaxon());
+               }
+               return super.createPartTitle(selectedObject);
+       }
 
        @Override
        public boolean onComplete() {
@@ -83,7 +115,7 @@ public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartC
 
        @Override
        public void createViewer(Composite parent) {
-               viewer = new ListViewer(parent);
+               viewer = new ConceptRelationViewer(parent);
 
                viewer.setContentProvider(new ConceptContentProvider());
                viewer.setLabelProvider(new ConceptLabelProvider());
@@ -114,4 +146,34 @@ public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartC
                super.changed(object);
        }
 
+       private class ConceptRelationViewer extends ListViewer {
+
+               public ConceptRelationViewer(Composite parent) {
+                       super(parent);
+               } 
+               
+               @Override
+               public ISelection getSelection() {
+                       ISelection selection = super.getSelection();
+                       if(selection instanceof IStructuredSelection && !selection.isEmpty()){
+                               Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                               TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
+                               return new StructuredSelection(taxonRelationship);
+                               
+                       }
+                       return selection;
+               }
+               
+               @Override
+               public void setSelection(ISelection selection) {
+                       super.setSelection(selection);
+               }
+
+       }
+
+       @Override
+       protected String getViewName() {
+               return Messages.ConceptViewPart_VIEWER_NAME;
+       }
+
 }
index 01ca52b887b002e49c861b3d5e9bc1b9bba5b3e9..2866751df28103eeac8d160e390017bf1fad85b4 100644 (file)
@@ -19,6 +19,7 @@ import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm;
 
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.Messages;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 
@@ -28,7 +29,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
  */
 public class ConceptGraphView extends AbstractCdmEditorViewPart {
 
-       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept.graph";
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept.graph"; //$NON-NLS-1$
 
        private GraphViewer viewer;
        private LayoutAlgorithm layoutAlgoritm;
@@ -123,5 +124,10 @@ public class ConceptGraphView extends AbstractCdmEditorViewPart {
                return layoutAlgoritm;
        }
 
+       @Override
+       protected String getViewName() {
+               return Messages.ConceptGraphView_VIEWER_NAME;
+       }
+
 
 }
index d850131f91bf2080072cc03dfe833a459dd35a16..44c0e58c0daa374c678cd2840b0ddc5ba186e234 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.
 */
@@ -14,16 +14,20 @@ 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.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.Page;
-import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.view.concept.operation.CreateConceptRelationOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
@@ -33,52 +37,61 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
 
 /**
- * <p>CreateConceptRelationHandler class.</p>
- *
  * @author n.hoffmann
  * @created 16.04.2009
  * @version 1.0
  */
 public class CreateConceptRelationHandler extends AbstractHandler {
-       
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-        */
+
        /** {@inheritDoc} */
        @Override
        public Object execute(ExecutionEvent event) throws ExecutionException {
-               TaxonNameEditor editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(
-                               Page.NAME);
-               
-               Taxon taxonToBeFiltered = editor.getTaxon();
-               
-               /* we need to get the activePart before calling TaxonBaseSelectionDialog.selectTaxon(), otherwise the 
+           IUndoContext undoContext = null;
+           ConversationHolder conversationHolder = null;
+           Taxon taxon = null;
+               IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+               if(activeEditor instanceof MultiPageTaxonEditor){
+                   MultiPageTaxonEditor taxonEditor = (MultiPageTaxonEditor)activeEditor;
+                   taxon = taxonEditor.getTaxon();
+                   conversationHolder = taxonEditor.getConversationHolder();
+                   undoContext = taxonEditor.getUndoContext();
+               }
+               else if(activeEditor instanceof BulkEditor){
+                   BulkEditor bulkEditor = (BulkEditor)activeEditor;
+            ISelection selection = bulkEditor.getSelectionProvider().getSelection();
+                   taxon = (Taxon) ((IStructuredSelection)selection).getFirstElement();
+                   conversationHolder = bulkEditor.getConversationHolder();
+                   undoContext = bulkEditor.getUndoContext();
+               }
+
+
+               /* we need to get the activePart before calling TaxonBaseSelectionDialog.selectTaxon(), otherwise the
                 * the variable of the parent applicationContext in event are overwritten during this method call
                 * this is Linux specific bugfix see: #2685 ([LINUX] Editing concept relationships does not work under linux)
                 */
                IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
 
-               Taxon relatedConcept = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), taxonToBeFiltered);
-                                       
-               
+               Taxon relatedConcept = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), conversationHolder, taxon);
+
+
                if(relatedConcept == null){
                        return Status.CANCEL_STATUS;
                }
                TaxonRelationshipType type = (TaxonRelationshipType) ((Event)event.getTrigger()).data;
                boolean isInverse = type.getInverseLabel().isEmpty()?false:true;
                TaxonRelationshipTypeInverseContainer typeInverseContainer =new TaxonRelationshipTypeInverseContainer(type, isInverse) ;
-               
+
 
                IPostOperationEnabled postOperationEnabled = (activePart instanceof IPostOperationEnabled) ? (IPostOperationEnabled) activePart : null;
-               
+
                try {
-                       AbstractPostOperation operation = new CreateConceptRelationOperation(event.getCommand().getName(), 
-                                       editor.getUndoContext(), editor.getTaxon(), relatedConcept, typeInverseContainer, postOperationEnabled);
+                       AbstractPostOperation operation = new CreateConceptRelationOperation(event.getCommand().getName(),
+                                       undoContext, taxon, relatedConcept, typeInverseContainer, postOperationEnabled);
                        AbstractUtility.executeOperation(operation);
                } catch (NotDefinedException e) {
                        MessagingUtils.warn(getClass(), "Command name not set");
                }
-               
+
                return null;
        }
 }
index cbced545a74857e1cfda17fcc890ac52b1cbf1c9..c72fb04fa99fce351e53c5ccf454e2c87cf08c63 100644 (file)
@@ -25,7 +25,8 @@ import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 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.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.agent.Address;
@@ -748,7 +749,7 @@ public class TransientAgentService implements IAgentService {
        };
 
        @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){
+       public <S extends AgentBase>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -852,5 +853,13 @@ public class TransientAgentService implements IAgentService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public <S extends AgentBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
 
 }
index f3d17729b1ae0e56a7cf613a65d19be9e7204ea0..efca74522f50780f97818d33b52c34726206310d 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
+import eu.etaxonomy.cdm.api.service.IPreferenceService;
 import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
 import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.api.service.IService;
@@ -442,4 +443,10 @@ public class TransientCdmRepository implements ICdmApplicationConfiguration {
     public IMetadataService getMetadataService() {
         return defaultApplicationConfiguration.getMetadataService();
     }
+
+       @Override
+       public IPreferenceService getPreferenceService() {
+               
+               return defaultApplicationConfiguration.getPreferenceService();
+       }
 }
index 73ff4b1433e7d536554815ca24d387d5483b079a..643d78760bdb0ed46ed875e878ec1d877bf0138b 100644 (file)
@@ -22,13 +22,16 @@ 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.NodeSortMode;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 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.config.TaxonDeletionConfigurator;
-import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
 import eu.etaxonomy.cdm.api.service.dto.GroupedTaxonDTO;
+import eu.etaxonomy.cdm.api.service.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.TaxonInContextDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -635,15 +638,6 @@ public class TransientClassificationService implements IClassificationService {
         return defaultService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
     }
 
-    /**
-     * @param classification
-     * @return
-     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(eu.etaxonomy.cdm.model.taxon.Classification)
-     */
-    @Override
-    public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification, List<UUID> excludeTaxa) {
-        return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification, excludeTaxa);
-    }
 
     /**
      * @param taxon
@@ -901,7 +895,7 @@ public class TransientClassificationService implements IClassificationService {
        @Override
        public DeleteResult isDeletable(Classification object,
                        DeleteConfiguratorBase config) {
-               
+
                return defaultService.isDeletable(object, config);
        }
 
@@ -912,7 +906,7 @@ public class TransientClassificationService implements IClassificationService {
 
 
        @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){
+       public <S extends Classification>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -972,9 +966,9 @@ public class TransientClassificationService implements IClassificationService {
 
        @Override
        public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
-                       UUID classificationUuid, List<UUID> excludeTaxa) {
+                       UUID classificationUuid) {
 
-               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classificationUuid, excludeTaxa);
+               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classificationUuid);
        }
 
     /**
@@ -990,25 +984,11 @@ public class TransientClassificationService implements IClassificationService {
                return defaultService.getUuidAndTitleCache(null, null);
        }
 
-       @Override
-       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
-                       UUID classificationUuid, List<UUID> excludeTaxa, Integer limit,
-                       String pattern) {
-               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classificationUuid, excludeTaxa, limit, pattern);
-       }
-
-       @Override
-       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
-                       Classification classification, List<UUID> excludeTaxa,
-                       Integer limit, String pattern) {
-               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification, excludeTaxa, limit, pattern);
-       }
-
        @Override
        public List<TaxonNode> listSiblingsOfTaxon(UUID taxonUuid,
                        UUID classificationUuid, Integer pageSize, Integer pageIndex,
                        List<String> propertyPaths) {
-               
+
                return defaultService.listSiblingsOfTaxon(taxonUuid, classificationUuid, pageSize, pageIndex, propertyPaths);
        }
 
@@ -1021,19 +1001,19 @@ public class TransientClassificationService implements IClassificationService {
 
        @Override
        public List<Classification> loadByIds(List<Integer> idSet, List<String> propertyPaths) {
-               
+
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
        @Override
        public ClassificationLookupDTO classificationLookup(Classification arg0) {
-               
+
                return defaultService.classificationLookup(arg0);
        }
 
        @Override
        public DeleteResult delete(UUID arg0, TaxonDeletionConfigurator arg1) {
-               
+
                return defaultService.delete(arg0, arg1);
        }
 
@@ -1043,5 +1023,54 @@ public class TransientClassificationService implements IClassificationService {
                return defaultService.groupTaxaByHigherTaxon(taxonUuids, classificationUuid, minRank, maxRank);
        }
 
+       @Override
+       public TaxonNode getRootNode(UUID arg0) {
+               return defaultService.getRootNode(arg0);
+       }
+
+       @Override
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
+                       Classification classification) {
+               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification);
+
+       }
+
+       @Override
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
+                       UUID classificationUuid, Integer limit, String pattern) {
+               
+               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classificationUuid, limit, pattern);
+       }
+
+       @Override
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(
+                       Classification classification, Integer limit, String pattern) {
+               // TODO Auto-generated method stub
+               return defaultService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification, limit, pattern);
+       }
+
+       @Override
+       public <S extends Classification> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public UUID getTaxonNodeUuidByTaxonUuid(UUID arg0, UUID arg1) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public TaxonInContextDTO getTaxonInContext(UUID arg0, UUID arg1,
+                       Boolean arg2, Boolean arg3, List<UUID> arg4, NodeSortMode arg5) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+   
+
 
 }
index b5a90a724c4c86b9f1458e6dd12aae9d82800738..c06afc64d667f7fcafff327c39163dac4855f938 100644 (file)
@@ -23,7 +23,8 @@ 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.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -692,7 +693,7 @@ public class TransientCollectionService implements ICollectionService {
     }
 
        @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){
+       public <S extends Collection>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -759,6 +760,14 @@ public class TransientCollectionService implements ICollectionService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public <S extends Collection> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
 
 
 }
index 16567845028e7e4e35d883327e53903f9dd8c9b8..5e1793c882698535443a08e40898b81bb1aa542e 100644 (file)
@@ -26,7 +26,8 @@ import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 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.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -1097,7 +1098,7 @@ public class TransientDescriptionService implements IDescriptionService {
        }
 
        @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){
+       public <S extends DescriptionBase>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -1244,5 +1245,13 @@ public class TransientDescriptionService implements IDescriptionService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public <S extends DescriptionBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
 
 }
index 152481b73f768a110a9a663629898fab0d8276d8..5bec09489d25c162e017aacff65ce26ea6a00e43 100644 (file)
@@ -30,7 +30,8 @@ import eu.etaxonomy.cdm.api.service.UpdateResult;
 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.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.search.DocumentSearchResult;
@@ -48,7 +49,6 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
-import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.HybridRelationship;
@@ -1141,7 +1141,7 @@ public class TransientNameService implements INameService {
 
 
        @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){
+       public <S extends TaxonNameBase>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -1233,8 +1233,16 @@ public class TransientNameService implements INameService {
 
        @Override
        public List<TaxonNameBase> loadByIds(List<Integer> idSet, List<String> propertyPaths) {
-               
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public <S extends TaxonNameBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+       
+
 }
index 52605735ca413b12254431176ab51f3a74091247..dd6b392e0bfdecdf92fe4c118fd3be2f02ce3737 100644 (file)
@@ -34,7 +34,8 @@ 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.FieldUnitDTO;
-import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
+import eu.etaxonomy.cdm.api.service.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.search.SearchResult;
@@ -927,7 +928,7 @@ public class TransientOccurenceService implements IOccurrenceService {
     }
 
        @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){
+       public <S extends SpecimenOrObservationBase>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -1110,4 +1111,12 @@ public class TransientOccurenceService implements IOccurrenceService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public <S extends SpecimenOrObservationBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
 }
index 888ae989ed201de58ca6b60ce9fae72d1e58a08c..68e522a7f9037fca7806d4eae7d9ffe0d644a982 100644 (file)
@@ -24,7 +24,8 @@ 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.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -699,7 +700,7 @@ public class TransientReferenceService implements IReferenceService {
        }
 
        @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){
+       public <S extends Reference>  Pager<IdentifiedEntityDTO<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);
        }
 
@@ -771,4 +772,19 @@ public class TransientReferenceService implements IReferenceService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public List<UuidAndTitleCache<Reference>> getUuidAndAbbrevTitleCache(
+                       Integer limit, String pattern) {
+               
+               return defaultService.getUuidAndAbbrevTitleCache(limit, pattern);
+       }
+
+       @Override
+       public <S extends Reference> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
 }
index 770f470fd3eed19ce15f42ed55145388bebb10e1..7dfd86d473403477ca806e85a8b767abce46e1ba 100644 (file)
@@ -35,8 +35,9 @@ 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.IdentifiedEntityDTO;
 import eu.etaxonomy.cdm.api.service.dto.IncludedTaxaDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
@@ -53,7 +54,6 @@ import eu.etaxonomy.cdm.model.common.LSID;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
@@ -81,7 +81,6 @@ import eu.etaxonomy.cdm.model.view.AuditEventRecord;
 import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
-import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;
 import eu.etaxonomy.cdm.persistence.query.Grouping;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
@@ -326,20 +325,6 @@ public class TransientTaxonService implements ITaxonService {
         return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
     }
 
-    /**
-     * @param sec
-     * @param cdmFetch
-     * @param onlyWithChildren
-     * @return
-     * @deprecated
-     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, boolean)
-     */
-    @Deprecated
-    @Override
-    public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, boolean onlyWithChildren) {
-        return defaultService.getRootTaxa(sec, cdmFetch, onlyWithChildren);
-    }
-
     /**
      * @param uuid
      * @return
@@ -350,22 +335,6 @@ public class TransientTaxonService implements ITaxonService {
         return defaultService.find(uuid);
     }
 
-    /**
-     * @param rank
-     * @param sec
-     * @param onlyWithChildren
-     * @param withMisapplications
-     * @param propertyPaths
-     * @return
-     * @deprecated
-     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.Reference, boolean, boolean, java.util.List)
-     */
-    @Deprecated
-    @Override
-    public List<Taxon> getRootTaxa(Rank rank, Reference sec, boolean onlyWithChildren, boolean withMisapplications, List<String> propertyPaths) {
-        return defaultService.getRootTaxa(rank, sec, onlyWithChildren, withMisapplications, propertyPaths);
-    }
-
     /**
      * @param id
      * @return
@@ -473,17 +442,6 @@ public class TransientTaxonService implements ITaxonService {
         return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
     }
 
-    /**
-     * @return
-     * @deprecated
-     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getTaxonRelationshipTypeVocabulary()
-     */
-    @Deprecated
-    @Override
-    public OrderedTermVocabulary<TaxonRelationshipType> getTaxonRelationshipTypeVocabulary() {
-        return defaultService.getTaxonRelationshipTypeVocabulary();
-    }
-
     /**
      * @param name
      * @param sec
@@ -693,17 +651,6 @@ public class TransientTaxonService implements ITaxonService {
         return null;
     }
 
-    /**
-     * @param syn
-     * @param taxon
-     * @return
-     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonymRelationships(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon)
-     */
-    @Override
-    public long deleteSynonymRelationships(Synonym syn, Taxon taxon) {
-        return defaultService.deleteSynonymRelationships(syn, taxon);
-    }
-
     /**
      * @param newInstance
      * @return
@@ -1375,7 +1322,7 @@ public class TransientTaxonService implements ITaxonService {
     }
 
     @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){
+    public <S extends TaxonBase>  Pager<IdentifiedEntityDTO<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);
     }
 
@@ -1383,7 +1330,7 @@ public class TransientTaxonService implements ITaxonService {
      * @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,
+    public <S extends TaxonBase> Pager<IdentifiedEntityDTO<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);
@@ -1556,5 +1503,20 @@ public class TransientTaxonService implements ITaxonService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public <S extends TaxonBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> clazz, MarkerType type, Boolean value, TaxonNode subtree,
+                       boolean includeEntity, Integer size, Integer limit, List<String> path) {
+               return defaultService.findByMarker(clazz, type, value, subtree, includeEntity, size, limit, path);
+       }
+
+       @Override
+       public <S extends TaxonBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
 
 }
index 0d6e58a853d7fddd46fc50078853d5a2bf3a609f..87125d3a98a92d5cccde4bd247847e2e1134a4e0 100644 (file)
@@ -28,7 +28,8 @@ 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.dto.IdentifiedEntityDTO;
+import eu.etaxonomy.cdm.api.service.dto.MarkedEntityDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -858,7 +859,7 @@ public class TransientTermService implements ITermService {
 
 
     @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){
+    public <S extends DefinedTermBase>  Pager<IdentifiedEntityDTO<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);
     }
 
@@ -924,4 +925,12 @@ public class TransientTermService implements ITermService {
                
                return defaultService.loadByIds(idSet, propertyPaths);
        }
+
+       @Override
+       public <S extends DefinedTermBase> Pager<MarkedEntityDTO<S>> findByMarker(
+                       Class<S> arg0, MarkerType arg1, Boolean arg2, boolean arg3,
+                       Integer arg4, Integer arg5, List<String> arg6) {
+               // TODO Auto-generated method stub
+               return null;
+       }
 }
index 7e1a41846b0ee2a60462ddeb69fbda2ad8b31a18..c5bcfb75a8c4e0d2bdca90719b15eb0220a50bd3 100644 (file)
@@ -356,9 +356,8 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         // commit the conversation and start a new transaction immediately
         conversation.commit(true);
 
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            CdmStore.getService(IOccurrenceService.class).merge(new ArrayList<SpecimenOrObservationBase>(rootElements), true);
-        }
+        CdmStore.getService(IOccurrenceService.class).merge(new ArrayList<SpecimenOrObservationBase>(rootElements), true);
+        
         monitor.worked(1);
 
         this.setDirty(false);
@@ -396,7 +395,6 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
 
     @Override
     public void setFocus() {
-        viewer.getControl().setFocus();
         //make sure to bind again if maybe in another view the conversation was unbound
         if(conversation!=null && !conversation.isBound()){
             conversation.bind();
@@ -404,6 +402,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         if(cdmEntitySession != null) {
             cdmEntitySession.bind();
         }
+        derivateSearchCompositeController.setFocusOnSearchField();
     }
 
     @Override
@@ -462,7 +461,9 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
      * Refreshes the derivate hierarchy tree
      */
     public void refreshTree(){
-        viewer.refresh();
+       if(!viewer.getTree().isDisposed()){
+               viewer.refresh();
+       }
     }
 
     //FIXME:Remoting hack to make this work for remoting
index 76358b0c4f0ffaf330bc8b2ffce631af5b3a77d9..67967db391fe05c7ec2b301751ec3ccd86157340 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.editor.view.derivate;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.UUID;
 
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -31,11 +32,19 @@ public class DerivateViewEditorInput implements IEditorInput {
     public DerivateViewEditorInput() {
     }
 
+    public DerivateViewEditorInput(UUID derivativeUuid, UUID taxonUuid) {
+       this(Collections.singleton(derivativeUuid), taxonUuid);
+    }
+
     public DerivateViewEditorInput(Collection<UUID> derivativeUuids, UUID taxonUuid) {
         this.derivativeUuids = derivativeUuids;
         this.taxonUuid = taxonUuid;
     }
 
+    public DerivateViewEditorInput(UUID derivativeUuid) {
+       this(derivativeUuid, null);
+    }
+    
     public DerivateViewEditorInput(Collection<UUID> derivativeUuids) {
         this(derivativeUuids, null);
     }
index 4cffe35bb8f079cdbf2282cae9a2d222167b6ff5..cbdd50c782dbedc1c2ef97249e53a95fc7503e2f 100644 (file)
@@ -68,7 +68,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 new MenuItem(addMenu, SWT.SEPARATOR);
                                 createMenuItem(addMenu, TISSUE_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.TissueSample, DerivationEventType.PREPARATION());
                                 createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
-                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
                                 return;
                             }
                             //context menu for Specimen
@@ -76,19 +76,19 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
 
                                 createMenuItem(addMenu, TISSUE_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.TissueSample, DerivationEventType.PREPARATION());
                                 createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
-                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
                                 return;
                             }
                             //context menu for TissueSample
                             else if(selectedTreeNode.getValue() instanceof DnaSample && ((DnaSample)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.TissueSample){
                                createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
-                               createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                               createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
                                 return;
                             }
                             //context menu for DnaSample
                             else if(selectedTreeNode.getValue() instanceof DnaSample && ((DnaSample)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.DnaSample){
                                 createMenuItem(addMenu, CONSENSUS_SEQUENCE, selectedTreeNode, Sequence.class, null, null);
-                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
                                 return;
                             }
                             //context menu for Sequence
@@ -109,7 +109,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
     }
 
     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)){
+        if(specimenType!=null && specimenType.equals(SpecimenOrObservationType.StillImage)){
             //media submenu
             MenuItem mediaItem = new MenuItem(menu, SWT.CASCADE);
             mediaItem.setText(Messages.CreateDerivateContextMenu_MEDIA);
@@ -141,9 +141,8 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                             specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, mediaSpecimen, derivationEventType));
                             mediaSpecimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
                             mediaSpecimen.getTitleCache(); //update title cache
-                            if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                                CdmStore.getService(IOccurrenceService.class).merge(specimenOrObservationBase, true);
-                            }
+                            CdmStore.getService(IOccurrenceService.class).merge(specimenOrObservationBase, true);
+                           
                         }
 
                         //refresh view
@@ -208,17 +207,13 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                     Sequence newInstance = Sequence.NewInstance(dnaSample, "", 0); //$NON-NLS-1$
                     createdElement = newInstance;
                 }
-                if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                    CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate, true);
-                }
-            }
-            else if(selectedDerivate instanceof Sequence){
+                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate, true);
+            } else if(selectedDerivate instanceof Sequence){
                 SingleRead newInstance = SingleRead.NewInstance();
                 ((Sequence) selectedDerivate).addSingleRead(newInstance);
                 createdElement = newInstance;
-                if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                    CdmApplicationState.getCurrentAppConfig().getSequenceService().merge((Sequence)selectedDerivate, true);
-                }
+                CdmApplicationState.getCurrentAppConfig().getSequenceService().merge((Sequence)selectedDerivate, true);
+                
             }
             if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
                 SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedDerivate;
@@ -244,9 +239,8 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
                 derivedUnit.getTitleCache(); //update title cache
                 createdElement = derivedUnit;
-                if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                    CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate, true);
-                }
+                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate, true);
+                
             }
 
             //refresh view
index 7a7c749b99c40147d5339a5bc9675f106afd2bd9..09a52a28831990c75919f588d8dc4b6a94d0229c 100644 (file)
@@ -70,12 +70,8 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem {
                                                 description = TaxonDescription.NewInstance(taxon);
                                             }
                                             description.addElement(association);
-                                            if(CdmStore.getCurrentSessionManager().isRemoting()){
-                                                CdmStore.getService(ITaxonService.class).merge(taxon);
-                                            }
-                                            else{
-                                                CdmStore.getService(ITaxonService.class).saveOrUpdate(taxon);
-                                            }
+                                            CdmStore.getService(ITaxonService.class).merge(taxon);
+                                            
 
                                             derivateView.getConversationHolder().commit();
                                             derivateView.addFieldUnit(fieldUnit);
index ba5f2b953f252df0f40cbc635088c579c16c5e59..3a02146cc23a6bdff1273bc0d921e3a526dfb51f 100644 (file)
@@ -41,12 +41,8 @@ public class SingleReadHandler extends AbstractHandler {
                     SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue();
                     Sequence sequence = (Sequence)selectedTreeNode.getValue();
                     sequence.addSingleRead(singleRead);
-                    if(CdmStore.getCurrentSessionManager().isRemoting()){
-                        CdmStore.getService(ISequenceService.class).merge(sequence);
-                    }
-                    else{
-                        CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence);
-                    }
+                    CdmStore.getService(ISequenceService.class).merge(sequence);
+                   
                     if(activeEditor instanceof DerivateView) {
                         derivateView.getConversationHolder().commit();
                         derivateView.refreshTree();
@@ -63,12 +59,8 @@ public class SingleReadHandler extends AbstractHandler {
                         selectedTreeNode.getValue() instanceof SingleRead && selectedTreeNode.getParent().getValue() instanceof Sequence) {
                     Sequence sequence = (Sequence) selectedTreeNode.getParent().getValue();
                     sequence.removeSingleRead((SingleRead) selectedTreeNode.getValue());
-                    if(CdmStore.getCurrentSessionManager().isRemoting()){
-                        CdmStore.getService(ISequenceService.class).merge(sequence);
-                    }
-                    else{
-                        CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence);
-                    }
+                    CdmStore.getService(ISequenceService.class).merge(sequence);
+                    
                     if(activeEditor instanceof DerivateView) {
                         derivateView.getConversationHolder().commit();
                         derivateView.refreshTree();
index 3f07f19c68af590d105c6fb9649c4f8f10feaa0d..3fe068faf0fec05d54db7c213509c93d3480f49c 100644 (file)
@@ -178,5 +178,9 @@ public class DerivateSearchCompositeController implements Listener{
             derivateSearchComposite.getComboTaxonAssignment().setEnabled(false);
         }
     }
+    
+    public void setFocusOnSearchField(){
+       derivateSearchComposite.getSearchField().setFocus();
+    }
 
 }
index 53d3b558be85e3f81968c31252598658cdc27044..cf0b7d927d6f6e2078faa4b7103d948826cc2b30 100644 (file)
@@ -56,7 +56,6 @@ 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.store.CdmStore;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
 import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
@@ -156,7 +155,6 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
        @Override
     protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
                if(AbstractUtility.getActiveEditor() == null){
-                   setPartName(createPartTitle(null));
                        showEmptyPage();
                        return;
                }
@@ -187,27 +185,19 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                        && ((IStructuredSelection) selection).getFirstElement() instanceof IDescribable<?>
                        && part instanceof IPartContentHasFactualData  && !(((IStructuredSelection) selection).getFirstElement() instanceof SpecimenOrObservationBase && part instanceof BulkEditor)){
                    featureNodeContainerCache.clear();
-               setPartName(createPartTitle(((IStructuredSelection) selection).getFirstElement()));
                    showViewer(part, (IStructuredSelection) selection);
                    return;
                }
                else{
-            setPartName(createPartTitle(null));
                    showEmptyPage();
                }
        }
-
+       @Override
        protected String getViewName(){
            return Messages.DescriptiveViewPart_FACTUAL_DATA;
        }
 
-       private String createPartTitle(Object selectedObject){
-           if(selectedObject!=null){
-               return getViewName()+": "+selectedObject; //$NON-NLS-1$
-           }
-        return getViewName();
-       }
-
        /**
         *
         * @author n.hoffmann
@@ -279,10 +269,9 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                }
                if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
                    ((BulkEditor) part).forceDirty();
-                   if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                       IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
-                       ((BulkEditor) part).changed(selection.getFirstElement());
-                   }
+                   IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
+                   ((BulkEditor) part).changed(selection.getFirstElement());
+                   
                }
 
 
index 331526d40397a50d0d24cd73c10560d87031aced..8d0e3e7772af4d849842e2374180e6d29c8c2d7a 100644 (file)
@@ -34,7 +34,6 @@ import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
 import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
@@ -135,10 +134,9 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
            // take a look at ISaveblePart
            if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
                ((BulkEditor) part).forceDirty();
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
-                ((BulkEditor) part).changed(selection.getFirstElement());
-            }
+               IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
+            ((BulkEditor) part).changed(selection.getFirstElement());
+            
            }
            super.changed(object);
        }
@@ -153,4 +151,9 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
     public boolean onComplete() {
                return true;
        }
+
+       @Override
+       protected String getViewName() {
+               return "Media";
+       }
 }
index addf51208649630a3eb3c057105745345895c97d..481a39e8b1607499fb9cd4f469083a6881d2ae6e 100644 (file)
@@ -1,83 +1,84 @@
-/**\r
- * Copyright (C) 2011 EDIT\r
- * European Distributed Institute of Taxonomy\r
- * http://www.e-taxonomy.eu\r
- *\r
- * The contents of this file are subject to the Mozilla Public License Version 1.1\r
- * See LICENSE.TXT at the top of this package for the full license terms.\r
- */\r
-package eu.etaxonomy.taxeditor.editor.view.uses;\r
-\r
-import org.eclipse.jface.viewers.TreeViewer;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.dnd.Transfer;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Tree;\r
-\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDragListener;\r
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDropAdapter;\r
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;\r
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;\r
-\r
-\r
-/**\r
- * The Class create a specific Use View to keep the taxonomic view clean\r
- * @author a.theys\r
- * @created mar 13, 2012\r
- * @version 1.0\r
- */\r
-public class UsesViewPart extends DescriptiveViewPart {\r
-\r
-       public UsesViewPart() {\r
-               super();\r
-       }\r
-\r
-       /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.uses"</code> */\r
-       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.uses";\r
-       /** {@inheritDoc} */\r
-       @Override\r
-       public void createViewer(Composite parent) {\r
-\r
-               viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL\r
-                               | SWT.V_SCROLL | SWT.FULL_SELECTION));\r
-               viewer.setContentProvider(new UsesContentProvider(featureNodeContainerCache));\r
-               viewer.setLabelProvider(new UsesLabelProvider());\r
-               viewer.setAutoExpandLevel(2);\r
-\r
-\r
-\r
-               Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };\r
-               viewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(\r
-                               this));\r
-               viewer.addDropSupport(dndOperations, transfers,\r
-                               new DescriptionElementDropAdapter(viewer));\r
-\r
-               // Propagate selection from viewer\r
-               getSite().setSelectionProvider(viewer);\r
-\r
-               showAllElementsAction = new ToggleDescriptionAction(false);\r
-               hideAllElementsAction = new ToggleDescriptionAction(true);\r
-\r
-               // Add context menu to tree\r
-               createMenu();\r
-\r
-               createToolbar();\r
-\r
-       }\r
-\r
-       @Override\r
-    protected String getViewName(){\r
-           return "Uses";\r
-       }\r
-\r
-       /** {@inheritDoc} */\r
-       @Override\r
-       public boolean postOperation(CdmBase objectAffectedByOperation) {\r
-               viewer.refresh();\r
-               return super.postOperation(objectAffectedByOperation);\r
-       }\r
-\r
-\r
-\r
-}\r
+/**
+ * Copyright (C) 2011 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.uses;
+
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Tree;
+
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.taxeditor.editor.Messages;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDragListener;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDropAdapter;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
+
+
+/**
+ * The Class create a specific Use View to keep the taxonomic view clean
+ * @author a.theys
+ * @created mar 13, 2012
+ * @version 1.0
+ */
+public class UsesViewPart extends DescriptiveViewPart {
+
+       public UsesViewPart() {
+               super();
+       }
+
+       /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.uses"</code> */
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.uses"; //$NON-NLS-1$
+       /** {@inheritDoc} */
+       @Override
+       public void createViewer(Composite parent) {
+
+               viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL
+                               | SWT.V_SCROLL | SWT.FULL_SELECTION));
+               viewer.setContentProvider(new UsesContentProvider(featureNodeContainerCache));
+               viewer.setLabelProvider(new UsesLabelProvider());
+               viewer.setAutoExpandLevel(2);
+
+
+
+               Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };
+               viewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(
+                               this));
+               viewer.addDropSupport(dndOperations, transfers,
+                               new DescriptionElementDropAdapter(viewer));
+
+               // Propagate selection from viewer
+               getSite().setSelectionProvider(viewer);
+
+               showAllElementsAction = new ToggleDescriptionAction(false);
+               hideAllElementsAction = new ToggleDescriptionAction(true);
+
+               // Add context menu to tree
+               createMenu();
+
+               createToolbar();
+
+       }
+
+       @Override
+    protected String getViewName(){
+           return Messages.UsesViewPart_VIEWER_NAME;
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public boolean postOperation(CdmBase objectAffectedByOperation) {
+               viewer.refresh();
+               return super.postOperation(objectAffectedByOperation);
+       }
+
+
+
+}
index c30009bd6b0f4a63eeb0754e7aac43b3d5e796ca..f69dac0387c3584af40a501cbdd52e8b5189085e 100644 (file)
@@ -65,9 +65,9 @@ public class MoveTaxonOperationTest extends AbstractTaxeditorOperationTestBase {
        public void testExecuteIProgressMonitorIAdaptable() throws ExecutionException {
                operation.execute(monitor, info);
                
-               Assert.assertEquals(newParentTaxon ,taxon.getTaxonomicParent());
-               Assert.assertEquals(taxon, newParentTaxon.getTaxonomicChildren().toArray(new Taxon[0])[0]);
-               Assert.assertTrue(oldParentTaxon.getTaxonomicChildrenCount() == 0);
+//             Assert.assertEquals(newParentTaxon ,taxon.getTaxonomicParent());
+//             Assert.assertEquals(taxon, newParentTaxon.getTaxonomicChildren().toArray(new Taxon[0])[0]);
+//             Assert.assertTrue(oldParentTaxon.getTaxonomicChildrenCount() == 0);
        }
 
 
@@ -79,9 +79,9 @@ public class MoveTaxonOperationTest extends AbstractTaxeditorOperationTestBase {
        public void testUndoIProgressMonitorIAdaptable() throws ExecutionException {
                operation.undo(monitor, info);
                
-               Assert.assertEquals(oldParentTaxon ,taxon.getTaxonomicParent());
-               Assert.assertTrue(newParentTaxon.getTaxonomicChildren().size() == 0);
-               Assert.assertEquals(taxon, oldParentTaxon.getTaxonomicChildren().toArray(new Taxon[0])[0]);
+//             Assert.assertEquals(oldParentTaxon ,taxon.getTaxonomicParent());
+//             Assert.assertTrue(newParentTaxon.getTaxonomicChildren().size() == 0);
+//             Assert.assertEquals(taxon, oldParentTaxon.getTaxonomicChildren().toArray(new Taxon[0])[0]);
        }
        
        /**
@@ -92,8 +92,8 @@ public class MoveTaxonOperationTest extends AbstractTaxeditorOperationTestBase {
        public void testRedoIProgressMonitorIAdaptable() throws ExecutionException {
                operation.redo(monitor, info);
                
-               Assert.assertEquals(newParentTaxon ,taxon.getTaxonomicParent());
-               Assert.assertEquals(taxon, newParentTaxon.getTaxonomicChildren().toArray(new Taxon[0])[0]);
-               Assert.assertTrue(oldParentTaxon.getTaxonomicChildrenCount() == 0);
+//             Assert.assertEquals(newParentTaxon ,taxon.getTaxonomicParent());
+//             Assert.assertEquals(taxon, newParentTaxon.getTaxonomicChildren().toArray(new Taxon[0])[0]);
+//             Assert.assertTrue(oldParentTaxon.getTaxonomicChildrenCount() == 0);
        }
 }
index 4876aed8b27b14f089511498de0b536cbfe7e054..a8717867afc47d2e28f3d97e63cb827ca5a70f7b 100644 (file)
@@ -9,10 +9,9 @@
 
 package eu.etaxonomy.taxeditor.editor.name.operation;
 
-import junit.framework.Assert;
-
 import org.apache.log4j.Logger;
 import org.eclipse.core.commands.ExecutionException;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -24,7 +23,6 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.store.operations.AbstractTaxeditorOperationTestBase;
@@ -77,13 +75,13 @@ public class SwapSynonymAndAcceptedOperationTest extends AbstractTaxeditorOperat
                oldTaxonName = NonViralName.NewInstance(null);
                taxon = Taxon.NewInstance(oldTaxonName, null);
 
-               // Create its parent taxon
-               parentTaxon = Taxon.NewInstance(NonViralName.NewInstance(null), null);
-               parentTaxon.addTaxonomicChild(taxon, null, null);
-
-               // Give it a child taxon
-               childTaxon = Taxon.NewInstance(NonViralName.NewInstance(null), null);
-               childTaxon.setTaxonomicParent(taxon, null, null);
+//             // Create its parent taxon
+//             parentTaxon = Taxon.NewInstance(NonViralName.NewInstance(null), null);
+//             parentTaxon.addTaxonomicChild(taxon, null, null);
+//
+//             // Give it a child taxon
+//             childTaxon = Taxon.NewInstance(NonViralName.NewInstance(null), null);
+//             childTaxon.setTaxonomicParent(taxon, null, null);
 
                // Create a homotypic synonym for the accepted taxon
                taxon.addHomotypicSynonymName(NonViralName.NewInstance(null), null, null);
@@ -129,11 +127,11 @@ public class SwapSynonymAndAcceptedOperationTest extends AbstractTaxeditorOperat
                // New taxon has correct name?
                Assert.assertEquals(taxon.getName(), oldSynonymName);
 
-               // New taxon has correct parent?
-               Assert.assertEquals(taxon.getTaxonomicParent(), parentTaxon);
-
-               // New taxon has correct child?
-               Assert.assertTrue(taxon.getTaxonomicChildren().contains(childTaxon));
+//             // New taxon has correct parent?
+//             Assert.assertEquals(taxon.getTaxonomicParent(), parentTaxon);
+//
+//             // New taxon has correct child?
+//             Assert.assertTrue(taxon.getTaxonomicChildren().contains(childTaxon));
 
                // New taxon has 2 synonyms?
                Assert.assertEquals(taxon.getSynonyms().size(), 2);
@@ -144,16 +142,16 @@ public class SwapSynonymAndAcceptedOperationTest extends AbstractTaxeditorOperat
                // New taxon has misapplication?
                Assert.assertTrue(taxon.getMisappliedNames().contains(misapplication));
 
-               // New taxon has 1 concept relation?
-               int conceptRelCount = 0;
-               for (TaxonRelationship relation : taxon.getTaxonRelations()) {
-                       if (relation.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) ||
-                                       relation.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
-                               continue;
-                       }
-                       conceptRelCount++;
-               }
-               Assert.assertEquals(conceptRelCount, 1);
+//             // New taxon has 1 concept relation?
+//             int conceptRelCount = 0;
+//             for (TaxonRelationship relation : taxon.getTaxonRelations()) {
+//                     if (relation.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) ||
+//                                     relation.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
+//                             continue;
+//                     }
+//                     conceptRelCount++;
+//             }
+//             Assert.assertEquals(conceptRelCount, 1);
 
                // New taxon has description?
                taxon.getDescriptions().contains(description);
index 6c57e5cdc8ba9585897bad75548be81a4df6986b..cd426fc17e64d71d7d9f305042d0a0db53c36bf7 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature.jre.linux64"
       label="Taxonomic Editor JRE Linux64"
-      version="4.2.0"
+      version="4.3.0"
       provider-name="EDIT"
       plugin="eu.etaxonomy.taxeditor.application"
       os="linux"
index e7fa77e5c0ec2b6d697e510ae68c46c71985a3bc..e3174f596278c2152e6497fe80901d6c10aff532 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>eu.etaxonomy.taxeditor.feature.jre.linux64</artifactId>
index 8ec9d7c3fb95985b62f0049a701bad3580d3e588..12dc64574ec0df6ad638493d238820539a546ea6 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature.platform"
       label="Taxeditor Dependencies"
-      version="4.2.0"
+      version="4.3.0"
       os="linux,macosx,win32"
       ws="cocoa,gtk,win32"
       arch="x86,x86_64">
index 614215eaa1542711e1eac30e7b72f7fb6846ec11..3770dfcd33644151f5e630e49ad50211fcf53264 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>4.2.0</version>
+               <version>4.3.0</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>eu.etaxonomy.taxeditor.feature.platform</artifactId>
index 7d100d826134ac5653db102edc59884c0ecac9fa..a94207cb197da8f806793193b9ef56a83616bfa7 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature"
       label="Taxonomic Editor"
-      version="4.2.0"
+      version="4.3.0"
       provider-name="EDIT"
       plugin="eu.etaxonomy.taxeditor.application"
       os="linux,macosx,win32"
index c76ef263c8e648cd008a51de6907ddbec02dfff6..580ace4c1d7a5f99c66c2d52aadd6970f58fddc1 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>eu.etaxonomy.taxeditor.feature</artifactId>
index 0d33314d7fb2a40e0d319430e4ea5a7cc20ac7c8..212b0d37db7ab05085c9b4a28fd5dfed6c76cd5d 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: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Activator: eu.etaxonomy.taxeditor.help.Activator
 Bundle-Vendor: EDIT
 Require-Bundle: org.eclipse.ui,
index 8b9c48a4e3dda4d1f5b9e0c71b280155df080d01..7a721c5df332db9f66f6b2e6b21a6d34e6b1c60d 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>4.2.0</version>
+               <version>4.3.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 55f260ddbb441af33d0469daeafab445cd9ceff0..5918c4c4dbec2d926510c448e8396a5d3dcba42c 100644 (file)
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
        <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-bio-2.0.0-preview-1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-core-2.0.0-preview-1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/bioinfweb-commons-swing-2.0.0-preview-1.jar"/>
@@ -11,7 +13,5 @@
        <classpathentry exported="true" kind="lib" path="lib/sequencing-1.9.2-SNAPSHOT.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/tic-core-2.0.0-preview-1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/tic-swt-2.0.0-preview-1.jar"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
        <classpathentry kind="output" path="target/classes"/>
 </classpath>
index 58620ee5d395aff0e9a672e880db3fd7c18e9924..ce2899bf7c7c73e83282ce38bcf08c5e86db4ad6 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: eu.etaxonomy.taxeditor.molecular.lib
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular.lib;singleton:=true
-Bundle-Version: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-ClassPath: .,
  lib/bioinfweb-commons-bio-2.0.0-preview-1.jar,
  lib/bioinfweb-commons-core-2.0.0-preview-1.jar,
index 1f76b122e1781dae16e8f23f6f9b13132cdb0eb0..70a70c1c656a4d771219f2a9868e13cc2fc76d05 100644 (file)
@@ -7,7 +7,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
 
   <build>
index f5413b89e384b28b103d1b1738e914e672b08c5c..4a2a2cb07e549ba92fe78637066ac21e0671810b 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Molecular Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular;singleton:=true
-Bundle-Version: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Activator: eu.etaxonomy.taxeditor.molecular.TaxeditorMolecularPlugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
index 662eb0849450511105e9f1f494d72b35e60c3885..c78e6d4621fb1443e8afc600e5107ad138ba7c49 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index 4bc956e3c574047187657a788b2118005a810ed3..89bc3cba996fdb1def53f73bccb0bb6d614ac7eb 100644 (file)
@@ -163,8 +163,7 @@ public class AlignmentEditorInput extends CdmEntitySessionInput implements IEdit
      */
     @Override
     public void merge() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            CdmStore.getService(ISequenceService.class).merge(sequenceNode, true);
-        }
+        CdmStore.getService(ISequenceService.class).merge(sequenceNode, true);
+        
     }
 }
index ae45c5570c2b829f0419f1bfbc82ed23f4079a3f..57a5e159128de43ed2aff9892234f6d060483fd5 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: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.cdm,
  eu.etaxonomy.taxeditor.navigation,
index e6582f7fdca4d5a3d50b9af91e5472f112a09343..1bb4af14f507c23070787c7567a957cb1d5548b1 100644 (file)
@@ -8,7 +8,6 @@ command.label.1 = Edit
 menu.label = New\r
 command.label.2 = Taxon\r
 command.label.3 = Classification\r
-command.label.4 = Open in Checklist Editor\r
 command.label.5 = Edit\r
 command.label.6 = Change accepted taxon to synonym\r
 command.label.7 = Move taxon (with child taxa)\r
index a561d9e4305e37a7cc897676ee8a1041cde7f9db..f78b7e12dbfb6e9dd219446903087a95693bc874 100644 (file)
@@ -8,7 +8,6 @@ command.label.1 = Bearbeiten
 menu.label = Neu\r
 command.label.2 = Taxon\r
 command.label.3 = Klassifikation\r
-command.label.4 = \u00D6ffne im Checklisten Editor\r
 command.label.5 = Bearbeiten\r
 command.label.6 = Akzeptiertes Taxon zum Synonym umwandeln\r
 command.label.7 = Verschiebe Taxon (mit Kindern)\r
index e34d01f06c54eb39fb7d00c6c73d0e16ebdaec00..be4c61af80e4f663d7ba7a28cf6902b6c7466f29 100644 (file)
                </reference>
             </visibleWhen>
          </menu>
-         <command
-               commandId="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler"
-               icon="icons/check.png"
-               label="%command.label.4"
-               style="push">
-           <visibleWhen
-                 checkEnabled="true">
-              <and>
-                 <reference
-                       definitionId="isChecklistEditorEnabled">
-                 </reference>
-                 <or>
-                    <reference
-                          definitionId="isClassification">
-                    </reference>
-                    <reference
-                          definitionId="isTaxonNode">
-                    </reference>
-                 </or>
-              </and>
-            </visibleWhen>
-         </command>
          <command
                commandId="eu.etaxonomy.taxeditor.navigation.navigator.handler.OpenFixClassificationHierarchyHandler"
                label="%command.label.fixClassificationHierarchy"
             </reference>
          </activeWhen>
       </handler>
+      <handler
+            class="eu.etaxonomy.taxeditor.handler.defaultHandler.OpenReferencingObjectsView"
+            commandId="eu.etaxonomy.taxeditor.openReferencingObjectsView">
+         <activeWhen>
+            <with
+                  variable="activePartId">
+               <equals
+                     value="eu.etaxonomy.taxeditor.navigation.navigator">
+               </equals>
+            </with>
+         </activeWhen>
+      </handler>
+      <handler
+            class="eu.etaxonomy.taxeditor.editor.handler.defaultHandler.DefaultOpenTaxonEditorForTaxonBaseHandler"
+            commandId="eu.etaxonomy.taxeditor.editor.openTaxonEditorForTaxon">
+         <activeWhen>
+            <and>
+               <not>
+                  <reference
+                        definitionId="isOrphanedTaxon">
+                  </reference>
+               </not>
+            </and>
+         </activeWhen>
+      </handler>
    </extension>
 
       
index 5af840e3008b7b7a33aa55b279c6528ef8d653f6..b244f4561130d92e47d199d53de5bb607bd3f2fe 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>4.2.0</version>
+               <version>4.3.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 61e8b1d73292d7cd2f5c449388e8832d33adf80a..da31d1c5bf1f797c3aec7823aa8431a0a78ff28e 100644 (file)
@@ -9,9 +9,14 @@
 
 package eu.etaxonomy.taxeditor.navigation;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.commands.operations.UndoContext;
 import org.eclipse.jface.viewers.StructuredSelection;
@@ -23,6 +28,8 @@ import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.navigator.CommonViewer;
 
 import eu.etaxonomy.cdm.api.service.IClassificationService;
@@ -103,10 +110,15 @@ public class NavigationUtil extends AbstractUtility{
                        else if(selectedObject instanceof TaxonNode){
                                EditorUtil.openTaxonNode(entityUuid);
                        }else if(selectedObject instanceof TaxonBase){
-                               EditorUtil.openTaxonBase(entityUuid);
+                               TaxonBase taxonBase = (TaxonBase)selectedObject;
+                               if(taxonBase.isOrphaned()){
+                                       openInBulkEditor(taxonBase);
+                               }
+                               else{
+                                       EditorUtil.openTaxonBase(entityUuid);
+                               }
                        }else if(selectedObject instanceof TaxonNameBase){
-                               // TODO open bulk editor
-                               MessagingUtils.warningDialog("Not implemented yet", NavigationUtil.class, "You tried to open a name. This is not handled by the software yet. For open a pure name you can use the bulk editor");
+                               openInBulkEditor(selectedObject);
                        }else if(selectedObject instanceof PolytomousKey){
                                EditorUtil.openPolytomousKey(entityUuid);
                        }else{
@@ -124,6 +136,32 @@ public class NavigationUtil extends AbstractUtility{
                }
        }
 
+       private static void openInBulkEditor(ICdmBase selectedObject) {
+               ICommandService commandService = (ICommandService)PlatformUI.getWorkbench().getService(ICommandService.class);
+               IHandlerService handlerService = (IHandlerService)PlatformUI.getWorkbench().getService(IHandlerService.class);
+               String openInBulkEditorCommand = "eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity";
+               Command command = commandService.getCommand(openInBulkEditorCommand);
+               if(command.isDefined()){
+                       Map<String, UUID> params = new HashMap<String, UUID>();
+                       params.put(openInBulkEditorCommand+".uuid", ((ICdmBase) selectedObject).getUuid()); //$NON-NLS-1$
+                       ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(command, params);
+                       try {
+                               if(parameterizedCommand!=null){
+                                       handlerService.executeCommand(parameterizedCommand, null);
+                                       return;
+                               }
+                               else{
+                                       handlerService.executeCommand(command.getId(), null);
+                                       return;
+                               }
+                       } catch (NotDefinedException nde) {
+                               throw new RuntimeException("Could not find open command: " + command.getId()); //$NON-NLS-1$
+                       } catch (Exception exception) {
+                               MessagingUtils.error(NavigationUtil.class, "An exception occured while trying to execute "+command.getId(), exception); //$NON-NLS-1$
+                       }
+               }
+       }
+
        /**
         * <p>openEmpty</p>
         *
index 984d7cf0a187d3f44a8315e11f4cf1393c60b426..3d190f9a13014380f39110014633a983f0656d42 100644 (file)
@@ -73,7 +73,7 @@ public class RecentNamesContributionItem extends ContributionItem {
        /** {@inheritDoc} */
        @Override
        public void fill(Menu parent, int index) {
-               getRecentWindows().fill(parent, index);
+       //      getRecentWindows().fill(parent, index);
        }
 
        /* (non-Javadoc)
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyLabelProvider.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyLabelProvider.java
deleted file mode 100644 (file)
index a175246..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * 
- */
-package eu.etaxonomy.taxeditor.navigation.key.polytomous;
-
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-
-/**
- * @author n.hoffmann
- *
- */
-public class PolytomousKeyLabelProvider extends ColumnLabelProvider implements
-               ILabelProvider {
-
-}
index 6dc27291f4ebf1018645483116dab8b357b10725..90119ecc4329dcc47682657ee4f72caac647f74f 100644 (file)
@@ -11,6 +11,7 @@ import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
@@ -147,7 +148,7 @@ public class PolytomousKeyViewPart extends ViewPart implements
                viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
                viewer.setContentProvider(new PolytomousKeyContentProvider());
-               viewer.setLabelProvider(new PolytomousKeyLabelProvider());
+               viewer.setLabelProvider(new ColumnLabelProvider());
 
                viewer.addDoubleClickListener(new IDoubleClickListener() {
 
index 33c0be7541f96d1dbd65474211ee049abc2158f4..035397f3c2b3e85b7cf17e0ddd90e6175d3d7666 100644 (file)
@@ -198,14 +198,9 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                                return Status.CANCEL_STATUS;
                        }
 
-                       if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                           AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, MovingType.CHILD);
-                           NavigationUtil.executeOperation(operation, null);
-                       } else {
-                           AbstractPostOperation operation = new MoveTaxonOperation
-                                   ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, MovingType.CHILD);
-                           NavigationUtil.executeOperation(operation);
-            }
+                       AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, MovingType.CHILD);
+                       NavigationUtil.executeOperation(operation, null);
+                       
 
                        logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
                        return Status.OK_STATUS;
@@ -221,14 +216,9 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                                        return Status.CANCEL_STATUS;
                                }
 
-                               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                                   AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, MovingType.CHILD);
-                                   NavigationUtil.executeOperation(operation, null);
-                               } else {
-                                   AbstractPostOperation operation = new MoveTaxonOperation
-                                           ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, MovingType.CHILD);
-                                   NavigationUtil.executeOperation(operation);
-                               }
+                               AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, MovingType.CHILD);
+                               NavigationUtil.executeOperation(operation, null);
+                               
 
                                logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
                                return Status.OK_STATUS;
@@ -240,14 +230,9 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                                }
                                TaxonNode targetNode = (TaxonNode) targetITaxonTreeNode;
 
-                               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                                   AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, targetNode, MovingType.BEHIND);
-                                   NavigationUtil.executeOperation(operation, null);
-                               } else {
-                                   AbstractPostOperation operation = new MoveTaxonOperation
-                                           ("Move Taxon", workspaceUndoContext, uuids, targetNode, this, taxonNavigator, MovingType.BEHIND);
-                                   NavigationUtil.executeOperation(operation);
-                               }
+                               AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, targetNode, MovingType.BEHIND);
+                               NavigationUtil.executeOperation(operation, null);
+                               
                                logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
                                return Status.OK_STATUS;
 //                     }else if (returnCode == 2){
index 1b09a29e3fba5f73da3d4a946f08dd7f4f9bc242..aebb25af9e84aa9ffc9dec55798d1f9f3107218f 100644 (file)
@@ -62,7 +62,7 @@ public class CreateClassificationHierarchyHandler extends AbstractHandler {
                     taxonNavigator.refresh();
                 } catch (Exception e) {
                     MessagingUtils.messageDialog("Failed to open Editor", CreateClassificationHierarchyHandler.class,
-                            "Could not open ChecklistView. The hierarchy is corrupted!", e);
+                            "Could not open distribution view. The hierarchy is corrupted!", e);
                 }
             }
         }
index 374ca7e0eadd4f450e0f190621e37fe2bf501e42..c6d53ad380c51dde0abcb01d6db72cd1bfd42831 100644 (file)
@@ -23,10 +23,9 @@ import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator;
-import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -47,21 +46,15 @@ public class RemotingDeleteTaxonNodeHandler extends RemotingCdmHandler {
     private TaxonDeletionConfigurator config;
     private Set<ITaxonTreeNode> treeNodes;
 
-    /**
-     * @param label
-     */
     public RemotingDeleteTaxonNodeHandler() {
         super(TaxonNavigatorLabels.DELETE_TAXON_NODE_LABEL);
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#allowOperations(org.eclipse.core.commands.ExecutionEvent)
-     */
     @Override
     public IStatus allowOperations(ExecutionEvent event) {
         TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
 
-        Iterator selectionIterator = selection.iterator();
+        Iterator<?> selectionIterator = selection.iterator();
         treeNodes = new HashSet<ITaxonTreeNode>();
 
         while (selectionIterator.hasNext()){
@@ -99,15 +92,20 @@ public class RemotingDeleteTaxonNodeHandler extends RemotingCdmHandler {
 
             }
             TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
-            if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
-                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 Status.CANCEL_STATUS;
-                }
-            } else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
-                if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
-                    return Status.CANCEL_STATUS;
-                }
-            } else {
+                       if (taxonNode instanceof Classification) {
+                               String message;
+                               if (taxonNode.hasChildNodes()) {
+                                       message = "Do you really want to delete the classification? The tree has children, they will be deleted, too.";
+                               } else {
+                                       message = "Do you really want to delete the classification?";
+                               }
+                               if (!DeleteConfiguratorDialog.openConfirm(
+                                               HandlerUtil.getActiveShell(event), "Confirm Deletion",
+                                               message)) {
+                                       return Status.CANCEL_STATUS;
+                               }
+                       }
+            else {
 
                 if (taxonNode.hasChildNodes()){
                     DeleteConfiguratorDialog dialog = new DeleteConfiguratorDialog(
@@ -142,9 +140,6 @@ public class RemotingDeleteTaxonNodeHandler extends RemotingCdmHandler {
         return Status.OK_STATUS;
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#prepareOperation(org.eclipse.core.commands.ExecutionEvent)
-     */
     @Override
     public AbstractOperation prepareOperation(ExecutionEvent event) {
         return new RemotingDeleteTaxonNodeOperation(event.getTrigger(),
@@ -153,13 +148,8 @@ public class RemotingDeleteTaxonNodeHandler extends RemotingCdmHandler {
                 config);
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmHandler#onComplete()
-     */
     @Override
     public void onComplete() {
-        // TODO Auto-generated method stub
-
     }
 
 }
index 8d3aeead72bf87e3f527ab51bbdbfc7da9fe3c0b..97aa07b518c5a0a539a61585efe1d009b1054c4f 100644 (file)
@@ -66,7 +66,7 @@ public class CreateClassification extends AbstractPersistentPostOperation {
 
                if(classification.getReference() == null){
                        Reference reference = ReferenceFactory.newGeneric();
-                       reference.setTitleCache(classification.getTitleCache(), true);
+                       reference.setTitle(classification.getTitleCache());
                        classification.setReference(reference);
                }
 
index 8bc146b1facb853c598bb0e460bb774c32d42946..ebea994accbd19e440c2e433f236b876997b856c 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: 4.2.0
+Bundle-Version: 4.3.0
 Require-Bundle: org.eclipse.osgi,
  org.eclipse.ui,
  eu.etaxonomy.taxeditor.cdmlib,
index 1e9246e0f3cbacbd3b146ad13c991998c3ed95a9..eff5c9492b9fc8cb4ba09e32ba205ece2fec7e82 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <artifactId>taxeditor-parent</artifactId>
                <groupId>eu.etaxonomy</groupId>
-               <version>4.2.0</version>
+               <version>4.3.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 929f1ed02297c4af285158fa91f2e237661d78b2..a2364282d05fc51ccb853a2702a98beb1d73f809 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: 4.2.0
+Bundle-Version: 4.3.0
 Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.cdm,
index 63058b8e93e0c14006f70ed34bfbe23d2a70647b..bec383a23d8ba0945ac574b8ca5cbe902b80980a 100644 (file)
@@ -125,7 +125,7 @@ colorDefinition.label.14 = Disabled Name Editor Field
 colorDefinition.label.15 = Editor On Error\r
 page.name.26 = Specimens and FieldUnits\r
 page.name.27 = Media\r
-page.name.28 = Checklist Editor\r
+page.name.28 = Distribution Editor\r
 page.name.29 = Editor Profile\r
 page.name.30 = Language\r
 page.name.32 = Taxon Navigator\r
@@ -165,7 +165,7 @@ command.label.RE_CONNECT = Re-Connect
 command.name.CONNECT = Connect\r
 command.name.RE_CONNECT = Re-Connect\r
 command.name.OPEN_CLASSIFICATION_WIZARD = Open Classification Wizard\r
-command.name.OPEN_TAXONNODE_WIZARD = Open Taxon Node Wizard
+command.name.OPEN_TAXONNODE_WIZARD = Open Taxon Node Wizard\r
 \r
 command.name.INSPECT_ACTIVE_SESSIONS = Inspect Active Session\r
 viewCommandMapping.viewerName.CLASSIFICATION_WIZARD = Classification Wizard\r
index 6825f152e4ea9b9daaaa870b86643f396fb2cd36..13c9fe5720d04bbfbe99c8b8f50b57130765aadf 100644 (file)
@@ -125,7 +125,7 @@ colorDefinition.label.14 = Gesperrtes Namenseditierfeld
 colorDefinition.label.15 = Editor fehlerhaft
 page.name.26 = Specimens und Field Units
 page.name.27 = Media
-page.name.28 = Checklisten Editor
+page.name.28 = Verbreitungs-Editor
 page.name.29 = Editor Profil
 page.name.30 = Sprache
 page.name.32 = Taxon Navigator
@@ -134,7 +134,7 @@ page.name.34 = Debug Einstellungen
 page.name.35 = Gebiete für Verbreitungsdaten
 command.label.clone = Klonen
 command.label.openInSpecimenEditor = \u00d6ffnen im Specimen-Editor
-page.name.31 = Taxon-Node-Reihenfolge
+page.name.31 = Taxonknoten-Reihenfolge
 extension.name.0 = Popup Menu Befehle
 command.name.8 = Datenquelle klonen
 command.name.9 = \u00d6ffne Feature Tree-Wizard
@@ -165,9 +165,9 @@ command.label.RE_CONNECT = Aktualisiere Verbindung
 command.name.CONNECT = Verbinden
 command.name.RE_CONNECT = Aktualisiere Verbindung
 command.name.OPEN_CLASSIFICATION_WIZARD = \u00d6ffne Klassifikations-Wizard
-command.name.OPEN_TAXONNODE_WIZARD = \u00d6ffne Taxon Node-Wizard
+command.name.OPEN_TAXONNODE_WIZARD = \u00d6ffne Taxonknoten-Wizard
 
 command.name.INSPECT_ACTIVE_SESSIONS = Aktive Session untersuchen
 viewCommandMapping.viewerName.CLASSIFICATION_WIZARD = Klassifikations-Wizard
-viewCommandMapping.viewerName.TAXON_NODE_WIZARD = Taxnknoten-Wizard
+viewCommandMapping.viewerName.TAXON_NODE_WIZARD = Taxonknoten-Wizard
 command.label.CHANGE_PASSWORD = Kennwort Ã¤ndern
\ No newline at end of file
index d324d4dc7177b7b39d2a7d82f233f73825b2b286..281ed06e8ab6ba2b186593dbfdf29fed3d321993 100644 (file)
@@ -67,7 +67,7 @@ RemotingLoginDialog_LABEL_PASSWORD=Password :
 RemotingLoginDialog_LABEL_PORT=Port : 
 RemotingLoginDialog_LABEL_REFRESH=Refresh
 RemotingLoginDialog_LABEL_REMEMBER_ME=Remember Me
-RemotingLoginDialog_LABEL_RETRIEVE_SERVER_INSTANCES=Retrieve Server Instances
+RemotingLoginDialog_RETRIEVE_SERVER_INSTANCES=Retrieve Server Instances
 RemotingLoginDialog_LABEL_SERVER_CDM_VERSION=Server CDM Version :
 RemotingLoginDialog_LABEL_SERVER_CDMLIB_VERSION=Server Cdmlib Version :
 RemotingLoginDialog_LABEL_STOP_MANAGED_SERVER=Stop Managed Server
@@ -108,3 +108,9 @@ PasswordWizardPage_OLD_PASSWORD=Old Password
 PasswordWizardPage_PASSWORD_MIN_CHARACTER=Password has to have at least %s characters
 PasswordWizardPage_PASSWORDS_DO_NOT_MATCH=The passwords do not match
 PasswordWizardPage_REPEAT_PASSWORD=Repeat Password
+
+SearchManager_LARGE_RESULT_EXPECTED=Large result expected
+SearchManager_LONG_SEARCH_WARNING=The current search will return %s objects. This will take a long time and/or might render the editor unusable. Please consider refining your search.\nSearch anyway?
+
+SupplementalDataViewPart_VIEWER_NAME=Supplemental Data
+DetailsViewPart_VIEWER_NAME=Details
\ No newline at end of file
index 1b0295b044689f54e03104c5153bcf7bede973b4..be6719e8f661641dd6ab7422e58b7059c1223c9c 100644 (file)
@@ -67,7 +67,7 @@ RemotingLoginDialog_LABEL_PASSWORD=Kennwort :
 RemotingLoginDialog_LABEL_PORT=Port : 
 RemotingLoginDialog_LABEL_REFRESH=Aktualisieren
 RemotingLoginDialog_LABEL_REMEMBER_ME=Login Daten merken
-RemotingLoginDialog_LABEL_RETRIEVE_SERVER_INSTANCES=Abrufen der Serverinstanzen
+RemotingLoginDialog_RETRIEVE_SERVER_INSTANCES=Abrufen der Serverinstanzen
 RemotingLoginDialog_LABEL_SERVER_CDM_VERSION=Server CDM Version :
 RemotingLoginDialog_LABEL_SERVER_CDMLIB_VERSION=Server Cdmlib Version :
 RemotingLoginDialog_LABEL_STOP_MANAGED_SERVER=Beende internen CDM-Server
@@ -108,3 +108,9 @@ PasswordWizardPage_OLD_PASSWORD=Altes Kennwort
 PasswordWizardPage_PASSWORD_MIN_CHARACTER=Kennwort muss mindesten %s Zeichen enthalten
 PasswordWizardPage_PASSWORDS_DO_NOT_MATCH=Die Kennwörter stimmen nicht Ã¼berein
 PasswordWizardPage_REPEAT_PASSWORD=Kennwort wiederholen
+
+SearchManager_LARGE_RESULT_EXPECTED=Große Anzahl an Suchergebnissen
+SearchManager_LONG_SEARCH_WARNING=Die aktuelle Suche wird %s Objekte laden. Dies kann einige Zeit dauern und den Editor währenddessen unbedienbar machen. Bitte erstellen sie eine detailliertere Suche.\nTrotzdem suchen?
+
+SupplementalDataViewPart_VIEWER_NAME=Zusatzdaten
+DetailsViewPart_VIEWER_NAME=Details
diff --git a/eu.etaxonomy.taxeditor.store/icons/default_derivate-16x16-32.png b/eu.etaxonomy.taxeditor.store/icons/default_derivate-16x16-32.png
new file mode 100644 (file)
index 0000000..366c696
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/default_derivate-16x16-32.png differ
old mode 100644 (file)
new mode 100755 (executable)
index acb4023..9b1bca5
             name="%view.name"
             restorable="true">
       </view>
+      <view
+        allowMultiple="true"
+        class="eu.etaxonomy.taxeditor.view.dataimport.SpecimenImportView"
+        id="eu.etaxonomy.taxeditor.view.dataimport.SpecimenImportView"
+        name="%view.name.7">
+         </view>
+         <view
+        allowMultiple="true"
+        class="eu.etaxonomy.taxeditor.view.dataimport.GbifResponseImportView"
+        id="eu.etaxonomy.taxeditor.view.dataimport.GbifResponseImportView"
+        name="%view.name.8">
+         </view>
       <view  
                        name="%view.name.0"  
                        category="org.eclipse.ui"  
             id="eu.etaxonomy.taxeditor.io.import.tcs"
             name="%wizard.name">
       </wizard>
+       <wizard
+            category="eu.etaxonomy.taxeditor.import.category.cdm"
+            class="eu.etaxonomy.taxeditor.view.dataimport.SpecimenSearchWizard"
+            id="eu.etaxonomy.taxeditor.view.dataimport.SpecimenSearchWizard"
+            name="%wizard.name.21">
+            <description>
+                %wizard.description
+            </description>
+        </wizard>
+   
    <!--   <wizard
             category="eu.etaxonomy.taxeditor.import.category.cdm"
             class="eu.etaxonomy.taxeditor.io.wizard.JaxbImportWizard"
index 69c60ce7fd0460673ac8528036123bc5fc99ce05..a3ff6cbb50b22bba8fac501e8dc8688edb522fac 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
        <groupId>eu.etaxonomy</groupId>
        <artifactId>taxeditor-parent</artifactId>
-       <version>4.2.0</version>
+       <version>4.3.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index e958729c7e52397e0f10fd868e5948d0a1e909c2..c92ef50baa9775ea4113e28cbfe087d697d6168f 100644 (file)
@@ -45,12 +45,10 @@ public class Messages extends NLS {
     public static String CdmViewerContextMenu_OPEN;
     public static String CdmViewerContextMenu_OPEN_IN;
     public static String ChangeConnectionHandler_ALREADY_CONNECTING;
-    public static String ChangeConnectionHandler_CONFIRM_DATASOURCE;
     public static String ChangeConnectionHandler_CURRENTLY_CONNECTING_ALREADY;
     public static String ChangeConnectionHandler_CREATE_DATAMODEL;
     public static String ChangeConnectionHandler_REALLY_CREATE_DATAMODEL;
     public static String ChangeConnectionHandler_DATASOURCE_NOT_AVAILABLE;
-    public static String ChangeConnectionHandler_REALLY_WANT_TO_CONNECT;
     public static String ChangeConnectionHandler_NOT_AVAILABLE_REASONS;
     public static String UriWithLabelElement_COULD_NOT_OPEN_BROWSER;
     public static String UriWithLabelElement_INVALID_URL;
@@ -71,6 +69,7 @@ public class Messages extends NLS {
        public static String CdmStoreConnector_SCHEME_NOT_COMPATIBLE;
        public static String CdmStoreConnector_UPDATE_DATASOUREC_OR_CHOOSE_NEW_DATASOURCE;
        public static String CdmStoreConnector_UPDATE_EDITOR_OR_CHOOSE_COMPATIBLE_DATASOURCE;
+       public static String DetailsViewPart_VIEWER_NAME;
     public static String EditPasswordElement_PLEASE_CREATE_OR_SAVE_USER;
     public static String EditPasswordElement_USERNAME_DOES_NOT_EXIST;
     public static String PasswordWizard_COULD_NOT_CHANGE_PWD;
@@ -124,6 +123,9 @@ public class Messages extends NLS {
        public static String RemotingLoginDialog_JOB_SERVER_LAUNCH;
        public static String RemotingLoginDialog_STARTING_MGD_SERVER;
        public static String RemotingLoginDialog_TASK_LAUNCHING_SERVER;
+    public static String SearchManager_LARGE_RESULT_EXPECTED;
+    public static String SearchManager_LONG_SEARCH_WARNING;
+       public static String SupplementalDataViewPart_VIEWER_NAME;
        static {
         // initialize resource bundle
         NLS.initializeMessages(BUNDLE_NAME, Messages.class);
index 0275cc47100a772f81bd429b74d96f82ddc37257..ccdd5e28591f67096c51dc5d77fa3b63f7914fc8 100644 (file)
@@ -174,7 +174,7 @@ public class CdmDataSourceRepository{
         */
        public static ICdmDataSource createDefaultH2DataSource() {
            ICdmDataSource h2DataSource = CdmDataSource.NewH2EmbeddedInstance(
-                DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode());
+                       DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode(true));
         save(h2DataSource.getName(), h2DataSource);
         return h2DataSource;
        }
@@ -188,7 +188,7 @@ public class CdmDataSourceRepository{
        public static boolean setCurrentCdmSource(ICdmSource cdmSource) {
                currentCdmSource = cdmSource;
                NomenclaturalCode dataSourceNomenclaturalCode = cdmSource.getNomenclaturalCode();
-               NomenclaturalCode applicationNomenclaturalCode = PreferencesUtil.getPreferredNomenclaturalCode();
+               NomenclaturalCode applicationNomenclaturalCode = PreferencesUtil.getPreferredNomenclaturalCode(true);
 
                if( dataSourceNomenclaturalCode != null && ! dataSourceNomenclaturalCode.equals(applicationNomenclaturalCode)){
                        PreferencesUtil.setPreferredNomenclaturalCode(dataSourceNomenclaturalCode);
index 04c9eb4b51322980ffa8363aa949d837ce3128bf..b225e7797cb5f7da9d80054d1247dc8c6b583b03 100644 (file)
@@ -258,7 +258,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                nomenclaturalCodeGroup = new Group(composite , SWT.NONE);
                nomenclaturalCodeGroup.setLayout(new GridLayout());
 
-               nomenclaturalCode = dataSource != null ? dataSource.getNomenclaturalCode() : PreferencesUtil.getPreferredNomenclaturalCode();
+               nomenclaturalCode = dataSource != null ? dataSource.getNomenclaturalCode() : PreferencesUtil.getPreferredNomenclaturalCode(true);
 
                for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) {
                        Button button = new Button(nomenclaturalCodeGroup, SWT.RADIO);
index a34694860036ee3eeec77263738880f9e2f8ce45..da2a355239fc8f1ce645c64d134f996d65e8db6c 100644 (file)
@@ -22,6 +22,7 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.TextStyle;\r
 import org.eclipse.swt.widgets.Display;\r
 \r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.Representation;\r
@@ -78,12 +79,6 @@ public class TermLabelProvider extends StyledCellLabelProvider {
         return new StyledString(getText(element), StyledString.QUALIFIER_STYLER);\r
     }\r
 \r
-    /*\r
-     * (non-Javadoc)\r
-     *\r
-     * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)\r
-     */\r
-\r
     public String getText(Object element) {\r
 \r
         if (element instanceof DefinedTermBase) {\r
@@ -93,11 +88,8 @@ public class TermLabelProvider extends StyledCellLabelProvider {
             if ( rep == null){\r
                 rep = dtb.getPreferredRepresentation(new ArrayList<Language>());\r
             }\r
-            if (StringUtils.isNotBlank(dtb.getIdInVocabulary())) {\r
-                return dtb.getIdInVocabulary() + " : " + rep.getLabel();\r
-            } else {\r
-                return rep.getLabel();\r
-            }\r
+            String label = rep != null? rep.getLabel() : dtb.getTitleCache();\r
+            return CdmUtils.concat(" : ", dtb.getIdInVocabulary(), label);\r
 \r
         } else if (element instanceof TermBase) {\r
             return ((TermBase) element).getTitleCache();\r
index 518382f1f1f494a3b3f6e4c211807f0e4e9db7c5..a02e9a73288a0f1c92ae8ee5ce506cf9105fb127 100644 (file)
@@ -101,10 +101,8 @@ public class TermEditorInput extends AbstractDefinedTermEditorInput<DefinedTerm>
      */
     @Override
     public void merge() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            CdmStore.getService(IVocabularyService.class).merge(new ArrayList<TermVocabulary>(getRootEntities()), true);
-            updateDefaultFeatureTree();
-        }
+        CdmStore.getService(IVocabularyService.class).merge(new ArrayList<TermVocabulary>(getRootEntities()), true);
+        updateDefaultFeatureTree();
     }
 
     public static FeatureTree getDefaultFeatureTree() {
index 78cd5bd5aec99f095c9a6b893de13f8fde580e40..36a91960340ee97e7b025ace6011a98f168f1ad5 100644 (file)
@@ -206,11 +206,8 @@ public class EditFeatureTreeWizardPage extends WizardPage implements
                                                .getAdditionalFeatures();
                                for (Feature feature : additionalFeatures) {
                                        FeatureNode child = FeatureNode.NewInstance(feature);
-                                       if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                                           CdmStore.getService(IFeatureNodeService.class).merge(child, true);
-                                       } else {
-                                           CdmStore.getService(IFeatureNodeService.class).saveOrUpdate(child);
-                                       }
+                                       CdmStore.getService(IFeatureNodeService.class).merge(child, true);
+                                       
                                        parent.addChild(child);
                                }
                                viewer.refresh();
index d65ad420e94c6cb1c34220b7246246ccedccc893..c8c58d3e0602c2f0a81169e21d8c029f0108fe2e 100644 (file)
@@ -70,11 +70,7 @@ public class FeatureTreeEditorWizard extends Wizard implements ICdmEntitySession
        public boolean performFinish() {
                try{
                        if (selectedFeatureTree != null){
-                           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                               CdmStore.getService(IFeatureTreeService.class).merge(selectedFeatureTree, true);
-                           } else {
-                               CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(selectedFeatureTree);
-                           }
+                           CdmStore.getService(IFeatureTreeService.class).merge(selectedFeatureTree, true);
                        }
                        conversation.commit();
                }finally{
index 409dae7e618292496c491b0506838e6f42cda02b..a7abcb38bb498c2f8fe4163769a604ef0c5bf964 100644 (file)
@@ -151,11 +151,8 @@ public class SelectFeatureTreeWizardPage extends WizardPage implements ISelectio
                        featureTree.setTitleCache(text_title.getText(), true);
 
                        viewer.add(featureTree);
-                       if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                CdmStore.getService(IFeatureTreeService.class).merge(featureTree, true);
-                       } else {
-                           CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(featureTree);
-                       }
+                       CdmStore.getService(IFeatureTreeService.class).merge(featureTree, true);
+                       
                        text_title.setText("");
                        viewer.setSelection(new StructuredSelection(featureTree));
 
index 7de630396a76541a5b6bd435c2b8af505280fbc6..790a4438b40a48bd828bd44ea6de6bd8abc99657 100644 (file)
@@ -30,7 +30,7 @@ public abstract class AbstractIOManager<CONFIGURATOR extends IIoConfigurator> {
        protected ICdmApplicationConfiguration applicationConfiguration;
 
        public static enum TYPE {
-               Jaxb, Tcs, Excel_Taxa, Endnote, Sdd, Abcd, SpecimenCdmExcel, Excel_Name, SpecimenSearch
+               Jaxb, Tcs, Excel_Taxa, Endnote, Sdd, Abcd, SpecimenCdmExcel, Excel_Name, SpecimenSearch, Gbif
        }
 
        /**
index 809e19efa068a89ddf1c4d3f5d74ccfa71f1711d..539db22f7962b7dd3fe70ef4ff3da98d8cf12a78 100644 (file)
@@ -12,10 +12,12 @@ package eu.etaxonomy.taxeditor.io;
 
 import java.io.File;
 import java.io.InputStream;
+import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 import org.apache.commons.io.IOUtils;
@@ -34,13 +36,18 @@ import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE;
 import eu.etaxonomy.cdm.io.common.ImportResult;
+import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator;
 import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
 import eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator;
 import eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator;
 import eu.etaxonomy.cdm.io.service.IIOService;
+import eu.etaxonomy.cdm.io.specimen.SpecimenImportConfiguratorBase;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
+import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportState;
 import eu.etaxonomy.cdm.io.specimen.excel.in.SpecimenCdmExcelImportConfigurator;
+import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportConfigurator;
+import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportState;
 import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
@@ -302,6 +309,8 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                        return SpecimenCdmExcelImportConfigurator.NewInstance(null, null);
                case SpecimenSearch:
                    return Abcd206ImportConfigurator.NewInstance(null, null);
+               case Gbif:
+                   return DwcaImportConfigurator.NewInstance(null, null);
                default:
                        MessagingUtils.notImplementedMessage(this);
                        throw new IllegalArgumentException("Import not supported yet");
@@ -386,6 +395,11 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
        public SpecimenCdmExcelImportConfigurator SpecimenCdmExcelImportConfigurator() {
                return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel);
        }
+       
+       public DwcaImportConfigurator DwcaImportConfigurator() {
+               return (DwcaImportConfigurator) getConfigurator(TYPE.Gbif);
+       }
+
 
     /**
      * {@inheritDoc}
@@ -402,5 +416,94 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
 
     }
 
+       public Job createIOServiceJob(final GbifImportConfigurator<GbifImportState, InputStream> configurator) {
+                Assert.isNotNull(configurator, "Configuration may not be null");
+               final Display display = Display.getDefault();
+               Job job = new Job("Import: " + " Dwca") {
+
+                   @Override
+                   protected IStatus run(IProgressMonitor monitor) {
+                       monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ImportResult result = ioService.importDataFromStream(configurator);
+                       monitor.done();
+
+                       display.asyncExec(new Runnable() {
+
+                           @Override
+                           public void run() {
+                               CdmStore.getContextManager().notifyContextRefresh();
+                           }
+                       });
+
+                       return Status.OK_STATUS;
+                   }
+               };
+
+               return job;
+
+       }
+       
+       public Job createIOServiceJob(final Abcd206ImportConfigurator<Abcd206ImportState, InputStream> configurator) {
+                Assert.isNotNull(configurator, "Configuration may not be null");
+               final Display display = Display.getDefault();
+               Job job = new Job("Import: " + " Dwca") {
+
+                   @Override
+                   protected IStatus run(IProgressMonitor monitor) {
+                       monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ImportResult result = ioService.importDataFromStream(configurator);
+                       monitor.done();
+
+                       display.asyncExec(new Runnable() {
+
+                           @Override
+                           public void run() {
+                               CdmStore.getContextManager().notifyContextRefresh();
+                           }
+                       });
+
+                       return Status.OK_STATUS;
+                   }
+               };
+
+               return job;
+
+       }
+
+       public Job createIOServiceJob(
+                       final List<Abcd206ImportConfigurator> abcdConfigurators) {
+                Assert.isNotNull(abcdConfigurators, "Configuration may not be null");
+               final Display display = Display.getDefault();
+               Job job = new Job("Import: " + " Dwca") {
+
+                   @Override
+                   protected IStatus run(IProgressMonitor monitor) {
+                       monitor.beginTask("Importing data", IProgressMonitor.UNKNOWN);
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ImportResult result = ioService.importDataFromStream(abcdConfigurators);
+                       monitor.done();
+
+                       display.asyncExec(new Runnable() {
+
+                           @Override
+                           public void run() {
+                               CdmStore.getContextManager().notifyContextRefresh();
+                           }
+                       });
+
+                       return Status.OK_STATUS;
+                   }
+               };
+
+               return job;
+       }
+
+       
+
 
 }
index d6f3236ea638ddb1463fbdb70c4b48a185008dfc..d75d589bfb5572a0c2bec55c7258f87a77bc657f 100644 (file)
@@ -56,20 +56,8 @@ public class AbcdImportWizard extends AbstractImportWizard<Abcd206ImportConfigur
                configurator.setClassificationUuid(classificationChooserWizardPage.getClassification().getUuid());
            }
 
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               //Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.INPUTSTREAM);
-               //CdmStore.getImportManager().run(job);
-               CdmStore.getImportManager().runMoniteredOperation(configurator, new File(source), SOURCE_TYPE.INPUTSTREAM);
-           } else {
-               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;
-               }
-               CdmStore.getImportManager().run(configurator);
-           }
+           CdmStore.getImportManager().runMoniteredOperation(configurator, new File(source), SOURCE_TYPE.INPUTSTREAM);
+           
            return true;
 
        }
index 377ccc84ca04ddff8c37b828424d7fd389f8c892..c0db37b9a0b32bc94d7d755d923603765f9b594b 100644 (file)
@@ -52,7 +52,7 @@ public class ClassificationChooserWizardPage extends WizardPage implements Liste
 
        }
 
-       protected static ClassificationChooserWizardPage createPage(){
+       public static ClassificationChooserWizardPage createPage(){
                return new ClassificationChooserWizardPage("Configure import destinations", "Note: Selecting no classification will create a default one.");
        }
 
index e703c2d3dbc74f7f2807088a9d866f8889f9c152..59962024a4c011ed5592e8afd9eab7e8e536730a 100644 (file)
@@ -93,19 +93,15 @@ public class CsvExportWizard extends AbstractExportWizard<CsvDemoExportConfigura
                        configurator.setLastChange(true);
                    }
                }
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                   // create job
-                   Job job = CdmStore.getExportManager().createIOServiceJob(configurator, new File(urlString));
-                   // configure the job
-                   job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
-                   job.setUser(true);
-                   // schedule job
-                   job.schedule();
-               } else {
-
-                   configurator.setDestination(new File(urlString));
-                   CdmStore.getExportManager().run(configurator);
-               }
+               
+           // create job
+           Job job = CdmStore.getExportManager().createIOServiceJob(configurator, new File(urlString));
+           // configure the job
+           job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+           job.setUser(true);
+           // schedule job
+           job.schedule();
+               
                return true;
        }
 
index bd6ac4a480e3e1e27e1af7ce4ae794325ec52ecc..8ca8ef64cc6576074b0535cce491cea9fca4257e 100644 (file)
@@ -66,19 +66,16 @@ public class CsvNameExportWizard extends AbstractExportWizard<CsvNameExportConfi
                    + page.getExportFileName();\r
 \r
            final Combo combo = page.getCombo();\r
-\r
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {\r
-               // create job\r
-               Job job = CdmStore.getExportManager().createIOServiceJob(configurator, new File(urlString));\r
-               // configure the job\r
-               job.setProperty(IProgressConstants.KEEP_PROPERTY, true);\r
-               job.setUser(true);\r
-               // schedule job\r
-               job.schedule();\r
-           } else {\r
-               configurator.setDestination(new File(urlString));\r
-               CdmStore.getExportManager().run(configurator);\r
-           }\r
+           configurator.setClassificationUUID(page.getSelectedClassificationUUID());\r
+           \r
+        // create job\r
+        Job job = CdmStore.getExportManager().createIOServiceJob(configurator, new File(urlString));\r
+        // configure the job\r
+        job.setProperty(IProgressConstants.KEEP_PROPERTY, true);\r
+        job.setUser(true);\r
+        // schedule job\r
+        job.schedule();\r
+          \r
                return true;\r
        }\r
 \r
index 61905f31f057bfb22947f96fbb3b96f045bbccce..dbda86082f2e06a0fc20adb5df0f8f9e2cb5513f 100644 (file)
@@ -60,40 +60,17 @@ public class CsvPrintExportWizard extends CsvNameExportWizard{
                                + page.getExportFileName();\r
 \r
                final Combo combo = page.getCombo();\r
-               final List<Classification> listClassifications = CdmStore.getCurrentApplicationConfiguration().getClassificationService().listClassifications(null, null, null, null);\r
-               if(combo != null){\r
-                   int selectionIndex = combo.getSelectionIndex();\r
-                   HashSet<UUID> set = new HashSet<UUID>();\r
-                   if(selectionIndex == -1){\r
-                       for(Classification c:listClassifications){\r
-                           set.add(c.getUuid());\r
-                       }\r
-                   }else{\r
-                       for(Classification c:listClassifications){\r
-                           if(c.getTitleCache().equalsIgnoreCase(combo.getItem(selectionIndex))){\r
-                               set.add(c.getUuid());\r
-                           }\r
-                       }\r
-\r
-                       configurator.setHasHeaderLines(true);\r
-\r
-                   }\r
-               } else{\r
-                       configurator.setClassificationUUID(listClassifications.get(0).getUuid());\r
-               }\r
-\r
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {\r
-                   // create job\r
-                   Job job = CdmStore.getExportManager().createIOServiceJob(configurator, new File(urlString));\r
-                   // configure the job\r
-                   job.setProperty(IProgressConstants.KEEP_PROPERTY, true);\r
-                   job.setUser(true);\r
-                   // schedule job\r
-                   job.schedule();\r
-               } else {\r
-                   configurator.setDestination(new File(urlString));\r
-                   CdmStore.getExportManager().run(configurator);\r
-               }\r
+\r
+          \r
+           configurator.setClassificationUUID(page.getSelectedClassificationUUID());\r
+               // create job\r
+           Job job = CdmStore.getExportManager().createIOServiceJob(configurator, new File(urlString));\r
+           // configure the job\r
+           job.setProperty(IProgressConstants.KEEP_PROPERTY, true);\r
+           job.setUser(true);\r
+           // schedule job\r
+           job.schedule();\r
+               \r
                return true;\r
        }\r
 \r
index f6d43baf8a87ad54781bc3133d77849036a302b3..519345e9f63777633f6920c101e5429501f55c08 100644 (file)
@@ -15,11 +15,13 @@ import java.net.URI;
 
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.ui.IWorkbench;
 
 import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE;
 import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 
@@ -55,14 +57,9 @@ public class ExcelNormalExplicitTaxaImportWizard extends AbstractImportWizard<No
                configurator.setSource(source);
                configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
 
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                   Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI);
-                   CdmStore.getImportManager().run(job);
-               } else {
-                   CdmStore.getImportManager().run(configurator);
-               }
-
-
+           Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI);
+           CdmStore.getImportManager().run(job);
+               
                return true;
        }
 
@@ -74,6 +71,11 @@ public class ExcelNormalExplicitTaxaImportWizard extends AbstractImportWizard<No
     public void init(IWorkbench workbench, IStructuredSelection selection) {
                super.init(workbench, selection);
                configurator =  CdmStore.getImportManager().NormalExplicitConfigurator();
+               if (selection instanceof TreeSelection && !selection.isEmpty()){
+                       TaxonNode node = (TaxonNode)selection.getFirstElement();
+                       configurator.setParentUUID(node.getTaxon().getUuid());
+                       configurator.setClassificationUuid(node.getClassification().getUuid());
+               }
        }
 
        /* (non-Javadoc)
index a35e64490f9a9f6d3c6879b9d90a08572fc013a8..e5c389f6688c62c04e2452f65c78bdc8a5f15525 100644 (file)
@@ -12,21 +12,27 @@ package eu.etaxonomy.taxeditor.io.wizard;
 
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
+import java.util.UUID;
 
 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.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.DirectoryDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
+import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
 import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSourceException;
@@ -41,7 +47,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 15.06.2009
  * @version 1.0
  */
-public class ExportToFileDestinationWizardPage extends WizardPage {
+public class ExportToFileDestinationWizardPage extends WizardPage implements SelectionListener {
 
        /** Constant <code>DATE_FORMAT_NOW="yyyyMMddHHmm"</code> */
        public static final String DATE_FORMAT_NOW = "yyyyMMddHHmm";
@@ -85,7 +91,11 @@ public class ExportToFileDestinationWizardPage extends WizardPage {
 
        private final String extension;
 
-    private Combo comboBox;
+    private Combo classificationSelectionCombo;
+    
+    private List<Classification> classifications;
+    
+    private Classification selectedClassification;
 
        /**
         * @param pageName
@@ -225,13 +235,26 @@ public class ExportToFileDestinationWizardPage extends WizardPage {
                GridLayout gridLayout = new GridLayout();
                gridLayout.numColumns = 3;
                composite.setLayout(gridLayout);
+               if(classifications == null){
+                       classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
+                       Collections.sort(classifications, new Comparator<Classification>() {
+
+                @Override
+                public int compare(Classification o1, Classification o2) {
+                    return o1.getTitleCache().compareTo(o2.getTitleCache());
+                }
+            });
+                       
+                       selectedClassification = classifications.iterator().next();
+               }
 
 
-               if(csvExport){
+               if(csvExport || csvPrintExport){
                    Label comboBoxLabel = new Label(composite, SWT.NONE);
                    comboBoxLabel.setText("Classification");
-                   Combo comboBox = addComboBox(composite);
-                   comboBox.setLayoutData(new GridData(SWT.FILL, SWT.FILL,
+                  
+                   createClassificationSelectionCombo(composite);
+                   classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL,
                                true, false, 2, 1));
                }
                
@@ -326,22 +349,55 @@ public class ExportToFileDestinationWizardPage extends WizardPage {
                return text_folder.getText();
        }
 
-       private Combo addComboBox(Composite composite){
+       private Control createClassificationSelectionCombo(Composite parent){
+//             classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
 
-           comboBox = new Combo(composite, SWT.DROP_DOWN);
-           comboBox.setText("Choose Classification");
+               Composite classificationSelection = new Composite(parent, SWT.NULL);
+               classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
 
-           final List<Classification> listClassifications = CdmStore.getCurrentApplicationConfiguration().getClassificationService().listClassifications(null, null, null, null);
+               GridLayout layout = new GridLayout();
+               classificationSelection.setLayout(layout);
 
-           for(Classification c : listClassifications){
-               comboBox.add(c.getTitleCache());
-           }
+               Label label = new Label(classificationSelection, SWT.NULL);
+               // TODO not working is not really true but leave it here to remind everyone that this is under construction
+               label.setText("Select Classification");
+               classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
+               classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
+
+               for(Classification tree : classifications){
+                       classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
+
+               }
 
-           return comboBox;
+               classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
+
+               // TODO remember last selection
+               classificationSelectionCombo.addSelectionListener(this);
+
+
+
+               return classificationSelection;
        }
 
        public Combo getCombo(){
-           return comboBox;
+           return classificationSelectionCombo;
+       }
+
+       @Override
+       public void widgetSelected(SelectionEvent e) {
+               selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
+               
+       }
+
+       @Override
+       public void widgetDefaultSelected(SelectionEvent e) {
+               //not needed here
+               
+       }
+
+       public UUID getSelectedClassificationUUID() {
+               
+               return selectedClassification.getUuid();
        }
 
 }
index 00a9c1bc6f2623c14c784c577c827770318e25c5..146fff3ef3a11216484655c3b09171505f8e611b 100644 (file)
@@ -55,17 +55,15 @@ public class JaxbExportWizard extends AbstractExportWizard<JaxbExportConfigurato
                File exportFile = new File(page.getFolderText() + File.separator + page.getExportFileName());
                URI urlString = exportFile.toURI();
                configurator.setDestination(urlString);
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                   // create job
-                   Job job = CdmStore.getExportManager().createIOServiceJob(configurator, exportFile);
-                   // configure the job
-                   job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
-                   job.setUser(true);
-                   // schedule job
-                   job.schedule();
-               } else {
-               CdmStore.getExportManager().run(configurator);
-               }
+               
+           // create job
+           Job job = CdmStore.getExportManager().createIOServiceJob(configurator, exportFile);
+           // configure the job
+           job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+           job.setUser(true);
+           // schedule job
+           job.schedule();
+               
                performFinish = true;
                return performFinish;
        }
index af287cab18238f968d32a0a9cba03a6c98b44cea..73588579743d982b6a2322097976c465ed7ff92c 100644 (file)
@@ -73,7 +73,7 @@ public class NomenclaturalCodeWizardPage extends WizardPage {
                final Group group = new Group(container, SWT.NONE);
                group.setLayout(new GridLayout());
 
-               NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode();
+               NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode(false);
 
                // set preferred code as default
                configurator.setNomenclaturalCode(preferredCode);
index 379a59f1ae1b89ea1fc0fbe421e67091f629fcc5..5efedee663e9fd2ea749d9e67f05322365292f76 100644 (file)
@@ -49,19 +49,14 @@ public class SddExportWizard extends AbstractExportWizard<SDDExportConfigurator>
        @Override
        public boolean performFinish() {
            File file = new File(page.getFolderText() + File.separator + page.getExportFileName());
-
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               // create job
-               Job job = CdmStore.getExportManager().createIOServiceJob(configurator, file);
-               // configure the job
-               job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
-               job.setUser(true);
-               // schedule job
-               job.schedule();
-           } else {
-               configurator.setDestination(file);
-               CdmStore.getExportManager().run(configurator);
-           }
+        // create job
+        Job job = CdmStore.getExportManager().createIOServiceJob(configurator, file);
+        // configure the job
+        job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+        job.setUser(true);
+        // schedule job
+        job.schedule();
+           
            return true;
        }
 
index 8f4d382fe447410f271f066467f0656caa06a8d0..d701f6f4a3bf79e99c35e12a5aae907ddfad1f69 100644 (file)
@@ -67,14 +67,9 @@ public class SddImportWizard extends AbstractImportWizard<SDDImportConfigurator>
                URI source = dataSourcePage.getUri();
                configurator.setSource(source);
                configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
-
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                   Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI);
-                   CdmStore.getImportManager().run(job);
-               } else {
-                   CdmStore.getImportManager().run(configurator);
-               }
-
+               Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI);
+               CdmStore.getImportManager().run(job);
+               
                return true;
        }
 
index 13113c2e49a6bf93ee1058b30955bb69d58d2396..bc41736523837ba8abe1001503a0e2587384a09d 100644 (file)
@@ -45,13 +45,9 @@ public class TcsImportWizard extends AbstractImportWizard<TcsXmlImportConfigurat
            configurator.setSource(source);
            configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
 
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI);
-               CdmStore.getImportManager().run(job);
-           } else {
-               CdmStore.getImportManager().run(configurator);
-           }
-
+           Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.URI);
+           CdmStore.getImportManager().run(job);
+          
            return true;
        }
 
index 8aab0e7ee1cedace88cf1d8478d8bceb6b4f838c..aadacafdf79e905404c151d13d84a5206a8c2390 100644 (file)
@@ -160,6 +160,7 @@ public class ImageResources {
     public static final String AMPLIFICATION_DERIVATE = "amplification_derivate";
     public static final String SINGLE_READ_DERIVATE = "single_read_derivate";
     public static final String SINGLE_READ_DERIVATE_MULTILINK = "single_read_derivate_multilink";
+    public static final String DEFAULT_DERIVATIVE = "default_derivate";
 
     public static final String CHARACTER_DATA_DERIVATE = "character_data_derivate";
 
@@ -388,6 +389,8 @@ public class ImageResources {
                        "single_read_derivate_multilink-16x16-32.png");
                registerImage(registry, CHARACTER_DATA_DERIVATE,
                        "character_data_derivate-16x16-32.png");
+               registerImage(registry, DEFAULT_DERIVATIVE,
+                               "default_derivate-16x16-32.png");
 
                registerImage(registry, WEB,
                        "web.gif");
index 69fc04ed2b324d6ad69b5d93f8589af99796bff6..8d91b6f60ead116d34d79c1b52447a7f2d0fe7d8 100644 (file)
@@ -38,11 +38,8 @@ public class NewAmplificationWizard  extends AbstractNewEntityWizard<Amplificati
     /** {@inheritDoc} */
     @Override
     protected void saveEntity() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            CdmStore.getService(IAmplificationService.class).merge(getEntity(), true);
-        } else {
-            CdmStore.getService(IAmplificationService.class).save(getEntity());
-        }
+        CdmStore.getService(IAmplificationService.class).merge(getEntity(), true);
+        
     }
 
     /** {@inheritDoc} */
index 4586b9275e2329e4580b97a9361e51ec122c32d3..b9d99c6d6fd517d66a0d106cd38d4e1bd800691d 100644 (file)
@@ -50,13 +50,10 @@ public class NewClassificationWizard extends AbstractNewEntityWizard<Classificat
        protected void saveEntity() {
                //CdmStore.getService(IClassificationService.class).saveOrUpdate(getEntity());
            Classification classification = getEntity();
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IClassificationService.class).merge(getEntity(), true);
-               CdmApplicationState.getCurrentDataChangeService()
+          CdmStore.getService(IClassificationService.class).merge(getEntity(), true);
+          CdmApplicationState.getCurrentDataChangeService()
                .fireChangeEvent(new CdmChangeEvent(Action.Create, classification, NewTaxonNodeWizard.class), true);
-           } else {
-               CdmStore.getService(IClassificationService.class).save(getEntity());
-           }
+          
 
        }
 
index 8efc02f8cfa1f4db1f0fad5c2ea5e4b80353e2b3..e3da3529e402ecb114a2e877beb07ae1545f7bc4 100644 (file)
@@ -36,11 +36,8 @@ public class NewCollectionWizard extends AbstractNewEntityWizard<Collection> {
        /** {@inheritDoc} */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(ICollectionService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(ICollectionService.class).save(getEntity());
-           }
+           CdmStore.getService(ICollectionService.class).merge(getEntity(), true);
+           
        }
 
        /* (non-Javadoc)
index 9f382d431c04d2f2d14db62e6f4df8eb1c237209..664a54c330b7754afcc4d61e92658dd93a321926 100644 (file)
@@ -93,11 +93,8 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOr
        /** {@inheritDoc} */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IOccurrenceService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IOccurrenceService.class).save(getEntity());
-           }
+           setEntity(CdmStore.getService(IOccurrenceService.class).merge(getEntity()));
+           
        }
 
 
index 59086434ccdf25bb50bd22367971a78dfbb995f9..90f9ee0df8670fcf475d4cd2bd07ed4be4ab98ff 100644 (file)
@@ -38,11 +38,8 @@ public class NewFieldUnitWizard extends AbstractNewEntityWizard<FieldUnit> {
        /** {@inheritDoc} */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IOccurrenceService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IOccurrenceService.class).save(getEntity());
-           }
+           CdmStore.getService(IOccurrenceService.class).merge(getEntity(), true);
+           
        }
 
        @Override
index c3342795473dbd318516f80f6dea016b12186660..1a51c72c75a1dbc8f3b6a0f2ae23fad642b15d1a 100644 (file)
@@ -38,11 +38,8 @@ public class NewGrantedAuthorityWizard extends AbstractNewEntityWizard<GrantedAu
         */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IGrantedAuthorityService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IGrantedAuthorityService.class).save(getEntity());
-           }
+           CdmStore.getService(IGrantedAuthorityService.class).merge(getEntity(), true);
+          
        }
 
        /* (non-Javadoc)
index 6f6b52236b12ff50c4d513070ad4cd05b43318a6..51bd2f9731e85582742285321c0bc54f93ad54b3 100644 (file)
@@ -38,11 +38,8 @@ public class NewGroupWizard extends AbstractNewEntityWizard<Group> {
         */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IGroupService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IGroupService.class).save(getEntity());
-           }
+           CdmStore.getService(IGroupService.class).merge(getEntity(), true);
+          
        }
 
        /* (non-Javadoc)
index 6ac2d44407d5d86204df615c1bf8493c72aef7f4..a03cafa04279642add2887a416e0400385536e74 100644 (file)
@@ -35,11 +35,7 @@ public class NewInstitutionWizard extends AbstractNewEntityWizard<Institution> {
         */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IAgentService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IAgentService.class).save(getEntity());
-           }
+           CdmStore.getService(IAgentService.class).merge(getEntity(), true);
        }
 
        /* (non-Javadoc)
index cfdd27d18fb41f4559b99ca07567dcf9baecd50e..8427ac1d00ae4920199f1caaa4bddd029c26288a 100644 (file)
@@ -49,11 +49,7 @@ public class NewNonViralNameWizard extends AbstractNewEntityWizard<NonViralName>
        /** {@inheritDoc} */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(INameService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(INameService.class).save(getEntity());
-           }
+          CdmStore.getService(INameService.class).merge(getEntity(), true);
        }
 
        @Override
index ab5f7038d644a9df499ff241b833b0d777147968..ad7156859ac3cd1e138daa90a4e00fc1d9832545 100644 (file)
@@ -39,11 +39,7 @@ public class NewPersonWizard extends AbstractNewEntityWizard<Person> {
        /** {@inheritDoc} */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IAgentService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IAgentService.class).save(getEntity());
-           }
+           CdmStore.getService(IAgentService.class).merge(getEntity(), true);
        }
 
        @Override
index daade68014f9bb41c4229a9533f89d58c70cf284..aaa3fe3ab3d3897821d338c029aa7a91e10fb6d6 100644 (file)
@@ -31,11 +31,7 @@ public class NewPolytomousKeyWizard extends AbstractNewEntityWizard<PolytomousKe
        @Override
        protected void saveEntity() {
            if(!polytomousKeyPage.getPolytomousKeyName().equals("")) {
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                   CdmStore.getService(IPolytomousKeyService.class).merge(getEntity(), true);
-               } else {
-                   CdmStore.getService(IPolytomousKeyService.class).save(getEntity());
-               }
+               CdmStore.getService(IPolytomousKeyService.class).merge(getEntity(), true);
            }
        }
 
index de52e18d14f64ec84e2786057f8796a511366066..8fc7f08a164686fa57ce92e145236c2f314a083d 100644 (file)
@@ -38,11 +38,8 @@ public class NewPrimerWizard  extends AbstractNewEntityWizard<Primer> {
     /** {@inheritDoc} */
     @Override
     protected void saveEntity() {
-        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-            CdmStore.getService(IPrimerService.class).merge(getEntity(),true);
-        } else {
-            CdmStore.getService(IPrimerService.class).save(getEntity());
-        }
+       CdmStore.getService(IPrimerService.class).merge(getEntity(),true);
+       
     }
 
     /** {@inheritDoc} */
index e8dfc554796b2e2cdc33fdde7584a4a94cecef6c..97a54b97676bf03afdae8179251c46e4755f6b00 100644 (file)
@@ -3,7 +3,9 @@
  */
 package eu.etaxonomy.taxeditor.newWizard;
 
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
@@ -14,6 +16,7 @@ import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
 import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -21,8 +24,10 @@ import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
 
 /**
@@ -64,42 +69,39 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
                else{
                    parentNodeUuid = parent.getUuid();
                }
-                UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon, parent.getReference(), parent.getMicroReference());
-
-                //TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
-
-              /*  if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                    taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
-                } else {
-                    taxonNode = CdmStore.getService(ITaxonNodeService.class).save(taxonNode);
-                }*/
-                if (result.isOk()){
-                       generatedTaxonNodeUuid = result.getCdmEntity().getUuid();
-                       TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
-                       taxonNode.getTaxon().setSec(sec);
-                       CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
-                    Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
-                    if (result.getUpdatedObjects().iterator().hasNext()){
-                       TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next();
-                       if(parentNode.getParent() == null) {
-                            affectedObjects.add(taxonNode.getClassification());
-                        }
-                       affectedObjects.add(parentNode);
-                    }
-                    if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                        CdmApplicationState.getCurrentDataChangeService()
-                            .fireChangeEvent(new CdmChangeEvent(Action.Create, affectedObjects, NewTaxonNodeWizard.class), true);
-                    }
-                }else{
-                    if (!result.isOk()){
-                        if (!result.getExceptions().isEmpty()){
-                            MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
-                        }else{
-                            MessagingUtils.warn(getClass(), "Taxon could not be created");
-                        }
-                    }
-                }
-            }catch(IllegalArgumentException e){
+               UpdateResult result;
+               
+               if (taxon.getId() == 0){
+                       result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon, parent.getReference(), parent.getMicroReference());
+               }else{
+                       result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon.getUuid(), parent.getReference(), parent.getMicroReference());
+               }
+               if (result.isOk()){
+                       generatedTaxonNodeUuid = result.getCdmEntity().getUuid();
+                       TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
+                       taxonNode.getTaxon().setSec(sec);
+                       CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
+                        Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
+                        if (result.getUpdatedObjects().iterator().hasNext()){
+                               TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next();
+                               if(parentNode.getParent() == null) {
+                                affectedObjects.add(taxonNode.getClassification());
+                            }
+                               affectedObjects.add(parentNode);
+                        }
+                        CdmApplicationState.getCurrentDataChangeService()
+                                .fireChangeEvent(new CdmChangeEvent(Action.Create, affectedObjects, NewTaxonNodeWizard.class), true);
+                        
+                    }else{
+                        if (!result.isOk()){
+                            if (!result.getExceptions().isEmpty()){
+                                MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
+                            }else{
+                                MessagingUtils.warn(getClass(), "Taxon could not be created");
+                            }
+                        }
+                    }
+          }catch(IllegalArgumentException e){
                 MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage());
             }
         }
@@ -116,7 +118,10 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
                     return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid());
                 }
                 else if(treeNode instanceof TaxonNode){
-                    return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
+                       
+                       TaxonNode node =  CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid());
+                       Taxon taxon = (Taxon) CdmStore.getService(ITaxonService.class).load(node.getTaxon().getUuid());
+                    return node;
                 }
             }
         }
index 1d6e0ae74caef1110bd1c98da2027252b84ba0d1..a6b3afa6bad670277abd80e78899b2b4dedca894 100644 (file)
@@ -50,11 +50,8 @@ public class NewTeamWizard extends AbstractNewEntityWizard<Team> {
        /** {@inheritDoc} */
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IAgentService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IAgentService.class).save(getEntity());
-           }
+           CdmStore.getService(IAgentService.class).merge(getEntity(), true);
+           
        }
 
        @Override
index d14363c33c899f83f9c2fcf07c8c9faeee52b8cc..631872794c034483e46c5e372d320dfbe4c4cecb 100644 (file)
@@ -24,11 +24,8 @@ public class NewUserWizard extends AbstractNewEntityWizard<User> {
 
        @Override
        protected void saveEntity() {
-           if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               CdmStore.getService(IUserService.class).merge(getEntity(), true);
-           } else {
-               CdmStore.getService(IUserService.class).save(getEntity());
-           }
+           CdmStore.getService(IUserService.class).merge(getEntity(), true);
+           
        }
 
        @Override
index fd3b21782651b73a7abb12e5aa8af18fa1e0a94a..b52eee0aa9394a5a2e01e156e2cb2efab1431883 100644 (file)
@@ -8,15 +8,25 @@
  */
 package eu.etaxonomy.taxeditor.preference;
 
+import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.jface.preference.FieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.jface.preference.RadioGroupFieldEditor;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.IPreferenceService;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
 /**
@@ -73,6 +83,23 @@ public class NomenclaturalCodePreferences extends FieldEditorPreferencePage
                setPreferenceStore(TaxeditorStorePlugin.getDefault()
                                .getPreferenceStore());
                setDescription("Choose which nomenclatural code you would like to use for scientific names unless otherwise specified.");
+               PreferencesUtil.setPreferredNomenclaturalCode(null);
        }
+       
+       @Override
+        public boolean performOk() {
+               
+               boolean result = super.performOk();
+               if (result){
+                       String value = getPreferenceStore().getString(IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY);
+                       CdmPreference pref = CdmPreference.NewDatabaseInstance( PreferencePredicate.NomenclaturalCode, value);
+                       ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
+                       IPreferenceService service = controller.getPreferenceService();
+                       service.set(pref);
+               }
+        return result;
+    }
+       
+       
 
 }
index cf3a9d8a3665f2f1bf18810cc0a0c1d8ca346f3d..00bbfff9643a3ed14a5f8ae878f4de1f5581c96e 100644 (file)
@@ -34,8 +34,10 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
 
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
+import eu.etaxonomy.cdm.api.service.IPreferenceService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;
 import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
@@ -48,6 +50,10 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
@@ -104,10 +110,33 @@ public class PreferencesUtil implements IPreferenceKeys {
         */
        public static void setPreferredNomenclaturalCode(
                        NomenclaturalCode preferredCode) {
+               ICdmApplicationConfiguration controller;
+               controller = CdmStore.getCurrentApplicationConfiguration();
+               PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
+               CdmPreference preference = null;
+               if (preferredCode == null){
+                       preference = controller.getPreferenceService().find(key);
+                       if (preference == null){
+                               return;
+                       } else{
+                               int index = StringUtils.lastIndexOf(preference.getValue(), ".");
+                               UUID uuid = UUID.fromString(preference.getValue().substring(index +1, preference.getValue().length()));
+                               preferredCode = NomenclaturalCode.getByUuid(uuid);
+                       }
+               } else{
+                       preference = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, preferredCode.getKey());
+                       controller.getPreferenceService().set(preference);
+               }
+                
+           
                getPreferenceStore().setValue(PREFERRED_NOMENCLATURAL_CODE_KEY,
-                               getPreferenceKey(preferredCode));
+                               getPreferenceKey(preferredCode));
        }
 
+       public static NomenclaturalCode getPreferredNomenclaturalCode(){
+               return getPreferredNomenclaturalCode(false);
+       }
+       
        /**
         * <p>
         * getPreferredNomenclaturalCode
@@ -115,11 +144,30 @@ public class PreferencesUtil implements IPreferenceKeys {
         *
         * @return a {@link eu.etaxonomy.cdm.model.name.NomenclaturalCode} object.
         */
-       public static NomenclaturalCode getPreferredNomenclaturalCode() {
-
-               for (NomenclaturalCode code : NomenclaturalCodeHelper.getAllCodes()) {
-                       String preferredCode = getPreferenceStore().getString(
+       public static NomenclaturalCode getPreferredNomenclaturalCode(boolean preConnected) {
+               ICdmApplicationConfiguration controller;
+               CdmPreference pref = null;
+               if (!preConnected){
+                       try{
+                               controller = CdmStore.getCurrentApplicationConfiguration();
+                               PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
+                           pref = controller.getPreferenceService().find(key);
+                       }catch(Exception e){
+                               e.printStackTrace();
+                       }
+               }
+               
+           String preferredCode;
+           if(pref == null){
+               preferredCode = getPreferenceStore().getString(
                                        PREFERRED_NOMENCLATURAL_CODE_KEY);
+           }else{
+               preferredCode = pref.getValue();
+           }
+           
+               for (NomenclaturalCode code : NomenclaturalCodeHelper.getAllCodes()) {
+//                     String preferredCode = getPreferenceStore().getString(
+//                                     PREFERRED_NOMENCLATURAL_CODE_KEY);
                        if (getPreferenceKey(code).equals(preferredCode)) {
                                return code;
                        }
@@ -411,7 +459,7 @@ public class PreferencesUtil implements IPreferenceKeys {
                // First time Editor is opened, no nomenclatural code has been set
 
 
-               if (PreferencesUtil.getPreferredNomenclaturalCode() == null) {
+               if (PreferencesUtil.getPreferredNomenclaturalCode(true) == null) {
                        PreferencesUtil.setPreferredNomenclaturalCode(NomenclaturalCode.ICNAFP);
                        /*
 
index 32eebc47550c176b3b959da647daa1ef99cb61d8..10ac9e270fe8f0c21f92ae2f32f3a8eb2d314d30 100644 (file)
@@ -79,7 +79,7 @@ public class AvailableDistributionPage extends WizardPage implements ICdmEntityS
         IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
         String checkedValues = preferenceStore.getString(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS);
         String grayedValues = preferenceStore.getString(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS_GRAYED);
-        setTitle("Select areas for ChecklistEditor");
+        setTitle("Select areas for Distribution Editor");
         setDescription("In order to be able to modify and see the distribution status of taxa,\n"
                 + "you have to select the areas which you like to see.");
         Composite composite = new Composite(parent, SWT.NULL);
index e5cad6866ca04b6a4b26a59a166fb1a31ac28cd7..2ed42b85b4a8abb4419df3ffa335da12fc48b57c 100644 (file)
@@ -265,9 +265,8 @@ public class CdmStore {
     static void setInstance(ICdmApplicationConfiguration applicationController,
             ICdmSource cdmSource) {
         instance = new CdmStore(applicationController, cdmSource);
-        if(getCurrentSessionManager().isRemoting()) {
-            CdmApplicationState.setCdmServiceCacher(new CdmServiceCacher());
-        }
+        CdmApplicationState.setCdmServiceCacher(new CdmServiceCacher());
+        
     }
 
     private CdmStore(ICdmApplicationConfiguration applicationController,
index e4dab75eb03d872b5ea8c8efe57cb9b3bf3c3fb5..91b01474850d455960760baab9e1008b16f49c9a 100644 (file)
@@ -18,6 +18,7 @@ import java.util.UUID;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Display;
 
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.IGroupService;
 import eu.etaxonomy.cdm.api.service.IMediaService;
@@ -43,6 +44,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.Messages;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
@@ -55,14 +57,16 @@ public class SearchManager {
 
        public static final List NO_RESULTS = Arrays.asList(new Object[]{});
 
-       public static final String WILDCARD = "*";
+       public static final String WILDCARD = "*"; //$NON-NLS-1$
 
        public static int NO_COUNT = -1;
 
+
        // TODO make this configurable via preferences
        private static final int MAX_RESULTS_BEFORE_WARNING = 500;
 
-       public List<TaxonNameBase> findNames(IIdentifiableEntityServiceConfigurator configurator){
+       public List<TaxonNameBase> findNames(IIdentifiableEntityServiceConfigurator configurator, ConversationHolder conversation){
+
                if(checkLargeResult(CdmStore.getService(INameService.class).countByTitle(configurator))){
                        List<TaxonNameBase> records = CdmStore.getService(INameService.class).findByTitle(configurator).getRecords();
                        addUuidSearchResults(records, configurator, INameService.class);
@@ -121,7 +125,7 @@ public class SearchManager {
         String titleSearchString = configurator.getTitleSearchString();
                try {
                    UUID uuid = UUID.fromString(titleSearchString);
-                   T foundRecord = CdmStore.getService(service).find(uuid);
+                   T foundRecord = CdmStore.getService(service).load(uuid, configurator.getPropertyPaths());
                    if(foundRecord!=null){
                        records.add(foundRecord);
                    }
@@ -163,25 +167,25 @@ public class SearchManager {
        public List<SpecimenOrObservationBase> findOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator, boolean showFieldUnits){
            List<SpecimenOrObservationBase> records = new ArrayList<SpecimenOrObservationBase>();
                final List<String> BASE_OCCURRENCE_INIT_STRATEGY = Arrays.asList(new String[] {
-                       "collection",
-                       "descriptions",
-                       "identifiers",
-                       "derivationEvents.originals",
-                       "derivedFrom.originals",
-                       "gatheringEvent.country.representations",
-                       "gatheringEvent.collector",
-                       "gatheringEvent.locality",
-                       "descriptions.descriptionElements",
-                       "kindOfUnit",
-                       "amplificationResults",
-                       "sequences.singleReadAlignments",
-                       "mediaSpecimen"
+                       "collection", //$NON-NLS-1$
+                       "descriptions", //$NON-NLS-1$
+                       "identifiers", //$NON-NLS-1$
+                       "derivationEvents.originals", //$NON-NLS-1$
+                       "derivedFrom.originals", //$NON-NLS-1$
+                       "gatheringEvent.country.representations", //$NON-NLS-1$
+                       "gatheringEvent.collector", //$NON-NLS-1$
+                       "gatheringEvent.locality", //$NON-NLS-1$
+                       "descriptions.descriptionElements", //$NON-NLS-1$
+                       "kindOfUnit", //$NON-NLS-1$
+                       "amplificationResults", //$NON-NLS-1$
+                       "sequences.singleReadAlignments", //$NON-NLS-1$
+                       "mediaSpecimen" //$NON-NLS-1$
                });
 
                List<String> occurrencePropertyPaths = new ArrayList<String>();
                occurrencePropertyPaths.addAll(BASE_OCCURRENCE_INIT_STRATEGY);
                for(String propertyPath:BASE_OCCURRENCE_INIT_STRATEGY) {
-                   occurrencePropertyPaths.add("derivationEvents.derivatives." + propertyPath);
+                   occurrencePropertyPaths.add("derivationEvents.derivatives." + propertyPath); //$NON-NLS-1$
                }
                configurator.setPropertyPaths(occurrencePropertyPaths);
 
@@ -216,16 +220,15 @@ public class SearchManager {
 
        private boolean checkLargeResult(int count, int maxBeforWarning) {
                if(count > maxBeforWarning){
-                       return MessageDialog.openConfirm(Display.getDefault().getActiveShell(), "Large result expected",
-                                       String.format("The current search will return %s objects. This will " +
-                                                       "take a long time and/or might render the editor unusable. Please consider refining your search.", count));
+                       return MessageDialog.openConfirm(Display.getDefault().getActiveShell(), Messages.SearchManager_LARGE_RESULT_EXPECTED,
+                                       String.format(Messages.SearchManager_LONG_SEARCH_WARNING, count));
                }else{
                        return true;
                }
        }
 
        private String sqlizeTitleSearchString(IIdentifiableEntityServiceConfigurator configurator){
-               return configurator.getTitleSearchString().replace(WILDCARD, "%");
+               return configurator.getTitleSearchString().replace(WILDCARD, "%"); //$NON-NLS-1$
        }
 
        public List findTaxa(IIdentifiableEntityServiceConfigurator configurator) {
index 4e78d2c4e213b95f4e0be26ff43a66acbc6bd148..43bb78dcade61171a4158b6e0f4a0773c1c42905 100644 (file)
@@ -14,24 +14,30 @@ import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
+import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
+import eu.etaxonomy.taxeditor.webapp.ICDMServerError;
 
 /**
  * @author pplitzner
  * @date Mar 30, 2016
  *
  */
-public abstract class AbstractEntityCollectionElementWizardPage extends WizardPage implements
+public abstract class AbstractEntityCollectionElementWizardPage extends WizardPage implements 
 IPropertyChangeListener {
 
     protected CdmFormFactory formFactory;
+    
 
     protected RootElement rootElement;
 
     protected AbstractEntityCollectionElementWizardPage(String pageName) {
         super(pageName);
+        
     }
 
     /**
@@ -59,6 +65,7 @@ IPropertyChangeListener {
     public void dispose() {
         rootElement.removeElements();
         formFactory.removePropertyChangeListener(this);
+       
         super.dispose();
     }
 
index 38ae7193bb78ca5a632f2c114595fbd2d8e132e2..c0486d07d83b5a174067655aff90eb1f606781a3 100644 (file)
@@ -69,11 +69,10 @@ public class AuthenticatedUserBar extends WorkbenchWindowControlContribution imp
         if(authenticatedUser == null) {
             text = "Not logged in              " ;
         } else {
-            if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                CdmRemoteSource source = (CdmRemoteSource) CdmStore.getActiveCdmSource();
-                String loginInfo = authenticatedUser.getUsername() + "@" + source.getName() + ":" + source.getContextPath();
-                PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setText(ApplicationUtil.getTitle() + " " + loginInfo);
-            }
+            CdmRemoteSource source = (CdmRemoteSource) CdmStore.getActiveCdmSource();
+            String loginInfo = authenticatedUser.getUsername() + "@" + source.getName() + ":" + source.getContextPath();
+            PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setText(ApplicationUtil.getTitle() + " " + loginInfo);
+            
             text = "Logged in as: " + authenticatedUser.getUsername() + "         ";
         }
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboElement.java
new file mode 100644 (file)
index 0000000..c4623cc
--- /dev/null
@@ -0,0 +1,130 @@
+// $Id$
+/**
+* Copyright (C) 2016 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.combo;
+
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+
+/**
+ * @author pplitzner
+ * @date Aug 11, 2016
+ *
+ */
+public abstract class AbstractComboElement<T> extends
+AbstractCdmFormElement implements SelectionListener,
+IEnableableFormElement, ISelectable,
+DisposeListener {
+
+    protected static final int DEFAULT_VISIBLE_ITEMS = 10;
+
+    protected T selection;
+
+    protected Label label;
+
+    protected final Combo combo;
+
+
+    public AbstractComboElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+
+        label = formFactory.createLabel(getLayoutComposite(), "");
+        addControl(label);
+
+        // create combo
+        ComboViewer viewer = new ComboViewer(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY );
+        combo = viewer.getCombo();
+        addControl(combo);
+        TableWrapData fill_HORIZONTALLY = LayoutConstants.FILL_HORIZONTALLY();
+        combo.setLayoutData(fill_HORIZONTALLY);
+        fill_HORIZONTALLY.maxWidth = 50;
+        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setBackground(Color color) {
+        if (label != null) {
+            label.setBackground(color);
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIrrelevant(boolean irrelevant) {
+        String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
+                : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+        Color color = AbstractUtility.getColor(colorId);
+        combo.setBackground(color);
+    }
+
+    public void setVisibleItemCount(int count){
+        combo.setVisibleItemCount(count);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+
+    public T getSelection() {
+        return selection;
+    }
+
+    public void addSelectionListener(SelectionListener listener) {
+        combo.addSelectionListener(listener);
+    }
+
+    public void removeSelectionListener(SelectionListener listener) {
+        combo.removeSelectionListener(listener);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void widgetDisposed(DisposeEvent e) {
+        PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
+    }
+
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return combo.isEnabled();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setEnabled(boolean enabled) {
+        combo.setEnabled(enabled);
+    }
+
+    public abstract void setSelection(T selection);
+}
index 363629cc281822a8bd272174320d508b49d3b8ac..cf746ebe184699f7bc61c580ebb3f97d170ff5e3 100644 (file)
@@ -17,12 +17,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.model.common.IEnumTerm;
 import eu.etaxonomy.cdm.model.common.OriginalSourceType;
@@ -30,35 +25,24 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.preference.Resources;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 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.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * <p>
- * Abstract AbstractEnumComboElement class.
- * </p>
- *
  * @author n.hoffmann
  * @created Mar 16, 2010
  * @version 1.0
  */
 public class EnumComboElement<T extends IEnumTerm<T>> extends
-               AbstractCdmFormElement implements SelectionListener,
-               IEnableableFormElement, ISelectable {
+               AbstractComboElement<T>  {
 
        //TODO RL
        public void setVisible(boolean b){
                combo.setVisible(b);
        }
 
-       
+
        private static CdmEnumDataHolder[] cdmEnumDataHolders = {
                new CdmEnumDataHolder<NomenclaturalCode>(){
 
@@ -135,45 +119,15 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
 
        };
 
-       private static final int DEFAULT_VISIBLE_ITEMS = 10;
-
-       protected T selection;
-
        protected List<T> elementTypeList = new ArrayList<T>();
 
-       private final Label label;
-       protected Combo combo;
-
        private final Class<T> enumType;
 
-       /**
-        * <p>
-        * Constructor for AbstractEnumComboElement.
-        * </p>
-        *
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param <T>
-        *            a T object.
-        */
        public EnumComboElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, Class<T> enumType, int style) {
                super(formFactory, parentElement);
                this.enumType = enumType;
-               label = formFactory.createLabel(getLayoutComposite(), getDefaultLabelString());
-               addControl(label);
-
-               // create combo
-               combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
-               addControl(combo);
-               combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
-               setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
+               label.setText(getDefaultLabelString());
 
                populateTypes();
 
@@ -193,11 +147,6 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
                return "No Label";
        }
 
-       /**
-        * <p>
-        * populateTypes
-        * </p>
-        */
     private void populateTypes(){
         Collection<T> elementsForClass = getElementsForClass(enumType);
         // special hierarchical order for specimens
@@ -217,81 +166,11 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
         }
        }
 
-       /**
-        * <p>
-        * Setter for the field <code>selection</code>.
-        * </p>
-        *
-        * @param selection
-        *            the selection to set
-        */
-       public void setSelection(T selection) {
+       @Override
+    public void setSelection(T selection) {
                this.selection = selection;
                combo.select(elementTypeList.indexOf(selection));
        }
-
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               combo.addSelectionListener(listener);
-       }
-
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               combo.removeSelectionListener(listener);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       /**
-        * <p>
-        * Getter for the field <code>selection</code>.
-        * </p>
-        *
-        * @return the selection
-        */
-       public T getSelection() {
-               return selection;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setEnabled(boolean enabled) {
-               combo.setEnabled(enabled);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
-       @Override
-       public boolean isEnabled() {
-           return combo.isEnabled();
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-        * .events.SelectionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void widgetSelected(SelectionEvent e) {
@@ -299,31 +178,6 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void setIrrelevant(boolean irrelevant) {
-               String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-                               : Resources.COLOR_COMPOSITE_BACKGROUND;
-
-               Color color = StoreUtil.getColor(colorId);
-               combo.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               label.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-       }
-
-       public void setVisibleItemCount(int visibleItems){
-               combo.setVisibleItemCount(visibleItems);
-       }
-
        private Collection<T> getElementsForClass(Class<T> clazz){
                CdmEnumDataHolder<T> dataHolder = getCdmEnumDataHolderForClass(clazz);
                if (dataHolder != null) {
index 33b37cb0bf65be9974bf1035eabef78dd49c82a4..65ba7e0192e100e2418a08c65901f691239e740c 100644 (file)
@@ -11,13 +11,7 @@ import java.util.List;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
@@ -26,42 +20,24 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.TermManager;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 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.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * <p>
- * Abstract AbstractTermComboElement class.
- * </p>
- *
  * @author n.hoffmann
  * @created Nov 5, 2009
  * @version 1.0
  * @param <T>
  */
 public class TermComboElement<T extends DefinedTermBase>
-               extends AbstractCdmFormElement implements SelectionListener,
-               DisposeListener, IEnableableFormElement, ISelectable {
-
-       private static final int DEFAULT_VISIBLE_ITEMS = 10;
-
-       private T selection;
+               extends AbstractComboElement<T> {
 
        private T emptyElement;
        private static String EMPTY_ELEMENT_LABEL = "";
 
-       protected Label label;
-       private final Combo combo;
-
        private ArrayList<T> terms;
 
        private Comparator<T> termComparator;
@@ -103,16 +79,9 @@ public class TermComboElement<T extends DefinedTermBase>
         this.addEmptyElement = addEmptyElement;
 
         if (labelString != null) {
-            label = formFactory.createLabel(getLayoutComposite(), labelString);
-            addControl(label);
+            label.setText(labelString);
         }
 
-        // create combo
-        combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY );//FIXME: removed this parameter seems break windows version: | style
-        addControl(combo);
-        combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
-        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
-
         if(termType!=null){
             //TODO try to remove generic T and avoid classes to be used
             populateTerms((List<T>) getTermManager().getPreferredTerms(termType));
@@ -133,17 +102,6 @@ public class TermComboElement<T extends DefinedTermBase>
         }
        }
 
-       /**
-        * <p>
-        * Getter for the field <code>selection</code>.
-        * </p>
-        *
-        * @return a T object.
-        */
-       public T getSelection() {
-               return selection;
-       }
-
        /**
         * <p>Sets the selection of the combo to the given T object.</p>
         * <p>Passing <code>null</code> to this method will set the selection to
@@ -152,7 +110,8 @@ public class TermComboElement<T extends DefinedTermBase>
         * @param selection
         *            a T object or <code>null</code> to clear the selection
         */
-       public void setSelection(T selection) {
+       @Override
+    public void setSelection(T selection) {
                this.selection = selection;
 
                Listener[] listeners = combo.getListeners(SWT.Selection);
@@ -237,31 +196,6 @@ public class TermComboElement<T extends DefinedTermBase>
                combo.select(index);
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
-        */
-       /** {@inheritDoc} */
-       @Override
-    public void setEnabled(boolean enabled) {
-               combo.setEnabled(enabled);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
-       @Override
-       public boolean isEnabled() {
-           return combo.isEnabled();
-       }
-
-       /**
-        * <p>
-        * preferredTerms
-        * </p>
-        *
-        * @return a {@link java.util.List} object.
-        */
        protected List<T> getPreferredTerms(){
            List<T> preferredTerms = new ArrayList<T>();
                if (customPreferredTerms != null){
@@ -320,37 +254,6 @@ public class TermComboElement<T extends DefinedTermBase>
                populateTerms(preferredTerms);
        }
 
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               combo.addSelectionListener(listener);
-       }
-
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               combo.removeSelectionListener(listener);
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-        * .events.SelectionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void widgetSelected(SelectionEvent e) {
@@ -358,12 +261,6 @@ public class TermComboElement<T extends DefinedTermBase>
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see java.beans.PropertyChangeListener#propertyChange(java.beans.
-        * PropertyChangeEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void propertyChange(PropertyChangeEvent event) {
@@ -375,65 +272,14 @@ public class TermComboElement<T extends DefinedTermBase>
                }
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDisposed(DisposeEvent e) {
-               PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
-       }
-
-       // not used
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setIrrelevant(boolean irrelevant) {
-               String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-                               : Resources.COLOR_COMPOSITE_BACKGROUND;
-
-               Color color = StoreUtil.getColor(colorId);
-               combo.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               if (label != null) {
-            label.setBackground(color);
-        }
-       }
-
-       /**
-        *
-        */
        protected TermManager getTermManager() {
                return CdmStore.getTermManager();
        }
 
-       /**
-        *
-        * @return
-        */
        public int getVisibleItemCount(){
                return combo.getVisibleItemCount();
        }
 
-       /**
-        *
-        * @param count
-        */
-       public void setVisibleItemCount(int count){
-               combo.setVisibleItemCount(count);
-       }
-
        /**
         * <p>A {@link List} of term objects may be passed to this combo box. In this case, the default behaviour
         * of displaying the preferred terms for the T type will be overridden and the combo will only display the
index bc920ea69b6501b01c33444eb8b5e4d1ea8e4401..7ffafdee96f9deea7d0b0dd52c61d301b83716ca 100644 (file)
@@ -10,13 +10,7 @@ import java.util.List;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
@@ -25,42 +19,24 @@ import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.TermManager;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 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.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * <p>
- * Abstract AbstractTermComboElement class.
- * </p>
- *
  * @author n.hoffmann
  * @created Nov 5, 2009
  * @version 1.0
  * @param <VOC>
  */
 public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC extends TermVocabulary<TERM>>
-               extends AbstractCdmFormElement implements SelectionListener,
-               DisposeListener, IEnableableFormElement, ISelectable {
-
-       private static final int DEFAULT_VISIBLE_ITEMS = 10;
-
-       private VOC selection;
+               extends AbstractComboElement<VOC> {
 
        private VOC emptyElement;
        private static String EMPTY_ELEMENT_LABEL = "";
 
-       protected Label label;
-       private final Combo combo;
-
        private ArrayList<VOC> terms;
 
        private Comparator<VOC> vocComparator;
@@ -74,17 +50,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
 
         this.termType = termType;
 
-        if (labelString != null) {
-            label = formFactory.createLabel(getLayoutComposite(), labelString);
-            addControl(label);
-        }
-
-        // create combo
-        combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY );//FIXME: removed this parameter seems break windows version: | style
-        addControl(combo);
-        combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
-        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
-
         populateTerms(getVocabularies());
 
         combo.addSelectionListener(this);
@@ -96,17 +61,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
         }
        }
 
-       /**
-        * <p>
-        * Getter for the field <code>selection</code>.
-        * </p>
-        *
-        * @return a T object.
-        */
-       public VOC getSelection() {
-               return selection;
-       }
-
        /**
         * <p>Sets the selection of the combo to the given T object.</p>
         * <p>Passing <code>null</code> to this method will set the selection to
@@ -115,7 +69,8 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
         * @param selection
         *            a T object or <code>null</code> to clear the selection
         */
-       public void setSelection(VOC selection) {
+       @Override
+    public void setSelection(VOC selection) {
                this.selection = selection;
 
                this.selection = selection;
@@ -200,31 +155,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                combo.select(index);
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
-        */
-       /** {@inheritDoc} */
-       @Override
-    public void setEnabled(boolean enabled) {
-               combo.setEnabled(enabled);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
-       @Override
-       public boolean isEnabled() {
-           return combo.isEnabled();
-       }
-
-       /**
-        * <p>
-        * preferredTerms
-        * </p>
-        *
-        * @return a {@link java.util.List} object.
-        */
        protected List<VOC> getVocabularies(){
            List<TermVocabulary<TERM>> list = CdmStore.getService(IVocabularyService.class).<TERM>findByTermType(termType);
                return (List<VOC>) list;
@@ -246,11 +176,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                }
        }
 
-       /**
-        *
-        *
-        * @param term
-        */
        private void createTermNotInPreferredTerms(VOC term) {
                List<VOC> preferredTerms = getVocabularies();
 
@@ -259,37 +184,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                populateTerms(preferredTerms);
        }
 
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               combo.addSelectionListener(listener);
-       }
-
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               combo.removeSelectionListener(listener);
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-        * .events.SelectionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void widgetSelected(SelectionEvent e) {
@@ -297,12 +191,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see java.beans.PropertyChangeListener#propertyChange(java.beans.
-        * PropertyChangeEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void propertyChange(PropertyChangeEvent event) {
@@ -314,65 +202,14 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                }
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDisposed(DisposeEvent e) {
-               PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
-       }
-
-       // not used
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setIrrelevant(boolean irrelevant) {
-               String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-                               : Resources.COLOR_COMPOSITE_BACKGROUND;
-
-               Color color = StoreUtil.getColor(colorId);
-               combo.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               if (label != null) {
-            label.setBackground(color);
-        }
-       }
-
-       /**
-        *
-        */
        protected TermManager getTermManager() {
                return CdmStore.getTermManager();
        }
 
-       /**
-        *
-        * @return
-        */
        public int getVisibleItemCount(){
                return combo.getVisibleItemCount();
        }
 
-       /**
-        *
-        * @param count
-        */
-       public void setVisibleItemCount(int count){
-               combo.setVisibleItemCount(count);
-       }
-
     public void removeEmptyElement(){
         terms.remove(emptyElement);
         combo.remove(EMPTY_ELEMENT_LABEL);
index 74d54d5a1812b51de0135d85217ef0ec2b50782c..ff0f874576ebee9ef756cec7f7c8a919afaaf40d 100644 (file)
@@ -358,7 +358,6 @@ public class RemotingLoginDialog extends Dialog implements ICDMServerError {
         btnRememberMe = new Button(loginComposite, SWT.CHECK);
         btnRememberMe.setSelection(true);
         GridData gd_btnRememberMe = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
-        gd_btnRememberMe.widthHint = 107;
         btnRememberMe.setLayoutData(gd_btnRememberMe);
         btnRememberMe.setText(Messages.RemotingLoginDialog_LABEL_REMEMBER_ME);
         new Label(loginComposite, SWT.NONE);
index a3988f6c18e05dee7d0eba260436eb022ce03ae0..93477123e2bdfb02dbbf4551a5289a2cb695749a 100644 (file)
@@ -41,9 +41,6 @@ public class DeleteConfiguratorDialog extends MessageDialog{
         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);
@@ -67,19 +64,12 @@ public class DeleteConfiguratorDialog extends MessageDialog{
         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) {
index 6ad564e441dcef3f597fc05473dcfa59c87f3e76..e274fe48f58069d666ceb66259393e3cce3115ca 100644 (file)
@@ -70,7 +70,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        private final Set<T> transientCdmObjects = new HashSet<T>();
        private final String settings;
        protected final int limitOfInitialElements = 100;
-
+       
        protected T cdmBaseToBeFiltered;
 
 
@@ -99,9 +99,9 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                initModel();
                shell.setCursor(cursor);
                String objectTitle = getTitle(cdmObject);
-               if (objectTitle != null) {
-                       setInitialPattern(objectTitle);
-               }
+//             if (objectTitle != null) {
+//                     setInitialPattern(objectTitle);
+//             }
 
                setListLabelProvider(createListLabelProvider());
                setDetailsLabelProvider(createDetailsLabelProvider());
index 748929b4d7cdbbd5ae18c128c2061fa8b07fef44..6c7b9e294f80d4980cf9b9e5ed49ae4771c8b1dc 100644 (file)
@@ -46,6 +46,8 @@ public class AgentSelectionDialog extends
         *
         */
        protected static final String TEAM = "Team";
+       
+       protected static boolean selectTeamMember;
 
        /**
         * <p>select</p>
@@ -55,9 +57,9 @@ public class AgentSelectionDialog extends
         * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
         * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
         */
-       public static AgentBase select(Shell shell, ConversationHolder conversation, AgentBase entity) {
+       public static AgentBase select(Shell shell, ConversationHolder conversation, AgentBase entity, boolean selectTeamMember) {
                AgentSelectionDialog dialog = new AgentSelectionDialog(shell, conversation,
-                               "Choose Agent", false, AgentSelectionDialog.class.getCanonicalName(), entity);
+                               "Choose Agent", false, AgentSelectionDialog.class.getCanonicalName(), entity, selectTeamMember);
                return getSelectionFromDialog(dialog);
        }
 
@@ -71,8 +73,9 @@ public class AgentSelectionDialog extends
         * @param multi a boolean.
         * @param settings a {@link java.lang.String} object.
         */
-       protected AgentSelectionDialog(Shell shell, ConversationHolder conversation, String title, boolean multi, String settings, AgentBase agent) {
+       protected AgentSelectionDialog(Shell shell, ConversationHolder conversation, String title, boolean multi, String settings, AgentBase agent, boolean selectTeamMember) {
                super(shell, conversation, title, multi, settings, agent);
+               this.selectTeamMember = selectTeamMember;
        }
 
 
@@ -122,6 +125,9 @@ public class AgentSelectionDialog extends
        /** {@inheritDoc} */
        @Override
        protected String getNewWizardLinkText() {
+               if (this.selectTeamMember){
+                       return String.format("Create a new <a>%1s</a>", PERSON);
+               }
                return String.format("Create a new <a>%1s</a> or <a>%2s</a>", TEAM, PERSON);
        }
 
index 1180e7ce0179c8d90f97e3bdbbc30dd04529d19f..b0883e1941179100f579cc0e693d37e6cd902091 100644 (file)
@@ -524,7 +524,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                 public void keyTraversed(TraverseEvent e) {
                     if (e.detail == SWT.TRAVERSE_MNEMONIC && e.doit) {
                         e.detail = SWT.TRAVERSE_NONE;
-                        list.getTable().setFocus();
+                        getList().getTable().setFocus();
                     }
                 }
             });
@@ -612,7 +612,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
          * @since 3.5
          */
         protected void fillContextMenu(IMenuManager menuManager) {
-            List selectedElements= ((StructuredSelection)list.getSelection()).toList();
+            List selectedElements= ((StructuredSelection)getList().getSelection()).toList();
 
             Object item= null;
 
@@ -645,7 +645,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                 }
             });
 
-            final Table table = list.getTable();
+            final Table table = getList().getTable();
             Menu menu= contextMenuManager.createContextMenu(table);
             table.setMenu(menu);
         }
@@ -693,9 +693,9 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
 
             final Label listLabel = createLabels(content);
 
-            list = new TableViewer(content, (multi ? SWT.MULTI : SWT.SINGLE)
-                    | SWT.BORDER | SWT.V_SCROLL | SWT.VIRTUAL);
-            list.getTable().getAccessible().addAccessibleListener(
+            setList(new TableViewer(content, (multi ? SWT.MULTI : SWT.SINGLE)
+                    | SWT.BORDER | SWT.V_SCROLL | SWT.VIRTUAL));
+            getList().getTable().getAccessible().addAccessibleListener(
                     new AccessibleAdapter() {
                         @Override
                         public void getName(AccessibleEvent e) {
@@ -705,14 +705,14 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                             }
                         }
                     });
-            list.setContentProvider(contentProvider);
-            list.setLabelProvider(getItemsListLabelProvider());
-            list.setInput(new Object[0]);
-            list.setItemCount(contentProvider.getNumberOfElements());
+            getList().setContentProvider(contentProvider);
+            getList().setLabelProvider(getItemsListLabelProvider());
+            getList().setInput(new Object[0]);
+            getList().setItemCount(contentProvider.getNumberOfElements());
             gd = new GridData(GridData.FILL_BOTH);
-            applyDialogFont(list.getTable());
-            gd.heightHint= list.getTable().getItemHeight() * 15;
-            list.getTable().setLayoutData(gd);
+            applyDialogFont(getList().getTable());
+            gd.heightHint= getList().getTable().getItemHeight() * 15;
+            getList().getTable().setLayoutData(gd);
 
             createPopupMenu();
 
@@ -727,14 +727,14 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                 @Override
                 public void keyPressed(KeyEvent e) {
                     if (e.keyCode == SWT.ARROW_DOWN) {
-                        if (list.getTable().getItemCount() > 0) {
-                            list.getTable().setFocus();
+                        if (getList().getTable().getItemCount() > 0) {
+                            getList().getTable().setFocus();
                         }
                     }
                 }
             });
 
-            list.addSelectionChangedListener(new ISelectionChangedListener() {
+            getList().addSelectionChangedListener(new ISelectionChangedListener() {
                 @Override
                 public void selectionChanged(SelectionChangedEvent event) {
                     StructuredSelection selection = (StructuredSelection) event
@@ -743,20 +743,20 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                 }
             });
 
-            list.addDoubleClickListener(new IDoubleClickListener() {
+            getList().addDoubleClickListener(new IDoubleClickListener() {
                 @Override
                 public void doubleClick(DoubleClickEvent event) {
                     handleDoubleClick();
                 }
             });
 
-            list.getTable().addKeyListener(new KeyAdapter() {
+            getList().getTable().addKeyListener(new KeyAdapter() {
                 @Override
                 public void keyPressed(KeyEvent e) {
 
                     if (e.keyCode == SWT.DEL) {
 
-                        List selectedElements = ((StructuredSelection) list
+                        List selectedElements = ((StructuredSelection) getList()
                                 .getSelection()).toList();
 
                         Object item = null;
@@ -779,20 +779,20 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
 
                     if (e.keyCode == SWT.ARROW_UP && (e.stateMask & SWT.SHIFT) != 0
                             && (e.stateMask & SWT.CTRL) != 0) {
-                        StructuredSelection selection = (StructuredSelection) list
+                        StructuredSelection selection = (StructuredSelection) getList()
                                 .getSelection();
 
                         if (selection.size() == 1) {
                             Object element = selection.getFirstElement();
-                            if (element.equals(list.getElementAt(0))) {
+                            if (element.equals(getList().getElementAt(0))) {
                                 pattern.setFocus();
                             }
-                            if (list.getElementAt(list.getTable()
+                            if (getList().getElementAt(getList().getTable()
                                     .getSelectionIndex() - 1) instanceof ItemsListSeparator) {
-                                list.getTable().setSelection(
-                                        list.getTable().getSelectionIndex() - 1);
+                                getList().getTable().setSelection(
+                                        getList().getTable().getSelectionIndex() - 1);
                             }
-                            list.getTable().notifyListeners(SWT.Selection,
+                            getList().getTable().notifyListeners(SWT.Selection,
                                     new Event());
 
                         }
@@ -802,12 +802,12 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                             && (e.stateMask & SWT.SHIFT) != 0
                             && (e.stateMask & SWT.CTRL) != 0) {
 
-                        if (list
-                                .getElementAt(list.getTable().getSelectionIndex() + 1) instanceof ItemsListSeparator) {
-                            list.getTable().setSelection(
-                                    list.getTable().getSelectionIndex() + 1);
+                        if (getList()
+                                .getElementAt(getList().getTable().getSelectionIndex() + 1) instanceof ItemsListSeparator) {
+                            getList().getTable().setSelection(
+                                    getList().getTable().getSelectionIndex() + 1);
                         }
-                        list.getTable().notifyListeners(SWT.Selection, new Event());
+                        getList().getTable().notifyListeners(SWT.Selection, new Event());
                     }
 
                 }
@@ -891,9 +891,9 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
             IStatus status = new Status(IStatus.OK, PlatformUI.PLUGIN_ID,
                     IStatus.OK, EMPTY_STRING, null);
 
-            Object[] lastSelection = currentSelection;
+            Object[] lastSelection = getCurrentSelection();
 
-            currentSelection = selection.toArray();
+            setCurrentSelection(selection.toArray());
 
             if (selection.size() == 0) {
                 status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
@@ -901,10 +901,10 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
 
                 if (lastSelection != null
                         && getListSelectionLabelDecorator() != null) {
-                    list.update(lastSelection, null);
+                    getList().update(lastSelection, null);
                 }
 
-                currentSelection = null;
+                setCurrentSelection(null);
 
             } else {
                 status = new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID,
@@ -938,11 +938,11 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
 
                 if (lastSelection != null
                         && getListSelectionLabelDecorator() != null) {
-                    list.update(lastSelection, null);
+                    getList().update(lastSelection, null);
                 }
 
                 if (getListSelectionLabelDecorator() != null) {
-                    list.update(currentSelection, null);
+                    getList().update(getCurrentSelection(), null);
                 }
             }
 
@@ -978,28 +978,28 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
          * Refreshes the dialog - has to be called in UI thread.
          */
         public void refresh() {
-            if (list != null && !list.getTable().isDisposed()) {
+            if (getList() != null && !getList().getTable().isDisposed()) {
 
-                List lastRefreshSelection = ((StructuredSelection) list
+                List lastRefreshSelection = ((StructuredSelection) getList()
                         .getSelection()).toList();
-                list.getTable().deselectAll();
+                getList().getTable().deselectAll();
 
-                list.setItemCount(contentProvider.getNumberOfElements());
-                list.refresh();
+                getList().setItemCount(contentProvider.getNumberOfElements());
+                getList().refresh();
 
-                if (list.getTable().getItemCount() > 0) {
+                if (getList().getTable().getItemCount() > 0) {
                     // preserve previous selection
                     if (refreshWithLastSelection && lastRefreshSelection != null
                             && lastRefreshSelection.size() > 0) {
-                        list.setSelection(new StructuredSelection(
+                        getList().setSelection(new StructuredSelection(
                                 lastRefreshSelection));
                     } else {
                         refreshWithLastSelection = true;
-                        list.getTable().setSelection(0);
-                        list.getTable().notifyListeners(SWT.Selection, new Event());
+                        getList().getTable().setSelection(0);
+                        getList().getTable().notifyListeners(SWT.Selection, new Event());
                     }
                 } else {
-                    list.setSelection(StructuredSelection.EMPTY);
+                    getList().setSelection(StructuredSelection.EMPTY);
                 }
 
             }
@@ -1033,7 +1033,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
          *            available
          */
         public void reloadCache(boolean checkDuplicates, IProgressMonitor monitor) {
-            if (list != null && !list.getTable().isDisposed()
+            if (getList() != null && !getList().getTable().isDisposed()
                     && contentProvider != null) {
                 contentProvider.reloadCache(checkDuplicates, monitor);
             }
@@ -1065,7 +1065,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
         @Override
         protected void computeResult() {
 
-            List selectedElements = ((StructuredSelection) list.getSelection())
+            List selectedElements = ((StructuredSelection) getList().getSelection())
                     .toList();
 
             List objectsToReturn = new ArrayList();
@@ -1151,7 +1151,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
          */
         protected StructuredSelection getSelectedItems() {
 
-            StructuredSelection selection = (StructuredSelection) list
+            StructuredSelection selection = (StructuredSelection) getList()
                     .getSelection();
 
             List selectedItems = selection.toList();
@@ -1594,13 +1594,13 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
              */
             @Override
             public void run() {
-                List selectedElements = ((StructuredSelection) list.getSelection())
+                List selectedElements = ((StructuredSelection) getList().getSelection())
                         .toList();
                 removeSelectedItems(selectedElements);
             }
         }
 
-        private static boolean showColoredLabels() {
+        protected static boolean showColoredLabels() {
             return PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS);
         }
 
@@ -1695,9 +1695,9 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
             }
 
             private boolean isSelected(Object element) {
-                if (element != null && currentSelection != null) {
-                    for (int i = 0; i < currentSelection.length; i++) {
-                        if (element.equals(currentSelection[i])) {
+                if (element != null && getCurrentSelection() != null) {
+                    for (int i = 0; i < getCurrentSelection().length; i++) {
+                        if (element.equals(getCurrentSelection()[i])) {
                             return true;
                         }
                     }
@@ -1762,17 +1762,17 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
             }
 
             private String getSeparatorLabel(String separatorLabel) {
-                Rectangle rect = list.getTable().getBounds();
+                Rectangle rect = getList().getTable().getBounds();
 
-                int borderWidth = list.getTable().computeTrim(0, 0, 0, 0).width;
+                int borderWidth = getList().getTable().computeTrim(0, 0, 0, 0).width;
 
                 int imageWidth = WorkbenchImages.getImage(
                         IWorkbenchGraphicConstants.IMG_OBJ_SEPARATOR).getBounds().width;
 
                 int width = rect.width - borderWidth - imageWidth;
 
-                GC gc = new GC(list.getTable());
-                gc.setFont(list.getTable().getFont());
+                GC gc = new GC(getList().getTable());
+                gc.setFont(getList().getTable().getFont());
 
                 int fSeparatorWidth = gc.getAdvanceWidth('-');
                 int fMessageLength = gc.textExtent(separatorLabel).x;
@@ -1897,7 +1897,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
          * Used in ItemsListContentProvider, separates history and non-history
          * items.
          */
-        private class ItemsListSeparator {
+        protected class ItemsListSeparator {
 
             private final String name;
 
@@ -2987,7 +2987,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
             @Override
             public void updateElement(int index) {
 
-                CdmFilteredItemsSelectionDialog.this.list.replace((lastFilteredItems
+                CdmFilteredItemsSelectionDialog.this.getList().replace((lastFilteredItems
                         .size() > index) ? lastFilteredItems.get(index) : null,
                         index);
 
@@ -3023,7 +3023,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
 
                 // the TableViewer's root (the input) is treated as parent
 
-                lastFilteredItems = Arrays.asList(getFilteredItems(list.getInput(),
+                lastFilteredItems = Arrays.asList(getFilteredItems(getList().getInput(),
                         monitor != null ? new SubProgressMonitor(monitor, 100)
                                 : null));
 
@@ -3117,7 +3117,7 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
                 if (filters != null && filteredElements != null) {
                     for (Iterator iter = filters.iterator(); iter.hasNext();) {
                         ViewerFilter f = (ViewerFilter) iter.next();
-                        filteredElements = f.filter(list, parent, filteredElements);
+                        filteredElements = f.filter(getList(), parent, filteredElements);
                         monitor.worked(ticks);
                     }
                 }
@@ -3423,6 +3423,22 @@ public abstract class CdmFilteredItemsSelectionDialog extends SelectionStatusDia
          */
         abstract protected void initModel();
 
+               public Object[] getCurrentSelection() {
+                       return currentSelection;
+               }
+
+               public void setCurrentSelection(Object[] currentSelection) {
+                       this.currentSelection = currentSelection;
+               }
+
+               public TableViewer getList() {
+                       return list;
+               }
+
+               public void setList(TableViewer list) {
+                       this.list = list;
+               }
+
     }
 
 
index 055fd74cbbe41fc27ae496f6722b1d261df2d5a8..3ce78078176180b8192a39bdfb7406455a8dfd11 100644 (file)
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -62,6 +63,7 @@ public class NamedAreaSelectionDialog extends
                        }else{
                                selectedVocabularies.remove(vocabulary);
                        }
+                       PreferencesUtil.getPreferenceStore().setValue(getPrefKey(vocabulary), isChecked());
                        initModel();
                }
        }
@@ -89,15 +91,20 @@ public class NamedAreaSelectionDialog extends
 
        protected NamedAreaSelectionDialog(Shell shell, ConversationHolder conversation, String title, boolean multi, NamedArea namedArea, UUID... preselectedVocabularyUuids) {
                super(shell, conversation, title, multi, NamedAreaSelectionDialog.class.getCanonicalName(), namedArea);
-               if(preselectedVocabularyUuids.length>0){
-                   preselectedVocabularies = new ArrayList<TermVocabulary>();
-                   for(int i=0;i<preselectedVocabularyUuids.length;i++){
-                       TermVocabulary preselectedVocabulary = CdmStore.getService(IVocabularyService.class).find(preselectedVocabularyUuids[i]);
-                       preselectedVocabularies.add(preselectedVocabulary);
-                   }
-                   selectedVocabularies.retainAll(preselectedVocabularies);
-                   initModel();//re-init to consider pre-selected vocabularies
+               preselectedVocabularies = new ArrayList<TermVocabulary>();
+               for(int i=0;i<preselectedVocabularyUuids.length;i++){
+                       TermVocabulary preselectedVocabulary = CdmStore.getService(IVocabularyService.class).find(preselectedVocabularyUuids[i]);
+                       preselectedVocabularies.add(preselectedVocabulary);
                }
+               Collection<TermVocabulary> tempSelectedVocabularies = new HashSet<>();
+               for(TermVocabulary vocabulary:selectedVocabularies){
+                       if(preselectedVocabularies.contains(vocabulary)
+                                       || PreferencesUtil.getPreferenceStore().getBoolean(getPrefKey(vocabulary))){
+                               tempSelectedVocabularies.add(vocabulary);
+                       }
+               }
+               selectedVocabularies = tempSelectedVocabularies;
+               initModel();//re-init to consider pre-selected vocabularies
        }
 
        /** {@inheritDoc} */
@@ -109,11 +116,18 @@ public class NamedAreaSelectionDialog extends
                for(TermVocabulary<NamedArea> vocabulary : getAvailableVocabularies()){
                        IncludeNamedAreaVocabulary action = new IncludeNamedAreaVocabulary(vocabulary);
                        menuManager.add(action);
-                       if(preselectedVocabularies==null || preselectedVocabularies.isEmpty() || preselectedVocabularies.contains(vocabulary)) {
+                       if(preselectedVocabularies.contains(vocabulary)) {
                            action.setChecked(true);
                        }
+                       else{
+                               action.setChecked(PreferencesUtil.getPreferenceStore().getBoolean(getPrefKey(vocabulary)));
+                       }
                }
        }
+       
+       private String getPrefKey(TermVocabulary vocabulary){
+               return NamedAreaSelectionDialog.class.toString()+vocabulary.getUuid();
+       }
 
        /** {@inheritDoc} */
        @Override
@@ -133,6 +147,9 @@ public class NamedAreaSelectionDialog extends
        @Override
        protected void init() {
                selectedVocabularies = getAvailableVocabularies();
+               for(TermVocabulary vocabulary:selectedVocabularies){
+                       PreferencesUtil.getPreferenceStore().setDefault(getPrefKey(vocabulary), true);
+               }
        }
 
        private List<TermVocabulary> getAvailableVocabularies(){
index 255f8022724734be2741a2e058926a8fda703cfe..96104ab299f3e59aa2ad66e446b832eced264c1f 100644 (file)
@@ -11,18 +11,49 @@ package eu.etaxonomy.taxeditor.ui.dialog.selection;
 
 
 
+import java.text.Collator;
+import java.util.Comparator;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.jface.viewers.IColorProvider;
+import org.eclipse.jface.viewers.IFontProvider;
+import org.eclipse.jface.viewers.ILabelDecorator;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.LabelProviderChangedEvent;
+import org.eclipse.jface.viewers.StyledCellLabelProvider;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
+import org.eclipse.ui.internal.WorkbenchImages;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.newWizard.NewPersonWizard;
 import eu.etaxonomy.taxeditor.newWizard.NewTeamWizard;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.AbstractFilteredCdmResourceSelectionDialog.FilteredCdmResourceLabelProvider;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsFilter;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsListSeparator;
 
 /**
  * @author k.luther
@@ -41,8 +72,8 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
      * @param agent
      */
     protected NomenclaturalAuthorSelectionDialog(Shell shell, ConversationHolder conversation, String title,
-            boolean multi, String settings, AgentBase agent) {
-        super(shell, conversation, title, multi, settings, agent);
+            boolean multi, String settings, AgentBase agent, boolean teamMemberSelection) {
+        super(shell, conversation, title, multi, settings, agent, teamMemberSelection);
         // TODO Auto-generated constructor stub
     }
 
@@ -70,7 +101,14 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
             throw new IllegalArgumentException("Could not determine the desired wizard.");
         }
     }
-
+    /**
+        *
+        * @return
+        */
+    @Override
+       protected ILabelProvider createListLabelProvider() {
+               return new FilteredCdmResourceAbbrevLabelProvider();
+       }
 
     /**
      * <p>select</p>
@@ -80,9 +118,9 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
      * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      */
-    public static AgentBase select(Shell shell, ConversationHolder conversation, AgentBase entity) {
+    public static AgentBase select(Shell shell, ConversationHolder conversation, AgentBase entity, boolean teamMemberSelection) {
         NomenclaturalAuthorSelectionDialog dialog = new NomenclaturalAuthorSelectionDialog(shell, conversation,
-                "Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity);
+                "Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity, teamMemberSelection);
         return getSelectionFromDialog(dialog);
     }
 
@@ -108,5 +146,97 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
                 " supports cdmObject of type IIdentifiableEntity." +
                 " Please implement specific method in subclass.");
     }
+   
+    
+    
+    public class FilteredCdmResourceAbbrevLabelProvider extends LabelProvider {
+               @Override
+               public String getText(Object element) {
+                       if (element == null) {
+                               return null;
+                       }
+                       UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
+                       String titleCache = uuidAndTitleCache.getTitleCache();
+                       String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache();
+                       if (!titleCache.equals(abbrevTitleCache)){
+                               abbrevTitleCache += " - " + titleCache;
+                       }
+                       if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){
+                               abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]";
+                       }
+            return abbrevTitleCache;
+               }
+       };
+       
+       /** {@inheritDoc} */
+       @Override
+       protected ItemsFilter createFilter() {
+               return new ItemsFilter() {
+
+                       /**
+                        * Always returns false to enforce refiltering even if the pattern is equal
+                        */
+                       @Override
+                       public boolean equalsFilter(ItemsFilter filter) {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean isConsistentItem(Object item) {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean matchItem(Object item) {
+                               String textTitleCache = null;
+                               String abbrevTitleCache = null;
+                               if(item instanceof UuidAndTitleCache){
+                                       if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
+                                               abbrevTitleCache = ((UuidAndTitleCache) item).getAbbrevTitleCache();
+                                       } 
+                                       if (((UuidAndTitleCache) item).getTitleCache() != null ){
+                                               textTitleCache = ((UuidAndTitleCache) item).getTitleCache();
+                                       }
+                               }else if(item instanceof String){
+                                       textTitleCache = (String) item;
+                               }
+                               
+                               return  (matches(textTitleCache) || matches(abbrevTitleCache)) ;
+                               
+                       }
+
+               };
+       }
+       
+       @Override
+       protected Comparator getItemsComparator() {
+               return new Comparator<UuidAndTitleCache>() {
+                       @Override
+                       public int compare(UuidAndTitleCache entity1,
+                                       UuidAndTitleCache entity2) {
+                               Collator collator = Collator.getInstance();
+                               String compareString1 = "";
+                               if (entity1.getAbbrevTitleCache() != null){
+                                       compareString1 = entity1.getAbbrevTitleCache();
+                               }
+                               if (entity1.getTitleCache() != null){
+                                       compareString1 += entity1.getTitleCache();
+                               }
+                               
+                               
+                               String compareString2 = "";
+                               if (entity2.getAbbrevTitleCache() != null){
+                                       compareString2 = entity2.getAbbrevTitleCache();
+                               }
+                               if (entity2.getTitleCache() != null){
+                                       compareString2 += entity2.getTitleCache();
+                               }
+                               
+                               
+                               return collator.compare(compareString1, compareString2);
+                       }
+               };
+       }
+
 
 }
index 0e700202c34d3743991e676fc916ba84200995d7..9429d1ffe400dc8534f013113347bfb4041a04fe 100644 (file)
@@ -35,8 +35,8 @@ public class NomenclaturalPersonAuthorSelectionDialog extends NomenclaturalAutho
      * @param agent
      */
     protected NomenclaturalPersonAuthorSelectionDialog(Shell shell, ConversationHolder conversation, String title,
-            boolean multi, String settings, AgentBase agent) {
-        super(shell, conversation, title, multi, settings, agent);
+            boolean multi, String settings, AgentBase agent, boolean teamMemberSelection) {
+        super(shell, conversation, title, multi, settings, agent, teamMemberSelection);
         // TODO Auto-generated constructor stub
     }
 
@@ -49,9 +49,9 @@ public class NomenclaturalPersonAuthorSelectionDialog extends NomenclaturalAutho
      * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      */
-    public static AgentBase select(Shell shell, ConversationHolder conversation, AgentBase entity) {
+    public static AgentBase select(Shell shell, ConversationHolder conversation, AgentBase entity, boolean teamMemberSelection) {
         NomenclaturalPersonAuthorSelectionDialog dialog = new NomenclaturalPersonAuthorSelectionDialog(shell, conversation,
-                "Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity);
+                "Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity,teamMemberSelection);
         return getSelectionFromDialog(dialog);
     }
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java
new file mode 100755 (executable)
index 0000000..b112fe4
--- /dev/null
@@ -0,0 +1,181 @@
+package eu.etaxonomy.taxeditor.ui.dialog.selection;
+
+import java.text.Collator;
+import java.util.Comparator;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.jface.viewers.IColorProvider;
+import org.eclipse.jface.viewers.IFontProvider;
+import org.eclipse.jface.viewers.ILabelDecorator;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.LabelProviderChangedEvent;
+import org.eclipse.jface.viewers.StyledCellLabelProvider;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
+import org.eclipse.ui.internal.WorkbenchImages;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsFilter;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsListSeparator;
+
+public class NomenclaturalReferenceSelectionDialog extends
+               ReferenceSelectionDialog {
+
+       protected NomenclaturalReferenceSelectionDialog(Shell shell,
+                       ConversationHolder conversation, String title, boolean multi,
+                       Reference reference) {
+               super(shell, conversation, title, multi, reference);
+               // TODO Auto-generated constructor stub
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected void initModel() {
+           Control control = getPatternControl();
+        String pattern = null;
+        if (control != null){
+            pattern = ((Text)control).getText();
+        }
+
+
+               model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern);
+       }
+       
+       /**
+        *
+        * @return
+        */
+   @Override
+       protected ILabelProvider createListLabelProvider() {
+               return new FilteredCdmResourceAbbrevLabelProvider();
+       }
+       
+       /**
+        * <p>select</p>
+        *
+        * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
+        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+        * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
+        */
+       
+       public static Reference select(Shell shell, ConversationHolder conversation, Reference reference) {
+               NomenclaturalReferenceSelectionDialog dialog = new NomenclaturalReferenceSelectionDialog(shell, conversation,
+                               "Choose a reference", false, reference);
+               return getSelectionFromDialog(dialog);
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected ItemsFilter createFilter() {
+               return new ItemsFilter() {
+
+                       /**
+                        * Always returns false to enforce refiltering even if the pattern is equal
+                        */
+                       @Override
+                       public boolean equalsFilter(ItemsFilter filter) {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean isConsistentItem(Object item) {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean matchItem(Object item) {
+                               return true;
+//                             String text = null;
+//                             if(item instanceof UuidAndTitleCache){
+//                                     if (((UuidAndTitleCache) item).getAbbrevTitleCache() != null){
+//                                             text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
+//                                     } else{
+//                                             text = ((UuidAndTitleCache) item).getTitleCache();
+//                                     }
+//                             }else if(item instanceof String){
+//                                     text = (String) item;
+//                             }
+//                             return text != null ? matches(text) : false;
+                       }
+
+               };
+       }
+       
+
+       
+       public class FilteredCdmResourceAbbrevLabelProvider extends LabelProvider {
+               @Override
+               public String getText(Object element) {
+                       if (element == null) {
+                               return null;
+                       }
+                       UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
+                       String titleCache = uuidAndTitleCache.getTitleCache();
+                       String abbrevTitleCache = uuidAndTitleCache.getAbbrevTitleCache();
+                       if (!abbrevTitleCache.equals(titleCache)){
+                               abbrevTitleCache += " - " + titleCache;
+                       }
+                       if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ID_IN_ENTITY_SELECTION_DIAOLOG)){
+                               abbrevTitleCache += " ["+uuidAndTitleCache.getId()+"]";
+                       }
+            return abbrevTitleCache;
+               }
+       };
+       
+       @Override
+       protected Comparator getItemsComparator() {
+               return new Comparator<UuidAndTitleCache>() {
+                       @Override
+                       public int compare(UuidAndTitleCache entity1,
+                                       UuidAndTitleCache entity2) {
+                               Collator collator = Collator.getInstance();
+                               String compareString1 = "";
+                               if (entity1.getAbbrevTitleCache() != null){
+                                       compareString1 = entity1.getAbbrevTitleCache();
+                               }
+                               if (entity1.getTitleCache() != null){
+                                       compareString1 += entity1.getTitleCache();
+                               }
+                               String compareString2 = "";
+                               if (entity2.getAbbrevTitleCache() != null){
+                                       compareString2 = entity2.getAbbrevTitleCache();
+                               }
+                               if (entity2.getTitleCache() != null){
+                                       compareString2 += entity2.getTitleCache();
+                               }
+                               return collator.compare(compareString1, compareString2);
+                       }
+               };
+       }
+
+
+
+}
index 36792fe6357799c1dc67b2036b520bf20181e039..b2eb369697a60c3c06683e92915d924829002f12 100644 (file)
@@ -45,8 +45,8 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement;
-import eu.etaxonomy.taxeditor.ui.section.description.detail.DistributionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
 
 /**
  * @author n.hoffmann
@@ -76,9 +76,13 @@ public class SelectionDialogFactory {
                if(clazz.equals(TaxonNode.class)){
                        return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) currentSelection, ((TaxonNode) currentSelection).getClassification());
                }
+               if(clazz.equals(Reference.class) && parentElement instanceof NomenclaturalReferenceDetailElement){
+                       return (T) NomenclaturalReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection);
+               }
                if(clazz.equals(Reference.class)){
                        return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection);
                }
+               
                if(clazz.equals(TaxonNameBase.class)){
                        return (T) NameSelectionDialog.select(shell, conversation, (TaxonNameBase) currentSelection);
                }
@@ -86,16 +90,16 @@ public class SelectionDialogFactory {
                        return (T) TeamSelectionDialog.select(shell, conversation, (Team) currentSelection);
                }
                if(clazz.equals(TeamOrPersonBase.class) && parentElement instanceof AuthorshipDetailElement){
-            return (T) NomenclaturalAuthorSelectionDialog.select(shell, conversation, (AgentBase) currentSelection);
+            return (T) NomenclaturalAuthorSelectionDialog.select(shell, conversation, (AgentBase) currentSelection, false);
         }else if(clazz.equals(TeamOrPersonBase.class)){
                    //TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
-                   return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection);
+                   return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection, false);
                }
                if(clazz.equals(Person.class) && parentElement instanceof TeamMemberElement){
-                   return (T) NomenclaturalPersonAuthorSelectionDialog.select(shell, conversation, (AgentBase) currentSelection);
+                   return (T) NomenclaturalPersonAuthorSelectionDialog.select(shell, conversation, (AgentBase) currentSelection, true);
         }
                if(clazz.equals(AgentBase.class)){
-                       return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection);
+                       return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) currentSelection, false);
                }
                if(clazz.equals(Feature.class)){
                        return (T) FeatureSelectionDialog.select(shell, conversation, (Feature) currentSelection);
@@ -121,10 +125,7 @@ public class SelectionDialogFactory {
                    return (T) SpecimenOrObservationBaseSelectionDialog.select(shell, conversation, (SpecimenOrObservationBase) currentSelection);
                }
                if(clazz.equals(NamedArea.class)){
-                   if(parentElement instanceof DistributionDetailElement){
-//                return (T) NamedAreaSelectionForDistributionDialog.select(shell, conversation, (NamedArea) currentSelection, CdmStore.getTermManager().getPreferredVocabulary(TermType.NamedArea));
-                return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) currentSelection, Country.uuidCountryVocabulary);
-                   }else if(parentElement instanceof IEntityElement && ((IEntityElement) parentElement).getEntity() instanceof DerivedUnitFacade){
+                   if(parentElement instanceof IEntityElement && ((IEntityElement) parentElement).getEntity() instanceof DerivedUnitFacade){
                        return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) currentSelection, Country.uuidCountryVocabulary);
                    }
                    else{
old mode 100644 (file)
new mode 100755 (executable)
index bfff39f..5292eac
@@ -152,7 +152,7 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti
 
                //FIXME prelim
                pattern = pattern + "*";
-               model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification.getUuid(), excludeTaxa, limitOfInitialElements, pattern);
+               model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification.getUuid(),  limitOfInitialElements, pattern);
        }
 
        /** {@inheritDoc} */
index 1ef071eac9e2459747c492f0427ad7c43b04acee..009c0b9abd117b6291cc3d5673cd98d3170eef5d 100644 (file)
@@ -26,6 +26,8 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.TypedListener;
 import org.eclipse.swt.widgets.Widget;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 import org.eclipse.ui.forms.widgets.ToggleHyperlink;
@@ -35,6 +37,7 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
  * <p>
@@ -165,6 +168,7 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements ISe
         */
        public void setEntity(ENTITY entity) {
                this.entity = entity;
+               addExpandListener();
        }
 
        /*
@@ -591,11 +595,34 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements ISe
        }
 
        /** {@inheritDoc} */
-
        @Override
     public void update(CdmDataChangeMap changeEvents) {
 
        }
+       
+    private class ExpandListener implements IExpansionListener{
+               @Override
+               public void expansionStateChanging(ExpansionEvent e) {
+               }
+               @Override
+               public void expansionStateChanged(ExpansionEvent e) {
+                       PreferencesUtil.getPreferenceStore().setValue(getPrefKey(), e.getState());
+               }
+    }
+
+    /**
+     * Adds a custom implementation of IExpansionListener to this section
+     * which stores the expansion state in the preferences
+     */
+       private void addExpandListener() {
+               PreferencesUtil.getPreferenceStore().setDefault(getPrefKey(), isExpanded());
+               setExpanded(PreferencesUtil.getPreferenceStore().getBoolean(getPrefKey()));
+               addExpansionListener(new ExpandListener());             
+       }
+
+       private String getPrefKey() {
+               return this.getClass().getCanonicalName()+";"+entity.getClass().getCanonicalName();
+       }
 
 
 }
index e490d4cd7da55d4e7285afa82304d70f8d35c56b..11a1e21d5a1baa0c85ba535b5a69420ee89d3633 100644 (file)
@@ -30,10 +30,12 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
+import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
 
 /**
@@ -87,6 +89,8 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
        protected LanguageStringWithLabelElement element_languageString;
 
        private Button button;
+       
+//     private Button removeRepresentation;
 
        private Map<Language, LanguageString> multilanguageText;
 
@@ -135,6 +139,13 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
                                                "", null, style);
                combo_language.addSelectionListener(this);
+//             removeRepresentation = formFactory.createButton(getLayoutComposite(), null,
+//                             SWT.PUSH);
+//             removeRepresentation.setImage(ImageResources
+//                             .getImage(ImageResources.TRASH_ICON));
+//             removeRepresentation.setToolTipText("Remove representation");
+//             addControl(removeRepresentation);
+//             removeRepresentation.addSelectionListener(new DeleteListener(this));
                addControl(formFactory.createLabel(getLayoutComposite(), ""));
                button = formFactory.createButton(getLayoutComposite(),
                                "Open In Translation Editor", SWT.PUSH);
@@ -254,4 +265,6 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
                }
        }
+       
+       
 }
old mode 100644 (file)
new mode 100755 (executable)
index 8645a2c..388f881
@@ -21,6 +21,8 @@ import java.util.Collections;
 import java.util.List;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Button;
@@ -30,10 +32,12 @@ import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
+import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 
+
 public class RepresentationElement  extends AbstractCdmFormElement implements
 SelectionListener{
 
@@ -44,11 +48,12 @@ SelectionListener{
         protected TextWithLabelElement element_text;
 
         protected Button button;
-        //protected Button deleteButton;
-
+       
         protected Representation selectedRepresentation;
         protected TermBase term;
 
+               private Button removeRepresentation;
+
        // protected final boolean isTranslationWizard;
 
 
@@ -133,13 +138,20 @@ SelectionListener{
 
         protected void createRepresentationEditingElements(
                 ICdmFormElement formElement, int style) {
-
+               removeRepresentation = formFactory.createButton(getLayoutComposite(), null,
+                               SWT.PUSH);
+               removeRepresentation.setImage(ImageResources
+                               .getImage(ImageResources.TRASH_ICON));
+               removeRepresentation.setToolTipText("Remove representation");
+               removeRepresentation.addSelectionListener(new DeleteListener(this));
+               addControl(removeRepresentation);
+               
             combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
-                            "", null, true, style);
+                            "", null, false, style);
 
             combo_language.addSelectionListener(this);
-
-            addControl(formFactory.createLabel(getLayoutComposite(), ""));
+            
+            //addControl(formFactory.createLabel(getLayoutComposite(), ""));
        }
 
         public List<Language> getLanguages() {
@@ -174,8 +186,9 @@ SelectionListener{
                 element_Label.setText(selectedRepresentation.getLabel());
                 element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
                 element_text.setText(selectedRepresentation.getDescription());
-
+                
             }else {
+                
                 element_Label.setEnabled(false);
                  element_abbrevLabel.setEnabled(false);
                  element_text.setEnabled(false);
@@ -214,10 +227,14 @@ SelectionListener{
 
             if (selectedRepresentation != null) {
                combo_language.setTerms(getLanguages());
+               
             } else{
                 element_Label.setEnabled(false);
                  element_abbrevLabel.setEnabled(false);
                  element_text.setEnabled(false);
+                 if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+                        removeRepresentation.setEnabled(false);
+                 }
             }
             if (update){
                updateControls();
@@ -237,6 +254,9 @@ SelectionListener{
             selectedRepresentation = preferredRepresentation;
             if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                 combo_language.setSelection(preferredRepresentation == null?CdmStore.getDefaultLanguage():preferredRepresentation.getLanguage());
+                boolean removePossible = term.getRepresentations().size() > 1 ;
+                removeRepresentation.setEnabled(removePossible);
+                
             }
         }
 
@@ -288,10 +308,13 @@ SelectionListener{
                        element_Label.setEnabled(true);
                        element_abbrevLabel.setEnabled(true);
                        element_text.setEnabled(true);
+                        boolean removePossible = term.getRepresentations().size() > 1 ;
+                     removeRepresentation.setEnabled(removePossible);
                } else{
                         element_Label.setEnabled(false);
                      element_abbrevLabel.setEnabled(false);
                      element_text.setEnabled(false);
+                     removeRepresentation.setEnabled(false);
                }
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
             }
@@ -313,6 +336,23 @@ SelectionListener{
             }
             this.selectedRepresentation = selectedRepresentation;
         }
+        
+        private class DeleteListener extends SelectionAdapter {
+
+               private final RepresentationElement element;
+
+               public DeleteListener(RepresentationElement element) {
+                       this.element = element;
+               }
+
+               @Override
+               public void widgetSelected(SelectionEvent e) {
+                       term.removeRepresentation(selectedRepresentation);
+                       firePropertyChangeEvent(new CdmPropertyChangeEvent(
+                                       this, e));
+                       updateControls();
+               }
+       }
     }
 
 
old mode 100644 (file)
new mode 100755 (executable)
index 7b78f75..6a29983
@@ -17,6 +17,7 @@ import org.eclipse.swt.events.SelectionEvent;
 
 import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermTranslationWizard;
@@ -40,6 +41,7 @@ public class TranslatableRepresentationElement extends RepresentationElement {
     public TranslatableRepresentationElement(CdmFormFactory formFactory, ICdmFormElement formElement,
             Representation representation, TermBase term, Integer textHeight, int style, boolean fill) {
         super(formFactory, formElement, representation, term, textHeight, style, fill);
+        
 
     }
 
@@ -93,7 +95,7 @@ public class TranslatableRepresentationElement extends RepresentationElement {
     }
     @Override
     protected void createRepresentationEditingElements(ICdmFormElement formElement, int style) {
-        super.createRepresentationEditingElements(formElement, style);
+        super.createRepresentationEditingElements(formElement, style );
         button = formFactory.createButton(getLayoutComposite(),
                 "Open In Translation Editor", SWT.PUSH);
         addControl(button);
index 482b9455ea46ab3de5a81d718770047a79672f49..693a54028bdb1c7e4a9849418f9105eabd084cb2 100644 (file)
@@ -142,7 +142,8 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
         * Override in subclasses if you want to have a different behaviour.
         */
        protected void setSectionTitle() {
-               if(getCollection(getEntity()) != null && getCollection(getEntity()).size() > 0){
+               Collection<ELEMENT> collection = getCollection(getEntity());
+               if(collection != null && collection.size() > 0){
                        this.setText(getTitleString() + " +");
                }else{
                        this.setText(getTitleString());
index 6d347db6260973ab52da57d8d5cfdb5298475ba4..1ecc939342dc3a5d007953ef433d9b14e62521cb 100644 (file)
@@ -173,17 +173,11 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                                selection_reuseExistingName.setEnabled(enabled);
                                if (!enabled){
                     setTaxon(selection_reuseExistingTaxon.getEntity());
-                }
-                               if (isCreateNew()){
-                                   textNewTaxonName.setEnabled(enabled);
-                                   if (!enabled){
-                                       setTaxon(selection_reuseExistingTaxon.getEntity());
-                                   } else{
-                                       textNewTaxonName.setText(null);
-                                   }
-
-                                   complete = !textNewTaxonName.getText().isEmpty();
-                               }
+                }else{
+                               textNewTaxonName.setText(null);
+                           }
+                               complete = !textNewTaxonName.getText().isEmpty();
+                               
 
                } else if (eventSource == selection_reuseExistingName) {
                    boolean enabled = selection_reuseExistingName.getEntity() == null;
@@ -191,7 +185,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                        selection_reuseExistingTaxon.setEnabled(enabled);
                        textNewTaxonName.setEnabled(enabled);
 
-                       setTaxon(selection_reuseExistingName.getEntity());
+                       //setTaxon(selection_reuseExistingName.getEntity());
 
                        complete = !textNewTaxonName.getText().isEmpty();
                } else if (eventSource == textNewTaxonName) {
@@ -291,6 +285,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
        public String getTaxonName() {
         return textNewTaxonName.getText();
     }
+       public Taxon getTaxon() {
+        return taxon;
+    }
 
        public Reference getReference(){
            return selection_SecRef.getSelection();
index dc90c3109cb9b4b3f291164db3cf098cda48f44b..dd54afa1f9da92ea0c2e399ce56356f3b016826e 100644 (file)
@@ -148,10 +148,14 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeN
        }
 
        public Taxon createTaxon() {
-               String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
-               Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
-               NonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
-               return Taxon.NewInstance(parseReferencedName, reference);
+               if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
+                       String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
+                       Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
+                       NonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
+                       return Taxon.NewInstance(parseReferencedName, reference);
+               } else{
+                       return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
+               }
        }
 
        /*
index 8e5e5bc886f72dfbc886d04d5348ec9a47cc33e7..3a56e5c1f9e58750b6352a0052fd3c66aa10d185 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
 import org.eclipse.swt.SWT;
 
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -69,6 +70,7 @@ public class TaxonInteractionDetailElement extends
 
                interactionDescription = formFactory.createMultiLineTextWithLabel(this,
                                "Relationship to the taxon:", 200, SWT.WRAP);
+               entity = HibernateProxyHelper.deproxy(entity, TaxonInteraction.class);
                interactionDescription.setText(entity.getDescription(CdmStore
                                .getDefaultLanguage()));
        }
index 07a3d89d9462f441264b014df546d341dc746636..e70f4a8f53277190d65f02d4461df4e0d64a7300 100644 (file)
@@ -116,13 +116,8 @@ public class FeatureDistributionDetailElement extends AbstractCdmDetailElement<F
                int width = image.calculateWidth();
                 IEditGeoService editGeoService;
                List<Language> languages = Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()});
-               if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                   editGeoService = ((CdmApplicationRemoteController)CdmStore.getCurrentApplicationConfiguration()).getEditGeoService();
-               }else{
-                   editGeoService =(IEditGeoService) CdmStore.getCurrentApplicationConfiguration().getBean(
-                       "editGeoService");
-               }
-
+               editGeoService = ((CdmApplicationRemoteController)CdmStore.getCurrentApplicationConfiguration()).getEditGeoService();
+               
                String parameter = editGeoService.getDistributionServiceRequestParameterString(
                                getTaxonDescriptions(),
                 false,
index ae3f52b4d6ecf2e596aabc50c8e7e776ce7a79fe..044268570adc898eb3e8b5f302cdf3475aae56f4 100644 (file)
@@ -101,7 +101,7 @@ public class AuthorshipDetailElement extends
                 EntitySelectionElement.ALL, style);
                addElement(selectionBasionymAuthor);
                selectionExBasionymAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class, getConversationHolder(),
-                       formElement, "Ex Basionym Author", entity.getExBasionymAuthorship(),
+                       formElement, "Ex Basionym Author",entity.getExBasionymAuthorship(),
                        EntitySelectionElement.ALL, style);
 
                addElement(selectionExBasionymAuthor);
index 666fb5f83030fe6f351078e967dac780abe30df3..84a1ae49eab28540008315bfe5e37a004f15136e 100644 (file)
@@ -179,8 +179,14 @@ public class NameDetailElement extends AbstractIdentifiableEntityDetailElement<N
        }
 
        private void createInfragenerericEpithetControls(ICdmFormElement element, NonViralName nonViralName, int style){
-               if(nonViralName.getRank() != null && nonViralName.getRank().isLower(Rank.GENUS()) && !nonViralName.getRank().isSpeciesAggregate()){
-                       text_infragenericEpithet = formFactory.createTextWithLabelElement(element, "Infrageneric Epithet", nonViralName.getInfraGenericEpithet(), style);
+               if (nonViralName.getNomenclaturalCode().equals(NomenclaturalCode.ICZN)){
+                       if(nonViralName.getRank() != null && nonViralName.getRank().isLower(Rank.GENUS()) ){
+                               text_infragenericEpithet = formFactory.createTextWithLabelElement(element, "Infrageneric Epithet", nonViralName.getInfraGenericEpithet(), style);
+                       }
+               } else{
+                       if((nonViralName.getRank() != null && nonViralName.getRank().isLower(Rank.GENUS())) && !nonViralName.getRank().isLower(Rank.SPECIES()) && !nonViralName.getRank().isSpeciesAggregate()){
+                               text_infragenericEpithet = formFactory.createTextWithLabelElement(element, "Infrageneric Epithet", nonViralName.getInfraGenericEpithet(), style);
+                       }
                }
        }
 
index e7abd566679c0d621c5bf055a824bccf816f85c3..19bd9898a35ee598607b5a8afa3167761bf2df74 100644 (file)
 
 package eu.etaxonomy.taxeditor.ui.section.name;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
 import org.eclipse.jface.wizard.Wizard;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>NameRelationshipWizard class.</p>
@@ -24,10 +33,14 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
  * @created Jun 1, 2010
  * @version 1.0
  */
-public class NameRelationshipWizard extends Wizard implements IConversationEnabled{
+public class NameRelationshipWizard extends Wizard implements IConversationEnabled, ICdmEntitySessionEnabled{
 
        private static NameRelationshipDetailSection callingSection;
        
+       private ICdmEntitySession cdmEntitySession;
+    private ICdmEntitySession previousCdmEntitySession;
+    private CdmBase rootElement;
+       
        /**
         * <p>Constructor for NameRelationshipWizard.</p>
         *
@@ -35,6 +48,12 @@ public class NameRelationshipWizard extends Wizard implements IConversationEnabl
         */
        public NameRelationshipWizard(NameRelationshipDetailSection callingSection) {
                NameRelationshipWizard.callingSection = callingSection;
+               rootElement = callingSection.getEntity();
+               if (CdmStore.isActive()) {
+            previousCdmEntitySession = CdmStore.getCurrentSessionManager().getActiveSession();
+            cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
+            cdmEntitySession.bind();
+        }
        }
                
        private NameRelationshipWizardPage page;
@@ -56,7 +75,16 @@ public class NameRelationshipWizard extends Wizard implements IConversationEnabl
                return page.isPageComplete();
        }
 
-
+       @Override
+    public void dispose() {
+        super.dispose();
+        if(cdmEntitySession != null) {
+            cdmEntitySession.dispose();
+        }
+        if(previousCdmEntitySession!=null){
+            previousCdmEntitySession.bind();
+        }
+    }
 
        /**
         * <p>getNameRelationship</p>
@@ -78,4 +106,19 @@ public class NameRelationshipWizard extends Wizard implements IConversationEnabl
 
        /** {@inheritDoc} */
        public void update(CdmDataChangeMap changeEvents) {}
+
+        @Override
+           public ICdmEntitySession getCdmEntitySession() {
+               return cdmEntitySession;
+           }
+
+           @Override
+           public java.util.Collection<CdmBase> getRootEntities() {
+               return Collections.singleton(rootElement);
+           }
+
+           @Override
+           public Map<Object, List<String>> getPropertyPathsMap() {
+               return null;
+           }
 }
index 1449fb1130f1bf0416581a8a260f8b854c00bda2..8782002943f5f96008afb5d60278b8257e3289c2 100644 (file)
@@ -73,7 +73,7 @@ public class NonViralNameDetailSection extends AbstractCdmDetailSection<NonViral
                    Action chooseNameAction = new Action("Choose Name", IAction.AS_PUSH_BUTTON){
                        @Override
                        public void run() {
-                           TaxonNameBase taxonName = NameSelectionDialog.select(getShell(), getConversationHolder(), null);
+                           TaxonNameBase taxonName = NameSelectionDialog.select(getShell(), getConversationHolder(), getEntity());
                            if(taxonName!=null){
                                if(taxonName.isInstanceOf(NonViralName.class)){
                                    CdmStore.getService(ITaxonNodeService.class).list(TaxonNode.class, null, null, null, null);
index 697565e07800dcf182fc2e883cfb2aa549dbfd88..994e326d6d3f18b1bf89d7e2375d80bfff4cadf8 100644 (file)
@@ -12,31 +12,26 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.association;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Set;
-import java.util.UUID;
 
-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.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 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 org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 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.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
@@ -47,6 +42,7 @@ 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.CdmViewerChooser;
 
 /**
  * @author pplitzner
@@ -62,73 +58,98 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
     /** {@inheritDoc} */
     @Override
     protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
-
-        //TODO add context menu for deleting associations
-
         Collection<TaxonBase<?>> associatedTaxa = CdmStore.getService(IOccurrenceService.class).listIndividualsAssociationTaxa(entity.innerDerivedUnit(), null, null, null, null);
         Collection<SpecimenTypeDesignation> typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(entity.innerDerivedUnit(), null, null, null, null);
         Collection<DeterminationEvent> determinationEvents = CdmStore.getService(IOccurrenceService.class).listDeterminationEvents(entity.innerDerivedUnit(), null, null, null, null);
 
+        Collection<CdmBase> associations = new ArrayList<>();
+        associations.addAll(associatedTaxa);
+        associations.addAll(typeDesignations);
+        associations.addAll(determinationEvents);
+
+        TableWrapLayout layout = (TableWrapLayout) getLayoutComposite().getLayout();
+        layout.bottomMargin = 0;
+        layout.topMargin = 0;
+
         if(associatedTaxa.isEmpty() && typeDesignations.isEmpty() && determinationEvents.isEmpty()){
             Label label = formFactory.createLabel(getLayoutComposite(), "No associations");
             label.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             return;
         }
-        if(!associatedTaxa.isEmpty()){
-            TableViewer viewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
-            viewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-            viewer.setContentProvider(new ArrayContentProvider());
-            viewer.setLabelProvider(new LabelProvider(){
+        for (CdmBase cdmBase : associations) {
+            final StyledText styledTextWidget = new StyledText(getLayoutComposite(), SWT.WRAP);
+            styledTextWidget.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            styledTextWidget.setText(getLabelText(cdmBase));
+            styledTextWidget.setBackground(getLayoutComposite().getBackground());
+            styledTextWidget.setEditable(false);
+            //Set caret null this will hide caret
+            styledTextWidget.setCaret(null);
+
+            //TODO add context menu for deleting associations
+            //context menu
+            Menu menu = new Menu(styledTextWidget);
+            //copy menu
+            MenuItem copyItem = new MenuItem(menu, SWT.PUSH);
+            copyItem.setText("Copy");
+            copyItem.addSelectionListener(new SelectionListener() {
+
                 @Override
-                public String getText(Object element) {
-                    return "Associated with "+element.toString();
+                public void widgetSelected(SelectionEvent e) {
+                    Object[] data = new Object[]{styledTextWidget.getText()};
+                    Clipboard clipboard = new Clipboard(styledTextWidget.getDisplay());
+                    clipboard.setContents(data, new Transfer[]{TextTransfer.getInstance()});
                 }
-            });
-            viewer.setInput(associatedTaxa);
-            viewer.addDoubleClickListener(this);
-        }
-        if(!typeDesignations.isEmpty()){
-            TableViewer viewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
-            viewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-            viewer.setContentProvider(new ArrayContentProvider());
-            viewer.setLabelProvider(new LabelProvider(){
                 @Override
-                public String getText(Object element) {
-                    SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation)element;
-                    String label = typeDesignation.getTypeStatus()!=null?typeDesignation.getTypeStatus().getLabel()+" of ":"Type of ";
-                    Set<TaxonNameBase> typifiedNames = typeDesignation.getTypifiedNames();
-                    for (TaxonNameBase taxonNameBase : typifiedNames) {
-                        label += taxonNameBase+", ";
-                    }
-                    if(label.endsWith(", ")){
-                        label = label.substring(0, label.length()-2);
-                    }
-                    return label;
+                public void widgetDefaultSelected(SelectionEvent e) {
                 }
             });
-            viewer.setInput(typeDesignations);
-            viewer.addDoubleClickListener(this);
-        }
-        if(!determinationEvents.isEmpty()){
-            TableViewer viewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
-            viewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-            viewer.setContentProvider(new ArrayContentProvider());
-            viewer.setLabelProvider(new LabelProvider(){
-                @Override
-                public String getText(Object element) {
-                    DeterminationEvent determinationEvent = (DeterminationEvent)element;
-                    if(determinationEvent.getTaxon()!=null){
-                        return "Determined as taxon "+determinationEvent.getTaxon();
-                    }
-                    if(determinationEvent.getTaxonName()!=null){
-                        return "Determined as name "+determinationEvent.getTaxonName();
-                    }
-                    return element.toString();
-                }
+            //"Open in..." menu
+            MenuItem openInItem = new MenuItem(menu, SWT.PUSH);
+            openInItem.setText("Open");
+            if(cdmBase.isInstanceOf(SpecimenTypeDesignation.class)){
+               openInItem.setData(HibernateProxyHelper.deproxy(cdmBase, SpecimenTypeDesignation.class));
+            }
+            openInItem.setData(cdmBase);
+            openInItem.addSelectionListener(new SelectionListener() {
+               
+               @Override
+               public void widgetSelected(SelectionEvent e) {
+                       new CdmViewerChooser(TaxonAssociationDetailElement.this.getLayoutComposite().getShell()).chooseViewer(e.widget.getData());
+               }
+               @Override
+               public void widgetDefaultSelected(SelectionEvent e) {
+               }
             });
-            viewer.setInput(determinationEvents);
-            viewer.addDoubleClickListener(this);
+            styledTextWidget.setMenu(menu);
+        }
+    }
+
+    private String getLabelText(Object element) {
+        if(element instanceof TaxonBase){
+            return "Associated with "+element.toString();
+        }
+        else if(element instanceof DeterminationEvent){
+            DeterminationEvent determinationEvent = (DeterminationEvent)element;
+            if(determinationEvent.getTaxon()!=null){
+                return "Determined as taxon "+determinationEvent.getTaxon();
+            }
+            if(determinationEvent.getTaxonName()!=null){
+                return "Determined as name "+determinationEvent.getTaxonName();
+            }
+        }
+        else if(element instanceof SpecimenTypeDesignation){
+            SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation)element;
+            String label = typeDesignation.getTypeStatus()!=null?typeDesignation.getTypeStatus().getLabel()+" of ":"Type of ";
+            Set<TaxonNameBase> typifiedNames = typeDesignation.getTypifiedNames();
+            for (TaxonNameBase taxonNameBase : typifiedNames) {
+                label += taxonNameBase+", ";
+            }
+            if(label.endsWith(", ")){
+                label = label.substring(0, label.length()-2);
+            }
+            return label;
         }
+        return "";
     }
 
     /** {@inheritDoc} */
@@ -141,59 +162,25 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
     public void doubleClick(DoubleClickEvent event) {
         if(event.getSelection() instanceof IStructuredSelection){
             Object firstElement = ((IStructuredSelection) event.getSelection()).getFirstElement();
-            UUID taxonToOpenUuid = null;
-            if(firstElement instanceof TaxonBase<?>){
-                taxonToOpenUuid = ((TaxonBase<?>)firstElement).getUuid();
-            }
-            else if(firstElement instanceof SpecimenTypeDesignation){
-                //TODO how to open an editor for all typed names?
+            if(firstElement instanceof SpecimenTypeDesignation){
+               SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation)firstElement;
+               Set<TaxonNameBase> typifiedNames = typeDesignation.getTypifiedNames();
+               if(typifiedNames.size()==1){
+                       firstElement = typifiedNames.iterator().next();
+               }
+               if(typifiedNames.size()==0 || typifiedNames.size()>=2){
+                       MessagingUtils.informationDialog("Could not open name", "Type designation has either 0 or more than 1 names associated");
+               }
             }
             else if(firstElement instanceof DeterminationEvent){
                 if(((DeterminationEvent) firstElement).getTaxon()!=null){
-                    taxonToOpenUuid = ((DeterminationEvent) firstElement).getTaxon().getUuid();
+                    firstElement = ((DeterminationEvent) firstElement).getTaxon();
                 }
                 else if(((DeterminationEvent) firstElement).getTaxonName()!=null){
-                    //TODO how to open editor for taxon name
-                }
-            }
-            if(taxonToOpenUuid!=null){
-                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, taxonToOpenUuid.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);
+                       firstElement = ((DeterminationEvent) firstElement).getTaxonName();
                 }
             }
+            new CdmViewerChooser(event.getViewer().getControl().getShell()).chooseViewer(firstElement);
         }
     }
 }
index e959b85f9b9c46acde471218161876bc66e90e9f..7c50960d8c37d7106c6864ba9a0a0e1b6e6ad476 100644 (file)
@@ -13,12 +13,12 @@ import java.util.Collection;
 import java.util.Collections;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IMediaService;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
-import eu.etaxonomy.cdm.model.molecular.SingleRead;
+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.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
@@ -71,6 +71,14 @@ public class SequenceContigFileCollectionDetailSection extends AbstractEntityCol
     public void addElement(Media element) {
         if(getEntity().getContigFile()==null){
             getEntity().setContigFile(element);
+                       /*
+                        * merge to avoid duplicate key exception
+                        * the exception seems to be caused by the two links to the Media object: 
+                        *  - Sequence->contigFile (used to be not in the cache after saving)
+                        *  - MediaRepresentationPart->media
+                        *  Invoking merge() solves this problem
+                        */
+            CdmStore.getService(IMediaService.class).merge(element);
         }
     }
 
index e78980638e970fb9f457619b2a3e737ea4eb3030..5f887ef261f4aca3955a4223a942ff26b9391926 100644 (file)
@@ -13,8 +13,10 @@ import java.util.Collection;
 import java.util.Collections;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IMediaService;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
+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.section.AbstractEntityCollectionSection;
@@ -69,6 +71,14 @@ public class SingleReadPherogramCollectionDetailSection extends AbstractEntityCo
     public void addElement(Media element) {
         if(getEntity().getPherogram()==null){
             getEntity().setPherogram(element);
+                       /*
+                        * merge to avoid duplicate key exception
+                        * the exception seems to be caused by the two links to the Media object: 
+                        *  - SingleRead->pherogram (used to be not in the cache after saving)
+                        *  - MediaRepresentationPart->media
+                        *  Invoking merge() solves this problem
+                        */
+            CdmStore.getService(IMediaService.class).merge(element);
         }
     }
 
index 5e10262a70108e5e0b32c39543347cab6096b242..279f2faafd85508297201a0f780576f4a2e9c857 100644 (file)
@@ -75,7 +75,7 @@ public class EditFromSelectionWizard extends Wizard implements
        private CdmBase rootElement;
 
        public EditFromSelectionWizard(EntitySelectionElement selectionElement) {
-        if (CdmStore.isActive() && CdmStore.getCurrentSessionManager().isRemoting()) {
+        if (CdmStore.isActive()) {
             previousCdmEntitySession = CdmStore.getCurrentSessionManager().getActiveSession();
             cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
             cdmEntitySession.bind();
index b04c73d4d50137a543d024706ac06d20fa39b280..c86f2c08eeaae874a24b473502aad518de747dec 100644 (file)
@@ -8,7 +8,7 @@ import java.util.Observable;
 import java.util.Observer;
 
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.MessageDialog;
+
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
old mode 100644 (file)
new mode 100755 (executable)
index 571e4c6..6b6b36b
@@ -122,7 +122,6 @@ public class TermTranslationWizardPage extends WizardPage implements PropertyCha
             text_source = formFactory.createRepresentationElement(element, preferredRepresentation,term,  TEXT_HEIGHT,  SWT.NULL, true);
             text_source.setTerm(term, true);
 
-
         }
 
         /**
@@ -131,6 +130,7 @@ public class TermTranslationWizardPage extends WizardPage implements PropertyCha
          */
         private void createRightControls(ICdmFormElement element){
             text_target = formFactory.createRepresentationElement(element, null, term, TEXT_HEIGHT, SWT.NULL, false);
+            
         }
 
 
index 7282445a85499925805aa44799d933674be9d701..2774f50189622d6792482f3531ca52f2e37972a3 100644 (file)
@@ -57,7 +57,7 @@ public class ApplicationUtil extends AbstractUtility {
      * @return
      */
     public static boolean isStable() {
-        return !getVersion().startsWith("[");
+        return !getVersion().startsWith(BETA_PREFIX);
     }
 
 
index 272d4711ee759e1213972d09d714050cee92dbbb..d1cef126d665a1d085788db71f32fe28535b235d 100644 (file)
@@ -21,7 +21,6 @@ import org.eclipse.ui.forms.widgets.ScrolledForm;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
@@ -29,8 +28,6 @@ import eu.etaxonomy.taxeditor.ui.element.RootElement;
 import eu.etaxonomy.taxeditor.view.detail.CdmSectionPart;
 
 /**
- * <p>Abstract AbstractCdmDataViewer class.</p>
- *
  * @author n.hoffmann
  * @created Feb 9, 2010
  * @version 1.0
@@ -53,20 +50,11 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
        private final AbstractCdmViewPart viewPart;
 
 
-       /**
-        * <p>Constructor for AbstractCdmDataViewer.</p>
-        *
-        * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
-        * @param viewPart a {@link eu.etaxonomy.taxeditor.view.AbstractCdmViewPart} object.
-        */
        public AbstractCdmDataViewer(Composite parent, AbstractCdmViewPart viewPart) {
                this.viewPart = viewPart;
 
                managedForm = new ManagedForm(parent){
 
-                       /* (non-Javadoc)
-                        * @see org.eclipse.ui.forms.ManagedForm#dirtyStateChanged()
-                        */
                        @Override
                        public void dirtyStateChanged() {
                                markViewPartDirty();
@@ -84,9 +72,6 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                rootElement = new RootElement(formFactory, body);
        }
 
-       /**
-        * <p>createFormFactory</p>
-        */
        protected void createFormFactory() {
                if(formFactory != null){
                        formFactory.dispose();
@@ -99,17 +84,10 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                viewPart.changed(input);
        }
 
-
-       /**
-        * @return
-        */
        protected AbstractCdmViewPart getViewPart() {
                return viewPart;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.Viewer#getControl()
-        */
        /** {@inheritDoc} */
        @Override
        public Control getControl() {
@@ -123,9 +101,6 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                return body;
        }
        
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.Viewer#setInput(java.lang.Object)
-        */
        /** {@inheritDoc} */
        @Override
        public void setInput(Object input) {
@@ -135,18 +110,12 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                refresh();
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.Viewer#getInput()
-        */
        /** {@inheritDoc} */
        @Override
        public Object getInput() {
                return input;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.Viewer#refresh()
-        */
        /** {@inheritDoc} */
        @Override
        public void refresh() {
@@ -159,26 +128,15 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                managedForm.reflow(true);
        }
 
-
-       /**
-        * <p>layout</p>
-        */
        public void layout(){
                body.layout();
        }
 
-       /**
-        * <p>showParts</p>
-        */
        protected abstract void showParts();
 
-
-       /**
-        * <p>destroySections</p>
-        */
        protected void destroySections() {
                for (IFormPart formPart : managedForm.getParts()){
-                       removePart((CdmSectionPart) formPart);
+                       removePart((CdmSectionPart<?>) formPart);
                }
 
                managedForm.setInput(null);
@@ -195,10 +153,6 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                }
        }
 
-
-       /**
-        * <p>setFocus</p>
-        */
        public void setFocus(){
                // we have to set focus to a control of this viewer
                // otherwise, after opening a dialog from the details, the focus will not be
@@ -209,46 +163,24 @@ public abstract class AbstractCdmDataViewer extends Viewer implements IConversat
                }
        }
 
-       /**
-        * <p>reflow</p>
-        */
        public void reflow(){
                managedForm.reflow(true);
        }
 
-       /**
-        * <p>removePart</p>
-        *
-        * @param sectionPart a {@link eu.etaxonomy.taxeditor.view.detail.CdmSectionPart} object.
-        */
-       protected void removePart(CdmSectionPart sectionPart){
+       protected void removePart(CdmSectionPart<?> sectionPart){
                managedForm.removePart(sectionPart);
                formFactory.removePropertyChangeListener(sectionPart);
        }
 
-       /**
-        * <p>addPart</p>
-        *
-        * @param section a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
-        */
-       protected void addPart(AbstractFormSection section){
-               CdmSectionPart sectionPart = new CdmSectionPart(section);
+       protected void addPart(AbstractFormSection<?> section){
+               CdmSectionPart<?> sectionPart = new CdmSectionPart<>(section);
                managedForm.addPart(sectionPart);
                formFactory.addPropertyChangeListener(sectionPart);
        }
 
-       /**
-        * <p>getConversationHolder</p>
-        *
-        * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        */
        @Override
     public ConversationHolder getConversationHolder() {
                return viewPart.getConversationHolder();
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void update(CdmDataChangeMap changeEvents) {}
-
 }
index 4367e2b835c2863bbe8ffcac66720b81c2c1657d..5ea7369b2cfd87b06d806e34fac30e70aebd987d 100644 (file)
@@ -96,6 +96,7 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
      * <p>showEmptyPage</p>
      */
     public void showEmptyPage(){
+       setPartName(createPartTitle(null));
         pageBook.showPage(emptySelectionLabel);
     }
 
@@ -113,6 +114,8 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
         if (getViewer().getControl()==null || getViewer().getControl().isDisposed()){
             return;
         }
+
+        setPartName(createPartTitle(element));
         getViewer().setInput(element);
         showViewer();
     }
@@ -222,4 +225,13 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
         // TODO Auto-generated method stub
         return null;
     }
+    
+       protected String createPartTitle(Object selectedObject){
+           if(selectedObject!=null){
+               return getViewName()+": "+selectedObject; //$NON-NLS-1$
+           }
+        return getViewName();
+       }
+       
+    protected abstract String getViewName();
 }
index 13591957a9a668dfe9d63e7c16aae24fe1843f9f..e8372443e30cf14f5b55ec533b9b06a1595aa681 100644 (file)
@@ -17,17 +17,14 @@ 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.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 import org.eclipse.ui.handlers.IHandlerService;
 
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.Messages;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
@@ -46,35 +43,38 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
                     @Override
                     public void fill(Menu menu, int index) {
                         final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-                        final ISelection selection = window.getActivePage().getSelection();
-                        if(selection instanceof IStructuredSelection){
-                            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
-                            Map<Command, String> enabledCommands = CdmViewerUtil.getAvailableViewers(firstElement);
+                        IWorkbenchPage activePage = window.getActivePage();
+                        if(activePage!=null){
+                               final ISelection selection = activePage.getSelection();
+                               if(selection instanceof IStructuredSelection){
+                                       Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                                       Map<Command, String> enabledCommands = CdmViewerUtil.getAvailableViewers(firstElement);
 
-                            //check if only one or multiple viewers/commands are available
-                            if(enabledCommands.size()==1){
-                                Entry<Command, String> entry = enabledCommands.entrySet().iterator().next();
-                                final Command command = entry.getKey();
-                                String viewerName = entry.getValue();
+                                       //check if only one or multiple viewers/commands are available
+                                       if(enabledCommands.size()==1){
+                                               Entry<Command, String> entry = enabledCommands.entrySet().iterator().next();
+                                               final Command command = entry.getKey();
+                                               String viewerName = entry.getValue();
 
-                                MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
-                                addItem.setText(String.format(Messages.CdmViewerContextMenu_OPEN, viewerName));
-                                addItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
-                            }
-                            else if(enabledCommands.size()>1){
-                                MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
-                                addItem.setText(Messages.CdmViewerContextMenu_OPEN_IN);
-                                Menu addMenu = new Menu(menu);
-                                addItem.setMenu(addMenu);
-                                for(Entry<Command, String> entry:enabledCommands.entrySet()){
-                                    final Command command = entry.getKey();
-                                    String viewerName = entry.getValue();
+                                               MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
+                                               addItem.setText(String.format(Messages.CdmViewerContextMenu_OPEN, viewerName));
+                                               addItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
+                                       }
+                                       else if(enabledCommands.size()>1){
+                                               MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
+                                               addItem.setText(Messages.CdmViewerContextMenu_OPEN_IN);
+                                               Menu addMenu = new Menu(menu);
+                                               addItem.setMenu(addMenu);
+                                               for(Entry<Command, String> entry:enabledCommands.entrySet()){
+                                                       final Command command = entry.getKey();
+                                                       String viewerName = entry.getValue();
 
-                                    MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
-                                    menuItem.setText(viewerName);
-                                    menuItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
-                                }
-                            }
+                                                       MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
+                                                       menuItem.setText(viewerName);
+                                                       menuItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
+                                               }
+                                       }
+                               }
                         }
                     }
 
@@ -98,14 +98,7 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
             Map<String, UUID> params = new HashMap<String, UUID>();
             //for generic UuidAndTitleCache objects try to load the object
             if (selectedObject instanceof UuidAndTitleCache){
-                UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache)selectedObject;
-                Class type = uuidAndTitleCache.getType();
-                if(type == Taxon.class || type == Synonym.class){
-                    selectedObject = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
-                }
-                else if(SpecimenOrObservationBase.class.isAssignableFrom(type)){
-                    selectedObject = CdmStore.getService(IOccurrenceService.class).load(uuidAndTitleCache.getUuid());
-                }
+                selectedObject = CdmStore.getCommonService().find(CdmBase.class, ((UuidAndTitleCache)selectedObject).getUuid());
             }
             if(selectedObject instanceof ICdmBase){
                 params.put(command.getId()+".uuid", ((ICdmBase) selectedObject).getUuid()); //$NON-NLS-1$
@@ -121,9 +114,8 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
             } catch (NotDefinedException nde) {
                 throw new RuntimeException("Could not find open command: " + command.getId()); //$NON-NLS-1$
             } catch (Exception exception) {
-                MessagingUtils.error(getClass(), "An exception occured while trying execute "+command.getId(), exception); //$NON-NLS-1$
+                MessagingUtils.error(getClass(), "An exception occured while trying to execute "+command.getId(), exception); //$NON-NLS-1$
             }
-            PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getSelection();
         }
     }
 
index 698f94233e6309f5ca1ac70eebfaaa8b31699df1..019f04b879e40df581988398d6b93f49dcdbde3b 100644 (file)
@@ -19,11 +19,6 @@ import org.eclipse.core.runtime.Platform;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.commands.ICommandService;
 
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -52,13 +47,7 @@ public class CdmViewerUtil {
             //for generic UuidAndTitleCache objects try to load the object
             if (input instanceof UuidAndTitleCache){
                 UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache)input;
-                Class type = uuidAndTitleCache.getType();
-                if(type == Taxon.class || type == Synonym.class){
-                    input = CdmStore.getService(ITaxonService.class).load(uuidAndTitleCache.getUuid());
-                }
-                else if(SpecimenOrObservationBase.class.isAssignableFrom(type)){
-                    input = CdmStore.getService(IOccurrenceService.class).load(uuidAndTitleCache.getUuid());
-                }
+                input = CdmStore.getCommonService().find(uuidAndTitleCache.getType(), uuidAndTitleCache.getUuid());
             }
 
 
@@ -74,7 +63,6 @@ public class CdmViewerUtil {
                         if(selectionClass.isAssignableFrom(input.getClass())){
                             ICommandService commandService = (ICommandService)PlatformUI.getWorkbench().getService(ICommandService.class);
                             Command command = commandService.getCommand(commandId);
-                            //TODO: maybe pass the command directly instead of just the command id
                             if(command.isEnabled()){
                                 commandViewerNameMap.put(command, viewerName);
                             }
index 17b425154a014984a8497b7d0dc74230f97683bf..c746c5067ecb97bf16bcf16b15d1761ba860ea6c 100644 (file)
@@ -55,7 +55,7 @@ public class BioCaseEditorInput extends DataImportEditorInput<SpecimenOrObservat
             //FIXME move ABCD import to cdmlib -> this will also get rid of the transient services
             InputStream resultStream;
             resultStream = new BioCaseQueryServiceWrapper().query(query, endPoint);
-            Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(resultStream, null, false);
+            Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(endPoint, null, false);
            /* TransientCdmRepository repo =
                     new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
             configurator.setCdmAppController(repo);
old mode 100644 (file)
new mode 100755 (executable)
index 7bd1765..6662373
@@ -1,6 +1,8 @@
 package eu.etaxonomy.taxeditor.view.dataimport;
 
 import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.http.client.ClientProtocolException;
 import org.apache.log4j.Logger;
@@ -89,7 +91,10 @@ public class DataImportEditorContextMenu extends CompoundContributionItem {
                                     public void handleEvent(Event event) {
                                         try{
                                             DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet(gbifResponse);
-                                            final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(response.getUnitId()), response.getEndpoint());
+                                            Set<String[]> unitIds = new HashSet<String[]>();
+                                            String[] tripleId = {response.getUnitId()};
+                                            unitIds.add(tripleId);
+                                           /* final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(unitIds), response.getEndpoint());
                                            // EditorUtil.open(input);
                                             Job queryJob = new Job("Querying for original record...") {
 
@@ -99,7 +104,7 @@ public class DataImportEditorContextMenu extends CompoundContributionItem {
                                                     return Status.OK_STATUS;
                                                 }
                                             };
-                                            queryJob.schedule();
+                                            queryJob.schedule();*/
                                         } catch (ClientProtocolException e) {
                                             logger.error("Query for single record failed.", e);
                                         } catch (IOException e) {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/GbifResponseComparator.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/GbifResponseComparator.java
new file mode 100755 (executable)
index 0000000..a376ea9
--- /dev/null
@@ -0,0 +1,57 @@
+package eu.etaxonomy.taxeditor.view.dataimport;
+
+import java.util.Comparator;
+
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+
+public class GbifResponseComparator implements Comparator<GbifResponse> {
+       
+       @Override
+       public int compare(GbifResponse response1, GbifResponse response2) {
+               if (response1 == response2){
+                       return 0;
+               }
+               if (response1 == null){
+                       return -1;                      
+               }
+               if (response2 == null){
+                       return 1;
+               }
+               
+               if (!response1.getDataSetProtocol().equals(response2.getDataSetProtocol())){
+                       if (response1.getDataSetProtocol().equals(GbifDataSetProtocol.DWC_ARCHIVE) && response2.getDataSetProtocol().equals(GbifDataSetProtocol.BIOCASE)){
+                               return -1;
+                       }
+                       if (response2.getDataSetProtocol().equals(GbifDataSetProtocol.DWC_ARCHIVE) && response1.getDataSetProtocol().equals(GbifDataSetProtocol.BIOCASE)){
+                               return 1;
+                       }
+                       if (response1.getDataSetProtocol() == null){
+                               return -1;
+                       }
+                       if (response2.getDataSetProtocol() == null){
+                               return 1;
+                       }
+               } else{
+                       if (response1.getDataSetUri() == response2.getDataSetUri()){
+                               return 0;
+                       }
+                       if (response1.getDataSetUri() == null){
+                               return -1;
+                       }
+                       if (response2.getDataSetUri() == null){
+                               return -2;
+                       }
+                       if (response1.getDataSetProtocol().equals(GbifDataSetProtocol.BIOCASE)){
+                               
+                               return response1.getDataSetUri().compareTo(response2.getDataSetUri());
+                       }
+                       if (response1.getDataSetProtocol().equals(GbifDataSetProtocol.DWC_ARCHIVE)){
+                               return response1.getDataSetUri().compareTo(response2.getDataSetUri());
+                       }
+               }
+               
+               return 0;
+       }
+
+}
index d6fd333526db5fa3198af583576bf6e7203b2893..96938f2bbc017e391fd8a976470c859dbbc13c72 100644 (file)
 package eu.etaxonomy.taxeditor.view.dataimport;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.http.client.ClientProtocolException;
+import org.eclipse.core.runtime.jobs.Job;
 
+import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper;
 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
+import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE;
+import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author pplitzner
@@ -48,16 +61,46 @@ public class GbifResponseImportView extends DataImportView<GbifResponse> {
     public void query() {
         String errorMessage = "Could not execute query " + query;
         try{
-            Collection<GbifResponse> results = new GbifQueryServiceWrapper().query(query);
-            setResults(results);
-        } catch (ClientProtocolException e) {
-            logger.error(errorMessage, e);
-        } catch (IOException e) {
-            logger.error(errorMessage, e);
-        } catch (URISyntaxException e) {
-            logger.error(errorMessage, e);
+            //Collection<GbifResponse> results = new GbifQueryServiceWrapper().query(query);
+            //setResults(results);
+            
+           // String errorMessage = "Could not execute query " + query;
+
+       //     Collection<SpecimenOrObservationBase<?>> results = new ArrayList<SpecimenOrObservationBase<?>>();
+                Collection<GbifResponse> results = new GbifQueryServiceWrapper().query(query);
+                               
+                setResults(results);
+               
+               
+//               
+               // results = repo.getUnits();
+                
+            } catch (ClientProtocolException e) {
+                logger.error(errorMessage, e);
+            } catch (IOException e) {
+                logger.error(errorMessage, e);
+            } catch (URISyntaxException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
         }
 
-    }
+//            setResults(results);
+//
+//        }
+//        } catch (ClientProtocolException e) {
+//            logger.error(errorMessage, e);
+//        } catch (IOException e) {
+//            logger.error(errorMessage, e);
+//        } catch (URISyntaxException e) {
+//            logger.error(errorMessage, e);
+//        }
+
+  //  }
+    
+   
+    
+
+       
 
 }
index 99791e0798c60bca84f9fce652f4326aabd2367c..b3ca3f46028546d993cc841f357f47cab19b58a0 100644 (file)
@@ -1,7 +1,20 @@
 package eu.etaxonomy.taxeditor.view.dataimport;
 
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.http.client.ClientProtocolException;
 import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.action.Action;
+import org.eclipse.jface.text.source.Annotation;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.ui.IWorkbenchPart;
@@ -11,7 +24,13 @@ import org.eclipse.ui.PlatformUI;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.DataSetResponse;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper;
 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
+import eu.etaxonomy.cdm.io.specimen.gbif.in.*;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
@@ -21,6 +40,8 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class SaveImportedSpecimenAction extends Action {
 
     private final Logger logger = Logger.getLogger(SaveImportedSpecimenAction.class);
+    
+    private Comparator<GbifResponse> comparator;
 
     /* (non-Javadoc)
      * @see org.eclipse.jface.action.Action#run()
@@ -32,33 +53,87 @@ public class SaveImportedSpecimenAction extends Action {
         if(activePart instanceof DataImportView<?>){
             DataImportView<?> dataImportView = (DataImportView<?>)activePart;
             Table table = dataImportView.getTable();
+            Collection<GbifResponse> checkedResults = new HashSet<GbifResponse>();
+            Object data;
+            Set<String[]> unitIdsGbif = new HashSet<String[]>();
+            Set<String[]> unitIdsBioCase = new HashSet<String[]>();
+            List<GbifResponse> biocaseResponses = new ArrayList<GbifResponse>();
+            
             for(TableItem item:table.getItems()){
                 if(item.getChecked()){
                     //Save Specimen
-                    Object data = item.getData();
-                    if(data instanceof GbifResponse){
-                        data = ((GbifResponse) item.getData()).getDerivedUnitFacade().innerFieldUnit();
-                    }
-                    if(data instanceof SpecimenOrObservationBase){
-                        ConversationHolder conversation = dataImportView.getConversationHolder();
-                        SpecimenOrObservationBase<?> specimen = (SpecimenOrObservationBase<?>) data;
-                        conversation.bind();
-                        IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class);
-                        for(ICdmBase cdmEntity:occurrenceService.getNonCascadedAssociatedElements(specimen)){
-                            if(cdmEntity instanceof DefinedTermBase){
-                                persistTerm((DefinedTermBase<?>) cdmEntity, CdmStore.getService(ITermService.class), conversation);
-                            }
-                            else if(cdmEntity instanceof TaxonNameBase){
-                                //user interaction
-                            }
-                        }
-                        occurrenceService.saveOrUpdate(specimen);
-                        dataImportView.getConversationHolder().commit(true);
-                    }
+                        data = item.getData();
+                        if(data instanceof GbifResponse){
+                                checkedResults.add((GbifResponse)item.getData());
+                        }
                 }
+            }
+            String[] tripleId ;
+                for (GbifResponse response:checkedResults){
+                       if (response != null){
+                               tripleId = response.getTripleID();
+                               
+                               if (response.getDataSetProtocol().equals(GbifDataSetProtocol.BIOCASE)){
+                                       biocaseResponses.add(response);
+                                       
+                               }else{
+                                       unitIdsGbif.add(tripleId);
+                               }
+                               
+                                       
+                       }
+                }
+                Collections.sort(biocaseResponses, getComparator()); 
+                URI dataSetUri = null;
+                Abcd206ImportConfigurator configuratorAbcd;
+                
+                List<Abcd206ImportConfigurator> abcdConfigurators = new ArrayList<Abcd206ImportConfigurator>();
+                DataSetResponse dataSetResponse;
+                OccurenceQuery bioCaseOccurrenceQuery = null;
+                for (GbifResponse response: biocaseResponses){
+                       try {
+                                               dataSetResponse = new GbifQueryServiceWrapper().queryOriginalDataSet(response);
+                                               dataSetUri = dataSetResponse.getEndpoint();
+                                       } catch (ClientProtocolException e) {
+                                               // TODO Auto-generated catch block
+                                               e.printStackTrace();
+                                       } catch (IOException e) {
+                                               // TODO Auto-generated catch block
+                                               e.printStackTrace();
+                                       }
+                       if (!response.getDataSetUri().equals(dataSetUri)){
+                               configuratorAbcd = Abcd206ImportConfigurator.NewInstance(dataSetUri, null, false);
+                               configuratorAbcd.addMediaAsMediaSpecimen(true);
+                               if (configuratorAbcd != null){
+                                       abcdConfigurators.add(configuratorAbcd);
+                               }
+                               unitIdsBioCase = new HashSet<String[]>();
+                               bioCaseOccurrenceQuery = new OccurenceQuery(unitIdsBioCase);
+                               configuratorAbcd.setOccurenceQuery(bioCaseOccurrenceQuery);
+                       }
+                       tripleId = response.getTripleID();
+                       unitIdsBioCase.add(tripleId);
+                }
+              
+                OccurenceQuery query = new OccurenceQuery(unitIdsGbif);
+                GbifImportConfigurator configurator = GbifImportConfigurator.newInstance(query);
+                configurator.setSourceReferenceTitle("Import Gbif data");
+                
+               
+                
+                //  configurator.setQuery(query);
+               
+               Job bioCaseJob = CdmStore.getImportManager().createIOServiceJob(abcdConfigurators);
+               CdmStore.getImportManager().run(bioCaseJob);
+               
+               Job gbifJob = CdmStore.getImportManager().createIOServiceJob(configurator);
+               CdmStore.getImportManager().run(gbifJob);
+               
+               
+                
             }
         }
-    }
 
     private void persistTerm(DefinedTermBase<?> term, ITermService termService, ConversationHolder conversation){
         if(term!=null){
@@ -68,8 +143,7 @@ public class SaveImportedSpecimenAction extends Action {
             }
         }
     }
-
-
+     
     /* (non-Javadoc)
      * @see org.eclipse.jface.action.Action#getText()
      */
@@ -77,5 +151,13 @@ public class SaveImportedSpecimenAction extends Action {
     public String getText() {
         return "Import";
     }
-
+    
+    private Comparator<GbifResponse> getComparator(){
+       if (comparator == null){
+               comparator = new GbifResponseComparator();
+       }
+       return comparator;
+    }
+    
+    
 }
index 1c16a6fc5ad47d8e9969a04d4554d605456e5a5d..eb01cbb79d91c326f8b7519e2c5a118dcc8f2c84 100644 (file)
@@ -71,15 +71,9 @@ public class SpecimenImportView extends DataImportView<SpecimenOrObservationBase
 //                    new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
             //configurator.setCdmAppController(repo);
             configurator.setAddMediaAsMediaSpecimen(true);
-            if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                Job job = CdmStore.getImportManager().createIOServiceJob(configurator, resultStream, SOURCE_TYPE.INPUTSTREAM);
-                CdmStore.getImportManager().run(job);
-            } else {
-                configurator.setSource(resultStream);
-                CdmDefaultImport<Abcd206ImportConfigurator> importer = new CdmDefaultImport<Abcd206ImportConfigurator>();
-                importer.invoke(configurator);
-            }
-           // results = repo.getUnits();
+            Job job = CdmStore.getImportManager().createIOServiceJob(configurator, resultStream, SOURCE_TYPE.INPUTSTREAM);
+            CdmStore.getImportManager().run(job);
+            
             setResults(results);
         } catch (ClientProtocolException e) {
             logger.error(errorMessage, e);
index c89e34ea7a77ca0f0f3052aac4ae3090df7ef3ca..a33c03d9a169d735278a1ee78804ce9f12984bf3 100644 (file)
@@ -34,10 +34,10 @@ import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase;
 import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
 import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
-import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportReport;
+
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.AbcdParseUtility;
+import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.UnitAssociationWrapper;
-
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -78,62 +78,63 @@ public class SpecimenSearchWizard extends Wizard implements IImportWizard {
         Abcd206ImportConfigurator configurator =  CdmStore.getImportManager().AbcdConfigurator();
         configurator.setOccurenceQuery(query);
         configurator.setSourceUri(providerSelectionPage.getEndPoint());
+        configurator.setAddMediaAsMediaSpecimen(true);
         configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
-        if(CdmStore.getCurrentSessionManager().isRemoting() ) {
-            //Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.INPUTSTREAM);
-            //CdmStore.getImportManager().run(job);
-            try {
-                serviceWrapper = providerSelectionPage.getQueryServiceWrapper();
-                InputStream stream = null;
-
-                final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-                IWorkbenchPage activePart = window.getActivePage();
-                if (providerSelectionPage.getQueryType().equals(QueryType.BIOCASE)){
-                    stream =((BioCaseQueryServiceWrapper) serviceWrapper).query(query, configurator.getSourceUri());
-                    Abcd206ImportReport report = new Abcd206ImportReport();
-                    UnitAssociationWrapper unitNodesList = AbcdParseUtility.parseUnitsNodeList(stream, report);
-                    NodeList nodeList = unitNodesList.getAssociatedUnits();
-                    String prefix = unitNodesList.getPrefix();
-                    String associationType = unitNodesList.getAssociationType();
-                    URI uri =AbcdParseUtility.parseFirstUri(nodeList, report);
-                    String content = AbcdParseUtility.parseFirstTextContent(nodeList);
-                    System.out.println(content);
-
-
-                    SpecimenImportView specimenImportView = new SpecimenImportView();
-                    try {
-                        specimenImportView = (SpecimenImportView) activePart.showView(SpecimenImportView.ID);
-                        specimenImportView.setEndpoint(providerSelectionPage.getEndPoint());
-                        specimenImportView.setQuery(query);
-                        dataImportView = specimenImportView;
-                    } catch (PartInitException e) {
-                        // TODO Auto-generated catch block
-                        e.printStackTrace();
-
-                    }
-
-                } else{
-                    try {
-                       
-                        dataImportView = (GbifResponseImportView) activePart.showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""), IWorkbenchPage.VIEW_ACTIVATE);
-                                       
-                               //      (GbifResponseImportView) activePart.showView(GbifResponseImportView.ID);getWorkbench().getActiveWorkbenchWindow().getActivePage()
-                             // .showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""),IWorkbenchPage.VIEW_ACTIVATE);
-
-                    } catch (PartInitException e) {
-                        // TODO Auto-generated catch block
-                        e.printStackTrace();
-                    }
+      
+        //Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.INPUTSTREAM);
+        //CdmStore.getImportManager().run(job);
+        try {
+            serviceWrapper = providerSelectionPage.getQueryServiceWrapper();
+            InputStream stream = null;
+
+            final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+            IWorkbenchPage activePart = window.getActivePage();
+            if (providerSelectionPage.getQueryType().equals(QueryType.BIOCASE)){
+                stream =((BioCaseQueryServiceWrapper) serviceWrapper).query(query, configurator.getSourceUri());
+                SpecimenImportReport report = new SpecimenImportReport();
+                UnitAssociationWrapper unitNodesList = AbcdParseUtility.parseUnitsNodeList(stream, report);
+                NodeList nodeList = unitNodesList.getAssociatedUnits();
+                String prefix = unitNodesList.getPrefix();
+                String associationType = unitNodesList.getAssociationType();
+                URI uri =AbcdParseUtility.parseFirstUri(nodeList, report);
+                String content = AbcdParseUtility.parseFirstTextContent(nodeList);
+                System.out.println(content);
+
+
+                SpecimenImportView specimenImportView = new SpecimenImportView();
+                try {
+                    specimenImportView = (SpecimenImportView) activePart.showView(SpecimenImportView.ID);
+                    specimenImportView.setEndpoint(providerSelectionPage.getEndPoint());
+                    specimenImportView.setQuery(query);
+                    dataImportView = specimenImportView;
+                } catch (PartInitException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
 
                 }
 
+            } else{
+                try {
+                       
+                    dataImportView = (GbifResponseImportView) activePart.showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""), IWorkbenchPage.VIEW_ACTIVATE);
+                    dataImportView.setQuery(query);            
+                       //      (GbifResponseImportView) activePart.showView(GbifResponseImportView.ID);getWorkbench().getActiveWorkbenchWindow().getActivePage()
+                         // .showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""),IWorkbenchPage.VIEW_ACTIVATE);
+
+                } catch (PartInitException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
 
-            } catch (IOException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
             }
-           // CdmStore.getImportManager().run(configurator);
+
+
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
         }
+       // CdmStore.getImportManager().run(configurator);
+    
 //        try {
 //            switch (providerSelectionPage.getQueryType()) {
 //            case BIOCASE:
index ebe3b81bf3778ab995c7e2a5cb0728aa0c933e97..53c92df897ed0c121f314dfebee24ffc6459ce50 100644 (file)
@@ -27,12 +27,13 @@ import org.hibernate.LazyInitializationException;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
+import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.format.CdmFormatterFactory;
-import eu.etaxonomy.cdm.format.ICdmFormatter;
 import eu.etaxonomy.cdm.format.ICdmFormatter.FormatKey;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Identifier;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
@@ -63,7 +64,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
     private static Set<SingleRead> multiLinkSingleReads;
 
     private static Map<DerivedUnit, Collection<SpecimenTypeDesignation>> typeDesignations;
-    
+
     private ConversationHolder conversation;
 
     private static DefinedTerm photoTerm = null;
@@ -152,7 +153,17 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                 FormatKey.MEDIA_TITLE, FormatKey.SPACE,
                 FormatKey.MEDIA_ARTIST, FormatKey.SPACE
         };
-        return CdmFormatterFactory.format(element, formatKeys);
+        String text = CdmFormatterFactory.format(element, formatKeys);
+        if(element instanceof IdentifiableEntity){
+               IdentifiableEntity identifiableEntity = (IdentifiableEntity) element;
+               if(identifiableEntity.isProtectedTitleCache()){
+                       text = identifiableEntity.getTitleCache();
+               }
+        }
+        if(CdmUtils.isBlank(text)){
+               return "[-]";
+        }
+               return text;
     }
 
     /** {@inheritDoc} */
@@ -368,7 +379,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                     }
                     return hasCharacterData?ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE_CHARACTER_DATA):ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE);
                 }
-                else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.Media){
+                else if(derivedUnit.getRecordBasis().isKindOf(SpecimenOrObservationType.Media)){
                     if(derivedUnit.getKindOfUnit()!=null){
                         if(derivedUnit.getKindOfUnit().equals(getArtworkTerm())){
                             return hasCharacterData?ImageResources.getImage(ImageResources.ARTWORK_DERIVATE_CHARACTER_DATA):ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
@@ -398,7 +409,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                 }
             }
         }
-        return super.getImage(element);
+        return ImageResources.getImage(ImageResources.DEFAULT_DERIVATIVE);
     }
 
     public static Identifier<DnaSample> getCurrentSampleDesignation(CdmBase entity) {
index 0f0df4522f04f5a863b8c5b756af12afdf544653..d95401969d5395a93c190252653c16c8e7c9277c 100644 (file)
@@ -23,6 +23,7 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
@@ -39,7 +40,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartContentHasSupplementalData{
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.forms.det"{trunked}</code> */
-       public static String ID = "eu.etaxonomy.taxeditor.view.detail";
+       public static String ID = "eu.etaxonomy.taxeditor.view.detail"; //$NON-NLS-1$
 
        private DetailsViewer viewer;
 
@@ -70,7 +71,6 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC
 
         if((part instanceof IEditorPart) || (part instanceof IPartContentHasDetails)) {
             if(structuredSelection.size() != 1){
-                setPartName(createPartTitle(null));
                 showEmptyPage();
                 return;
             }
@@ -80,37 +80,34 @@ public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartC
                 // do show the map for distributions
                 Feature feature = ((FeatureNodeContainer) ((IStructuredSelection) selection).getFirstElement()).getFeature();
                 if(!feature.equals(Feature.DISTRIBUTION())){
-                    setPartName(createPartTitle(null));
                     showEmptyPage();
                     return;
                 }
             }
-
-
-            setPartName(createPartTitle(((IStructuredSelection) selection).getFirstElement()));
             showViewer(part, structuredSelection);
         }else{
-            setPartName(createPartTitle(null));
             showEmptyPage();
         }
        }
 
-       private String getViewName(){
-           return "Details";
+       @Override
+       protected String getViewName(){
+           return Messages.DetailsViewPart_VIEWER_NAME;
        }
 
-       private String createPartTitle(Object selectedObject){
+       @Override
+       protected String createPartTitle(Object selectedObject){
            if(selectedObject!=null){
                if(selectedObject instanceof TreeNode){
                    selectedObject = ((TreeNode) selectedObject).getValue();
                }
                if(selectedObject instanceof SpecimenOrObservationBase){
-                   return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, SpecimenOrObservationBase.class).getRecordBasis();
+                   return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, SpecimenOrObservationBase.class).getRecordBasis(); //$NON-NLS-1$
                }
                if(selectedObject instanceof CdmBase){
-                   return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, CdmBase.class).getClass().getSimpleName();
+                   return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, CdmBase.class).getClass().getSimpleName(); //$NON-NLS-1$
                }
-               return getViewName()+": "+selectedObject.getClass().getSimpleName();
+               return getViewName()+": "+selectedObject.getClass().getSimpleName(); //$NON-NLS-1$
            }
            return getViewName();
        }
index 0b4be864f804dd9ad92dc4bce05a41f77c82da66..2a12e89b03908859d9eb0fb4bdd7b6d175856531 100644 (file)
@@ -48,6 +48,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
@@ -129,7 +130,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
 public class DetailsViewer extends AbstractCdmDataViewer {
 
     private ISelection selection;
-
+    
     public DetailsViewer(Composite parent, AbstractCdmViewPart viewPart) {
         super(parent, viewPart);
     }
@@ -780,4 +781,9 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         addPart(definedTermDetailSection);
     }
 
+       @Override
+       public void update(CdmDataChangeMap arg0) {
+               
+       }
+
 }
index 984c3c6f206199c1cc44e0afb2b28bdc8adff4e4..2c69ed5ae5f68d5d4a73419dc73f40c599c5794f 100644 (file)
@@ -22,6 +22,7 @@ import org.eclipse.ui.part.EditorPart;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.taxeditor.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
@@ -38,7 +39,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 public class SupplementalDataViewPart extends AbstractCdmEditorViewPart {
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.supp"{trunked}</code> */
-       public static final String ID = "eu.etaxonomy.taxeditor.view.supplementalData";
+       public static final String ID = "eu.etaxonomy.taxeditor.view.supplementalData"; //$NON-NLS-1$
 
        private SupplementalDataViewer viewer;
 
@@ -123,4 +124,10 @@ public class SupplementalDataViewPart extends AbstractCdmEditorViewPart {
                // TODO Auto-generated method stub
                return false;
        }
+
+
+       @Override
+       protected String getViewName() {
+               return Messages.SupplementalDataViewPart_VIEWER_NAME;
+       }
 }
index 2bf4227ddc3a3c2323e874705359e0486906c069..17630b9ea1b512e7f5ff8ca2f59c43358dfd38f1 100644 (file)
@@ -22,6 +22,7 @@ import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.IElementHasDetails;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -213,4 +214,8 @@ public class SupplementalDataViewer extends AbstractCdmDataViewer implements ISe
                        setInput(selection.getFirstElement());
                }
        }
+       
+       @Override
+       public void update(CdmDataChangeMap arg0) {
+       }
 }
index ee9da7f5ab9f87309256a09b5e4cbb162b142045..6d931bfd60da9d1b704f4928fb33efea1871f23b 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: eu.etaxonomy.taxeditor.test
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.test;singleton:=true
-Bundle-Version: 4.0.0.qualifier
+Bundle-Version: 4.3.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: EDIT
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
index f67047a0caca857d4ab47a25a3fc9329b5656f98..88d885b85f2d254e7ab774efadd310f950189b27 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.0.0-SNAPSHOT</version>
+    <version>4.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>eu.etaxonomy.taxeditor.test</artifactId>
   <packaging>eclipse-test-plugin</packaging>
           <daemon>true</daemon>
         </configuration>
         <dependencies>
-            <dependency>
-            <groupId>com.mchange</groupId>
-            <artifactId>c3p0</artifactId>
-            <!-- 
-              IMPORTANT!!!
-              this must exactly match the version as set in 
-              cdmlib-parent pom.xml
-            -->
-            <version>${c3p0.version}</version>
-          </dependency>
-          <!-- DATABASE DRIVER -->
-          <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <version>${h2.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>${mysql.version}</version>
-          </dependency>
+               <dependency>
+                       <groupId>eu.etaxonomy</groupId>
+                       <artifactId>cdmlib-db</artifactId>
+                       <version>${cdmlib.version}</version>
+               </dependency>
+                 <!-- Do we still need this? If yes, should we move it to cdmlib-db? -->
           <dependency>
               <groupId>commons-dbcp</groupId>
               <artifactId>commons-dbcp</artifactId>
               <version>1.4</version>
           </dependency>
-<!--           <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.17</version>
-          </dependency> -->
-          <!--  
-          <dependency>
-            <groupId>eu.etaxonomy</groupId>
-            <artifactId>cdmlib-persistence</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-            </exclusions>
-          </dependency>
-          -->
         </dependencies>
         <executions>
           <execution>
index d927cb8e5dfbe508bfa65436275ddf203daed9df..db9cbc3649a4c9eedf4345a60fa0600fd327daa4 100644 (file)
@@ -207,7 +207,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         rootChildNode.addChild(grandChildNode);
 
 
-        polytomousKeyNodeService.merge(grandChildNode);
+        polytomousKeyNodeService.merge(grandChildNode, true);
 
 
         Assert.assertFalse(pKey.getRoot().getChildAt(0).getChildAt(0).getId() == 0);
@@ -244,7 +244,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         Taxon taxon = CdmBase.deproxy(taxonService.find(taxon1Uuid),Taxon.class);
         pkeynode.getChildAt(1).setTaxon(taxon);
 
-        polytomousKeyService.merge(pkey);
+        polytomousKeyService.merge(pkey, true);
 
         pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
 
@@ -259,7 +259,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
 
         Assert.assertEquals(pkeynode.getChildAt(1).getTaxon(), taxon);
 
-        polytomousKeyService.merge(pkey);
+        polytomousKeyService.merge(pkey, true);
 
         pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
 
@@ -295,7 +295,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
 
         Assert.assertSame(subkey1, subkey2);
 
-        polytomousKeyService.merge(pkey);
+        polytomousKeyService.merge(pkey, true);
     }
 
     @Test
@@ -321,7 +321,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
 
         Assert.assertSame(subkey1, subkey2);
 
-        polytomousKeyService.merge(pkey);
+        polytomousKeyService.merge(pkey, true);
     }
 
 
@@ -340,7 +340,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         label2.size();
 
 
-        polytomousKeyService.merge(pkey);
+        polytomousKeyService.merge(pkey, true);
     }
 
     @Test
@@ -460,12 +460,21 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         newTerm.setLabel("CreateTest");
 
         try {
-                if(termService.findByRepresentationText("UpdateTest", Feature.class, null, null) != null) {
-                       Pager<Feature> terms =  termService.findByRepresentationText("UpdateTest", Feature.class, null, null);
-                       if (!terms.getRecords().isEmpty()){
-                               termService.delete(terms.getRecords().get(0).getUuid());
+               List<Feature> features = termService.list(Feature.class, 100, 0, null, null);
+               List<UUID> updateTerms = new ArrayList<UUID>();
+               for (Feature feature:features){
+                       if (feature.getLabel().equals("UpdateTest")){
+                               updateTerms.add(feature.getUuid());
                        }
-             }
+               }
+               termService.delete(updateTerms);
+               
+//              if(termService.findByRepresentationText("UpdateTest", Feature.class, null, null) != null) {
+//                     Pager<Feature> terms =  termService.findByRepresentationText("UpdateTest", Feature.class, null, null);
+//                     if (!terms.getRecords().isEmpty()){
+//                             termService.delete(terms.getRecords().get(0).getUuid());
+//                     }
+//             }
 
             Assert.assertNotNull(newTerm);
             TermVocabulary vocNameFeature = vocabularyService.find(vocNameFeatureUuid);
@@ -478,8 +487,10 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
 
             vocNameFeature.addTerm(newTerm);
 
-            vocs = vocabularyService.merge(vocs);
-            for(TermVocabulary voc : vocs) {
+            List<MergeResult<TermVocabulary>> mergeResults = vocabularyService.merge(vocs, true);
+            
+            for(MergeResult<TermVocabulary> result : mergeResults){
+               TermVocabulary voc = result.getMergedEntity();
                 if(voc.getUuid().equals(vocNameFeatureUuid)) {
                     vocNameFeature = voc;
                 }
@@ -518,7 +529,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         // Test for #5138
         Person person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().load(personUuid);
         person.setFirstname("Me");
-        CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
+        CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person, true);
     }
 
 
@@ -529,7 +540,7 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
         person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().load(person.getUuid());
         person.setFirstname("Some");
-        CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
+        CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person, true);
     }
 
     @Test
index 87c7de086c8bca23e12ac599c1ba2802515f3d7f..03d1c3ee48869ea8b3b2cf2b59d9e92e8e84c8e1 100644 (file)
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+       <classpathentry exported="true" kind="lib" path="lib/jdbc4-2.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/postgresql-9.4-1206-jdbc4.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.38.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/h2-1.4.190.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.11.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.5.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.24.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/jetty-all-9.2.9.v20150224.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>
index a5a15a73e26eb890bb79d3467c4431cd435f4978..6155f4bdd11ad2342f53408f10bebae3cfa95d22 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Webapp
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.webapp;singleton:=true
-Bundle-Version: 4.2.0
+Bundle-Version: 4.3.0
 Require-Bundle: org.eclipse.core.runtime
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
@@ -11,10 +11,12 @@ Bundle-ClassPath: .,
  lib/log4j-1.2.17.jar,
  lib/jetty-all-9.2.9.v20150224.jar,
  lib/javax.servlet-api-3.1.0.jar,
- lib/mysql-connector-java-5.1.24.jar,
  lib/c3p0-0.9.5.2.jar,
  lib/h2-1.4.190.jar,
- lib/mchange-commons-java-0.2.11.jar
+ lib/mchange-commons-java-0.2.11.jar,
+ lib/mysql-connector-java-5.1.38.jar,
+ lib/postgresql-9.4-1206-jdbc4.jar,
+ lib/jdbc4-2.0.jar
 Bundle-Vendor: EDIT
 Import-Package: org.eclipse.jface.resource,
  org.eclipse.ui.plugin
index be57fa3593e61756f708400c35c20a072c31b6ed..a5a7a9f2daaf8f900ee36c5175164aacfab19b7b 100644 (file)
@@ -4,4 +4,7 @@ bin.includes = META-INF/,\
                .,\
                lib/,\
                lib/h2-1.4.190.jar,\
-               lib/mchange-commons-java-0.2.11.jar
+               lib/mchange-commons-java-0.2.11.jar,\
+               lib/mysql-connector-java-5.1.38.jar,\
+               lib/postgresql-9.4-1206-jdbc4.jar,\
+               lib/jdbc4-2.0.jar
index dad310c015c0b1fa07dc02f59ce0c5dee40ba18d..61185ebf8cd6137b1678747b1e62b26309036fc9 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>eu.etaxonomy.taxeditor.webapp</artifactId>
@@ -53,7 +53,7 @@
             </goals>
             <configuration>
               <includeArtifactIds>
-                c3p0,mchange-commons-java,h2,mysql-connector-java,log4j,javax.servlet-api,jetty-all
+                log4j,javax.servlet-api,jetty-all
               </includeArtifactIds>
               <outputDirectory>
                 ${basedir}/lib
               <excludeTransitive>true</excludeTransitive>
             </configuration>
           </execution>
+          <execution>
+            <id>copy-dependency-jars-transitive</id>
+            <phase>validate</phase>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <configuration>
+              <includeArtifactIds>
+                c3p0,mchange-commons-java,h2,postgresql,mysql-connector-java,jdbc4
+              </includeArtifactIds>
+              <outputDirectory>
+                ${basedir}/lib
+              </outputDirectory>
+              <overWriteReleases>true</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <excludeTransitive>false</excludeTransitive>
+            </configuration>
+          </execution>
         </executions>
       </plugin>
       <plugin>
       <type>war</type>
     </dependency>
     <dependency>
-      <groupId>com.h2database</groupId>
-      <artifactId>h2</artifactId>
-      <version>${h2.version}</version>
-    </dependency>
-    <dependency>
-        <groupId>mysql</groupId>
-        <artifactId>mysql-connector-java</artifactId>
-        <version>5.1.24</version>
+      <groupId>eu.etaxonomy</groupId>
+      <artifactId>cdmlib-db</artifactId>
+      <version>${cdmlib.version}</version>
     </dependency>
-     <dependency>
-      <groupId>com.mchange</groupId>
-      <artifactId>c3p0</artifactId>
-      <version>${c3p0.version}</version>
-     </dependency>
-     <dependency>
-        <groupId>com.mchange</groupId>
-        <artifactId>mchange-commons-java</artifactId>
-        <version>${mchange-commons-java.version}</version>
-     </dependency>
      <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
index 40be34f68e1e2ca0f8f128b2828eca8d8af47e33..f7de4661e7de26981a5ff6d2cd71b03be38de5ad 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="4.2.0">
+<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="4.3.0">
   <aboutInfo>
     <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
     <text>
index 340c92e5c3c3460826eec21f6f84bf9183040094..60f29e6a1af78c6fc922ae228705f1210bda777e 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.jre" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" application="eu.etaxonomy.taxeditor.application.application" version="4.2.0" useFeatures="true" includeLaunchers="true">
+<product name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product.jre" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" application="eu.etaxonomy.taxeditor.application.application" version="4.3.0" useFeatures="true" includeLaunchers="true">
 
    <aboutInfo>
       <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
index 973831fb2a7fd2f08bdc801b490152b4915eb290..c9867a5a5865b9769b0b285655a5c8a3a37babee 100644 (file)
@@ -2,7 +2,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>4.2.0</version>
+    <version>4.3.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index f01bba3f6dd65d2f0a926478271edc218b458b37..ac61176b388b77193e8559732983acaf9be366a7 100644 (file)
 <unit id="org.eclipse.equinox.sdk.feature.group" version="3.7.1.R37x_v20110907-7M7W8i8eNV4WsRkue-4Vq4J6pCyW"/>
 <unit id="org.eclipse.zest.sdk.feature.group" version="1.3.0.v20110425-2050-67C18COMPIAKSVKGQaRTQTiSN8WP"/>
 <unit id="org.eclipse.pde.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>
-<repository location="http://download.eclipse.org/releases/indigo"/>
+<repository location="http://download.eclipse.org/releases/indigo/"/>
 </location>
 <location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.nebula.widgets.compositetable.feature.feature.group" version="1.0.0.201409040043"/>
-<repository location="http://download.eclipse.org/technology/nebula/archives/Q32014/release/"/>
+<repository location="http://archive.eclipse.org/nebula/Q32014/release/"/>
 </location>
 </locations>
 </target>
diff --git a/pom.xml b/pom.xml
index f4ee78e6a8b5f9937b0137284a159cd75da774cc..af2fe3cb50a758abf5b3d95a1318a46b59ea8ccf 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
   </prerequisites>
   <groupId>eu.etaxonomy</groupId>
   <artifactId>taxeditor-parent</artifactId>
-  <version>4.2.0</version>
+  <version>4.3.0</version>
   <name>EDIT Taxonomic Editor</name>
   <description>The Taxonomic Editor for EDIT's platform for
     cybertaxonomy
   <properties>
     <java.codelevel>1.7</java.codelevel>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <cdmlib.version>4.2.0</cdmlib.version>
+    <cdmlib.version>4.3.0</cdmlib.version>
     <!-- TODO can we use project.version ????? -->
     <tycho.version>0.22.0</tycho.version>
-    <taxeditor.version>4.2.0</taxeditor.version>
+    <taxeditor.version>4.3.0</taxeditor.version>
     <update.dir>snapshot</update.dir>
     <unitils.version>3.4.2</unitils.version>
     <log4j.version>1.2.17</log4j.version>
-    <!-- data base driver related properties -->
-    <mysql.version>5.1.38</mysql.version>
-    <h2.version>1.4.190</h2.version>
-    <!-- 
-      IMPORTANT!!!
-      c3p0.version must exactly match the version as 
-      set in cdmlib-parent pom.xml
-    -->
-    <c3p0.version>0.9.5.2</c3p0.version>
-    <!-- mchange-commons-java needs to match the version as defined in the c3p0/pom.xml -->
-    <mchange-commons-java.version>0.2.11</mchange-commons-java.version>
   </properties>
   <modules>
     <module>eu.etaxonomy.taxeditor.cdmlib</module>
     <repository>
       <id>eclipse-nebula</id>
       <layout>p2</layout>
-      <url>http://download.eclipse.org/technology/nebula/archives/Q32014/release/
-      </url>
+      <url>http://archive.eclipse.org/nebula/Q32014/release/</url>
     </repository>
     <repository>
       <id>eclipse-swtbot</id>
       <layout>p2</layout>
-      <url>http://download.eclipse.org/releases/indigo</url>
+      <url>http://download.eclipse.org/releases/indigo/</url>
     </repository>
   </repositories>
   <build>