From eca18c8bea2c988fad1af768a1e6776c60650d51 Mon Sep 17 00:00:00 2001 From: "n.hoffmann" Date: Wed, 9 Jun 2010 16:51:58 +0000 Subject: [PATCH] tabbed_properties branch merged into trunk completely --- .gitattributes | 100 ++- taxeditor-store/META-INF/MANIFEST.MF | 19 +- taxeditor-store/icons/Thumbs.db | Bin 109056 -> 0 bytes taxeditor-store/icons/add.gif | Bin 172 -> 318 bytes taxeditor-store/icons/back.gif | Bin 0 -> 327 bytes taxeditor-store/icons/binary.gif | Bin 0 -> 366 bytes taxeditor-store/icons/bookmark.gif | Bin 0 -> 595 bytes taxeditor-store/icons/category.gif | Bin 0 -> 218 bytes taxeditor-store/icons/clear.gif | Bin 0 -> 595 bytes taxeditor-store/icons/close.gif | Bin 0 -> 73 bytes taxeditor-store/icons/collapseall.gif | Bin 0 -> 157 bytes taxeditor-store/icons/configs.gif | Bin 0 -> 368 bytes taxeditor-store/icons/console.gif | Bin 0 -> 582 bytes taxeditor-store/icons/dates.gif | Bin 0 -> 181 bytes taxeditor-store/icons/debug.gif | Bin 0 -> 348 bytes taxeditor-store/icons/delete.gif | Bin 159 -> 351 bytes taxeditor-store/icons/eclipse.gif | Bin 0 -> 308 bytes taxeditor-store/icons/expandAll.jpg | Bin 0 -> 409 bytes taxeditor-store/icons/export.gif | Bin 0 -> 329 bytes taxeditor-store/icons/filter.gif | Bin 0 -> 211 bytes taxeditor-store/icons/flat.gif | Bin 0 -> 97 bytes taxeditor-store/icons/font.gif | Bin 0 -> 112 bytes taxeditor-store/icons/forward.gif | Bin 0 -> 327 bytes taxeditor-store/icons/help.gif | Bin 0 -> 622 bytes taxeditor-store/icons/hierarchical.gif | Bin 0 -> 101 bytes taxeditor-store/icons/home_nav.gif | Bin 0 -> 582 bytes taxeditor-store/icons/horizontal.gif | Bin 0 -> 374 bytes taxeditor-store/icons/import_wiz.gif | Bin 0 -> 327 bytes taxeditor-store/icons/lockedstate.gif | Bin 0 -> 255 bytes taxeditor-store/icons/maximize.gif | Bin 0 -> 69 bytes taxeditor-store/icons/min.gif | Bin 0 -> 67 bytes taxeditor-store/icons/plugin.gif | Bin 0 -> 328 bytes taxeditor-store/icons/print_edit.gif | Bin 0 -> 612 bytes taxeditor-store/icons/progress_stop.gif | Bin 0 -> 215 bytes taxeditor-store/icons/properties.gif | Bin 0 -> 577 bytes taxeditor-store/icons/refresh.gif | Bin 0 -> 330 bytes taxeditor-store/icons/restore.gif | Bin 0 -> 70 bytes taxeditor-store/icons/run.gif | Bin 0 -> 379 bytes taxeditor-store/icons/saveall_edit.gif | Bin 0 -> 604 bytes taxeditor-store/icons/saveas_edit.gif | Bin 0 -> 583 bytes taxeditor-store/icons/search.gif | Bin 0 -> 545 bytes taxeditor-store/icons/search_src.gif | Bin 0 -> 347 bytes taxeditor-store/icons/settings.gif | Bin 0 -> 369 bytes taxeditor-store/icons/smartmode_co.gif | Bin 0 -> 553 bytes taxeditor-store/icons/sort.gif | Bin 0 -> 153 bytes taxeditor-store/icons/step_done.gif | Bin 0 -> 343 bytes taxeditor-store/icons/synced.gif | Bin 0 -> 160 bytes taxeditor-store/icons/thin_close_view.gif | Bin 0 -> 846 bytes taxeditor-store/icons/thin_max_view.gif | Bin 0 -> 859 bytes taxeditor-store/icons/thin_restore_view.GIF | Bin 0 -> 853 bytes taxeditor-store/icons/trash.gif | Bin 0 -> 590 bytes taxeditor-store/icons/update.gif | Bin 0 -> 336 bytes taxeditor-store/icons/validate.gif | Bin 0 -> 558 bytes taxeditor-store/icons/vertical.gif | Bin 0 -> 352 bytes taxeditor-store/icons/view_menu.gif | Bin 0 -> 88 bytes taxeditor-store/icons/waiting.gif | Bin 0 -> 664 bytes taxeditor-store/icons/web.gif | Bin 0 -> 362 bytes taxeditor-store/plugin.xml | 182 +++++- .../datasource/CdmDataSourceRepository.java | 75 +-- .../handler/CloseConnectionHandler.java | 55 ++ .../view/CdmDataSourceLabelProvider.java | 44 +- .../datasource/view/CdmDataSourceView.java | 22 +- .../dialogs/DatasourceLauncherDialog.java | 180 ------ .../taxeditor/dialogs/LoginDialog.java | 6 +- .../dialogs/NewReferenceInputDialog.java | 85 ++- ...actFilteredCdmResourceSelectionDialog.java | 303 --------- .../FilteredAgentSelectionDialog.java | 130 ---- .../FilteredNameSelectionDialog.java | 103 --- .../FilteredPersonSelectionDialog.java | 76 --- .../FilteredReferenceSelectionDialog.java | 210 ------ .../FilteredTaxonNodeSelectionDialog.java | 187 ------ .../FilteredTaxonSelectionDialog.java | 78 --- .../FilteredTaxonomicTreeSelectionDialog.java | 82 --- ...lteredTeamOrPersonBaseSelectionDialog.java | 75 --- .../wizard/NomenclaturalCodeWizardPage.java | 182 +++--- .../taxeditor/model/AbstractUtility.java | 78 ++- .../taxeditor/model/ColorFactory.java | 23 + .../taxeditor/model/DescriptionHelper.java | 23 +- .../taxeditor/model/IContextListener.java | 29 + .../model/IPartContentHasDetails.java | 24 + .../taxeditor/model/ImageResources.java | 21 +- .../taxeditor/model/LineSelection.java | 84 +++ .../taxeditor/model/MementoHelper.java | 76 +++ .../etaxonomy/taxeditor/model/NameHelper.java | 9 +- .../etaxonomy/taxeditor/model/Resources.java | 176 ----- .../etaxonomy/taxeditor/model/TextHelper.java | 62 ++ .../AbstractSpecificReferenceWizardPage.java | 31 + .../newWizards/BookDetailsWizardPage.java | 39 ++ .../taxeditor/newWizards/NewAuthorWizard.java | 32 + .../newWizards/NewAuthorWizardPage.java | 31 + .../NewGenericReferenceWizardPage.java | 103 +++ .../taxeditor/newWizards/NewNameWizard.java | 66 ++ .../newWizards/NewNameWizardPage.java | 43 ++ .../newWizards/NewReferenceWizard.java | 57 ++ ...a => AddMediaToImageGalleryOperation.java} | 29 +- .../ChangeDescriptionElementType.java | 92 +++ .../CreateNameRelationOperation.java | 80 +++ ...mInExistingHomotypicalGroupOperation.java} | 4 +- .../CreateTaxonDescriptionOperation.java | 11 +- .../operations/CreateTaxonNodeOperation.java | 8 +- .../CreateTaxonomicTreeOperation.java | 28 - ...eration.java => DeleteMediaOperation.java} | 17 +- .../DeleteNameRelationOperation.java | 73 +++ ...ion.java => MoveMediaInListOperation.java} | 66 +- .../taxeditor/parser/ParseHandler.java | 4 +- .../preference/InitializeDbPreferences.java | 100 --- .../taxeditor/preference/PreferencesUtil.java | 76 ++- .../taxeditor/preference/Resources.java | 52 ++ .../TaxonomicEditorGeneralPreferences.java | 96 ++- .../menu/ExtensionTypeMenuPreferences.java | 4 +- .../menu/FeatureMenuPreferences.java | 232 +++---- .../menu/LanguageMenuPreferences.java | 156 ++--- .../menu/MarkerTypeMenuPreferences.java | 2 +- .../NameRelationshipTypeMenuPreferences.java | 2 +- ...eTypeDesignationStatusMenuPreferences.java | 4 +- .../menu/NamedAreaTypeMenuPreferences.java | 37 ++ ...omenclaturalStatusTypeMenuPreferences.java | 2 +- ...va => PresenceAbsenceMenuPreferences.java} | 6 +- .../preference/menu/RankMenuPreferences.java | 74 +-- ...nTypeDesignationStatusMenuPreferences.java | 2 +- .../TaxonRelationshipTypeMenuPreferences.java | 2 +- .../VocabularyTermWizard.java | 13 +- .../VocabularyTermWizardPage.java | 2 +- .../etaxonomy/taxeditor/store/CdmStore.java | 250 ++++++-- .../taxeditor/store/LoginManager.java | 6 +- .../taxeditor/store/VocabularyStore.java | 36 +- .../taxeditor/user/view/UserManagerView.java | 59 +- .../taxeditor/store/CdmStoreTest.java | 2 +- ...xisitingHomotypicalGroupOperationTest.java | 16 +- .../src/test/resources/dbscripts/001_cdm.ddl | 606 ------------------ 130 files changed, 2440 insertions(+), 3010 deletions(-) delete mode 100644 taxeditor-store/icons/Thumbs.db create mode 100644 taxeditor-store/icons/back.gif create mode 100644 taxeditor-store/icons/binary.gif create mode 100644 taxeditor-store/icons/bookmark.gif create mode 100644 taxeditor-store/icons/category.gif create mode 100644 taxeditor-store/icons/clear.gif create mode 100644 taxeditor-store/icons/close.gif create mode 100644 taxeditor-store/icons/collapseall.gif create mode 100644 taxeditor-store/icons/configs.gif create mode 100644 taxeditor-store/icons/console.gif create mode 100644 taxeditor-store/icons/dates.gif create mode 100644 taxeditor-store/icons/debug.gif create mode 100644 taxeditor-store/icons/eclipse.gif create mode 100644 taxeditor-store/icons/expandAll.jpg create mode 100644 taxeditor-store/icons/export.gif create mode 100644 taxeditor-store/icons/filter.gif create mode 100644 taxeditor-store/icons/flat.gif create mode 100644 taxeditor-store/icons/font.gif create mode 100644 taxeditor-store/icons/forward.gif create mode 100644 taxeditor-store/icons/help.gif create mode 100644 taxeditor-store/icons/hierarchical.gif create mode 100644 taxeditor-store/icons/home_nav.gif create mode 100644 taxeditor-store/icons/horizontal.gif create mode 100644 taxeditor-store/icons/import_wiz.gif create mode 100644 taxeditor-store/icons/lockedstate.gif create mode 100644 taxeditor-store/icons/maximize.gif create mode 100644 taxeditor-store/icons/min.gif create mode 100644 taxeditor-store/icons/plugin.gif create mode 100644 taxeditor-store/icons/print_edit.gif create mode 100644 taxeditor-store/icons/progress_stop.gif create mode 100644 taxeditor-store/icons/properties.gif create mode 100644 taxeditor-store/icons/refresh.gif create mode 100644 taxeditor-store/icons/restore.gif create mode 100644 taxeditor-store/icons/run.gif create mode 100644 taxeditor-store/icons/saveall_edit.gif create mode 100644 taxeditor-store/icons/saveas_edit.gif create mode 100644 taxeditor-store/icons/search.gif create mode 100644 taxeditor-store/icons/search_src.gif create mode 100644 taxeditor-store/icons/settings.gif create mode 100644 taxeditor-store/icons/smartmode_co.gif create mode 100644 taxeditor-store/icons/sort.gif create mode 100644 taxeditor-store/icons/step_done.gif create mode 100644 taxeditor-store/icons/synced.gif create mode 100644 taxeditor-store/icons/thin_close_view.gif create mode 100644 taxeditor-store/icons/thin_max_view.gif create mode 100644 taxeditor-store/icons/thin_restore_view.GIF create mode 100644 taxeditor-store/icons/trash.gif create mode 100644 taxeditor-store/icons/update.gif create mode 100644 taxeditor-store/icons/validate.gif create mode 100644 taxeditor-store/icons/vertical.gif create mode 100644 taxeditor-store/icons/view_menu.gif create mode 100644 taxeditor-store/icons/waiting.gif create mode 100644 taxeditor-store/icons/web.gif create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/DatasourceLauncherDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/AbstractFilteredCdmResourceSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredAgentSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredNameSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredPersonSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredReferenceSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonNodeSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonomicTreeSelectionDialog.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTeamOrPersonBaseSelectionDialog.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ColorFactory.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasDetails.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LineSelection.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/MementoHelper.java delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TextHelper.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/AbstractSpecificReferenceWizardPage.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/BookDetailsWizardPage.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizard.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizardPage.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewGenericReferenceWizardPage.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizard.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizardPage.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewReferenceWizard.java rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/{AddImageToDescriptionElementOperation.java => AddMediaToImageGalleryOperation.java} (73%) create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeDescriptionElementType.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateNameRelationOperation.java rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/{CreateSynonymInExisitingHomotypicalGroupOperation.java => CreateSynonymInExistingHomotypicalGroupOperation.java} (92%) rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/{DeleteImageOperation.java => DeleteMediaOperation.java} (76%) create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteNameRelationOperation.java rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/{MoveImageInListOperation.java => MoveMediaInListOperation.java} (55%) delete mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java create mode 100644 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/{DistributionStatusMenuPreferences.java => PresenceAbsenceMenuPreferences.java} (81%) rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/{wizards => wizard}/VocabularyTermWizard.java (89%) rename taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/{wizards => wizard}/VocabularyTermWizardPage.java (98%) delete mode 100644 taxeditor-store/src/test/resources/dbscripts/001_cdm.ddl diff --git a/.gitattributes b/.gitattributes index f4d68eb13..3305fb34b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -430,7 +430,6 @@ taxeditor-store/icons/2_pronged_equal_small.gif -text taxeditor-store/icons/3_pronged_equal.GIF -text taxeditor-store/icons/3_pronged_equal_small.GIF -text taxeditor-store/icons/EDIT-logo.jpg -text -taxeditor-store/icons/Thumbs.db -text taxeditor-store/icons/a_no_bg.gif -text taxeditor-store/icons/accepted.gif -text taxeditor-store/icons/accepted_small.gif -text @@ -441,38 +440,64 @@ taxeditor-store/icons/add_no_bg2.gif -text taxeditor-store/icons/alt_window_16.gif -text taxeditor-store/icons/alt_window_32.gif -text taxeditor-store/icons/autonym_no_bg.gif -text +taxeditor-store/icons/back.gif -text taxeditor-store/icons/basionym.gif -text taxeditor-store/icons/basionym_no_bg.gif -text +taxeditor-store/icons/binary.gif -text +taxeditor-store/icons/bookmark.gif -text +taxeditor-store/icons/category.gif -text taxeditor-store/icons/change.gif -text +taxeditor-store/icons/clear.gif -text +taxeditor-store/icons/close.gif -text taxeditor-store/icons/close_view.gif -text +taxeditor-store/icons/collapseall.gif -text taxeditor-store/icons/concept.gif -text taxeditor-store/icons/concept_no_bg.gif -text +taxeditor-store/icons/configs.gif -text +taxeditor-store/icons/console.gif -text taxeditor-store/icons/correction_change.gif -text taxeditor-store/icons/cprj_obj.gif -text +taxeditor-store/icons/dates.gif -text taxeditor-store/icons/db.gif -text +taxeditor-store/icons/debug.gif -text taxeditor-store/icons/delete.gif -text taxeditor-store/icons/delete_edit.gif -text +taxeditor-store/icons/eclipse.gif -text taxeditor-store/icons/edit_16x16.gif -text taxeditor-store/icons/edit_16x16.ico -text taxeditor-store/icons/edit_256color.ICO -text taxeditor-store/icons/error_co.gif -text +taxeditor-store/icons/expandAll.jpg -text +taxeditor-store/icons/export.gif -text taxeditor-store/icons/file_obj.gif -text +taxeditor-store/icons/filter.gif -text +taxeditor-store/icons/flat.gif -text +taxeditor-store/icons/font.gif -text taxeditor-store/icons/form_banner.gif -text +taxeditor-store/icons/forward.gif -text taxeditor-store/icons/garland_logo.png -text +taxeditor-store/icons/help.gif -text taxeditor-store/icons/help_topic.gif -text taxeditor-store/icons/heterosyn.gif -text taxeditor-store/icons/heterosyn_no_bg.gif -text taxeditor-store/icons/heterosyn_original_no_bg.gif -text +taxeditor-store/icons/hierarchical.gif -text +taxeditor-store/icons/home_nav.gif -text taxeditor-store/icons/homonym.gif -text taxeditor-store/icons/homonym_no_bg.gif -text taxeditor-store/icons/homosyn.gif -text taxeditor-store/icons/homosyn_no_bg.gif -text taxeditor-store/icons/homosyn_original_no_bg.gif -text +taxeditor-store/icons/horizontal.gif -text taxeditor-store/icons/icon.ico -text taxeditor-store/icons/icon.png -text +taxeditor-store/icons/import_wiz.gif -text taxeditor-store/icons/large_image.gif -text taxeditor-store/icons/linkto_help.gif -text +taxeditor-store/icons/lockedstate.gif -text taxeditor-store/icons/ma_12x12.gif -text +taxeditor-store/icons/maximize.gif -text +taxeditor-store/icons/min.gif -text taxeditor-store/icons/misapplied.gif -text taxeditor-store/icons/misapplied_no_bg.gif -text taxeditor-store/icons/move.gif -text @@ -483,33 +508,60 @@ taxeditor-store/icons/open.gif -text taxeditor-store/icons/orthovariant.gif -text taxeditor-store/icons/orthovariant_no_bg.gif -text taxeditor-store/icons/pic_not_found.PNG -text +taxeditor-store/icons/plugin.gif -text +taxeditor-store/icons/print_edit.gif -text taxeditor-store/icons/prj_obj.gif -text +taxeditor-store/icons/progress_stop.gif -text +taxeditor-store/icons/properties.gif -text taxeditor-store/icons/quick_add.gif -text taxeditor-store/icons/quickfix_error_obj.gif -text taxeditor-store/icons/quickfix_warning_obj.gif -text +taxeditor-store/icons/refresh.gif -text taxeditor-store/icons/rel_no_bg.gif -text taxeditor-store/icons/repsyn.gif -text taxeditor-store/icons/repsyn_no_bg.gif -text +taxeditor-store/icons/restore.gif -text +taxeditor-store/icons/run.gif -text taxeditor-store/icons/sample.gif -text taxeditor-store/icons/save.gif -text taxeditor-store/icons/save_edit.gif -text +taxeditor-store/icons/saveall_edit.gif -text +taxeditor-store/icons/saveas_edit.gif -text +taxeditor-store/icons/search.gif -text +taxeditor-store/icons/search_src.gif -text +taxeditor-store/icons/settings.gif -text +taxeditor-store/icons/smartmode_co.gif -text +taxeditor-store/icons/sort.gif -text +taxeditor-store/icons/step_done.gif -text taxeditor-store/icons/swap.gif -text taxeditor-store/icons/swap2.gif -text +taxeditor-store/icons/synced.gif -text taxeditor-store/icons/tax_to_syn.gif -text taxeditor-store/icons/text.gif -text taxeditor-store/icons/th_horizontal.gif -text taxeditor-store/icons/th_vertical.gif -text +taxeditor-store/icons/thin_close_view.gif -text +taxeditor-store/icons/thin_max_view.gif -text +taxeditor-store/icons/thin_restore_view.GIF -text +taxeditor-store/icons/trash.gif -text taxeditor-store/icons/undo.gif -text taxeditor-store/icons/unknown.gif -text taxeditor-store/icons/unknown_no_bg.gif -text +taxeditor-store/icons/update.gif -text +taxeditor-store/icons/validate.gif -text +taxeditor-store/icons/vertical.gif -text +taxeditor-store/icons/view_menu.gif -text +taxeditor-store/icons/waiting.gif -text taxeditor-store/icons/warn_tsk.gif -text taxeditor-store/icons/warning_co.gif -text +taxeditor-store/icons/web.gif -text taxeditor-store/p2.inf -text taxeditor-store/plugin.xml -text taxeditor-store/pom.xml -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/AbstractDataSourceHandler.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/ChangeConnectionHandler.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CreateDataSourceHandler.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/DeleteDataSourceHandler.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/EditDataSourceHandler.java -text @@ -522,19 +574,9 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSo taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceSQLServerWizardPage.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceTypeSelectionWizardPage.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceWizard.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/DatasourceLauncherDialog.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/NewReferenceInputDialog.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/UriDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/AbstractFilteredCdmResourceSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredAgentSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredNameSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredPersonSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredReferenceSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonNodeSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonomicTreeSelectionDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTeamOrPersonBaseSelectionDialog.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowDataSourceViewHandler.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowLoginWindowHandler.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowUserManagerViewHandler.java -text @@ -564,22 +606,36 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/LabelImageProvider.j taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ZoologicalNameLabelStrategy.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractDataChangeBehaviour.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ColorFactory.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/CommonHelper.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DataChangeBridge.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IDataChangeBehavior.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasDetails.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LineSelection.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/MementoHelper.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameHelper.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NomenclaturalCodeHelper.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonTransfer.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TextHelper.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TimeHelper.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/AbstractSpecificReferenceWizardPage.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/BookDetailsWizardPage.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizard.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizardPage.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewGenericReferenceWizardPage.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizard.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizardPage.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewReferenceWizard.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AbstractPersistentPostOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AbstractPostOperation.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddImageToDescriptionElementOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddMediaToImageGalleryOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeAcceptedTaxonToSynonymOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeConceptRelationshipTypeOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeConceptToSynonymOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeDescriptionElementType.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeHomotypicGroupOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeHomotypicalGroupBasionymOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeSynonymToAcceptedTaxonOperation.java -text @@ -589,7 +645,8 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeSynonymToM taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateConceptRelationOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateDescriptionElementOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateImageOperation.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExisitingHomotypicalGroupOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateNameRelationOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExistingHomotypicalGroupOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInNewGroupOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonDescriptionOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonNodeOperation.java -text @@ -597,15 +654,16 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonomicT taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateUserOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteConceptRelationOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteDescriptionElementOperation.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteImageOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteMediaOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteMisapplicationOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteNameRelationOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteSynonymOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteTaxonDescriptionOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteTreeNodeOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteUserOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/EditUserOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/IPostOperationEnabled.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveImageInListOperation.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveMediaInListOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveTaxonOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/RemoveHomotypicalGroupBasionymOperation.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/RemoveImageFromDescriptionElementOperation.java -text @@ -615,10 +673,10 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java -t taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DescriptionPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitNomenclaturalCodePrefDialog.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/MatchingPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/AbstractMatchingPreferences.java -text @@ -626,19 +684,20 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/NonVira taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/ReferenceMatchingPreference.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/TeamOrPersonMatchingPreference.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/AbstractMenuPreferences.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/DistributionStatusMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FeatureMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameRelationshipTypeMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameTypeDesignationStatusMenuPreferences.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalStatusTypeMenuPreferences.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/RankMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java -text -taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizard.java -text +taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizardPage.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java -text taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/StoreUtil.java -text @@ -675,7 +734,6 @@ taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/DeleteMisa taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/DeleteSynonymOperationTest.java -text taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/MoveTaxonOperationTest.java -text taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/SwapSynonymAndAcceptedOperationTest.java -text -taxeditor-store/src/test/resources/dbscripts/001_cdm.ddl -text taxeditor-store/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml -text taxeditor-store/src/test/resources/eu/etaxonomy/cdm/cdm.datasources.xml -text taxeditor-store/src/test/resources/eu/etaxonomy/cdm/cdmfs.xml -text diff --git a/taxeditor-store/META-INF/MANIFEST.MF b/taxeditor-store/META-INF/MANIFEST.MF index 296e43065..2262a366c 100644 --- a/taxeditor-store/META-INF/MANIFEST.MF +++ b/taxeditor-store/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: EDIT Taxonomic Editor - DataStore Bundle Bundle-SymbolicName: eu.etaxonomy.taxeditor.store;singleton:=true -Bundle-Version: 2.1.1.qualifier +Bundle-Version: 2.1.0.qualifier Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin Bundle-Vendor: EDIT Export-Package: dbscripts, @@ -13,17 +13,20 @@ Export-Package: dbscripts, eu.etaxonomy.taxeditor.datasource.view, eu.etaxonomy.taxeditor.datasource.wizard, eu.etaxonomy.taxeditor.dialogs, - eu.etaxonomy.taxeditor.dialogs.filteredSelection, + eu.etaxonomy.taxeditor.forms.section, + eu.etaxonomy.taxeditor.forms.section.reference, eu.etaxonomy.taxeditor.handler, eu.etaxonomy.taxeditor.io, eu.etaxonomy.taxeditor.io.wizard, eu.etaxonomy.taxeditor.labels, eu.etaxonomy.taxeditor.model;uses:="eu.etaxonomy.cdm.model.common,eu.etaxonomy.cdm.model.name,eu.etaxonomy.cdm.model.taxon", + eu.etaxonomy.taxeditor.newWizards, eu.etaxonomy.taxeditor.operations, eu.etaxonomy.taxeditor.parser, eu.etaxonomy.taxeditor.preference, + eu.etaxonomy.taxeditor.preference.matching, eu.etaxonomy.taxeditor.preference.menu, - eu.etaxonomy.taxeditor.preference.wizards, + eu.etaxonomy.taxeditor.preference.wizard, eu.etaxonomy.taxeditor.store, eu.etaxonomy.taxeditor.store.internal, eu.etaxonomy.taxeditor.store.operations, @@ -31,8 +34,12 @@ Export-Package: dbscripts, eu.etaxonomy.taxeditor.user.handler, eu.etaxonomy.taxeditor.user.view, eu.etaxonomy.taxeditor.user.wizard -Require-Bundle: org.eclipse.ui;bundle-version="3.5.1", - eu.etaxonomy.cdmlib;bundle-version="2.3.0" +Require-Bundle: org.eclipse.osgi;bundle-version="3.5.2", + org.eclipse.ui;bundle-version="3.5.1", + eu.etaxonomy.cdmlib;bundle-version="2.3.0", + org.eclipse.jface.text, + org.eclipse.ui.forms, + org.eclipse.core.runtime;bundle-version="3.5.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Import-Package: junit.framework, org.eclipse.core.commands, @@ -46,8 +53,8 @@ Import-Package: junit.framework, org.eclipse.swt, org.eclipse.swt.graphics, org.eclipse.swt.widgets, - org.eclipse.ui, org.eclipse.ui.editors.text, + org.eclipse.ui.forms.widgets, org.eclipse.ui.ide.undo, org.junit, org.osgi.framework diff --git a/taxeditor-store/icons/Thumbs.db b/taxeditor-store/icons/Thumbs.db deleted file mode 100644 index 1078be41207902ef000fb8a369adaac4f550b0b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109056 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 z 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 diff --git a/taxeditor-store/icons/back.gif b/taxeditor-store/icons/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fb41501036b940c99c8a839d7459c88eb98385c GIT binary patch literal 327 zcmZ?wbhEHb6krfwxXQrr@9+D+zn}g6e)He2XMaAO`UhluzxDUq&A;Dn{du|K&)c1U zKb`yw6#sVf_k*54PiFppGV{-i6@Ol={QGw2@4L-^fP#-_?rjlUS1PoI4}+ox2M@c;!iyI;EP0M4 zDfSD$=;@GFSru%pQBc literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/binary.gif b/taxeditor-store/icons/binary.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3eeb74cbd5ded8e6cd38e62a3cc4823c35e2ce9 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZi0M!5h^!EJt`TWSv-SzkU^!EF&x5;OHscL|$^7Z@n`26|$ z{P_9%ZG)|JinDWxvU-oVfR(#}mb;3c!jYb}@ALW>GF^w9z>T8Bk)_A7z0cn0`1AJr z-stz`?fL5P`SiF#P`t~m4QdGk3Oo4K&6R7q=-VGhD6}VkF=0Iu8cpfjX%_~Xw z6BPoKmPjlmniVAinxLdeDjlI6qynm^LMtSpB(1ZsJ}DuY6Ctg;okAxZ#KpxL8A&M1 M%+1SE(9uBvJNH7o^8f$< literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/bookmark.gif b/taxeditor-store/icons/bookmark.gif new file mode 100644 index 0000000000000000000000000000000000000000..8eefad3a356e2e5c6f3118fdc0361c1124c47083 GIT binary patch literal 595 zcmZ?wbhEHb6krfwc*ekB<&kXTm1gUmmQmc9Q`&Ch4P>Xf2Iu<6Rd_`fg{IU-Wj4j< zwG~!0ryv&vg&`@>i@YL{^xD@|Lo)cQx|U~toon1;eXcp z|AkxrGXyVT@L$B>zmUOqZqfGtMLYkO?E3%m%m26E{xigGV2E7B5W2W<*Z;D;|6hFh z&yc!~m~3 zHkxegXvf#n-#=-}v>En}f|9c*8%?#J;m|K2;Am`UXgbw_-^s>uk>xI3?Y$ov_K2=INlov2DAUCeXWj``d;4+=ctxhW_>1 zr+yr*h9CRehX4QnA^8LW0018VEC2ui01yBW000G7;3tk`SvpdxN{;zSR4h}H3r%=F zJ?_FZj9@V0Di$x6q|$P6SvJt<#^UN^Fd9$R({Wum;4r6RERzg{w7Ot$6%O$Dq2L-I U6o`8QA#ec#fPn!7W)9(*oeotO@Y}T67i#DHMvE%ZZJy-8O|Ni97&*$%czWwy;^S9r3 zo`1jp^2fthKi+)${p!QdZ$ExNd-wC(&%YnO{{Hms_tzi4zyJI_W5&cyo7UdHe|Of* z{<*XJmMv^wG_UL6rjotu%lB?5-?_GG%gWmI%NmdGpZDg~qvKl(k8UnLx~2Hg#?qZ@ zs#Y&v%S5&t*x!DuCAn{q`0`asHmv0urNPAKQAvYB_$;} zIXNyaE;cqcGBPqWG&DFkI4CG6FfcG6Ai&?>-_OtQ|Ns9C0}2#>vM@3*gfi%WTmgy` z2KEgNp{C6(&7tib?WP<(y|$*E9cHRboKu+W?9C^J>Z%9|aC6C9+u2x5)MuAemSmLN zAgMReQb|NuXu%?WgNcR`5^M(!OBhcylH0yhfQMJnWTKUV_?0Uxu3jz-u0F1z+G3{` zuzEW)`F=drwRH^dde6KTp?5HjDwPt!%ua0$DEtSh$2VJr-3M iJ8pc$DH7Btau@XyPb%`)o0|0bQ6Wss+ literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/collapseall.gif b/taxeditor-store/icons/collapseall.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 GIT binary patch literal 157 zcmZ?wbhEHb6krfw*v!DtJ#F>UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/configs.gif b/taxeditor-store/icons/configs.gif new file mode 100644 index 0000000000000000000000000000000000000000..c984fba7039a0465a1858a1161e7d5e1bb4c8c31 GIT binary patch literal 368 zcmZ?wbhEHb6krfwxXQp_Zy)cQP%Z1(^6=HS7w^8U+j;Eqn{Q9wetZ7zn|=NM2d}?9 zdh_kc+ix%4fBW?1TSV!^=kLG0{`l?5yKiqleS81;n_vIlk6*sU&)@&~>$my)_aD7; z`{si?`|t0+boKPZSG!)m*}s4P{7-L={d#x$|GRVl|Nm#8Hc0x z&Ee^7-+ugw&hCuQ?@1|{@bKl2hcCZJWp`v&P0g&Fl2O|W^(~wJw2}j2c!fnnk_{(a&fS; zGBZhvS~Xis`${M%NZgdr6|-r!)$r93l$R3}5|k6SYqr^7LG$LYCSR&E0(xS6jGH_yK|y2S%JYC06~wp4ssnO?q~cE&Mg|5x1|5)AkQodtNf%CPp5N7;wMFFDsiurcGgQu28a!DzM`KUQ zl*(o5hXiWQ^RIBu3)hh1c5rrH@%d*1XKIpLL*zoOFwqGN3{0H|+Yd|R`ZGArIJnI6 eT+^XUhpKX6#{3;|ThIMuZft5SZEY1~um%88I!L|% literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/debug.gif b/taxeditor-store/icons/debug.gif new file mode 100644 index 0000000000000000000000000000000000000000..d90a29fead84c0ca79773c63e69c2f8c46daf706 GIT binary patch literal 348 zcmZ?wbhEHb6krfwxXQpFm0T{B0z_ppsb#Wh+mRt9F_KB}J9`r#g`PUial&Z=(aTAtPl_67=023r2s zI@$6TwHkr_Rud1`7Oo7Na-@9f(eimG>*t+pSbDnc`M29^FHBf>VZxRxGqzuybNk)t z+iy>A1+ixzy}$O@{dGt0tv&T<^VL@ekKJ2)?B2SoFAr|mu;Ksz{|u-=@h1x-1A`TV z4oDc}CkD1khq(bBl2ZMLPY5)bJTtLWT$b7Cq1ErMC!G7Li2sW2?+d7K36Q@l~$Ly1U#YBsooW6^-@PxqPKL3{A|Gv{X5SW!+=g4YV~CR9FMOoP{je iSk%>&<(WN7oP-&e7#ZT6WeT^tiSBe;w`ad2gEavB?SN4L literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/delete.gif b/taxeditor-store/icons/delete.gif index 559e462985f439553de36c89f65392eae3e9a44e..b6922ac11cf64e16a15cf2976cdaa1e40118abed 100644 GIT binary patch literal 351 zcmZ?wbhEHb6krfwxXQqA+}QL>Vab=`lFvmYpNmUxXz4%DF}bf}d|cDunVH>FGrOY- z+D{EEKZPcINzVS9ob?$uHn=&y~n$8D`1 z2l;<(sQc1T_xQ+>|Ns9p5DgT6vM@3*7&7R9bb$QCz*ci$MuCTpRKNR-^bncK1eb^v zqDfrti^MpzbSB1VUt0b}aql73M;xvKD|}WtK1fk5iV!?;_@hVR1O_f%UNKGv4?_+f zX(=fl4i6boi78XK>s@7pr?3jKN=S;#aFP{YATA>-vrJN4*4aRuZH4n{cJUaejfi0I}eMb=?0hv=!;iZy|UTOS9Ern3j>2S03Llh A4*&oF diff --git a/taxeditor-store/icons/eclipse.gif b/taxeditor-store/icons/eclipse.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb7b90c76711ac9cfcea0843bccf09b78457fa7f GIT binary patch literal 308 zcmZ?wbhEHb6krfwxXQqA_T;J4$4?$PaBSbsL;H6h-o9!7rZsyvuiLk5!S>|~cPyH- zt*L5RSM#bVee3hn=9T0us4HI@6*wg(cxp<_%b={S9^AQf z_vXdxSI*tOe&OcT^Ow$@`Tzev11*8#PZmZ71_cHkkR>2LF|Y+XOepZsk?Qw&_$)yq zW0Is>iqu3CgJZm{r`9HPafEi?}AR`bU3kxwYCjP(0zymanNsw8P!Jgsj z(o=Kt{H1iA-!w#qFo@c>sp~I2wBu~j)|)G@^`0}lzjJC~@HCIN{X86hFBY{QE!I^{ zsmVI=x6n7>RdvO^dEu{LJhz&gvGr1;$0F%oulFW9_)@moMNT}%$$v>g@Ame&-%s9| Mbi>DLy8i#00JCdkNdN!< literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/export.gif b/taxeditor-store/icons/export.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a0837d1e475ec48731c88f6d554a37750df4693 GIT binary patch literal 329 zcmZ?wbhEHb6krfwxXQp_Z$IBYe!fro^uXMCfjM(S@)ri=&J8YD7??XZC~s~=$&!eY z#Sx{8BTE;@R4k9LS)EY3I=*^Ea{bzr`n73I>suF|ZCiMD?&fRpK=ImD$qj2;7oBYb zp)(U!U0S~T*77~K)*rlUT(HErV6j8_a^9F(|NsAIpdL{C$->CMpvIsBG7{t`2DUVZ z$ps!dQvDvvnIT%LohlPQYwEbJT&CH{W#Fcfkd(lo*X}eWaeB?N3@5410-q@!PLq$b ze>&4(z$eb<-^j-+$H~RR-P7AE$IUJyBP}B~Ra#nBMsx}*6B`>d2iuZ`94lB>M7TII GSOWlifno0e literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/filter.gif b/taxeditor-store/icons/filter.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d061d77cbe83a329576fa10e54a3ffafae94b98 GIT binary patch literal 211 zcmZ?wbhEHb6krfwIKsdnt7_rlA7^YA8W2}*A68(PHqAV~#jk&_wyDLxKQI2gUH|9p z#y_vu|Grc6=k><<#lln41*fD5c0}?0|NozX2%z|rg^__lm_Y}m7Gx&_Yrq4QzLZS1 z#|hIIl~z3slyFJd{XuKnq6PgLf(f50{&@AbTnxz(6FwE>vM|Cxg1hxGm!{{w1kc5a gmR(1lUe5S&^`qLp8*9pDKe?l~+j50|D+7Zy054ohcK`qY literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/flat.gif b/taxeditor-store/icons/flat.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ef74cf98f4f2b07ad4af73f0af65049a3cf0e5a GIT binary patch literal 97 zcmZ?wbhEHb6krfwSj4~(Q?)9gZf#og#)(Uh=X7l^ny{;E%D(^q|117vVPs%nXV75) z0+3n;X0?i4cm5ezIXq=zmO0EV=;)jorWvNXtgwxJ-V)9JWxGn_Ph2R9S7WdS0HyOH A^Z)<= literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/font.gif b/taxeditor-store/icons/font.gif new file mode 100644 index 0000000000000000000000000000000000000000..65389495f7a882e44b296f895eb52498d360fcd1 GIT binary patch literal 112 zcmZ?wbhEHb6krfwSj50!9yBetd()z==d{E7+ZP;gELm~j;-mln|117vVPs%nXV75) z0+3n;X48sYcm5f8DbJJ)jh(~&@VJ>sm|}rjV$2k?Ju!`<48{TR74ps--q;9nyG=S9 PCnBkRILAtxlffDQ(XA%5 literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/forward.gif b/taxeditor-store/icons/forward.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2f8c3e1feeb0541239db4061812008af2225105 GIT binary patch literal 327 zcmZ?wbhEHb6krfwxXQrr@9+D+zn}g6e)He2XMaAO`UhluzxDUq&A;Dn{du|K&)c1U zKb`yw6#sVf_k*54PiFppGV{-i6@Ol={QGw2@4L-^fP#-_?rjlUS1Po@J+-Dz{8ESgwt+{5*!DHj%yExE6hNr2CLGc8SInS{s zf%p?|dHMv5Uuypo=4xzGc2W`Q5bP2Z;_OjzQJkcxFoj=0Ofg7Flus#0T~$PNfx4R7 K(v?Au4Aua3A9>vX literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/help.gif b/taxeditor-store/icons/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae2c4c0abdba36bd37b1b4add59a370ebfc470f1 GIT binary patch literal 622 zcmZ?wbhEHb6krfwc*el+@6X?V|Neja{QcvnZ@>Ti@0+>)&)@(3v(`C5--Jb8cn@w?4?Pj1eiDFT8Yzx>(@-%cxLhL%Zqkh>YcY?^WNjPpT58K z zjk%MzSIpTrW%Gq8o6b$$e175XE4QD%yY=L)TGBN2iLK7-+upJyK&2pKmWh~{`cujkkWaZ4=mM384 zB+JBXqHg^|G; E05nA-vj6}9 literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/home_nav.gif b/taxeditor-store/icons/home_nav.gif new file mode 100644 index 0000000000000000000000000000000000000000..4472e8ce5b377934abe5910749b8c58591947424 GIT binary patch literal 582 zcmZ?wbhEHb6krfwc*ek>=hf;IH{B?(Il6LneC_)9y7e)Ys}kzgCpT_NZrqsBx;3M1 zYfjfr^Oy#Un1=ILZ(q4_=gaqB7ao7P|N7gr_usES|9bEBw__J?ox6Jb!jmu8UwnP~ z{`vgb@~XsXFsG`()# z)P`jC{<4g|#s1N-6zpQh%P)>bdmCa1Pm6E7bp=kA^+FJoIr3lG~V zK1Oy9RsvS`)>ACq4Fq%r%-n6-%-!@?>#ouFG;c9<)mp7~V2zfGUbChqzqhxVj+(c! zgob7dgSf1qs*0+ttT;m}qx_@Cj~QFpq($VE-iU}uGq>`{h>0ocD2NHm@U(JENoiR` mTx3|l#@Z^BazerJ04F22v4Td(0)|Fr1|zv05e@+g4Aub9HpVdk literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/horizontal.gif b/taxeditor-store/icons/horizontal.gif new file mode 100644 index 0000000000000000000000000000000000000000..d590470446f37e7d83ccbcf3f3a85f82e4fc344b GIT binary patch literal 374 zcmZ?wbhEHb6krfwxXQrLHf3GM)HOZRS6zSnrGM6n@ZJ-%cHf^eXQ^f7-fw^YfBOCZ z>gWIOe*K>@f6>R^|G)nE|K`{Kx4-^>`2GLOpZ~9a{eSoS|NGznKmYmv{qO&`zyE&% z3Idh={XhBWCi58yE6#1N*-<-h(Y!@VXRlZ>eeLQg8`n+Tx}k6H*3O-qdiHPYcsFnI zgY3B16Wjj(|Ia`cQ2fcl$iSe>paaqk@)HBwT literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/import_wiz.gif b/taxeditor-store/icons/import_wiz.gif new file mode 100644 index 0000000000000000000000000000000000000000..d38085ad9c273000d1c7ef3ea0144de87b776e46 GIT binary patch literal 327 zcmZ?wbhEHb6krfwxXQp_Z$IBYetux?yuh5fA^8gfa_0sYEDX$@8&R?(qGWMI>Eg)J z#W5Aj<7-wY)UHmhUz<|DHmzxW>%y~b3(wBod@a6qb$sorkr;FE?8n*u-Kt|Id9CY|Ns9p&;Tg@WMO1rP-f5pnGNz216#_0i3J`yQvJsm zgg7JQrk+bO_7dTAKGtDoB+_bkXzjJf5992w1-8iStkCP%_Lx#5y6_`@wFT09~= wevLfb(wrPzoISn09c+@45|YAGBqXFHg(kDGv$8VHpTB^88S}Cb7e@wb0E(nwr~m)} literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/lockedstate.gif b/taxeditor-store/icons/lockedstate.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6379511e95ba6c8e0c71b45d8336755d97b3a7e GIT binary patch literal 255 zcmVD|i zHo=}anS3p!hc%{&IIfR8zMxCVtzYQNbl$>m*~Eu!D7PV|`Vl63Xgs?a~Nt_M=F~va6HM0uvY~7kQp@7bq5^q@_?VsHrC* F06Xi>WH)BmCdH>AyS7xlgyky6X6}xX* z1EorLhcq0C?KoXG=T!URa~(_0bu2#Hx#aBBb(g2Ey|iTKjpe&klGTH(H?gyH}H{|rO}#h)yU3=D=0Iv^b&KQXYS9+*+!p(E9QBIVM< z06y7%_scIkd}Nkhy3}Z4;ju(#;>#TwBI3tAwlJ*>StijKz;J`H_w2JHFP8)vGB=5{ vNl5Z2D(Y+K>gc*~Gl_9B$;;{Kc`%BIG8!0oF$xGV`Z+N!UAAhqBZD;n+e3)m literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/print_edit.gif b/taxeditor-store/icons/print_edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..04cb84bf4faec8d27400fb792002a00509a9a20b GIT binary patch literal 612 zcmZ?wbhEHb6krfwc*el+_4}V?Tdz)Ea?mVv(zK>-jdR^IkRnBPS>u2 zzP$y#dx|F>sGEJdZuY5(OOHQ%_4C==pYin@GTOHnPuyQR`C#3gQ`=8I*?#izoRxcz zUVd@(^7Grzf82id{m%0rm+!uL@apH&w?AKh{Pp3>uWctEZ$I_;=#>{&?!9^T?&te2 zzrTF{ee}xn%lFV{=a*UU2JB&6D$UFRYIK|NlS300G6H zEQ|~c;S4$;`$2KSz<#hHys5dRwKb@tv#rJ7mAyYKAhLKw;#Wwi3z_I zzi+pXu>v<2Cx@|j3!@sdmy(gak&>m6C$k!3xSEHDo#E=W9Ex^F)WTKWU3m3%`S|qp z__UndWW!|~oY`2I*qB&(cvzjCrNgBREG%rl*cupowUr82F}KmS$>WIG*u?4}Cb=$Q z#l%Hz&TSeJw=yaocCm6R>x8T*n0Tn8S6nxS)8OIZPGL3MB_@`NH#|556;8A$G%h=n J(8$1G4FI010%8CF literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/progress_stop.gif b/taxeditor-store/icons/progress_stop.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc47edf06955eca15fee8118b3be43f019cae3f4 GIT binary patch literal 215 zcmZ?wbhEHb6krfwIKsg2!ocE%g~JO6j~5;RA2JFK2q?TzFgT%MaUr4LM1aGI2#+5d zR-ACK*kNJuA|T*HMa7R5D{jn~@&EsS2I7F?PZmZ71|bF=kaCcn46GpwRQggf=VfHM zdA;5hI8&!2R^8~yn?1}ARoqe>boi8dCIuYG;hM1Y7_-A#COOZb=7bkjye)1o4Ymf! gw+AT-W$b32*d*n&{`ylDm&EhWl|vdDg%laA0bm40+yDRo literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/properties.gif b/taxeditor-store/icons/properties.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dc19a31a0fc5eef8d55fe8a938b32d4154fb021 GIT binary patch literal 577 zcmZ?wbhEHb6krfwc*el6V#9&>{GNn@o~+6#1@$v`9K5*q=#}W4&e*)}*u1Xzf}VuJ z-sF-A$tC^i<&(0jr{>qs%&(tO+%&tSc}{uTyy~t+b-hb>9K5jS=#}H=@1$2u%B-4_ zT{Eq`eSR58c42ML;>HQfnkTL3n6`Syp^MuOUf6cv{N7_%4xPSn?EIblh8cBzOWLQe zX`Zyad)B%o8xAbnbZG648%IOZ9jD3@VVQE&fGY5;m$!2d3(Zw4gbM_VJHB_pDc_F3?2+RAjg8@ zgn@ltgGWFR7HY2~ckq`T8**Dl>A1q~Ms4O0!L>o-jmn&ftx zUDzqo#A0H?rfy;(A)(G@BB9m9ywm8(Ht8lF2UUlLm>Gdd$6A?G8cYO46sB|5x{GiG PxolkI>LS6+$Y2cs9cIBb literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/refresh.gif b/taxeditor-store/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 GIT binary patch literal 330 zcmZ?wbhEHb6krfwxXQrr@9+EHAGZ8_G3Dpu?%yxxeR;O-=iRE0x0<(4QTcee`1ifm zpO@2qo{itzBDSGSXh)sM<|^S$6~en4MRzrdZmSj9UMIS{QEXSE*vdSC6?p<{3I*2` z3$Dx)T#+ZZp;TynsnFUYp*4j44mHLpVZ-K zl_{b4!&vi3NsFvxfuFi>p>w)=5UaR2Lyxxzb4)b5h__%;3Y%bnva}Kxw?crk1h>pm LXEn6|M+R#EucKvr literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/restore.gif b/taxeditor-store/icons/restore.gif new file mode 100644 index 0000000000000000000000000000000000000000..258e536513fa01b2bb6ad7309b1bbbe4e74fb4b3 GIT binary patch literal 70 zcmZ?wbhEHb6krfwXkcK-FKhY#|G(l-7DfgJMg|=QAOOiQFv<4xuRQ&>zhO?^B{rqa XMo*5W&Nr%(U6J_mnBzNcaRzGu+87sT literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/run.gif b/taxeditor-store/icons/run.gif new file mode 100644 index 0000000000000000000000000000000000000000..57f410224cf0e125fefdfbfd424b34ca32650ac4 GIT binary patch literal 379 zcmZ?wbhEHb6krfwxXQqw(BP;BL>-Qf6T{aP*iM?lCLeYNChZ zME|t4Kq*J#ax2FU508od{@|VOltj+J(UOww!N5}U3iQCI3ZqHwGu%qFO+M$;f|G|KP zbfEZ?g^__lk3k2d733!dwiyo73p{kh9NV1~0xTMO)-@+?HCpL1C+*_|jkQs$L%3SK zWZD#%Uw+AK^#3sVq2$yax7_cq>g;#(C^lABHOjI%u}OEy<@M@F%Q8AK@K5dOm7mJO z;KV30f4Z*Rd;#G}fjokO)8$r)3o+Lza0p5E$no(>iVJg;1ab?@$%#scNeOe;IkR(c Y3G?y_b8(z@@nG_1@(Z}@>d0UX09ibCp#T5? literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/saveall_edit.gif b/taxeditor-store/icons/saveall_edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef0eab5ba3e59ad459c8d4fa56cbdc77618b2187 GIT binary patch literal 604 zcmZ?wbhEHb6krfwc*el+eaE;tKzCxCDyJ=s$F^V_OIQipFDZ_@%^Xosf{aB z8djXR^XtI*X9q7lJ9g#8@hdOR-h6fK!TXz!KHPo!@%8(!sf{bLTb6G+e0%qqCkHM( zJ9q2V)%$O+-hcD#&6lj!3Zm&TUMs?>Hp{5*kiVV`gGxum%8B;oI>5 literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/saveas_edit.gif b/taxeditor-store/icons/saveas_edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..466bfb11281982ab51b763922eb51bc07e6e6960 GIT binary patch literal 583 zcmZ?wbhEHb6krfwc*el+wnA^2jY1!!;YMNPU+G$z0SSZ^W=ouIoo7gFv zwixl)IqlkQr)Jcmt0>WV#7;s{r$t>>M)sV{*$WyiD$)uHd^h<-rA6gi#6^Vp7@j)u z35&?JhzUyZ@e6P{@Cgd>ws1&t^X<}pE@`Bq5VDA&k%@^-Btj!$;lg$SUP%svlqAzB{pFJHR$?(L_$cOE``@chb^TQ6U}zjyD+yLX>ozI^xe z>8q>P9^AV9=<$=+hmV|k{N&Z0yN_?(esJ)}#XWluZr^ou%l1QkQ{;i9T?%%$8>HOu37cN~mU+w2KzoV(Q zFlTOib9Z5GcVS*vL0(U3$@|x@ckkZ)|Nno6K?4+jvM@3*1TyG=Tm*^}2KKs!z^3Mw z))re+OG^`*wq`>+E)I5fC$l~)M^4r`tZe?~ZARR@OPBE&JGa{N39MVs?_%9*AuO?d zhme~?tG=MvfrF9;uB`#ein6C<<)!rcbmT;3G!?{knfd~?)l^k9v{;xuZiy(VOE-DB Zd){jEarb`L>g(?JxrKr8M_VI*RNf? z`oQk}`*!YKK6~ljZF_cZ+HvgAv6IJ69zSyY;J$;WPMkV&@Th0*!vFtI{{R2)-9{Q{xYzi!ojzd!Hm)rnuOPWpOf;{Cn#PZn9eTp#{=Q|#Kl_?H9)`m^Y_v_E|osjQ0xhPeU?V7 zFYefq7px@erW32aOhZI~o1e+F);Uj8NSKj>%P7ZHO;TK&kDY#h literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/settings.gif b/taxeditor-store/icons/settings.gif new file mode 100644 index 0000000000000000000000000000000000000000..906c0f5870a08278fc7cb1bf5bc36880e3214379 GIT binary patch literal 369 zcmZ?wbhEHb6krfwxXQpVsiAB4rrq5&y)Bjf4P_I{3a1vfuBn~4vu@(fwpoXg%I7AR z&nawO-92q}Xm)>CcK`3c|9|}X|LgDnkH7wZ`ThU!1JM{rdm$_y4bd{{Q&<{|!*rpa1WE|Ns2w|M$QDfB*ac z?eG6z|Nj5{_a6cnNCb*MSr{1@^ci$O`aphSVCy>&p6sC`)jEGk(aIbJ#|DiIuenyz z@(u??844_xUfN#rmm?;lQMEBaM{c1}qO?MZ)$-qaZ8U$lHVBI=iHoPobx26aX>`eT zrK$xoC@ZTei%eHbjf!E=medy26qQU(XVzm<;bdpy;u9V akU*;R@e?PHhr6A1(Z6u<(q(-|25SJanyP*P literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/smartmode_co.gif b/taxeditor-store/icons/smartmode_co.gif new file mode 100644 index 0000000000000000000000000000000000000000..542dddca3f29bc0bdb8149eafc372c37c6a0b1fd GIT binary patch literal 553 zcmZ?wbhEHb6krfwc*el+;?-NPgsN@(PDB;;v`t$vZ_S?7+YUt*b*ESMRCdjoxNy^+ zqvz@-E{?38nO4$}K5a+#g2M?_U4MT){QhRHQL#98EnEyO#{^Q=1ANQyId$#27%ME{DZvOjf z+xLTJ-){E*xIO9b(={Kr>VMdz_j!lm=beUMFL!*u*7NV_ns@7TK5W$ca<2Ky`PP?< zHC`>ze6>{b^$M-GtF-?=+4vs}7=|oR{K>+|z~IQB1M&eVP8itR8XTLN9W5;^TRNMJ zt$KTnyP8a_rR=9k*_ceUl~*^_GgX(j?b5Z=($rAY(A2Wi?Nl|BmXVW{laV%4?Nl=t zmk<&Wk`Omg>(Un%l@yZ{71p1qW8`q{n&HGI1*PlS3b&e+ud6(4;$`LHVSeVw@4&#s a{#L+&o9**6K^9I9zPFA{93dhc4AuZ>ez)NO literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/sort.gif b/taxeditor-store/icons/sort.gif new file mode 100644 index 0000000000000000000000000000000000000000..6311cc00f80dadd6f5082e4381dc2bdaa28e6b66 GIT binary patch literal 153 zcmZ?wbhEHb6krfw*v!Dt=Qd?o<*NL$mekrQF|AAe`uB!(Z}yFfm2Rtco!n8ea?$_) z{~3^g;!hSv1_o{h9grBv3N_ARJ`qXtn-g`OJ{8w(; v#98&Xg*(Ax3QtReYl4Pg43pQg1got&3nw){NJ!P%?BU7qTUxJOkii-NY)mvJ literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/step_done.gif b/taxeditor-store/icons/step_done.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cacb96dca98b0bdcf7e7bb62e491f8760b244ce GIT binary patch literal 343 zcmZ?wbhEHb6krfwxXQq=a?`PC3wLx+TirNeg?n^`Z$foW?Q~|F3@j|LW)e*FXQi`}P0h@Bcsk{(tl9|Jz^xzx?_C z`q%$=zyH7g{r~fy|G)qJ|M=(sx4-{?{rmsx|NlS#|Ns3D0u0mxia%Kx85qF&s24FDJgfQ*IQghNsY+tXkpKpcfp)vCJ_O*fz()`; OzdrMMtX{Vt5db^*GD&v; literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/thin_close_view.gif b/taxeditor-store/icons/thin_close_view.gif new file mode 100644 index 0000000000000000000000000000000000000000..44b615114e395652c18dd899b59927b079f44148 GIT binary patch literal 846 zcmZ?wbhEHbk)!X7>=-|@NWRWKG(?Eg28UX8c6&wHn literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/thin_max_view.gif b/taxeditor-store/icons/thin_max_view.gif new file mode 100644 index 0000000000000000000000000000000000000000..94ed448de7d0e423f6fe63cc70019101ada8cdc0 GIT binary patch literal 859 zcmZ?wbhEHbP7Igdvg2R6QFBJd3JM(0_;k|iY4=1W9<$X*!oHsx4P*fkrfp zkdUUJ*m5MATV9D~=q}xqQ*MR)7pRQ=FZjx%Qyl3#IqmYs`^&7v{xD|Uc&KP7F;pgq zp(k)4ai~m~(&B}xhMGsZ6+<9Uq60fF4U`vYJ~QEBW@4miai9VL<)PxS9w-z*60I^W z(k2E{NYzlThf;t^$(2LtMKaP@jif@uW2p?KWWi-Tid#Z*Ap<#uQ<*doI%k{~W&5X^^X5hv!nM~M!u#La@ zImXV}_N-<02`l`F&yytoF+Uoy`Grd>SC*ER^9w8~tUlTc-u8ln-PJ{_pIZ6_d0D))b^XTSFdZ${hFve zcv^Y!vQmFi5u0}(ZXI+tH@3IL{oD8M>^|>?V=veLG=FQyv9G_9(Tb>-T5K-=dHGsy T*s6DqlP~LgA8!8kORV`1ElJDZ literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/update.gif b/taxeditor-store/icons/update.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b724a6784910f0fb632fdf4df6b46a144555ad2 GIT binary patch literal 336 zcmZ?wbhEHb6krfwxXQr55IT)Fb|!D^4EglA3K?_dGv=CK0qT>Sf9>(8_Cdt1adlnL#q6WLrPyt`3!SEK0m zI?>&YVk`3mR^$n+DHL3hC%BBnnIz~g+PYz|NsAi&cp>2f3h$#FqkpufE0lI z#K4y8FgqYZi?`q7(Xkmen}SxJb-OAu&tZRT}eifdF;41SfF@krG-*ZXoxN^o#XigWm~3yMt<6%}OnWfKq<5fb8OD`Vm1V`gP- SG-KjoT;X?R-_KotcK^lqCvSc}fA{n4r(d7H{l4@3 z`~8RGcU%$PB8?wsCPGbb#Z z*R^b6`=WVW^Je$nyLJ4?mf|g|YPYVc+pxTG)#BD=3)&ywJ#u_&;lYii`_`B5TvN4S zS>x)(Ee}rgU)hv#Yj4ffO_~4y|7RG=K=CIFBLjm2gAT|Opg3V*?{08tYHn$5YgKA@ zFze|tRZ{6PWtqY8&Fj{!CSn5TFEWW~w`$40c==MNRYO{U ipPPeCR7Oa*RZ~hz_|KoeYFu+AJT^SwbZlf`um%8dFTC9V literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/vertical.gif b/taxeditor-store/icons/vertical.gif new file mode 100644 index 0000000000000000000000000000000000000000..50a54e0b4a7646c58f90c6a577a46e93dc7758ea GIT binary patch literal 352 zcmZ?wbhEHb6krfwxXQq=W%tF-8N27NKAv8?vZP}}+mv-3Q`huNU)4Wr#gsWq-~al5 z_4EH3^A~;n^Z&=+|6l(6fBozK```b~XC$mRx4mXZ?Yu?v7A>8WqPZmZ721N!PkPRR|F|gGhm{8!M!)1M9 ziIL?Uop~2tBpE-^QJch>a=NvkZB}cGQX>xsBO}8i$+UGhJzNy0r?<^G`uO6F-`^#i z#ku)f+uFsQ#kzZXdz?jsCW$)paL3LN;Bn^UR#1?iDZuH>F;7ljFg=q&ki(gsTYhtW X9lJAIOZ#p%XV(1(4jyoFWUvMR)pYN1>8f~*-kDi$56SbU&*+2PvdM;cZh zZCQ1+W6hDyHAlME9_?Ox^!n5H4XcheuRhwo=E%JLm$#g`edf`J=bwI>Bq8T*Owl>w&KLi>uWpYOl<{Ql>^x8MJ~`S$zCyU**+-r0Em?(Gl1?tccV{P*hXuPqnv z-uwLL_J^O3zW#mw=NSRQg8_kb&(h46KWUYkqb#)wk#%GmS;gLA47c7Ce2No z;#K%s1v#S=l@k+L!VV-TM~O^s=9h_#i-?V5@s2nj7pKhM!tUUI*FTuW%|GyQpaWYA zi?gSlt*sx6tC63dk+Cz=OASk9OC1B2oGlrQhmUedF>YzKIQZd6mk>*sNsQnkhK20n z1sOF9H?lGIN*Sg|i!e4$Qge5c$rO6*)+J#$MZ?2vg=3pSz>F6ThnPFLbWs7go7n)p^lHhN9V37^3ozTK`Dot8X1{+Jc3-dt-0yIU=08QK0xFE literal 0 HcmV?d00001 diff --git a/taxeditor-store/icons/web.gif b/taxeditor-store/icons/web.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec6cca4525bf483077bcc2039eaede6e71258c89 GIT binary patch literal 362 zcmZ?wbhEHb6krfwxXQo~6H^{jeln(fZOo*T0n4t1_pLGO*y1x`Q}l#2#d9{*&R!j} z=48ytlQC=8PC9vVEf75cDvl|iRDSZw$w?>6*Pfg-V@=K4ljW1v0+qx}ngk@vPoA7q zUJhiJLo_{ka&qV9;sbl<|Nryp$;q{o)ztp~|6g8S4kQ^U28usf7#SEe8FWA @@ -103,6 +103,12 @@ id="eu.etaxonomy.taxeditor.preferences.nameTypeDesignationStatus" name="Name Type Designation Status"> + + + + + + @@ -268,6 +283,11 @@ id="eu.etaxonomy.taxeditor.store.datasource.delete" name="Delete Datasource"> + + @@ -396,5 +416,165 @@ id="org.eclipse.ui.views.ProgressView"> + + + + Color and font definitions for the EDIT Taxonomic Editor + + + + + + + + + + + + + + + Colors and fonts for the details view + + + + + + + + + Colors and fonts for the name editor + + + + + + + + + + + + + + + + + + + Colors and fonts for the search view + + + + + + + + + The font that is used for accepted taxa in the search result list. + + + + + The font that is used for synonyms in the search result list. + + + + + The font used by default in the search result list. + + + diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java index e5dee2d70..c8f509ab1 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java @@ -9,22 +9,14 @@ package eu.etaxonomy.taxeditor.datasource; -import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IPath; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchException; +import org.eclipse.ui.IMemento; import org.eclipse.ui.XMLMemento; import eu.etaxonomy.cdm.database.CdmDataSource; @@ -32,7 +24,9 @@ import eu.etaxonomy.cdm.database.CdmPersistentDataSource; import eu.etaxonomy.cdm.database.DataSourceNotFoundException; import eu.etaxonomy.cdm.database.ICdmDataSource; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; +import eu.etaxonomy.taxeditor.model.MementoHelper; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; @@ -46,7 +40,7 @@ public class CdmDataSourceRepository{ private static final String DEFAULT_DATASOURCE_NAME = "cdm"; private static ICdmDataSource currentDataSource; - private static XMLMemento memento; + private static IMemento memento; private static String lastUsedDataSourceName; public static String getLastUsedDataSourceName(){ @@ -138,17 +132,11 @@ public class CdmDataSourceRepository{ * @return */ public static boolean changeDataSource(final ICdmDataSource dataSource) { - - // TODO Close all open editors before showing progress monitor - if (!StoreUtil.closeAll()) { - // User has canceled operation - return false; - } + saveAsCurrentDatabaseToMemento(dataSource); + CdmStore.close(); + + CdmStore.initialize(dataSource); - memento.putString(CURRENT_DATASOURCE, dataSource.getName()); - saveMementoToFile(memento); - PlatformUI.getWorkbench().restart(); - return true; } @@ -173,6 +161,13 @@ public class CdmDataSourceRepository{ * Memento Handling * *********************************************************/ + private static void saveAsCurrentDatabaseToMemento(ICdmDataSource dataSource){ + if(memento == null) + memento = readMemento(); + memento.putString(CURRENT_DATASOURCE, dataSource.getName()); + saveMementoToFile(memento); + } + /* * Answer the workbench state file. */ @@ -185,30 +180,18 @@ public class CdmDataSourceRepository{ return path.toFile(); } - private static XMLMemento readMemento(){ - File stateFile = getDataSourceStateFile(); - FileInputStream input; + private static IMemento readMemento(){ try { - input = new FileInputStream(stateFile); - BufferedReader reader = new BufferedReader( - new InputStreamReader(input, "utf-8")); //$NON-NLS-1$ - return XMLMemento.createReadRoot(reader); + return MementoHelper.readMementoFromFile(getDataSourceStateFile()); } catch (FileNotFoundException e) { - // first start the file is not there return initializeMemento(); - } catch (WorkbenchException e) { - logger.error("Exception while reading the memento", e); - } catch (UnsupportedEncodingException e) { - logger.error("Exception while reading the memento", e); } - - return null; } /** * */ - private static XMLMemento initializeMemento() { + private static IMemento initializeMemento() { XMLMemento memento = XMLMemento.createWriteRoot(TAG_DATASOURCE); memento.putString(CURRENT_DATASOURCE, DEFAULT_DATASOURCE_NAME); @@ -220,25 +203,7 @@ public class CdmDataSourceRepository{ /* * Save the workbench UI in a persistence file. */ - private static boolean saveMementoToFile(XMLMemento memento) { - // Save it to a file. - // XXX: nobody currently checks the return value of this method. - File stateFile = getDataSourceStateFile(); - if (stateFile == null) { - return false; - } - try { - FileOutputStream stream = new FileOutputStream(stateFile); - OutputStreamWriter writer = new OutputStreamWriter(stream, "utf-8"); //$NON-NLS-1$ - memento.save(writer); - writer.close(); - } catch (IOException e) { - stateFile.delete(); - logger.error("Could not save datasource state"); - return false; - } - - // Success ! - return true; + private static IMemento saveMementoToFile(IMemento memento) { + return MementoHelper.saveMementoToFile(memento, getDataSourceStateFile()); } } \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java new file mode 100644 index 000000000..362afe6ac --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java @@ -0,0 +1,55 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.datasource.handler; + +import org.apache.log4j.Logger; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.etaxonomy.cdm.database.CdmDataSource; +import eu.etaxonomy.taxeditor.datasource.view.CdmDataSourceView; +import eu.etaxonomy.taxeditor.store.CdmStore; +import eu.etaxonomy.taxeditor.store.StoreUtil; + +/** + * @author n.hoffmann + * @created Mar 22, 2010 + * @version 1.0 + */ +public class CloseConnectionHandler extends AbstractHandler { + private static final Logger logger = Logger + .getLogger(CloseConnectionHandler.class); + + /* (non-Javadoc) + * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) + */ + public Object execute(ExecutionEvent event) throws ExecutionException { + Shell shell = HandlerUtil.getActiveShell(event); + + boolean confirmed = MessageDialog.openConfirm(shell, "Confirm Datasource Close", "Do you really want to close the datasource connection?\n\n"); + + + if(confirmed){ + CdmStore.close(); + } + + CdmDataSourceView view = (CdmDataSourceView) StoreUtil.getView(CdmDataSourceView.ID, true); + + view.refresh(); + + return null; + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceLabelProvider.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceLabelProvider.java index 164be551d..6fbd2145a 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceLabelProvider.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceLabelProvider.java @@ -10,13 +10,17 @@ package eu.etaxonomy.taxeditor.datasource.view; +import java.util.Map; + import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import eu.etaxonomy.cdm.database.ICdmDataSource; -import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository; +import eu.etaxonomy.cdm.model.common.CdmMetaData; +import eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName; import eu.etaxonomy.taxeditor.model.ImageResources; +import eu.etaxonomy.taxeditor.store.CdmStore; /** * @author n.hoffmann @@ -32,8 +36,11 @@ public class CdmDataSourceLabelProvider extends LabelProvider implements ITableL public Image getColumnImage(Object element, int columnIndex) { // No image at the moment. // TODO display image in colum 0 if the datasource is connected + + if(columnIndex == 0){ ICdmDataSource dataSource = (ICdmDataSource) element; + String key = isCurrentDataSource(dataSource) ? ImageResources.IMG_DATASOURCE_CONNECTED : ImageResources.IMG_DATASOURCE_DISCONNECTED; return ImageResources.getImage(key); @@ -48,6 +55,13 @@ public class CdmDataSourceLabelProvider extends LabelProvider implements ITableL */ public String getColumnText(Object element, int columnIndex) { ICdmDataSource dataSource = (ICdmDataSource) element; + + Map metaData = null; + + if(isCurrentDataSource(dataSource)){ + metaData = CdmStore.getCommonService().getCdmMetaData(); + } + switch (columnIndex){ case 1: return dataSource.getName(); @@ -66,12 +80,34 @@ public class CdmDataSourceLabelProvider extends LabelProvider implements ITableL return ""; } return dataSource.getNomenclaturalCode().name(); + case 6: + if(metaData != null){ + CdmMetaData createDate = metaData.get(MetaDataPropertyName.DB_CREATE_DATE); + if(createDate != null){ + return createDate.getValue(); + } + } + case 7: + if(metaData != null){ + CdmMetaData schemaVersion = metaData.get(MetaDataPropertyName.DB_SCHEMA_VERSION); + if(schemaVersion != null){ + return schemaVersion.getValue(); + } + } + case 8: + if(metaData != null){ + CdmMetaData createNote = metaData.get(MetaDataPropertyName.DB_CREATE_NOTE); + if(createNote != null){ + return createNote.getValue(); + } + } } - return null; + return "-"; } private boolean isCurrentDataSource(ICdmDataSource dataSource){ - String current = CdmDataSourceRepository.getCurrentDataSource().getName(); - return current.equals(dataSource.getName()); + ICdmDataSource currentDataSource = CdmStore.getDataSource(); + + return currentDataSource != null && currentDataSource.getName().equals(dataSource.getName()); } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceView.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceView.java index c60af359b..73f11a432 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceView.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceView.java @@ -32,6 +32,8 @@ import org.eclipse.ui.part.ViewPart; import eu.etaxonomy.cdm.database.ICdmDataSource; import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository; +import eu.etaxonomy.taxeditor.model.IContextListener; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.StoreUtil; /** @@ -39,7 +41,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil; * @created 14.04.2009 * @version 1.0 */ -public class CdmDataSourceView extends ViewPart{ +public class CdmDataSourceView extends ViewPart implements IContextListener{ public static String ID = "eu.etaxonomy.taxeditor.store.datasource.datasourceView"; @@ -50,6 +52,8 @@ public class CdmDataSourceView extends ViewPart{ @Override public void createPartControl(Composite parent) { + CdmStore.addContextListener(this); + // Create top composite FillLayout fillLayout = new FillLayout(); fillLayout.marginWidth = 0; @@ -61,6 +65,8 @@ public class CdmDataSourceView extends ViewPart{ tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); + getSite().setSelectionProvider(tableViewer); + createColumns(tableViewer); tableViewer.setContentProvider(new CdmDataSourceContentProvider()); @@ -108,8 +114,8 @@ public class CdmDataSourceView extends ViewPart{ // This will create the columns for the table private void createColumns(TableViewer viewer) { Table table = viewer.getTable(); - String[] titles = {"Connected", "Name", "Server", "Type", "Database", "Nomenclatural Code"}; - int[] bounds = { 20, 100, 100, 100 , 100, 150}; + String[] titles = {"Connected", "Name", "Server", "Type", "Database", "Nomenclatural Code", "Created", "CDM Version", "Notes"}; + int[] bounds = { 20, 100, 100, 100 , 100, 150, 100, 100, 100}; for (int i = 0; i < titles.length; i++) { TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); @@ -127,9 +133,19 @@ public class CdmDataSourceView extends ViewPart{ tableViewer.refresh(); } + @Override + public void dispose() { + CdmStore.removeContextListener(this); + super.dispose(); + } @Override public void setFocus() { tableViewer.getControl().setFocus(); } + + public boolean onContextEvent(EventType eventType) { + tableViewer.refresh(); + return true; + } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/DatasourceLauncherDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/DatasourceLauncherDialog.java deleted file mode 100644 index 6720a6a1b..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/DatasourceLauncherDialog.java +++ /dev/null @@ -1,180 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs; - -import java.util.List; - -import org.apache.log4j.Logger; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.TitleAreaDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CLabel; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -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.Shell; - -import eu.etaxonomy.cdm.database.ICdmDataSource; -import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository; -import eu.etaxonomy.taxeditor.preference.PreferencesUtil; - -/** - * @author n.hoffmann - * @created 06.07.2009 - * @version 1.0 - */ -public class DatasourceLauncherDialog extends TitleAreaDialog { - - - private static final Logger logger = Logger - .getLogger(DatasourceLauncherDialog.class); - private Combo combo_dataSources; - private int selection; - private List dataSources; - private Button okButton; - private Button button_toggle; - private String message = "Choose a data source to connect to"; - - /** - * @param parentShell - * @param message Text to display. Specify null for default text. - */ - public DatasourceLauncherDialog(Shell parentShell, String message) { - super(parentShell); - - if (message != null) { - this.message = message; - } - dataSources = CdmDataSourceRepository.getAll(); - selection = -1; - String lastUsedDataSourceName = CdmDataSourceRepository.getLastUsedDataSourceName(); - for(ICdmDataSource dataSource : dataSources){ - selection++; - if(dataSource.getName().equals(lastUsedDataSourceName)){ - break; - } - } - } - - /* - * (non-Javadoc) - * @see org.eclipse.jface.dialogs.TitleAreaDialog#createContents(org.eclipse.swt.widgets.Composite) - */ - protected Control createContents(Composite parent) { - Control contents = super.createContents(parent); - - setTitle("Choose Datasource"); - setMessage(message); - - this.getShell().setText("Datasource Launcher Not the same"); - - return contents; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createDialogArea(Composite parent) { - Composite container = (Composite) super.createDialogArea(parent); - - // create composite - Composite composite = new Composite(container, SWT.NULL); - composite.setLayoutData(new GridData(GridData.FILL_BOTH)); - - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - composite.setLayout(layout); - - final CLabel label_dataSources = new CLabel(composite, SWT.NULL); - label_dataSources.setText("Datasource:"); - - combo_dataSources = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY); - combo_dataSources.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL - | GridData.HORIZONTAL_ALIGN_FILL)); - int i = 0; - - for (ICdmDataSource dataSource : dataSources){ - String name = dataSource.getName() != null ? dataSource.getName() : "datasource name not set"; - String server = dataSource.getServer() != null ? dataSource.getServer() : "local"; - String dataBase = dataSource.getDatabase() != null ? dataSource.getDatabase() : "database name not set"; - - combo_dataSources.add(name + " [" + server + " - " + dataBase + "]", i++); - } - - combo_dataSources.addSelectionListener(new SelectionAdapter(){ - - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) - */ - @Override - public void widgetSelected(SelectionEvent e) { - selection = combo_dataSources.getSelectionIndex(); - } - }); - - combo_dataSources.select(selection); - - Composite toggle = new Composite(composite, SWT.NULL); - toggle.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - toggle.setLayout(new RowLayout(SWT.HORIZONTAL)); - - button_toggle = new Button(toggle, SWT.CHECK); - - CLabel label_info = new CLabel(toggle, SWT.NULL); - label_info.setText("Do not show this dialog on startup (may be configured in Preferences)"); - - button_toggle.addSelectionListener(new SelectionAdapter(){ - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) - */ - @Override - public void widgetSelected(SelectionEvent e) { - PreferencesUtil.getPreferenceStore().setValue(PreferencesUtil.SHOW_DATASOURCE_CHOOSER, false); - } - }); - - applyDialogFont(composite); - return composite; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite) - */ - protected void createButtonsForButtonBar(Composite parent) { - // create OK and Cancel buttons by default - okButton = createButton(parent, IDialogConstants.OK_ID, - IDialogConstants.OK_LABEL, true); - createButton(parent, IDialogConstants.CANCEL_ID, - IDialogConstants.CANCEL_LABEL, false); - //do this here because setting the text will set enablement on the ok - // button - combo_dataSources.setFocus(); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#okPressed() - */ - @Override - protected void okPressed() { - super.okPressed(); - ICdmDataSource chosenDataSource = dataSources.get(selection); - CdmDataSourceRepository.setCurrentDataSource(chosenDataSource); - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java index 92e7a38d8..e69da0029 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java @@ -19,9 +19,9 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -import org.springframework.security.BadCredentialsException; -import org.springframework.security.LockedException; -import org.springframework.security.providers.UsernamePasswordAuthenticationToken; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.LockedException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.StoreUtil; diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/NewReferenceInputDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/NewReferenceInputDialog.java index e795bcc76..9c7899cd7 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/NewReferenceInputDialog.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/NewReferenceInputDialog.java @@ -30,23 +30,9 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -import eu.etaxonomy.cdm.model.reference.Article; -import eu.etaxonomy.cdm.model.reference.Book; -import eu.etaxonomy.cdm.model.reference.BookSection; -import eu.etaxonomy.cdm.model.reference.CdDvd; -import eu.etaxonomy.cdm.model.reference.Database; -import eu.etaxonomy.cdm.model.reference.Generic; -import eu.etaxonomy.cdm.model.reference.InProceedings; -import eu.etaxonomy.cdm.model.reference.Journal; -import eu.etaxonomy.cdm.model.reference.Patent; -import eu.etaxonomy.cdm.model.reference.PersonalCommunication; -import eu.etaxonomy.cdm.model.reference.PrintSeries; -import eu.etaxonomy.cdm.model.reference.Proceedings; import eu.etaxonomy.cdm.model.reference.ReferenceBase; +import eu.etaxonomy.cdm.model.reference.ReferenceFactory; import eu.etaxonomy.cdm.model.reference.ReferenceType; -import eu.etaxonomy.cdm.model.reference.Report; -import eu.etaxonomy.cdm.model.reference.Thesis; -import eu.etaxonomy.cdm.model.reference.WebPage; /** * A simple input dialog for soliciting an input string from the user. @@ -54,6 +40,8 @@ import eu.etaxonomy.cdm.model.reference.WebPage; * This concrete dialog class can be instantiated as is, or further subclassed as * required. *

+ * + * TODO Replace this with a proper wizard that allows for sophisticated reference editing */ public class NewReferenceInputDialog extends Dialog { private static final Logger logger = Logger @@ -148,57 +136,60 @@ public class NewReferenceInputDialog extends Dialog { */ private void createReference() { String key = refCombo.getText(); + // TODO replace w more generic method when cdmlib matures accordingly if (ReferenceType.Article.getMessage().equals(key)) { - reference = Article.NewInstance(); + reference = ReferenceFactory.newArticle(); } - if (ReferenceType.Book.getMessage().equals(key)) { - reference = Book.NewInstance(); + else if (ReferenceType.Book.getMessage().equals(key)) { + reference = ReferenceFactory.newBook(); } - if (ReferenceType.BookSection.getMessage().equals(key)) { - reference = BookSection.NewInstance(); + else if (ReferenceType.BookSection.getMessage().equals(key)) { + reference = ReferenceFactory.newBookSection(); } - if (ReferenceType.CdDvd.getMessage().equals(key)) { - reference = CdDvd.NewInstance(); + else if (ReferenceType.CdDvd.getMessage().equals(key)) { + reference = ReferenceFactory.newCdDvd(); } - if (ReferenceType.Database.getMessage().equals(key)) { - reference = Database.NewInstance(); + else if (ReferenceType.Database.getMessage().equals(key)) { + reference = ReferenceFactory.newDatabase(); } - if (ReferenceType.Generic.getMessage().equals(key)) { - reference = Generic.NewInstance(); + else if (ReferenceType.Generic.getMessage().equals(key)) { + reference = ReferenceFactory.newGeneric(); } - if (ReferenceType.InProceedings.getMessage().equals(key)) { - reference = InProceedings.NewInstance(); + else if (ReferenceType.InProceedings.getMessage().equals(key)) { + reference = ReferenceFactory.newInProceedings(); } - if (ReferenceType.Journal.getMessage().equals(key)) { - reference = Journal.NewInstance(); + else if (ReferenceType.Journal.getMessage().equals(key)) { + reference = ReferenceFactory.newJournal(); } - if (ReferenceType.Map.getMessage().equals(key)) { - reference = eu.etaxonomy.cdm.model.reference.Map.NewInstance(); + else if (ReferenceType.Map.getMessage().equals(key)) { + reference = ReferenceFactory.newMap(); } - if (ReferenceType.Patent.getMessage().equals(key)) { - reference = Patent.NewInstance(); + else if (ReferenceType.Patent.getMessage().equals(key)) { + reference = ReferenceFactory.newPatent(); } - if (ReferenceType.PersonalCommunication.getMessage().equals(key)) { - reference = PersonalCommunication.NewInstance(); + else if (ReferenceType.PersonalCommunication.getMessage().equals(key)) { + reference = ReferenceFactory.newPersonalCommunication(); } - if (ReferenceType.PrintSeries.getMessage().equals(key)) { - reference = PrintSeries.NewInstance(); + else if (ReferenceType.PrintSeries.getMessage().equals(key)) { + reference = ReferenceFactory.newPrintSeries(); } - if (ReferenceType.Proceedings.getMessage().equals(key)) { - reference = Proceedings.NewInstance(); + else if (ReferenceType.Proceedings.getMessage().equals(key)) { + reference = ReferenceFactory.newProceedings(); } - if (ReferenceType.Report.getMessage().equals(key)) { - reference = Report.NewInstance(); + else if (ReferenceType.Report.getMessage().equals(key)) { + reference = ReferenceFactory.newReport(); } - if (ReferenceType.Thesis.getMessage().equals(key)) { - reference = Thesis.NewInstance(); + else if (ReferenceType.Thesis.getMessage().equals(key)) { + reference = ReferenceFactory.newThesis(); } - if (ReferenceType.WebPage.getMessage().equals(key)) { - reference = WebPage.NewInstance(); + else if (ReferenceType.WebPage.getMessage().equals(key)) { + reference = ReferenceFactory.newWebPage(); } + + // fill the cache if (reference != null) { - reference.setTitleCache(refText.getText()); + reference.setTitleCache(refText.getText(), true); } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/AbstractFilteredCdmResourceSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/AbstractFilteredCdmResourceSelectionDialog.java deleted file mode 100644 index 0fa24b342..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/AbstractFilteredCdmResourceSelectionDialog.java +++ /dev/null @@ -1,303 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.text.Collator; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; - -import eu.etaxonomy.cdm.model.common.CdmBase; -import eu.etaxonomy.cdm.model.common.IIdentifiableEntity; -import eu.etaxonomy.cdm.model.common.UuidAndTitleCache; -import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; - -/** - * @author n.hoffmann - * @created 04.06.2009 - * @version 1.0 - */ -public abstract class AbstractFilteredCdmResourceSelectionDialog extends - FilteredItemsSelectionDialog { - private static final Logger logger = Logger - .getLogger(AbstractFilteredCdmResourceSelectionDialog.class); - - - protected List> model; - private Set transientCdmObjects = new HashSet(); - private String settings; - - /** - * @param shell - */ - protected AbstractFilteredCdmResourceSelectionDialog(Shell shell, String title, boolean multi, String settings, T cdmObject) { - super(shell, multi); - setTitle(title); - setMessage("Use * for wildcard, or ? to see all entries"); - this.settings = settings; - - initModel(); - - if (cdmObject != null) { - // If agent is not persistent, add it to the model - if (isObjectTransient(cdmObject)) { - addObjectToModel(cdmObject); - } - setInitialPattern(getTitleCache(cdmObject)); - } - - ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider(); - setListLabelProvider(labelProvider); - setDetailsLabelProvider(labelProvider); - -// setSelectionHistory(new ResourceSelectionHistory()); - } - - /** - * @param dialog - * @return - */ - protected static TYPE getSelectionFromDialog(AbstractFilteredCdmResourceSelectionDialog dialog) { - if (dialog.open() == Window.CANCEL) { - return null; - } - - UUID uuid = dialog.getSelectedUuidAndTitleCache().getUuid(); - if(uuid == null){ - return null; - } - return dialog.getCdmObjectByUuid(uuid); - } - - /** - * Check if object was created during the life of this dialog. If not, - * retrieve it from the CdmStore. - * - * @param cdmUuid - * @return - */ - protected T getCdmObjectByUuid(UUID cdmUuid) { - for (T cdmObject : transientCdmObjects) { - if (cdmObject.getUuid().equals(cdmUuid)) { - return cdmObject; - } - } - return getPersistentObject(cdmUuid); - } - - /** - * @param cdmUuid - * @return - */ - abstract protected T getPersistentObject(UUID uuid); - - /** - * @param cdmObject - */ - protected void addObjectToModel(T cdmObject) { - model.add(new UuidAndTitleCache(cdmObject.getClass(), cdmObject.getUuid(), getTitleCache(cdmObject))); - transientCdmObjects.add(cdmObject); - } - - /** - * @param cdmObject - * @return - */ - protected boolean isObjectTransient(T cdmObject) { - return (getPersistentObject(cdmObject.getUuid()) == null); - } - - /** - * @param cdmObject - * @return - */ - private String getTitleCache(T cdmObject) { - if (cdmObject instanceof IIdentifiableEntity) { - return ((IIdentifiableEntity) cdmObject).getTitleCache(); - } - return null; - } - - /** - * - */ - abstract protected void initModel(); - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter() - */ - @Override - protected ItemsFilter createFilter() { - return new ItemsFilter() { - - @Override - public boolean isConsistentItem(Object item) { - return false; - } - - @Override - public boolean matchItem(Object item) { - String text = null; - if(item instanceof UuidAndTitleCache){ - text = ((UuidAndTitleCache) item).getTitleCache(); - }else if(item instanceof String){ - text = (String) item; - } - if (text != null) { - logger.info(text + " " + matches(text));// + " " + model.size()); - } else { - logger.info("null"); - } - return text != null ? matches(text) : false; - } - - }; - } - - - /** - * Set the filter input to the Agent's title cache - * - * @param teamOrPerson - */ - protected void setPattern(T cdmObject) { - ((Text) getPatternControl()).setText(getTitleCache(cdmObject)); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor) - */ - @Override - protected void fillContentProvider(AbstractContentProvider contentProvider, - ItemsFilter itemsFilter, IProgressMonitor progressMonitor) - throws CoreException { - try { - progressMonitor.beginTask("Looking for names", model.size()); // Why no progress monitor? - for(UuidAndTitleCache element : model){ - contentProvider.add(element, itemsFilter); - if (progressMonitor.isCanceled()) { - throw new OperationCanceledException(); - } - progressMonitor.worked(1); - } - } - finally { - progressMonitor.done(); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getDialogSettings() - */ - @Override - protected IDialogSettings getDialogSettings() { - IDialogSettings settings = TaxeditorStorePlugin.getDefault().getDialogSettings().getSection(getSettings()); - - if (settings == null) { - settings = TaxeditorStorePlugin.getDefault().getDialogSettings().addNewSection(getSettings()); - } - return settings; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getElementName(java.lang.Object) - */ - @Override - public String getElementName(Object item) { - return ((UuidAndTitleCache) item).getTitleCache(); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getItemsComparator() - */ - @Override - protected Comparator getItemsComparator() { - return new Comparator() { - public int compare(UuidAndTitleCache entity1, - UuidAndTitleCache entity2) { - Collator collator = Collator.getInstance(); - return collator.compare(entity1.getTitleCache(), entity2.getTitleCache()); - } - }; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#validateItem(java.lang.Object) - */ - @Override - protected IStatus validateItem(Object item) { - return Status.OK_STATUS; - } - - /** - * @return - */ - protected UuidAndTitleCache getSelectedUuidAndTitleCache() { - Object[] result = getResult(); - return result[0] == null ? null : (UuidAndTitleCache) result[0]; - } - - public String getSettings() { - if(settings == null){ - throw new IllegalStateException("No SETTINGS set."); - } - return settings; - } - - /** - * - * @author n.hoffmann - * @created Oct 19, 2009 - * @version 1.0 - */ - private class ResourceSelectionHistory extends SelectionHistory { - /* - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#restoreItemFromMemento(org.eclipse.ui.IMemento) - */ - protected Object restoreItemFromMemento(IMemento element) { - return element.getString("resource"); //$NON-NLS-1$ - } - /* - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#storeItemToMemento(java.lang.Object, - * org.eclipse.ui.IMemento) - */ - protected void storeItemToMemento(Object item, IMemento element) { - element.putString("resource", item.toString()); //$NON-NLS-1$ - } - } - - public class FilteredCdmResourceLabelProvider extends LabelProvider { - public String getText(Object element) { - if (element == null) { - return null; - } - return ((UuidAndTitleCache) element).getTitleCache(); - } - }; - -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredAgentSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredAgentSelectionDialog.java deleted file mode 100644 index 7a74f76d7..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredAgentSelectionDialog.java +++ /dev/null @@ -1,130 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.agent.AgentBase; -import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor; -import eu.etaxonomy.cdm.model.agent.Person; -import eu.etaxonomy.cdm.model.agent.Team; -import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; -import eu.etaxonomy.cdm.model.common.UuidAndTitleCache; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created Sep 10, 2009 - * @version 1.0 - */ -public class FilteredAgentSelectionDialog extends - AbstractFilteredCdmResourceSelectionDialog { - private static final Logger logger = Logger - .getLogger(FilteredAgentSelectionDialog.class); - - /** - * Dialog can be initialized with an agent. Otherwise, leave - * agent == NULL. - * - * @param shell - * @param agent - * @return - */ - public static AgentBase selectAgent(Shell shell, AgentBase agent) { - FilteredAgentSelectionDialog dialog = new FilteredAgentSelectionDialog(shell, - "Choose authors or institutions", false, agent); - return getSelectionFromDialog(dialog); - } - - private Set transientAgents = new HashSet(); - - /** - * @param shell - * @param title - * @param agent - */ - protected FilteredAgentSelectionDialog(Shell shell, String title, boolean multi, AgentBase agent) { - super(shell, title, multi, FilteredAgentSelectionDialog.class.getCanonicalName(), agent); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - Link link = new Link(parent, SWT.NONE); - link.setText("Click link to create a new author or author team."); - link.addListener (SWT.Selection, new Listener () { - public void handleEvent(Event event) { - InputDialog dialog = new InputDialog(getShell(), "Create " + event.text, "Enter new " + event.text, "", null); - if (dialog.open() == Window.OK) { - - TeamOrPersonBase teamOrPerson = ("author").equals(event.text) ? Person.NewInstance() : Team.NewInstance(); - teamOrPerson.setTitleCache(dialog.getValue()); - teamOrPerson.setNomenclaturalTitle(dialog.getValue()); - - addObjectToModel(teamOrPerson); - setPattern(teamOrPerson); - } - } - }); - return link; - } - - /** - * @author p.ciardelli - * @created 18.09.2009 - * @version 1.0 - */ - public class DetailsLabelProvider extends LabelProvider { - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) - */ - public String getText(Object element) { - AgentBase agent = getCdmObjectByUuid(((UuidAndTitleCache) element).getUuid()); - if (agent instanceof INomenclaturalAuthor) { - return "Nomenclatural title: '" + ((INomenclaturalAuthor) agent).getNomenclaturalTitle() + "'"; - } else { - return "'" + agent.getTitleCache() + "' is not a nomenclatural author."; - } - } - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObect(java.util.UUID) - */ - @Override - protected AgentBase getPersistentObject(UUID cdmUuid) { - return CdmStore.getAgentService().load(cdmUuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - model = CdmStore.getAgentService().getUuidAndTitleCache(); - } -} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredNameSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredNameSelectionDialog.java deleted file mode 100644 index 7f9c9358d..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredNameSelectionDialog.java +++ /dev/null @@ -1,103 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.name.TaxonNameBase; -import eu.etaxonomy.taxeditor.parser.ParseHandler; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created 04.06.2009 - * @version 1.0 - */ -public class FilteredNameSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog { - private static final Logger logger = Logger - .getLogger(FilteredNameSelectionDialog.class); - - /** - * Creates a filtered selection dialog to select a name. - * - * @param shell - * The shell for displaying this widget - * @param name - * A name that should be selected when the dialog opens - * @return - * A name object upon selection - */ - public static TaxonNameBase selectName(Shell shell, TaxonNameBase name) { - FilteredNameSelectionDialog dialog = new FilteredNameSelectionDialog(shell, - "Choose a name", false, name); - return getSelectionFromDialog(dialog); - } - - /** - * @param shell - * @param title - * @param name - */ - protected FilteredNameSelectionDialog(Shell shell, String title, boolean multi, TaxonNameBase name) { - super(shell, title, multi, FilteredNameSelectionDialog.class.getCanonicalName(), name); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - Link link = new Link(parent, SWT.NONE); - link.setText("Click here to create a new name."); - link.addListener (SWT.Selection, new Listener () { - public void handleEvent(Event event) { - // TODO replace this with a wizard - - InputDialog dialog = new InputDialog(getShell(), "Create a name", "Enter new name", "", null); - if (dialog.open() == Window.OK) { - - TaxonNameBase name = ParseHandler.quickParse(dialog.getValue()); - - addObjectToModel(name); - setPattern(name); - } - } - }); - return link; - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected TaxonNameBase getPersistentObject(UUID cdmUuid) { - return CdmStore.getNameService().load(cdmUuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - model = CdmStore.getNameService().getUuidAndTitleCache(); - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredPersonSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredPersonSelectionDialog.java deleted file mode 100644 index df83d0fac..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredPersonSelectionDialog.java +++ /dev/null @@ -1,76 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.agent.Person; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created Sep 24, 2009 - * @version 1.0 - */ -public class FilteredPersonSelectionDialog extends - AbstractFilteredCdmResourceSelectionDialog { - private static final Logger logger = Logger - .getLogger(FilteredPersonSelectionDialog.class); - - public static Person selectPerson(Shell shell, Person person){ - FilteredPersonSelectionDialog dialog = new FilteredPersonSelectionDialog(shell, - "Choose a person", false, FilteredPersonSelectionDialog.class.getCanonicalName(), person); - return getSelectionFromDialog(dialog); - } - - /** - * @param shell - * @param title - * @param multi - * @param settings - * @param cdmObject - */ - protected FilteredPersonSelectionDialog(Shell shell, String title, - boolean multi, String settings, Person cdmObject) { - super(shell, title, multi, settings, cdmObject); - } - - - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected Person getPersistentObject(UUID uuid) { - return (Person) CdmStore.getAgentService().load(uuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - model = CdmStore.getAgentService().getPersonUuidAndNomenclaturalTitle(); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - return null; - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredReferenceSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredReferenceSelectionDialog.java deleted file mode 100644 index 409b50fba..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredReferenceSelectionDialog.java +++ /dev/null @@ -1,210 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.reference.ReferenceBase; -import eu.etaxonomy.taxeditor.dialogs.NewReferenceInputDialog; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created 04.06.2009 - * @version 1.0 - */ -public class FilteredReferenceSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog { - private static final Logger logger = Logger - .getLogger(FilteredReferenceSelectionDialog.class); - - private static final String SHOW_AUTHORS = "ShowAuthors"; //$NON-NLS-1$ - - private Button button_showAuthors; - private ShowReferencesWithAuthorAction showReferencesWithAuthorAction; - private String showAuthorsText = "Include authors in reference name"; - private boolean showAuthors = false; - - private AbstractContentProvider contentProviderTmp; - - private ItemsFilter itemsFilterTmp; - - /** - * @param reference - * @param taxon - * @return - */ - public static ReferenceBase selectReference(Shell shell, ReferenceBase reference) { - FilteredReferenceSelectionDialog dialog = new FilteredReferenceSelectionDialog(shell, - "Choose a reference", false, (ReferenceBase) reference); - return getSelectionFromDialog(dialog); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor) - */ - @Override - protected void fillContentProvider(AbstractContentProvider contentProvider, - ItemsFilter itemsFilter, IProgressMonitor progressMonitor) - throws CoreException { - super.fillContentProvider(contentProvider, itemsFilter, progressMonitor); - contentProviderTmp = contentProvider; - itemsFilterTmp = itemsFilter; - } - - protected void reloadModel(){ - try { - super.fillContentProvider(contentProviderTmp, itemsFilterTmp, null); - } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - - /** - * @param shell - * @param title - * @param reference - */ - protected FilteredReferenceSelectionDialog(Shell shell, String title, boolean multi, ReferenceBase reference) { - super(shell, title, multi, FilteredReferenceSelectionDialog.class.getCanonicalName(), reference); - showReferencesWithAuthorAction = new ShowReferencesWithAuthorAction(); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - - Composite composite = new Composite(parent, SWT.NONE); - - composite.setLayout(new GridLayout()); - - - button_showAuthors = new Button(composite, SWT.CHECK); - button_showAuthors.setText(showAuthorsText); - - button_showAuthors.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - showReferencesWithAuthorAction.run(); - } - }); - - Link link = new Link(composite, SWT.NONE); - link.setText("Click here to create a new reference."); - link.addListener (SWT.Selection, new Listener () { - public void handleEvent(Event event) { - - NewReferenceInputDialog dialog = new NewReferenceInputDialog(getShell()); - - if (dialog.open() == Window.OK) { - - ReferenceBase reference = dialog.getReference(); - - addObjectToModel(reference); - setPattern(reference); - } - } - }); - return composite; - } - - /* - * (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#restoreDialog(org.eclipse.jface.dialogs.IDialogSettings) - */ - protected void restoreDialog(IDialogSettings settings) { - if (settings.get(SHOW_AUTHORS) != null) { - showAuthors = settings.getBoolean(SHOW_AUTHORS); - } - setShowAuthorButtons(showAuthors); - super.restoreDialog(settings); - - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#storeDialog(org.eclipse.jface.dialogs.IDialogSettings) - */ - @Override - protected void storeDialog(IDialogSettings settings) { - settings.put(SHOW_AUTHORS, showAuthors); - - super.storeDialog(settings); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected ReferenceBase getPersistentObject(UUID cdmUuid) { - return CdmStore.getReferenceService().load(cdmUuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - if(showAuthors){ - model = CdmStore.getReferenceService().getUuidAndTitleCache(); - }else{ - model = CdmStore.getReferenceService().getUuidAndTitle(); - } - } - - private void setShowAuthorButtons(boolean showAuthors){ - button_showAuthors.setSelection(showAuthors); - showReferencesWithAuthorAction.setChecked(showAuthors); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillViewMenu(org.eclipse.jface.action.IMenuManager) - */ - @Override - protected void fillViewMenu(IMenuManager menuManager) { - super.fillViewMenu(menuManager); - menuManager.add(showReferencesWithAuthorAction); - } - - private class ShowReferencesWithAuthorAction extends Action{ - public ShowReferencesWithAuthorAction(){ - super(showAuthorsText, IAction.AS_CHECK_BOX); - } - - public void run(){ - showAuthors = showAuthors ? false : true; - setShowAuthorButtons(showAuthors); - initModel(); - } - } -} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonNodeSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonNodeSelectionDialog.java deleted file mode 100644 index d0cb23de1..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonNodeSelectionDialog.java +++ /dev/null @@ -1,187 +0,0 @@ -/** - * - */ -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.List; -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.common.UuidAndTitleCache; -import eu.etaxonomy.cdm.model.taxon.TaxonNode; -import eu.etaxonomy.cdm.model.taxon.TaxonomicTree; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author p.ciardelli - * - */ -public class FilteredTaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog { - - private static final Logger logger = Logger - .getLogger(FilteredTaxonNodeSelectionDialog.class); - - - /** - * @param taxon - * @return - */ - public static TaxonNode selectTaxonNode(Shell shell, String title, List excludeTaxa, TaxonNode node) { - FilteredTaxonNodeSelectionDialog dialog = new FilteredTaxonNodeSelectionDialog(shell, - title, - excludeTaxa, - false, - node); - return getSelectionFromDialog(dialog); - } - - private List allTaxonBases; - - private Combo taxonomicTreeSelectionCombo; - - private List taxonomicTrees; - - private TaxonomicTree selectedTaxonomicTree; - - private List excludeTaxa; - - /** - * - * - * @param shell - * @param title - */ - protected FilteredTaxonNodeSelectionDialog(Shell shell, String title, List excludeTaxa, boolean multi, TaxonNode node) { - super(shell, title, multi, FilteredTaxonNodeSelectionDialog.class.getCanonicalName(), node); - - this.excludeTaxa = excludeTaxa; - - ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider(); - - setListLabelProvider(labelProvider); - setDetailsLabelProvider(labelProvider); - - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor) - */ - @Override - protected void fillContentProvider(AbstractContentProvider contentProvider, - ItemsFilter itemsFilter, IProgressMonitor progressMonitor) - throws CoreException { - - try { - progressMonitor.beginTask("Looking for taxa", model.size()); // Why no progres monitor? - if(excludeTaxa == null){ - for(UuidAndTitleCache taxon : model){ - contentProvider.add(taxon, itemsFilter); - - if (progressMonitor.isCanceled()) { - throw new OperationCanceledException(); - } - progressMonitor.worked(1); - } - }else{ - for(UuidAndTitleCache taxon : model){ - if( ! excludeTaxa.contains(taxon.getUuid())){ - contentProvider.add(taxon, itemsFilter); - } - - if (progressMonitor.isCanceled()) { - throw new OperationCanceledException(); - } - progressMonitor.worked(1); - } - } - } - finally { - progressMonitor.done(); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - - // TODO tree selection is disabled at the moment and the first tree will always be used. - // change this once we are working with multiple trees -// return createTreeSelectionCombo(parent); - - return null; - } - - /* - * currently disabled tree selection composite - */ - private Control createTreeSelectionCombo(Composite parent){ - Composite taxonomicTreeSelection = new Composite(parent, SWT.NULL); - taxonomicTreeSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); - - GridLayout layout = new GridLayout(); - taxonomicTreeSelection.setLayout(layout); - - Label label = new Label(taxonomicTreeSelection, SWT.NULL); - // TODO not working is not really true but leave it there to remind everyone that this is under construction - label.setText("Select Taxonomic Tree (not completely working at the moment)"); - taxonomicTreeSelectionCombo = new Combo(taxonomicTreeSelection, SWT.BORDER | SWT.READ_ONLY); - taxonomicTreeSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true)); - - for(TaxonomicTree tree : taxonomicTrees){ - taxonomicTreeSelectionCombo.add(tree.getName().getText(), taxonomicTrees.indexOf(tree)); - } - - // TODO remember last selection - - taxonomicTreeSelectionCombo.addSelectionListener(new SelectionAdapter(){ - - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) - */ - @Override - public void widgetSelected(SelectionEvent e) { - selectedTaxonomicTree = taxonomicTrees.get(taxonomicTreeSelectionCombo.getSelectionIndex()); - } - - }); - - return taxonomicTreeSelection; - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected TaxonNode getPersistentObject(UUID uuid) { - return CdmStore.getTaxonTreeService().getTaxonNodeByUuid(uuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - // default to first tree - // TODO this will be problematic and can only be seen as workaround - taxonomicTrees = CdmStore.getTaxonTreeService().list(null, null, null, null, null); - selectedTaxonomicTree = taxonomicTrees.iterator().next(); - model = CdmStore.getTaxonTreeService().getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(selectedTaxonomicTree); - } -} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonSelectionDialog.java deleted file mode 100644 index 0be696d70..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonSelectionDialog.java +++ /dev/null @@ -1,78 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.taxon.TaxonBase; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created Sep 21, 2009 - * @version 1.0 - */ -public class FilteredTaxonSelectionDialog extends - AbstractFilteredCdmResourceSelectionDialog { - private static final Logger logger = Logger - .getLogger(FilteredTaxonSelectionDialog.class); - - - /** - * @param taxon - * @return - */ - public static TaxonBase selectTaxon(Shell shell) { - FilteredTaxonSelectionDialog dialog = new FilteredTaxonSelectionDialog(shell, - "Choose a taxon", false, null); - return getSelectionFromDialog(dialog); - } - - /** - * @param shell - * @param title - */ - protected FilteredTaxonSelectionDialog(Shell shell, String title, boolean multi, TaxonBase taxon) { - super(shell, title, multi, FilteredReferenceSelectionDialog.class.getCanonicalName(), taxon); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected TaxonBase getPersistentObject(UUID uuid) { - return CdmStore.getTaxonService().load(uuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - model = CdmStore.getTaxonService().getUuidAndTitleCache(); - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonomicTreeSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonomicTreeSelectionDialog.java deleted file mode 100644 index 4da0ed325..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonomicTreeSelectionDialog.java +++ /dev/null @@ -1,82 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.taxon.TaxonomicTree; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created Sep 21, 2009 - * @version 1.0 - */ -public class FilteredTaxonomicTreeSelectionDialog extends - AbstractFilteredCdmResourceSelectionDialog { - - private static final Logger logger = Logger - .getLogger(FilteredTaxonomicTreeSelectionDialog.class); - - - /** - * @param taxon - * @return - */ - public static TaxonomicTree selectTaxonomicTree(Shell shell) { - FilteredTaxonomicTreeSelectionDialog dialog = new FilteredTaxonomicTreeSelectionDialog(shell, - "Choose a taxonomic tree", false, "", null); - return getSelectionFromDialog(dialog); - } - - /** - * @param shell - * @param title - * @param multi - * @param settings - */ - protected FilteredTaxonomicTreeSelectionDialog(Shell shell, String title, - boolean multi, String settings, TaxonomicTree tree) { - super(shell, title, multi, settings, tree); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected TaxonomicTree getPersistentObject(UUID cdmUuid) { - return CdmStore.getTaxonTreeService().getTaxonomicTreeByUuid(cdmUuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - model = CdmStore.getTaxonTreeService().getUuidAndTitleCache(); - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTeamOrPersonBaseSelectionDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTeamOrPersonBaseSelectionDialog.java deleted file mode 100644 index 54f945079..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTeamOrPersonBaseSelectionDialog.java +++ /dev/null @@ -1,75 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.dialogs.filteredSelection; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; - -import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author n.hoffmann - * @created Sep 24, 2009 - * @version 1.0 - */ -public class FilteredTeamOrPersonBaseSelectionDialog extends - AbstractFilteredCdmResourceSelectionDialog { - private static final Logger logger = Logger - .getLogger(FilteredTeamOrPersonBaseSelectionDialog.class); - - public static TeamOrPersonBase selectTeamOrPersonBase(Shell shell, TeamOrPersonBase teamOrPersonBase){ - FilteredTeamOrPersonBaseSelectionDialog dialog = new FilteredTeamOrPersonBaseSelectionDialog(shell, - "Choose Team or Person", false, FilteredTeamOrPersonBaseSelectionDialog.class.getCanonicalName(), teamOrPersonBase); - return getSelectionFromDialog(dialog); - } - - /** - * @param shell - * @param title - * @param multi - * @param settings - * @param cdmObject - */ - protected FilteredTeamOrPersonBaseSelectionDialog(Shell shell, - String title, boolean multi, String settings, - TeamOrPersonBase cdmObject) { - super(shell, title, multi, settings, cdmObject); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) - */ - @Override - protected TeamOrPersonBase getPersistentObject(UUID uuid) { - return (TeamOrPersonBase) CdmStore.getAgentService().load(uuid); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#initModel() - */ - @Override - protected void initModel() { - model = CdmStore.getAgentService().getTeamOrPersonBaseUuidAndNomenclaturalTitle(); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createExtendedContentArea(Composite parent) { - return null; - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java index e72bb48fe..e676c0501 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java @@ -1,91 +1,91 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.io.wizard; - -import org.apache.log4j.Logger; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; - -import eu.etaxonomy.cdm.io.common.IImportConfigurator; -import eu.etaxonomy.cdm.model.name.NomenclaturalCode; -import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper; -import eu.etaxonomy.taxeditor.preference.PreferencesUtil; - -/** - * @author p.ciardelli - * @created 11.09.2009 - * @version 1.0 - */ -public class NomenclaturalCodeWizardPage extends WizardPage { - - - - private IImportConfigurator configurator; - - /** - * - */ - public NomenclaturalCodeWizardPage() { - super("Choose nomenclatural code"); - - this.setTitle("Choose nomenclatural code"); - - this.setDescription("Choose which code to use for imported names."); - } - - /** - * @param configurator - */ - public NomenclaturalCodeWizardPage(IImportConfigurator configurator) { - this(); - this.configurator = configurator; - } - - private static final Logger logger = Logger - .getLogger(NomenclaturalCodeWizardPage.class); - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) - */ - public void createControl(Composite parent) { - Composite container = new Composite(parent, SWT.NULL); - container.setLayout(new FillLayout()); - - final Group group = new Group(container, SWT.NONE); - group.setLayout(new GridLayout()); - - NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode(); - - // set preferred code as default - configurator.setNomenclaturalCode(preferredCode); - - for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) { - Button button = new Button(group, SWT.RADIO); - button.setText(NomenclaturalCodeHelper.getDescription(code)); - button.setData(code); - button.setSelection(preferredCode.equals(code)); - button.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - configurator.setNomenclaturalCode((NomenclaturalCode) e.widget.getData()); - } - }); - } - - setControl(container); - } -} +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.io.wizard; + +import org.apache.log4j.Logger; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; + +import eu.etaxonomy.cdm.io.common.IImportConfigurator; +import eu.etaxonomy.cdm.model.name.NomenclaturalCode; +import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper; +import eu.etaxonomy.taxeditor.preference.PreferencesUtil; + +/** + * @author p.ciardelli + * @created 11.09.2009 + * @version 1.0 + */ +public class NomenclaturalCodeWizardPage extends WizardPage { + + + + private IImportConfigurator configurator; + + /** + * + */ + public NomenclaturalCodeWizardPage() { + super("Choose nomenclatural code"); + + this.setTitle("Choose nomenclatural code"); + + this.setDescription("Choose which code to use for imported names."); + } + + /** + * @param configurator + */ + public NomenclaturalCodeWizardPage(IImportConfigurator configurator) { + this(); + this.configurator = configurator; + } + + private static final Logger logger = Logger + .getLogger(NomenclaturalCodeWizardPage.class); + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + container.setLayout(new FillLayout()); + + final Group group = new Group(container, SWT.NONE); + group.setLayout(new GridLayout()); + + NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode(); + + // set preferred code as default + configurator.setNomenclaturalCode(preferredCode); + + for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) { + Button button = new Button(group, SWT.RADIO); + button.setText(NomenclaturalCodeHelper.getDescription(code)); + button.setData(code); + button.setSelection(preferredCode.equals(code)); + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + configurator.setNomenclaturalCode((NomenclaturalCode) e.widget.getData()); + } + }); + } + + setControl(container); + } +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java index 20207aa54..d62fc28f5 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java @@ -10,6 +10,8 @@ package eu.etaxonomy.taxeditor.model; +import java.lang.reflect.InvocationTargetException; + import org.apache.log4j.Logger; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.operations.IOperationHistory; @@ -22,19 +24,24 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.MessageDialogWithToggle; +import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.resource.FontRegistry; -import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IViewReference; +import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.undo.WorkspaceUndoUtil; +import org.eclipse.ui.progress.IProgressService; import org.eclipse.ui.themes.ITheme; import org.eclipse.ui.themes.IThemeManager; -import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; /** @@ -60,10 +67,25 @@ public abstract class AbstractUtility { .getActiveWorkbenchWindow().getActivePage(); } - public static IViewPart getView(String id) throws PartInitException{ - return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(id); + public static IViewPart showView(String id){ + try { + return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(id); + } catch (PartInitException e) { + logger.error("Could not open view: " + id, e); + throw new RuntimeException(e); + } } + public static IViewPart getView(String id, boolean restore){ + IViewReference[] references = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences(); + for (IViewReference reference : references){ + if(reference.getId().equals(id)){ + return reference.getView(restore); + } + } + return null; + } + public static boolean closeAll() { return getActivePage().closeAllEditors(true); } @@ -92,6 +114,10 @@ public abstract class AbstractUtility { return getCurrentTheme().getFontRegistry(); } + public static Font getFont(String symbolicName){ + return getFontRegistry().get(symbolicName); + } + /** * Color registered to the plugin may be obtained with the Eclipse themeing functionality. * Thus colors are editable by the user via Preferences->General->Appearance->Colors and Fonts @@ -102,6 +128,15 @@ public abstract class AbstractUtility { return getCurrentTheme().getColorRegistry(); } + /** + * + * @param symbolicName + * @return + */ + public static Color getColor(String symbolicName){ + return getColorRegistry().get(symbolicName); + } + /** * Open a message box that informs the user about unimplemented functionality. * This method is for developer convenience. @@ -121,6 +156,10 @@ public abstract class AbstractUtility { public static void errorDialog(String title, String message){ MessageDialog.openError(getShell(), title, message); } + + public static boolean confirmDialog(String title, String message) { + return MessageDialog.openQuestion(getShell(), title, message); + } public static IStatus executeOperation(IUndoableOperation operation){ if(getOperationHistory() == null){ @@ -146,6 +185,7 @@ public abstract class AbstractUtility { return status; } catch (ExecutionException e) { logger.error("Error executing operation: " + operation.getLabel(), e); + errorDialog("Error executing operation: " + operation.getLabel(), "Please refer to the error log."); } finally { @@ -200,6 +240,7 @@ public abstract class AbstractUtility { if (progressMonitor instanceof NullProgressMonitor) { return progressMonitor; } + return new SubProgressMonitor(progressMonitor, steps, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK); } @@ -217,5 +258,34 @@ public abstract class AbstractUtility { newMonitor.worked(steps); } + /** + * Present a progress dialog to the user. This dialog will block the UI + * + * @param runnable an implementation of {@link IRunnableWithProgress} + */ + public static void busyCursorWhile(IRunnableWithProgress runnable){ + IWorkbench workbench = PlatformUI.getWorkbench(); + IProgressService progressService = workbench.getProgressService(); + try { + progressService.busyCursorWhile(runnable); + } catch (InvocationTargetException e) { + logger.error("InvocationTargetException while running busy cursor", e); + } catch (InterruptedException e) { + logger.error("InterruptedException while running busy cursor", e); + } + } + + public static void runAsynchroneously(IRunnableWithProgress runnable){ + IWorkbench workbench = PlatformUI.getWorkbench(); + IProgressService progressService = workbench.getProgressService(); + + try { + progressService.run(true, false, runnable); + } catch (InvocationTargetException e) { + logger.error("InvocationTargetException while running busy cursor", e); + } catch (InterruptedException e) { + logger.error("InterruptedException while running busy cursor", e); + } + } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ColorFactory.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ColorFactory.java new file mode 100644 index 000000000..1598b40df --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ColorFactory.java @@ -0,0 +1,23 @@ +/** + * + */ +package eu.etaxonomy.taxeditor.model; + +import org.eclipse.swt.graphics.RGB; +import org.eclipse.ui.themes.IColorFactory; + +/** + * @author n.hoffmann + * + */ +public class ColorFactory implements IColorFactory { + + /* (non-Javadoc) + * @see org.eclipse.ui.themes.IColorFactory#createColor() + */ + public RGB createColor() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java index 587cf1ac2..023c27140 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java @@ -67,10 +67,15 @@ public class DescriptionHelper { Distribution distribution = (Distribution) element; NamedArea area = distribution.getArea(); - PresenceAbsenceTermBase status = distribution.getStatus(); - - if (status != null) { - cache = area.getLabel() + ", " + status.getLabel(); + if(area != null){ + cache = area.getLabel(); + + PresenceAbsenceTermBase status = distribution.getStatus(); + if (status == null){ + cache += ", no status"; + }else { + cache += ", " + status.getLabel(); + } } } return cache == null ? "" : cache; @@ -132,7 +137,15 @@ public class DescriptionHelper { */ public static String getObjectDescription(Object element) { if (element instanceof IdentifiableEntity) { - return ((IdentifiableEntity) element).getTitleCache(); + try{ + return ((IdentifiableEntity) element).getTitleCache(); + }catch(Exception e){ + // TODO we have to make sure that we will never get here. + // It is not clear at the moment how we can accomplish that. + String result = "Error initializing title cache for object"; + logger.error(result); + return "TODO" + result; + } } if (element instanceof OriginalSourceBase) { OriginalSourceBase originalSource = (OriginalSourceBase) element; diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java new file mode 100644 index 000000000..c8be32e1a --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java @@ -0,0 +1,29 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.model; + + +/** + * @author n.hoffmann + * @created Mar 23, 2010 + * @version 1.0 + */ +public interface IContextListener { + + public enum EventType{ + START, + STOP, + ABOUT_TO_STOP + } + + public boolean onContextEvent(EventType eventType); + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasDetails.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasDetails.java new file mode 100644 index 000000000..64b2bac38 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasDetails.java @@ -0,0 +1,24 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.model; + + +/** + * Clients implementing this interface indicate, that the data they present is suitable for the details view + * and that the details view should handle selection from the implmenting part. + * + * @author n.hoffmann + * @created Apr 20, 2010 + * @version 1.0 + */ +public interface IPartContentHasDetails { + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java index 69224a275..3f455b8ca 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java @@ -43,7 +43,11 @@ public class ImageResources { /* *************************************************************************************** ICONS ************************************************************************************** */ + public static final String ADD_ICON = "add_icon"; + public static final String TRASH_ICON = "trash_icon"; + public static final String BROWSE_ICON = "browse_icon"; public static final String EDIT_ICON = "edit_icon"; + public static final String EDIT_LOGO_ICON = "edit_logo_icon"; public static final String WARNING_ICON = "warning_icon"; public static final String BLACK_SQUARE_ICON = "black_square_icon"; public static final String HOMOTYPIC_SYN_ICON = "homotypic_syn_icon"; @@ -73,6 +77,9 @@ public class ImageResources { public static final String THREE_PRONGED_EQUAL = "3_pronged_equal"; public static final String TWO_PRONGED_EQUAL = "2_pronged_equal"; public static final String MISAPPLIED_NAME = "misapplied_name"; + public static final String EXPAND_ALL = "expand_all"; + public static final String COLLAPSE_ALL = "collapse_all"; + /*************************************************************************** @@ -144,7 +151,13 @@ public class ImageResources { } protected void initializeImageRegistry(ImageRegistry registry) { - registerImage(registry, EDIT_ICON, "edit_16x16.ico"); + registerImage(registry, ADD_ICON, + "add.gif"); + registerImage(registry, TRASH_ICON, + "trash.gif"); + registerImage(registry, EDIT_ICON, + "text.gif"); + registerImage(registry, EDIT_LOGO_ICON, "edit_16x16.ico"); registerImage(registry, WARNING_ICON, "warn_tsk.gif"); registerImage(registry, BLACK_SQUARE_ICON, @@ -203,6 +216,12 @@ public class ImageResources { "2_pronged_equal_small.GIF"); registerImage(registry, MISAPPLIED_NAME, "ma_12x12.gif"); + registerImage(registry, EXPAND_ALL, + "expandAll.jpg"); + registerImage(registry, COLLAPSE_ALL, + "collapseall.gif"); + registerImage(registry, BROWSE_ICON, + "prj_obj.gif"); } private void registerImage(ImageRegistry registry, String key, diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LineSelection.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LineSelection.java new file mode 100644 index 000000000..c255c775b --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LineSelection.java @@ -0,0 +1,84 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.model; + +import java.util.Iterator; +import java.util.List; + +import org.apache.log4j.Logger; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.TextSelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; + +/** + * Extending TextSelection allows us to keep using Eclipse's text selection, while + * IStructuredSelection can be used to send an object associated with the selection, + * i.e. a property source, to the workbench selection service. + * + * @author p.ciardelli + * @created 03.07.2009 + * @version 1.0 + */ +public class LineSelection extends TextSelection implements IStructuredSelection { + @SuppressWarnings("unused") + private static final Logger logger = Logger.getLogger(LineSelection.class); + + private StructuredSelection structuredSelection; + + /** + * + */ + public LineSelection(ITextSelection selection, IDocument document, Object selectedObject) { + super(document, selection.getOffset(), selection.getLength()); + if (selectedObject != null) { + this.structuredSelection = new StructuredSelection(selectedObject); + } else { + this.structuredSelection = StructuredSelection.EMPTY; + } + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IStructuredSelection#getFirstElement() + */ + public Object getFirstElement() { + return structuredSelection.getFirstElement(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IStructuredSelection#iterator() + */ + public Iterator iterator() { + return structuredSelection.iterator(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IStructuredSelection#size() + */ + public int size() { + return structuredSelection.size(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IStructuredSelection#toArray() + */ + public Object[] toArray() { + return structuredSelection.toArray(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IStructuredSelection#toList() + */ + public List toList() { + return structuredSelection.toList(); + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/MementoHelper.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/MementoHelper.java new file mode 100644 index 000000000..42c984ac9 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/MementoHelper.java @@ -0,0 +1,76 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.model; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; + +import org.apache.log4j.Logger; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.WorkbenchException; +import org.eclipse.ui.XMLMemento; + +/** + * @author n.hoffmann + * @created Mar 29, 2010 + * @version 1.0 + */ +public class MementoHelper { + private static final Logger logger = Logger.getLogger(MementoHelper.class); + + + public static IMemento readMementoFromFile(File stateFile) throws FileNotFoundException{ + FileInputStream input; + try { + input = new FileInputStream(stateFile); + BufferedReader reader = new BufferedReader( + new InputStreamReader(input, "utf-8")); //$NON-NLS-1$ + return XMLMemento.createReadRoot(reader); + } catch (WorkbenchException e) { + logger.error("Exception while reading the memento", e); + } catch (UnsupportedEncodingException e) { + logger.error("Exception while reading the memento", e); + } + + return null; + } + + /* + * Save the workbench UI in a persistence file. + */ + public static IMemento saveMementoToFile(IMemento memento, File stateFile) { + if (stateFile == null || memento == null) { + return null; + } + try { + FileOutputStream stream = new FileOutputStream(stateFile); + OutputStreamWriter writer = new OutputStreamWriter(stream, "utf-8"); //$NON-NLS-1$ + + ((XMLMemento)memento).save(writer); + + writer.close(); + } catch (IOException e) { + stateFile.delete(); + logger.error("Could not save datasource state"); + return null; + } + + // Success ! + return memento; + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameHelper.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameHelper.java index 6e3409661..773798f90 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameHelper.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameHelper.java @@ -9,8 +9,6 @@ package eu.etaxonomy.taxeditor.model; -import eu.etaxonomy.cdm.common.CdmUtils; -import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.TaxonBase; @@ -35,12 +33,7 @@ public class NameHelper { public static String getDisplayNameWithRef(TaxonBase taxonBase) { TaxonNameBase name = taxonBase.getName(); if (name != null) { - name = HibernateProxyHelper.deproxy(name, TaxonNameBase.class); - if (name.getFullTitleCache() == null || name.getFullTitleCache().length() == 0) { - return CdmUtils.Nz(name.getTitleCache()); - } else { - return name.getFullTitleCache(); - } + return name.generateFullTitle(); } return ""; } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java deleted file mode 100644 index 0f72bfc27..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java +++ /dev/null @@ -1,176 +0,0 @@ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.model; - -import java.util.HashMap; -import java.util.Set; - -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.resource.FontRegistry; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.editors.text.EditorsUI; - - -/** - * @author n.hoffmann - * @created 18.03.2009 - * @version 1.0 - * - * @deprecated migrate to org.eclipse.ui.themes or at least handle this a little bit more eclipse like - */ -public class Resources { - - private static Resources instance; - - public static Resources getInstance(){ - if(instance == null){ - instance = new Resources(); - } - return instance; - } - - - /* *************************************************************************************** - PREFERENCES - ************************************************************************************** */ - public static final String INITIALIZED = "initialized"; - public static final String INITIALIZE_W_TESTDATA = "init_w_testdata"; - - /* *************************************************************************************** - STRINGS - ************************************************************************************** */ - public static final String MISAPPLIED_NAME = "misappliedname"; - public static final String BASIONYM = "basionym"; - public static final String SYNONYM = "synonym"; - public static final String HOMOTYPIC_SYNONYM = "homotypic_synonym"; - public static final String HETEROTYPIC_SYNONYM = "heterotypic_synonym"; - public static final String NAMERELATION = "namerelation"; - public static final String TAXON = "taxon"; - public static final String HOMOTYPIC_GROUP = "homotypicgroup"; - public static final String QUICK_NAME_TAXON = "quick_name_taxon"; - public static final String PROPERTY_SHEET_CHANGE = "property_sheet_change"; - public static final String REFRESH_NAMEVIEWER = "refresh_name_viewer"; - - /* *************************************************************************************** - FONTS - ************************************************************************************** */ - public static final String MENU_ITEM_ITALICS_FONT = "menu_item_italics_font"; - public static final String ACCEPTED_TAXON_FONT = "accepted_taxon_font"; - public static final String SYNONYM_FONT = "synonym_font"; - public static final String MISAPPLIEDNAME_FONT = "misappliedname_font"; - public static final String CONCEPT_FONT = "concept_font"; - public static final String DATASOURCE_FONT = "datasource_font"; - public static final String CHOOSE_NAME_TEXT_FONT = "choose_name_text_font"; - public static final String FONT_DEFAULT_PROMPT = "default_prompt_font"; - - /* *************************************************************************************** - COLORS - ************************************************************************************** */ - public static final String COLOR_COMPOSITE_BACKGROUND = "group_gray_background_color"; - public static final String PROP_SHEET_RED = "property_sheet_red"; - public static final String SEARCH_VIEW_FOREGROUND = "search_view_foreground"; - public static final String SEARCH_VIEW_FOCUS = "search_view_focus"; - public static final String COLOR_COMPOSITE_SELECTED = "color_list_selection"; - public static final String COLOR_LIST_BACKGROUND = "color_list_background"; - - - /*************************************************************************** - * FONT REGISTRY - **************************************************************************/ - private FontRegistry fontRegistry; - - private FontRegistry getFontRegistry() { - if (fontRegistry == null) { - fontRegistry = new FontRegistry(Display.getCurrent()); - - fontRegistry.put(DATASOURCE_FONT, - new FontData[] { new FontData("Arial", 8, SWT.NONE) }); - fontRegistry.put(MENU_ITEM_ITALICS_FONT, - new FontData[] { new FontData("Arial", 9, SWT.ITALIC) }); - fontRegistry.put(ACCEPTED_TAXON_FONT, - new FontData[] { new FontData("Georgia", 12, SWT.NONE) }); - fontRegistry.put(SYNONYM_FONT, - new FontData[] { new FontData("Georgia", 10, SWT.NONE) }); - fontRegistry.put(MISAPPLIEDNAME_FONT, - new FontData[] { new FontData("Georgia", 10, SWT.NONE) }); - fontRegistry.put(CONCEPT_FONT, - new FontData[] { new FontData("Georgia", 10, SWT.NONE) }); - fontRegistry.put(CHOOSE_NAME_TEXT_FONT, - new FontData[] { new FontData("Arial", 12, SWT.BOLD) }); - fontRegistry.put(FONT_DEFAULT_PROMPT, - new FontData[] { new FontData("Georgia", 10, SWT.ITALIC) }); - } - return fontRegistry; - } - - public static Font getFont(String key) { - return getInstance().getFontRegistry().get(key); - } - - /** - * @param font - */ - public static Font italicizeFont(Font font) { - FontData fontData = font.getFontData()[0]; - fontData.setStyle(fontData.getStyle() | SWT.ITALIC); - Font italFont = new Font(Display.getDefault(), fontData); - - int i = 0; - String fontName = "italic"; - Set keySet = getInstance().getFontRegistry().getKeySet(); - while (keySet.contains(fontName + i)) { - i++; - } - getInstance().getFontRegistry().put(fontName + i, italFont.getFontData()); - - return italFont; - } - - /*************************************************************************** - * COLOR MAP - **************************************************************************/ - private static HashMap colorRegistry; - - public static Color getColor(String key) { - return getInstance().getColorRegistry().get(key); - } - - private HashMap getColorRegistry() { - if (colorRegistry == null) { - colorRegistry = new HashMap(); - - RGB currentLineRGB = PreferenceConverter.getColor( - EditorsUI.getPreferenceStore(), "currentLineColor"); - Color currentLineColor = new Color(null, currentLineRGB); - - colorRegistry.put(COLOR_COMPOSITE_BACKGROUND, - new Color(null, 250, 250, 250)); - colorRegistry.put(PROP_SHEET_RED, - new Color(null, 255, 0, 0)); - colorRegistry.put(SEARCH_VIEW_FOREGROUND, - new Color(null, 192, 192, 192)); - colorRegistry.put(SEARCH_VIEW_FOCUS, - new Color(null, 0, 0, 0)); -// colorRegistry.put(COLOR_COMPOSITE_SELECTED, -// Display.getDefault().getSystemColor(SWT.COLOR_LIST_SELECTION)); - colorRegistry.put(COLOR_COMPOSITE_SELECTED, - currentLineColor); - colorRegistry.put(COLOR_LIST_BACKGROUND, - Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); - } - EditorsUI.getPreferenceStore(); - return colorRegistry; - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TextHelper.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TextHelper.java new file mode 100644 index 000000000..8f2490add --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TextHelper.java @@ -0,0 +1,62 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.model; + +import org.apache.log4j.Logger; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.widgets.Control; + +/** + * @author n.hoffmann + * @created Mar 30, 2010 + * @version 1.0 + */ +public class TextHelper { + private static final Logger logger = Logger.getLogger(TextHelper.class); + + public static final String ELLIPSIS = "..."; + + /** + * @param textValue + * @param control + * @return + * @see org.eclipse.jface.dialogs.Dialog#shortenText(String, Control) + */ + public static String shortenText(String textValue, Control control) { + if (textValue == null) { + return null; + } + GC gc = new GC(control); + int maxWidth = control.getBounds().width; + int maxExtent = gc.textExtent(textValue).x; + if (maxExtent < maxWidth) { + gc.dispose(); + return textValue; + } + int length = textValue.length(); + int charsToClip = Math.round(0.95f*length * (1 - ((float)maxWidth/maxExtent))); + + int end = length - charsToClip; + while (end > 0) { + String s1 = textValue.substring(0, end); + String s = s1 + ELLIPSIS; + int l = gc.textExtent(s).x; + if (l < maxWidth) { + gc.dispose(); + return s; + } + end--; + } + gc.dispose(); + return textValue; + + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/AbstractSpecificReferenceWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/AbstractSpecificReferenceWizardPage.java new file mode 100644 index 000000000..2b34d7bd9 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/AbstractSpecificReferenceWizardPage.java @@ -0,0 +1,31 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.newWizards; + +import org.apache.log4j.Logger; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.widgets.Composite; + +/** + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public abstract class AbstractSpecificReferenceWizardPage extends WizardPage { + + + private static final Logger logger = Logger + .getLogger(AbstractSpecificReferenceWizardPage.class); + + protected AbstractSpecificReferenceWizardPage(String pageName) { + super(pageName); + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/BookDetailsWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/BookDetailsWizardPage.java new file mode 100644 index 000000000..bba73172f --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/BookDetailsWizardPage.java @@ -0,0 +1,39 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.newWizards; + +import org.apache.log4j.Logger; +import org.eclipse.swt.widgets.Composite; + +/** + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class BookDetailsWizardPage extends AbstractSpecificReferenceWizardPage { + + + private static final Logger logger = Logger + .getLogger(BookDetailsWizardPage.class); + + protected BookDetailsWizardPage(String pageName) { + super(pageName); + // TODO Auto-generated constructor stub + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + // TODO Auto-generated method stub + + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizard.java new file mode 100644 index 000000000..c6b636bbc --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizard.java @@ -0,0 +1,32 @@ +/** + * + */ +package eu.etaxonomy.taxeditor.newWizards; + +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +/** + * + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class NewAuthorWizard extends Wizard implements INewWizard { + + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#performFinish() + */ + @Override + public boolean performFinish() { + // TODO Auto-generated method stub + return false; + } + + public void init(IWorkbench workbench, IStructuredSelection selection) { + // TODO Auto-generated method stub + + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizardPage.java new file mode 100644 index 000000000..f6a111e1c --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewAuthorWizardPage.java @@ -0,0 +1,31 @@ +/** + * + */ +package eu.etaxonomy.taxeditor.newWizards; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; + +/** + * + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class NewAuthorWizardPage extends WizardPage { + + protected NewAuthorWizardPage(String pageName) { + super(pageName); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + + setControl(container); + } + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewGenericReferenceWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewGenericReferenceWizardPage.java new file mode 100644 index 000000000..7e48da778 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewGenericReferenceWizardPage.java @@ -0,0 +1,103 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.newWizards; + +import org.apache.log4j.Logger; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import eu.etaxonomy.cdm.model.agent.AgentBase; + +/** + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class NewGenericReferenceWizardPage extends WizardPage { + + + private static final Logger logger = Logger + .getLogger(NewGenericReferenceWizardPage.class); + + private Combo combo_referenceType; + private Text text_title; + private AgentBase selection_agent; + private Text text_editor; + private Text text_series; + private Text text_volume; + private Text text_pages; + + protected NewGenericReferenceWizardPage(String pageName) { + super(pageName); + } + + /** + * + */ + public void createControl(Composite parent) { + setTitle("General"); + setDescription("General information for a reference."); + + Composite container = new Composite(parent, SWT.NULL); + container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + + container.setLayout(new GridLayout(2, false)); + + createLabel(container, "Reference Type"); + combo_referenceType = new Combo(container, SWT.NULL); + top(combo_referenceType); + + createLabel(container, "Title"); + text_title = new Text(container, SWT.NULL); + top(text_title); + +// createLabel(container, "Author Team"); +// selection_agent = FilteredAgentSelectionDialog.selectAgent(getShell(), null); + +// composite_timePeriod + + createLabel(container, "Editor"); + text_editor = new Text(container, SWT.NULL); + top(text_editor); + + createLabel(container, "Series"); + text_series = new Text(container, SWT.NULL); + top(text_series); + + createLabel(container, "Volume"); + text_volume = new Text(container, SWT.NULL); + top(text_volume); + + createLabel(container, "Pages"); + text_pages = new Text(container, SWT.NULL); + top(text_pages); + + setControl(container); + } + + + private Label createLabel(Composite parent, String labelString){ + Label label = new Label(parent, SWT.NULL); + label.setText(labelString); + return label; + } + + private void top(Control control){ + control.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizard.java new file mode 100644 index 000000000..95c0cc1d1 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizard.java @@ -0,0 +1,66 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.newWizards; + +import org.apache.log4j.Logger; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import eu.etaxonomy.cdm.model.name.NonViralName; + +/** + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class NewNameWizard extends Wizard implements INewWizard { + private static final Logger logger = Logger.getLogger(NewNameWizard.class); + + public static final String NEW_NAME = "NEW_NAME"; + + private NewNameWizardPage page; + + public NewNameWizard(){ + setWindowTitle("New Scientific Name"); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#addPages() + */ + @Override + public void addPages() { + page = new NewNameWizardPage(NEW_NAME); + + addPage(page); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#performFinish() + */ + @Override + public boolean performFinish() { + + // TODO + + return false; + } + + public void init(IWorkbench workbench, IStructuredSelection selection) { + + } + + public NonViralName getName() { + return null; + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizardPage.java new file mode 100644 index 000000000..1caaee9cb --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewNameWizardPage.java @@ -0,0 +1,43 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.newWizards; + +import org.apache.log4j.Logger; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; + +/** + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class NewNameWizardPage extends WizardPage { + private static final Logger logger = Logger + .getLogger(NewNameWizardPage.class); + + /** + * @param pageName + */ + public NewNameWizardPage(String pageName) { + super(pageName); + } + + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + + setControl(container); + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewReferenceWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewReferenceWizard.java new file mode 100644 index 000000000..a809254e2 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewReferenceWizard.java @@ -0,0 +1,57 @@ +/** + * + */ +package eu.etaxonomy.taxeditor.newWizards; + +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import eu.etaxonomy.cdm.model.reference.ReferenceBase; + +/** + * + * @author n.hoffmann + * @created Apr 16, 2010 + * @version 1.0 + */ +public class NewReferenceWizard extends Wizard implements INewWizard{ + + public static final String NEW_REFERENCE = "NEW_REFERENCE"; + + private NewGenericReferenceWizardPage page; + + public NewReferenceWizard(){ + setWindowTitle("New Reference"); + } + + @Override + public void addPages() { + page = new NewGenericReferenceWizardPage(NEW_REFERENCE); + + addPage(page); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#performFinish() + */ + @Override + public boolean performFinish() { + + // TODO + + + return false; + } + + public void init(IWorkbench workbench, IStructuredSelection selection) { + // TODO Auto-generated method stub + + } + + public ReferenceBase getReference(){ + return null; + } + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddImageToDescriptionElementOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddMediaToImageGalleryOperation.java similarity index 73% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddImageToDescriptionElementOperation.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddMediaToImageGalleryOperation.java index 15150250c..671a411b8 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddImageToDescriptionElementOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/AddMediaToImageGalleryOperation.java @@ -16,8 +16,8 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import eu.etaxonomy.cdm.api.utility.ImagesUtility; -import eu.etaxonomy.cdm.model.description.DescriptionElementBase; -import eu.etaxonomy.cdm.model.media.ImageFile; +import eu.etaxonomy.cdm.model.description.DescriptionBase; +import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.taxon.Taxon; /** * @author p.ciardelli @@ -25,10 +25,10 @@ import eu.etaxonomy.cdm.model.taxon.Taxon; * @version 1.0 * @author n.hoffmann */ -public class AddImageToDescriptionElementOperation extends AbstractPostOperation { +public class AddMediaToImageGalleryOperation extends AbstractPostOperation { - private DescriptionElementBase element; - private ImageFile image; + private DescriptionBase description; + private Media media; /** * @param name @@ -37,12 +37,13 @@ public class AddImageToDescriptionElementOperation extends AbstractPostOperation * @param element * @param postOperationEnabled */ - public AddImageToDescriptionElementOperation(String label, + public AddMediaToImageGalleryOperation(String label, IUndoContext undoContext, Taxon taxon, - DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) { + DescriptionBase description, IPostOperationEnabled postOperationEnabled) { super(label, undoContext, taxon, postOperationEnabled); - - this.element = element; + + this.description = description; + media = Media.NewInstance(); } /* (non-Javadoc) @@ -53,10 +54,12 @@ public class AddImageToDescriptionElementOperation extends AbstractPostOperation throws ExecutionException { monitor.worked(20); - image = ImagesUtility.addImagePart(element); + + ImagesUtility.addMediaToGallery(description, media); + monitor.worked(40); - return postExecute(image); + return postExecute(media); } /* (non-Javadoc) @@ -74,7 +77,7 @@ public class AddImageToDescriptionElementOperation extends AbstractPostOperation @Override public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - ImagesUtility.removeImage(element, image); - return postExecute(element); + ImagesUtility.removeMediaFromGallery(description, media); + return postExecute(description); } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeDescriptionElementType.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeDescriptionElementType.java new file mode 100644 index 000000000..1407e1015 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/ChangeDescriptionElementType.java @@ -0,0 +1,92 @@ +// $Id$ +/** +* Copyright (C) 2009 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.operations; + +import java.lang.reflect.Method; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.operations.IUndoContext; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; + +import eu.etaxonomy.cdm.model.description.DescriptionBase; +import eu.etaxonomy.cdm.model.description.DescriptionElementBase; +import eu.etaxonomy.cdm.model.description.Distribution; +import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.cdm.model.description.TextData; + +/** + * @author e.-m.lee + * @date 25.05.2010 + * + */ +public class ChangeDescriptionElementType extends AbstractPostOperation { + + private DescriptionElementBase sourceElement; + private DestinationType destinationType; + private DescriptionElementBase destinationElement; + + public enum DestinationType { + TextData, + Distribution + } + + /** + * @param label + * @param undoContext + */ + public ChangeDescriptionElementType(String label, DescriptionElementBase sourceType, DestinationType destinationType, IPostOperationEnabled postOperation, + IUndoContext undoContext) { + super(label, undoContext, postOperation); + this.sourceElement = sourceType; + this.destinationType = destinationType; + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + DescriptionBase inDescription = sourceElement.getInDescription(); + Feature feature = sourceElement.getFeature(); + switch (destinationType) { + case TextData: destinationElement = TextData.NewInstance(); + break; + case Distribution: destinationElement = Distribution.NewInstance(); + } + destinationElement.setFeature(feature); + inDescription.addElement(destinationElement); + inDescription.removeElement(sourceElement); + return postExecute(destinationElement); + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateNameRelationOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateNameRelationOperation.java new file mode 100644 index 000000000..bd7bef0d9 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateNameRelationOperation.java @@ -0,0 +1,80 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.operations; + +import org.apache.log4j.Logger; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.operations.IUndoContext; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; + +import eu.etaxonomy.cdm.model.name.NameRelationshipType; +import eu.etaxonomy.cdm.model.name.TaxonNameBase; +import eu.etaxonomy.cdm.model.taxon.TaxonBase; + +/** + * @author n.hoffmann + * @created Mar 30, 2010 + * @version 1.0 + */ +public class CreateNameRelationOperation extends AbstractPostOperation { + + + private static final Logger logger = Logger + .getLogger(CreateNameRelationOperation.class); + private TaxonBase taxonBase; + private TaxonNameBase relatedName; + private NameRelationshipType type; + + public CreateNameRelationOperation(String label, IUndoContext undoContext, TaxonBase taxonBase, TaxonNameBase relatedName, NameRelationshipType type, IPostOperationEnabled postOperationEnabled) { + super(label, undoContext, postOperationEnabled); + this.taxonBase = taxonBase; + this.relatedName = relatedName; + this.type = type; + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + + TaxonNameBase fromName = taxonBase.getName(); + + fromName.addRelationshipToName(relatedName, type, null); + + return postExecute(taxonBase); + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + return execute(monitor, info); + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + TaxonNameBase fromName = taxonBase.getName(); + + fromName.removeRelationToTaxonName(relatedName); + + return postExecute(taxonBase); + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExisitingHomotypicalGroupOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExistingHomotypicalGroupOperation.java similarity index 92% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExisitingHomotypicalGroupOperation.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExistingHomotypicalGroupOperation.java index 190d340f8..dfc1f518f 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExisitingHomotypicalGroupOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateSynonymInExistingHomotypicalGroupOperation.java @@ -26,7 +26,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil; * @created 02.02.2009 * @version 1.0 */ -public class CreateSynonymInExisitingHomotypicalGroupOperation extends +public class CreateSynonymInExistingHomotypicalGroupOperation extends AbstractPostOperation { private HomotypicalGroup group; @@ -34,7 +34,7 @@ public class CreateSynonymInExisitingHomotypicalGroupOperation extends private SynonymRelationship synonymRelationship; - public CreateSynonymInExisitingHomotypicalGroupOperation(String label, + public CreateSynonymInExistingHomotypicalGroupOperation(String label, IUndoContext undoContext, Taxon taxon, HomotypicalGroup group, TaxonNameBase newSynonymName, IPostOperationEnabled postOperationEnabled) { super(label, undoContext, taxon, postOperationEnabled); this.group = group; diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonDescriptionOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonDescriptionOperation.java index 6a5e0602c..8105c5da2 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonDescriptionOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonDescriptionOperation.java @@ -15,7 +15,10 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.TaxonDescription; +import eu.etaxonomy.cdm.model.description.TextData; +import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.store.StoreUtil; @@ -52,7 +55,13 @@ public class CreateTaxonDescriptionOperation extends AbstractPostOperation { description = TaxonDescription.NewInstance(taxon); monitor.worked(20); - description.setImageGallery(isImageGallery); + if(isImageGallery){ + description.setImageGallery(isImageGallery); + // add the description element to hold the media elements for this image gallery + TextData element = TextData.NewInstance(Feature.IMAGE()); + element.addMedia(Media.NewInstance()); + description.addElement(element); + } monitor.worked(40); return postExecute(description); diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonNodeOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonNodeOperation.java index 6280115b4..2bc18b259 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonNodeOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonNodeOperation.java @@ -26,6 +26,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.ITreeNode; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.cdm.model.taxon.TaxonomicTree; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; @@ -85,7 +86,12 @@ public class CreateTaxonNodeOperation extends AbstractPersistentPostOperation { public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { bind(); - newTaxon.setSec(parentNode.getReference()); + if(parentNode instanceof TaxonNode){ + Taxon parentTaxon = ((TaxonNode) parentNode).getTaxon(); + newTaxon.setSec(parentTaxon.getSec()); + }else{ + newTaxon.setSec(parentNode.getReference()); + } monitor.worked(20); // add the taxon diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonomicTreeOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonomicTreeOperation.java index c9a3e151a..60ce5cb3c 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonomicTreeOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/CreateTaxonomicTreeOperation.java @@ -20,13 +20,11 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; import eu.etaxonomy.cdm.model.reference.Generic; import eu.etaxonomy.cdm.model.reference.ReferenceBase; import eu.etaxonomy.cdm.model.taxon.TaxonomicTree; import eu.etaxonomy.taxeditor.store.CdmStore; -import eu.etaxonomy.taxeditor.store.StoreUtil; /** * @author n.hoffmann @@ -109,30 +107,4 @@ public class CreateTaxonomicTreeOperation extends AbstractPersistentPostOperatio // TODO Auto-generated method stub return null; } - - private TaxonomicTree createTaxonomicTreeIsolated(){ - // get a new conversation - ConversationHolder conversation = CdmStore.NewTransactionalConversation(); - try{ - TaxonomicTree tree = TaxonomicTree.NewInstance(treeLabel); - ReferenceBase reference; - if(referenceUuid == null){ - reference = Generic.NewInstance(); - reference.setTitleCache(treeLabel); - }else{ - reference = CdmStore.getReferenceService().load(referenceUuid); - } - - tree.setReference(reference); - tree.setMicroReference(microReference); - - CdmStore.getTaxonTreeService().save(tree); - - conversation.commit(true); - - return tree; - }finally{ - conversation.close(); - } - } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteImageOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteMediaOperation.java similarity index 76% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteImageOperation.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteMediaOperation.java index 0ac382be8..04a06fddb 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteImageOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteMediaOperation.java @@ -18,18 +18,17 @@ import org.eclipse.core.runtime.IStatus; import eu.etaxonomy.cdm.api.utility.ImagesUtility; import eu.etaxonomy.cdm.model.description.DescriptionBase; -import eu.etaxonomy.cdm.model.media.ImageFile; +import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.taxeditor.store.StoreUtil; /** * @author p.ciardelli * @created 31.03.2009 * @version 1.0 */ -public class DeleteImageOperation extends AbstractPostOperation { +public class DeleteMediaOperation extends AbstractPostOperation { - private ImageFile imageFile; + private Media media; private DescriptionBase description; @@ -39,11 +38,11 @@ public class DeleteImageOperation extends AbstractPostOperation { * @param taxon * @param url */ - public DeleteImageOperation(String label, IUndoContext undoContext, - Taxon taxon, DescriptionBase description, ImageFile imageFile, IPostOperationEnabled postOperationEnabled) { + public DeleteMediaOperation(String label, IUndoContext undoContext, + Taxon taxon, DescriptionBase description, Media media, IPostOperationEnabled postOperationEnabled) { super(label, undoContext, taxon, postOperationEnabled); - this.imageFile = imageFile; + this.media = media; this.description = description; } @@ -55,7 +54,7 @@ public class DeleteImageOperation extends AbstractPostOperation { throws ExecutionException { monitor.worked(20); - ImagesUtility.removeTaxonImage(taxon, description, imageFile); + ImagesUtility.removeMediaFromGallery(description, media); monitor.worked(40); return postExecute(null); @@ -77,7 +76,7 @@ public class DeleteImageOperation extends AbstractPostOperation { public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - ImagesUtility.addTaxonImage(taxon, description, imageFile); + ImagesUtility.addMediaToGallery(description, media); return postExecute(null); } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteNameRelationOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteNameRelationOperation.java new file mode 100644 index 000000000..b9de68524 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/DeleteNameRelationOperation.java @@ -0,0 +1,73 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.operations; + +import org.apache.log4j.Logger; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.operations.IUndoContext; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; + +import eu.etaxonomy.cdm.model.name.NameRelationship; +import eu.etaxonomy.cdm.model.name.TaxonNameBase; + +/** + * @author n.hoffmann + * @created Mar 30, 2010 + * @version 1.0 + */ +public class DeleteNameRelationOperation extends AbstractPostOperation { + + + private static final Logger logger = Logger + .getLogger(DeleteNameRelationOperation.class); + private NameRelationship nameRelationship; + + public DeleteNameRelationOperation(String label, IUndoContext undoContext, NameRelationship nameRelationship, + IPostOperationEnabled postOperationEnabled) { + super(label, undoContext, postOperationEnabled); + this.nameRelationship = nameRelationship; + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + + TaxonNameBase fromName = nameRelationship.getFromName(); + + fromName.removeRelationToTaxonName(nameRelationship.getToName()); + + return postExecute(null); + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + return execute(monitor, info); + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveImageInListOperation.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveMediaInListOperation.java similarity index 55% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveImageInListOperation.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveMediaInListOperation.java index 96400e01b..d02972315 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveImageInListOperation.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveMediaInListOperation.java @@ -9,27 +9,37 @@ package eu.etaxonomy.taxeditor.operations; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import org.apache.log4j.Logger; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import eu.etaxonomy.cdm.api.utility.ImagesUtility; +import eu.etaxonomy.cdm.model.description.DescriptionBase; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; -import eu.etaxonomy.cdm.model.media.ImageFile; +import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.taxeditor.store.StoreUtil; /** * @author p.ciardelli * @created 05.02.2009 * @version 1.0 */ -public class MoveImageInListOperation extends AbstractPostOperation { +public class MoveMediaInListOperation extends AbstractPostOperation { - private DescriptionElementBase element; - private ImageFile image; + private static final Logger logger = Logger + .getLogger(MoveMediaInListOperation.class); + + public static final int UP = 1; + public static final int DOWN = -1; + + private DescriptionBase description; + private Media media; private int direction; /** @@ -41,13 +51,13 @@ public class MoveImageInListOperation extends AbstractPostOperation { * @param i * @param editor */ - public MoveImageInListOperation(String label, IUndoContext undoContext, - Taxon taxon, DescriptionElementBase element, ImageFile image, + public MoveMediaInListOperation(String label, IUndoContext undoContext, + Taxon taxon, DescriptionBase description, Media media, int direction, IPostOperationEnabled postOperationEnabled) { super(label, undoContext, taxon, postOperationEnabled); - this.element = element; - this.image = image; + this.description = description; + this.media = media; this.direction = direction; } @@ -59,10 +69,11 @@ public class MoveImageInListOperation extends AbstractPostOperation { throws ExecutionException { monitor.worked(20); - ImagesUtility.moveImage(element, image, direction); + + moveMedia(description, media, direction); monitor.worked(40); - return postExecute(image); + return postExecute(media); } /* (non-Javadoc) @@ -80,7 +91,34 @@ public class MoveImageInListOperation extends AbstractPostOperation { @Override public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - ImagesUtility.moveImage(element, image, direction * -1); - return postExecute(null); + moveMedia(description, media, direction * -1); + return postExecute(media); + } + + private void moveMedia(DescriptionBase description, Media media, int direction){ + Set elements = description.getElements(); + + if(elements.size() != 1){ + logger.error("More than one description element in this image gallery"); + } + + DescriptionElementBase element = elements.iterator().next(); + + List medias = element.getMedia(); + + int index = medias.indexOf(media); + int newIndex = index + direction; + + if(index < 0){ + return; + } + + if (newIndex >= 0 && newIndex < medias.size()) { + try{ + Collections.swap(medias, newIndex, index); + }catch(ArrayIndexOutOfBoundsException e){ + logger.error("", e); + } + } } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java index a545ac6a8..6fe313542 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java @@ -255,7 +255,9 @@ public class ParseHandler{ if(duplicateCombinationAuthorTeams.size() > 0){ name.setCombinationAuthorTeam(duplicateCombinationAuthorTeams.iterator().next()); ReferenceBase reference = (ReferenceBase) name.getNomenclaturalReference(); - reference.setAuthorTeam(duplicateCombinationAuthorTeams.iterator().next()); + if(reference != null){ + reference.setAuthorTeam(duplicateCombinationAuthorTeams.iterator().next()); + } // FIXME TODO resolve multiple duplications. We use first match for a start. } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java deleted file mode 100644 index d58342cc9..000000000 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java +++ /dev/null @@ -1,100 +0,0 @@ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.preference; - -import org.eclipse.jface.preference.PreferencePage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPreferencePage; - -import eu.etaxonomy.taxeditor.model.Resources; - -/** - * @author p.ciardelli - * @created 01.07.2008 - * @version 1.0 - */ -public class InitializeDbPreferences extends PreferencePage implements - IWorkbenchPreferencePage { - - public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.initdb"; - - private Button btnInit; -// private Button btnTestData; - - public InitializeDbPreferences() { - super(); - setDescription("If you choose this option, taxonomic tree will be empty next time the Editor is started."); - } - - /** - * Create contents of the preference page - * @param parent - */ - @Override - public Control createContents(Composite parent) { - - Composite container = new Composite(parent, SWT.NULL); - container.setLayout(new GridLayout()); - - btnInit = new Button(container, SWT.CHECK); - btnInit.setText("Initialize datastore on next application start"); - btnInit.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - if (btnInit.getSelection() == true) { - - // Enable test data option -// btnTestData.setEnabled(true); - - } else { - - // Disable test data option, set selected to "false" -// btnTestData.setEnabled(false); -// btnTestData.setSelection(false); - } - } - - }); - - return container; - } - - /** - * Initialize the preference page - */ - public void init(IWorkbench workbench) { - setPreferenceStore(PreferencesUtil.getPreferenceStore()); - } - - @Override - protected void performDefaults() { - btnInit.setSelection(false); -// btnTestData.setSelection(false); - super.performDefaults(); - } - - @Override - public boolean performOk() { - boolean doReinitialize = !(btnInit.getSelection()); -// boolean doInitTestdata = btnTestData.getSelection(); - - PreferencesUtil.getPreferenceStore().setValue(Resources.INITIALIZED, doReinitialize); -// UiUtil.getPrefStore().setValue(ITaxEditorConstants.INITIALIZE_W_TESTDATA, doInitTestdata); - return true; - } -} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java index 0f5b45f20..78e767cff 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java @@ -15,12 +15,16 @@ import java.util.List; import java.util.Set; import org.apache.log4j.Logger; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator; import eu.etaxonomy.cdm.api.service.config.impl.TaxonServiceConfiguratorImpl; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; +import eu.etaxonomy.cdm.model.common.AnnotationType; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.ExtensionType; import eu.etaxonomy.cdm.model.common.ICdmBase; @@ -30,8 +34,10 @@ import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.common.TermBase; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase; +import eu.etaxonomy.cdm.model.location.NamedAreaType; import eu.etaxonomy.cdm.model.media.RightsTerm; import eu.etaxonomy.cdm.model.name.NameRelationshipType; +import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType; import eu.etaxonomy.cdm.model.name.Rank; @@ -42,6 +48,7 @@ import eu.etaxonomy.cdm.strategy.match.IMatchStrategy; import eu.etaxonomy.cdm.strategy.match.MatchException; import eu.etaxonomy.cdm.strategy.match.MatchMode; import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper; +import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.store.VocabularyStore; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; @@ -62,7 +69,7 @@ public class PreferencesUtil { public static final String TAXON_SERVICE_CONFIGURATOR_NAMES = "taxonServiceConfigurator.doNamesWithoutTaxa"; public static final String TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES = "taxonServiceConfigurator.doTaxaByCommonNames"; - public static final String SHOW_DATASOURCE_CHOOSER = "dataSourceChooser.show"; + public static final String SHOW_DEBUG_INFORMATION = "showDebugInformation"; public static final String PREFERRED_TERMS_CHANGE = "preferred_terms"; @@ -72,6 +79,10 @@ public class PreferencesUtil { public static final String MATCH_STRATEGY_PREFIX = "matchStrategy."; + public static final String EDIT_MAP_SERVICE_ACCES_POINT = "editMapServiceAccessPoint"; + + public static final String SHOULD_CONNECT_AT_STARTUP = "shouldConnectAtStartup"; + /** * * @return @@ -188,6 +199,12 @@ public class PreferencesUtil { return DefaultMatchStrategy.NewInstance(clazz); } + + public static String getDateFormatPattern(){ + // TODO make this configurable in properties + String pattern = "Y-M-d H:m"; + return pattern; + } /** * Generic method to get term preferences for a term vocabulary * @@ -226,13 +243,13 @@ public class PreferencesUtil { } - /** @return a List containing user preferred Feature terms */ + /** @return a List containing user preferred SpecimenTypeDesignationStatus terms */ public static List getPreferredSpecimenTypeDesignationStatus() { return getPreferredTerms(VocabularyStore.getSpecimenTypeDesignationStatus());} - /** @return a List containing user preferred Feature terms */ - public static List getPreferredNameTypeDesignationStatus() { return getPreferredTerms(VocabularyStore.getNameTypeDesignationStatus());} + /** @return a List containing user preferred NameTypeDesignationStatus terms */ + public static List getPreferredNameTypeDesignationStatus() { return getPreferredTerms(VocabularyStore.getNameTypeDesignationStatus()); } - /** @return a List containing user preferred Feature terms */ + /** @return a List containing user preferred TaxonRelationshipTypes terms */ public static List getPreferredTaxonRelationshipTypes() { return getPreferredTerms(VocabularyStore.getTaxonRelationshipTypes());} /** @return a List containing user preferred Feature terms */ @@ -242,7 +259,7 @@ public class PreferencesUtil { public static List getPreferredRanks() { return getPreferredTerms(VocabularyStore.getRanks());} /** @return a List containing user preferred PresenceAbsenceTermBase terms */ - public static List>> getPreferredPresenceAbsenceTerms(){ return getPreferredTerms(VocabularyStore.getPresenceAbsenceTerms());} + public static List getPreferredPresenceAbsenceTerms(){ return getPreferredTerms(VocabularyStore.getPresenceAbsenceTerms());} /** @return a List containing user preferred NomenclaturalStatusType terms */ public static List getPreferredNomenclaturalStatusTypes(){ return getPreferredTerms(VocabularyStore.getNomenclaturalStatusTypes());} @@ -262,6 +279,12 @@ public class PreferencesUtil { /** @return a List containing user preferred RightsType terms */ public static List getPreferredRightsTypes() { return getPreferredTerms(VocabularyStore.getRightsTypes());} + /** @return a List containing user preferred NamedAreaType terms */ + public static List getPreferredNamedAreaTypes() { return getPreferredTerms(VocabularyStore.getNamedAreaTypes()); } + + /** @return a List containing user preferred AnnotationType terms */ + public static List getPreferredAnnotationTypes() { return getPreferredTerms(VocabularyStore.getAnnotationTypes()); } + /** * Generic method to set term preferences @@ -275,6 +298,15 @@ public class PreferencesUtil { } } + public static void addTermToPreferredTerms(T term){ + +// VocabularyEnum vocabulary = VocabularyEnum.getVocabularyEnum(term.getClass()); +// +// getPreferenceStore().setValue(getPreferenceKey(term), VocabularyStore.getTermVocabulary(vocabulary).getTerms().contains(term)); +// +// firePreferencesChanged(term.getClass()); + } + /** * Construct a unique key using the CdmBase object's uuid * @@ -341,6 +373,9 @@ public class PreferencesUtil { configurator.setTaxonPropertyPath(Arrays.asList("$", "titleCache", "name", "name.$")); + configurator.setSynonymPropertyPath(Arrays.asList("$", + "titleCache", "name", "name.$", "synonymRelations.relatedTo.*")); + // DEFAULT VALUES // match mode default only configurator.setMatchMode(eu.etaxonomy.cdm.persistence.query.MatchMode.BEGINNING); @@ -379,5 +414,34 @@ public class PreferencesUtil { public static void setDefaults() { getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_TAXA, true); getPreferenceStore().setDefault(TAXON_SERVICE_CONFIGURATOR_SYNONYMS, true); + getPreferenceStore().setDefault(EDIT_MAP_SERVICE_ACCES_POINT, "http://edit.br.fgov.be/edit_wp5/v1/areas.php"); + } + + public static void checkNomenclaturalCode() { + // First time Editor is opened, no nomenclatural code has been set + if (PreferencesUtil.getPreferredNomenclaturalCode() == null) { + + logger.info("No nomencatural code set."); + + Shell shell = StoreUtil.getShell(); + + // Query user re: preferred nom. code + Dialog dialog = new InitNomenclaturalCodePrefDialog(shell); + dialog.open(); + + // Short message confirming user's choice + NomenclaturalCode code = PreferencesUtil.getPreferredNomenclaturalCode(); + MessageDialog.openInformation(shell, "Nomenclatural code set", + "The following has been set as your preferred nomenclatural code:\n\n\t" + + NomenclaturalCodeHelper.getDescription(code) + "\n\nYou can change the nomenclatural code at any time in the \"Preferences\" menu."); + } + } + + public static String getMapServiceAccessPoint() { + return getPreferenceStore().getString(EDIT_MAP_SERVICE_ACCES_POINT); + } + + public static boolean shouldConnectAtStartUp() { + return getPreferenceStore().getBoolean(SHOULD_CONNECT_AT_STARTUP); } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java new file mode 100644 index 000000000..63ce860ac --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java @@ -0,0 +1,52 @@ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.preference; + + + +/** + * This interface provides convenient access to the theme resources defined in this packages plugin.xml + * + * @author n.hoffmann + * @created 18.03.2009 + * @version 1.0 + */ +public interface Resources { + + /* *************************************************************************************** + FONTS + ************************************************************************************** */ + public static final String ACCEPTED_TAXON_FONT = "eu.etaxonomy.taxeditor.preferences.fontDefinition.nameEditor.accepted"; + public static final String SYNONYM_FONT = "eu.etaxonomy.taxeditor.preferences.fontDefinition.nameEditor.synonym"; + public static final String MISAPPLIEDNAME_FONT = "eu.etaxonomy.taxeditor.preferences.fontDefinition.nameEditor.misapplication"; + public static final String CONCEPT_FONT = "eu.etaxonomy.taxeditor.preferences.fontDefinition.nameEditor.concept"; + public static final String FONT_DEFAULT_PROMPT = "eu.etaxonomy.taxeditor.preferences.fontDefinition.nameEditor.default"; + + public static final String FONT_SEARCH_VIEW_ACCEPTED = "eu.etaxonomy.taxeditor.preferences.fontDefinition.searchView.accepted"; + public static final String FONT_SEARCH_VIEW_SYNONYM = "eu.etaxonomy.taxeditor.preferences.fontDefinition.searchView.synonym"; + public static final String FONT_SEARCH_VIEW_OTHER = "eu.etaxonomy.taxeditor.preferences.fontDefinition.searchView.other"; + + /* *************************************************************************************** + COLORS + ************************************************************************************** */ + public static final String COLOR_COMPOSITE_BACKGROUND = "eu.etaxonomy.taxeditor.preferences.colorDefinition.nameEditor.colorCompositeBackground"; + public static final String COLOR_COMPOSITE_SELECTED = "eu.etaxonomy.taxeditor.preferences.colorDefinition.nameEditor.colorCompositeSelected"; + public static final String COLOR_COMPOSITE_IRRELEVANT = "eu.etaxonomy.taxeditor.preferences.colorDefinition.colorCompositeIrrelevant"; + + public static final String SEARCH_VIEW_FOREGROUND = "eu.etaxonomy.taxeditor.preferences.colorDefinition.searchView.foreground"; + public static final String SEARCH_VIEW_FOCUS = "eu.etaxonomy.taxeditor.preferences.colorDefinition.searchView.focus"; + + public static final String COLOR_LIST_BACKGROUND = "eu.etaxonomy.taxeditor.preferences.colorDefinition.listBackground"; + public static final String COLOR_FONT_DEFAULT = "eu.etaxonomy.taxeditor.preferences.colorDefinition.textDefault"; + public static final String COLOR_TEXT_DISABLED = "eu.etaxonomy.taxeditor.preferences.colorDefinition.textDisabled"; + public static final String COLOR_TEXT_DISABLED_BACKGROUND = "eu.etaxonomy.taxeditor.preferences.colorDefinition.textBackgroundDisabled"; + + +} diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java index 551783ae4..38facfcf7 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java @@ -14,6 +14,8 @@ import org.apache.log4j.Logger; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; @@ -22,6 +24,7 @@ import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; @@ -34,8 +37,13 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements IWorkbenchPreferencePage { private static final Logger logger = Logger .getLogger(TaxonomicEditorGeneralPreferences.class); - private Button button_toggle; + boolean showUuidInSupplementalView; + + private String editMapServiceAccessPoint; + + private boolean shouldConnectAtStartup; + /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) */ @@ -45,22 +53,45 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements final GridLayout gridLayout = new GridLayout(); container.setLayout(gridLayout); - getShowDatasourceLauncher(container); + createShowUuidInSupplementalView(container); + createMapServiceAccessPoint(container); + createShouldConnectAtStartUp(container); return container; } - private Control getShowDatasourceLauncher(Composite parent){ - Composite toggle = new Composite(parent, SWT.NULL); - toggle.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - toggle.setLayout(new RowLayout(SWT.HORIZONTAL)); + private void createMapServiceAccessPoint(Composite composite) { + editMapServiceAccessPoint = PreferencesUtil.getMapServiceAccessPoint(); + +// Composite composite = createComposite(parent); + + CLabel label = new CLabel(composite, SWT.NULL); + label.setText("EDIT Map Service Access Point:"); - button_toggle = new Button(toggle, SWT.CHECK); + final Text text = new Text(composite, SWT.BORDER); + text.setText(editMapServiceAccessPoint); + text.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); + + text.addModifyListener(new ModifyListener() { + + public void modifyText(ModifyEvent e) { + editMapServiceAccessPoint = text.getText(); + } + }); + } + + private void createShowUuidInSupplementalView(Composite parent){ + showUuidInSupplementalView = getPreferenceStore().getBoolean(PreferencesUtil.SHOW_DEBUG_INFORMATION); - CLabel label_info = new CLabel(toggle, SWT.NULL); - label_info.setText("Show datasource selection dialog when editor starts."); + Composite composite = createComposite(parent); + + final Button button_toggle = new Button(composite, SWT.CHECK); + + + button_toggle.setText("Show UUID and object ID in supplemental data view."); + + button_toggle.setSelection(showUuidInSupplementalView); - button_toggle.setSelection(getPreferenceStore().getBoolean(PreferencesUtil.SHOW_DATASOURCE_CHOOSER)); button_toggle.addSelectionListener(new SelectionAdapter(){ /* (non-Javadoc) @@ -68,12 +99,41 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements */ @Override public void widgetSelected(SelectionEvent e) { - super.widgetSelected(e); - getPreferenceStore().setValue(PreferencesUtil.SHOW_DATASOURCE_CHOOSER, button_toggle.getSelection()); + showUuidInSupplementalView = button_toggle.getSelection(); } }); - return toggle; + } + + private void createShouldConnectAtStartUp(Composite parent){ + shouldConnectAtStartup = getPreferenceStore().getBoolean(PreferencesUtil.SHOULD_CONNECT_AT_STARTUP); + + Composite composite = createComposite(parent); + + final Button button_toggle = new Button(composite, SWT.CHECK); + + + button_toggle.setText("Connect to last used datasource when launching."); + + button_toggle.setSelection(shouldConnectAtStartup); + + + button_toggle.addSelectionListener(new SelectionAdapter(){ + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + @Override + public void widgetSelected(SelectionEvent e) { + shouldConnectAtStartup = button_toggle.getSelection(); + } + }); + } + + private Composite createComposite(Composite parent){ + Composite composite = new Composite(parent, SWT.NULL); + composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1)); + composite.setLayout(new RowLayout(SWT.HORIZONTAL)); + return composite; } /* (non-Javadoc) @@ -83,5 +143,13 @@ public class TaxonomicEditorGeneralPreferences extends PreferencePage implements setPreferenceStore(PreferencesUtil.getPreferenceStore()); } - + @Override + public boolean performOk() { + + getPreferenceStore().setValue(PreferencesUtil.SHOW_DEBUG_INFORMATION, showUuidInSupplementalView); + getPreferenceStore().setValue(PreferencesUtil.EDIT_MAP_SERVICE_ACCES_POINT, editMapServiceAccessPoint); + getPreferenceStore().setValue(PreferencesUtil.SHOULD_CONNECT_AT_STARTUP, shouldConnectAtStartup); + + return super.performOk(); + } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java index db9d1cc64..c061e0ca0 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java @@ -18,7 +18,7 @@ import org.eclipse.swt.events.SelectionEvent; import eu.etaxonomy.cdm.model.common.ExtensionType; import eu.etaxonomy.cdm.model.common.VocabularyEnum; -import eu.etaxonomy.taxeditor.preference.wizards.VocabularyTermWizard; +import eu.etaxonomy.taxeditor.preference.wizard.VocabularyTermWizard; import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.store.VocabularyStore; @@ -64,4 +64,4 @@ public class ExtensionTypeMenuPreferences extends AbstractMenuPreferences { - - public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.feature"; - - public FeatureMenuPreferences() { - super(VocabularyStore.getFeatures(), - "Feature Preferences", - "Choose which features you would like to use for descriptive elements.", - true); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners() - * - * TODO refactor into superclass - */ - @Override - protected void addNewButtonListeners() { - newButton.addSelectionListener(new SelectionAdapter(){ - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) - */ - @Override - public void widgetSelected(SelectionEvent e) { - super.widgetSelected(e); - VocabularyTermWizard wizard = new VocabularyTermWizard(VocabularyEnum.Feature); - - WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard); - dialog.open(); - - tableViewer.setInput(VocabularyStore.getFeatures()); - } - }); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners() - */ - @Override - protected void addEditButtonListeners() { - editButton.addSelectionListener(new SelectionAdapter(){ - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) - */ - @Override - public void widgetSelected(SelectionEvent e) { - super.widgetSelected(e); - Feature selection = (Feature) ((StructuredSelection) tableViewer.getSelection()).getFirstElement(); - - VocabularyTermWizard wizard = new VocabularyTermWizard(VocabularyEnum.Feature, selection); - - WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard); - dialog.open(); - - tableViewer.setInput(VocabularyStore.getFeatures()); - tableViewer.reveal(selection); - } - }); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners() - * - * TODO refactor into superclass - */ -// @Override -// protected void addDeleteButtonListeners() { -// removeButton.addMouseListener(new MouseAdapter(){ -// -// /* (non-Javadoc) -// * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) -// */ -// @Override -// public void mouseUp(MouseEvent e) { -// super.mouseUp(e); -// -// Feature selected = (Feature) ((StructuredSelection) tableViewer.getSelection()).getFirstElement(); -// -// VocabularyStore.delete(selected); -// -// -// tableViewer.setInput(VocabularyStore.getFeatures()); -// } -// -// }); -// } -} +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ +package eu.etaxonomy.taxeditor.preference.menu; + +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; + +import eu.etaxonomy.cdm.model.common.VocabularyEnum; +import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.taxeditor.preference.wizard.VocabularyTermWizard; +import eu.etaxonomy.taxeditor.store.StoreUtil; +import eu.etaxonomy.taxeditor.store.VocabularyStore; + +/** + * @author p.ciardelli + * @created 17.09.2008 + * @version 1.0 + * @author n.hoffmann + */ +public class FeatureMenuPreferences extends AbstractMenuPreferences { + + public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.feature"; + + public FeatureMenuPreferences() { + super(VocabularyStore.getFeatures(), + "Feature Preferences", + "Choose which features you would like to use for descriptive elements.", + true); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners() + * + * TODO refactor into superclass + */ + @Override + protected void addNewButtonListeners() { + newButton.addSelectionListener(new SelectionAdapter(){ + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + @Override + public void widgetSelected(SelectionEvent e) { + super.widgetSelected(e); + VocabularyTermWizard wizard = new VocabularyTermWizard(VocabularyEnum.Feature); + + WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard); + dialog.open(); + + tableViewer.setInput(VocabularyStore.getFeatures()); + } + }); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners() + */ + @Override + protected void addEditButtonListeners() { + editButton.addSelectionListener(new SelectionAdapter(){ + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + @Override + public void widgetSelected(SelectionEvent e) { + super.widgetSelected(e); + Feature selection = (Feature) ((StructuredSelection) tableViewer.getSelection()).getFirstElement(); + + VocabularyTermWizard wizard = new VocabularyTermWizard(VocabularyEnum.Feature, selection); + + WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard); + dialog.open(); + + tableViewer.setInput(VocabularyStore.getFeatures()); + tableViewer.reveal(selection); + } + }); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#addEditButtonListeners() + * + * TODO refactor into superclass + */ +// @Override +// protected void addDeleteButtonListeners() { +// removeButton.addMouseListener(new MouseAdapter(){ +// +// /* (non-Javadoc) +// * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) +// */ +// @Override +// public void mouseUp(MouseEvent e) { +// super.mouseUp(e); +// +// Feature selected = (Feature) ((StructuredSelection) tableViewer.getSelection()).getFirstElement(); +// +// VocabularyStore.delete(selected); +// +// +// tableViewer.setInput(VocabularyStore.getFeatures()); +// } +// +// }); +// } +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java index 87df4f2ef..b80188bc0 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java @@ -1,78 +1,78 @@ -// $Id$ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - -package eu.etaxonomy.taxeditor.preference.menu; - -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.ViewerComparator; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -import eu.etaxonomy.cdm.model.common.Language; -import eu.etaxonomy.taxeditor.store.VocabularyStore; - -/** - * @author p.ciardelli - * @created 24.08.2009 - * @version 1.0 - */ -public class LanguageMenuPreferences extends AbstractMenuPreferences { - - public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; - - /** - * @param initialVocabulary - * @param title - * @param description - */ - public LanguageMenuPreferences() { - super(VocabularyStore.getLanguages(), - "Language Preferences", - "Configure language preferences.", - false); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createContents(org.eclipse.swt.widgets.Composite) - */ - @Override - public Control createContents(Composite parent) { - Control control = super.createContents(parent); - - tableViewer.setLabelProvider(new LanguagePreferenceLabelProvider()); - tableViewer.setComparator(new ViewerComparator()); - - return control; - } - - class LanguagePreferenceLabelProvider extends LabelProvider implements ITableLabelProvider{ - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) - */ - public Image getColumnImage(Object element, int columnIndex) { - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) - */ - public String getColumnText(Object element, int columnIndex) { - String description = ((Language)element).getDescription(); - if (description == null) { - description = ((Language)element).getLabel() + " - Warning: no description - not shown in menus"; - } - return description; - } - - } -} +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.preference.menu; + +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.ViewerComparator; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.taxeditor.store.VocabularyStore; + +/** + * @author p.ciardelli + * @created 24.08.2009 + * @version 1.0 + */ +public class LanguageMenuPreferences extends AbstractMenuPreferences { + + public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; + + /** + * @param initialVocabulary + * @param title + * @param description + */ + public LanguageMenuPreferences() { + super(VocabularyStore.getLanguages(), + "Language Preferences", + "Configure language preferences.", + false); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createContents(org.eclipse.swt.widgets.Composite) + */ + @Override + public Control createContents(Composite parent) { + Control control = super.createContents(parent); + + tableViewer.setLabelProvider(new LanguagePreferenceLabelProvider()); + tableViewer.setComparator(new ViewerComparator()); + + return control; + } + + class LanguagePreferenceLabelProvider extends LabelProvider implements ITableLabelProvider{ + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) + */ + public Image getColumnImage(Object element, int columnIndex) { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) + */ + public String getColumnText(Object element, int columnIndex) { + String description = ((Language)element).getDescription(); + if (description == null) { + description = ((Language)element).getLabel() + " - Warning: no description - not shown in menus"; + } + return description; + } + + } +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java index ab316fe8d..1e5f23333 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java @@ -39,4 +39,4 @@ public class MarkerTypeMenuPreferences extends AbstractMenuPreferences { + AbstractMenuPreferences { /** * @param initialVocabulary * @param title diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java new file mode 100644 index 000000000..2492470c2 --- /dev/null +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java @@ -0,0 +1,37 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + +package eu.etaxonomy.taxeditor.preference.menu; + +import java.util.Set; + +import org.apache.log4j.Logger; + +import eu.etaxonomy.cdm.model.location.NamedAreaType; +import eu.etaxonomy.taxeditor.store.VocabularyStore; + +/** + * @author n.hoffmann + * @created May 11, 2010 + * @version 1.0 + */ +public class NamedAreaTypeMenuPreferences extends AbstractMenuPreferences { + + private static final Logger logger = Logger + .getLogger(NamedAreaTypeMenuPreferences.class); + + public NamedAreaTypeMenuPreferences(Set initialVocabulary, + String title, String description, boolean editable) { + super(VocabularyStore.getNamedAreaTypes(), + "Named Area Types", + "Edit displayed named area types", + true); + } +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalStatusTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalStatusTypeMenuPreferences.java index 244fadd6c..84a92e2c1 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalStatusTypeMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalStatusTypeMenuPreferences.java @@ -28,4 +28,4 @@ public class NomenclaturalStatusTypeMenuPreferences extends false); } -} +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/DistributionStatusMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java similarity index 81% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/DistributionStatusMenuPreferences.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java index a07422c5a..aa269bd07 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/DistributionStatusMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java @@ -20,7 +20,7 @@ import eu.etaxonomy.taxeditor.store.VocabularyStore; * @created 25.06.2009 * @version 1.0 */ -public class DistributionStatusMenuPreferences extends AbstractMenuPreferences>> implements +public class PresenceAbsenceMenuPreferences extends AbstractMenuPreferences implements IWorkbenchPreferencePage { @@ -30,11 +30,11 @@ public class DistributionStatusMenuPreferences extends AbstractMenuPreferences

Ranks to display in the - * PropertySheet drop-down menu for TaxonNameBase. - * - * @author p.ciardelli - * @created 17.09.2008 - * @version 1.0 - * @author n.hoffmann - */ -public class RankMenuPreferences extends AbstractMenuPreferences implements - IWorkbenchPreferencePage { - - public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks"; - - public RankMenuPreferences() { - super(VocabularyStore.getRanks(), - "Rank Preferences", - "Choose which ranks to display in the property sheet drop-down menu.", - false); - } - -} +/** +* Copyright (C) 2007 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ +package eu.etaxonomy.taxeditor.preference.menu; + +import org.eclipse.ui.IWorkbenchPreferencePage; + +import eu.etaxonomy.cdm.model.name.Rank; +import eu.etaxonomy.taxeditor.store.VocabularyStore; + +/** + * Allows the user to choose which Ranks to display in the + * PropertySheet drop-down menu for TaxonNameBase. + * + * @author p.ciardelli + * @created 17.09.2008 + * @version 1.0 + * @author n.hoffmann + */ +public class RankMenuPreferences extends AbstractMenuPreferences implements + IWorkbenchPreferencePage { + + public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks"; + + public RankMenuPreferences() { + super(VocabularyStore.getRanks(), + "Rank Preferences", + "Choose which ranks to display in the property sheet drop-down menu.", + false); + } + +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java index 8cbde92d1..20ad193ea 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java @@ -32,4 +32,4 @@ public class SpecimenTypeDesignationStatusMenuPreferences extends false); } -} +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java index 65787b92d..8a168be46 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java @@ -33,4 +33,4 @@ public class TaxonRelationshipTypeMenuPreferences extends false); } -} +} \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizard.java similarity index 89% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizard.java index 7d88af078..fb39d8cf6 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizard.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizard.java @@ -8,11 +8,12 @@ * See LICENSE.TXT at the top of this package for the full license terms. */ -package eu.etaxonomy.taxeditor.preference.wizards; +package eu.etaxonomy.taxeditor.preference.wizard; import org.apache.log4j.Logger; import org.eclipse.jface.wizard.Wizard; +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.Representation; import eu.etaxonomy.cdm.model.common.VocabularyEnum; @@ -66,7 +67,7 @@ public class VocabularyTermWizard extends Wizard { @Override public boolean performFinish() { -// ConversationHolder conversation = CdmStore.NewTransactionalConversation(); + ConversationHolder conversation = CdmStore.createConversation(); if(editMode){ VocabularyStore.updateVocabulary(getTerm()); @@ -74,7 +75,7 @@ public class VocabularyTermWizard extends Wizard { VocabularyStore.saveTerm(getTerm(), getVocabulary()); } -// conversation.commit(true); + conversation.commit(false); return true; } @@ -112,11 +113,9 @@ public class VocabularyTermWizard extends Wizard { } } catch (InstantiationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.error("InstantiationException when setting term", e); } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.error("IllegalAccessException when setting term", e); } } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizardPage.java similarity index 98% rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizardPage.java index b5433ea55..60c70fcdb 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/VocabularyTermWizardPage.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizardPage.java @@ -8,7 +8,7 @@ * See LICENSE.TXT at the top of this package for the full license terms. */ -package eu.etaxonomy.taxeditor.preference.wizards; +package eu.etaxonomy.taxeditor.preference.wizard; import org.apache.log4j.Logger; diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java index e47bb1d48..386392e0e 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java @@ -9,23 +9,28 @@ package eu.etaxonomy.taxeditor.store; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; -import org.eclipse.core.runtime.Status; -import org.eclipse.ui.PlatformUI; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.ListenerList; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; -import org.springframework.security.providers.ProviderManager; +import org.springframework.security.authentication.ProviderManager; import eu.etaxonomy.cdm.api.application.CdmApplicationController; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.service.IAgentService; import eu.etaxonomy.cdm.api.service.ICommonService; import eu.etaxonomy.cdm.api.service.ILocationService; +import eu.etaxonomy.cdm.api.service.IMediaService; import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.IReferenceService; +import eu.etaxonomy.cdm.api.service.ITaxonNodeService; import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.api.service.ITaxonTreeService; import eu.etaxonomy.cdm.api.service.ITermService; @@ -35,6 +40,7 @@ import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurato import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator; import eu.etaxonomy.cdm.database.DataSourceNotFoundException; import eu.etaxonomy.cdm.database.DatabaseSchemaMismatchException; +import eu.etaxonomy.cdm.database.DatabaseTypeEnum; import eu.etaxonomy.cdm.database.DbSchemaValidation; import eu.etaxonomy.cdm.database.ICdmDataSource; import eu.etaxonomy.cdm.ext.IEditGeoService; @@ -45,10 +51,12 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.reference.ReferenceBase; import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository; -import eu.etaxonomy.taxeditor.dialogs.DatasourceLauncherDialog; +import eu.etaxonomy.taxeditor.datasource.view.CdmDataSourceView; +import eu.etaxonomy.taxeditor.dialogs.LoginDialog; import eu.etaxonomy.taxeditor.io.ExportHandler; import eu.etaxonomy.taxeditor.io.ImportHandler; -import eu.etaxonomy.taxeditor.preference.PreferencesUtil; +import eu.etaxonomy.taxeditor.model.IContextListener; +import eu.etaxonomy.taxeditor.model.IContextListener.EventType; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; /** @@ -82,8 +90,12 @@ public class CdmStore{ private Language language; + private static ListenerList contextListeners = new ListenerList(); + private static ICdmDataSource cdmDatasource; + private boolean isConnected; + /** * @@ -91,84 +103,138 @@ public class CdmStore{ * @return */ protected static CdmStore getDefault(){ - if(instance == null){ + if(instance != null && instance.isConnected){ + return instance; + }else if(instance == null){ - // Prompt user for datasource if there are more than one - if(PreferencesUtil.getPreferenceStore().getBoolean(PreferencesUtil.SHOW_DATASOURCE_CHOOSER) - && CdmDataSourceRepository.getAll().size() > 1){ - createDatasourceChooser(null); - }else{ - // Start default cdm database - instance = initialize(DEFAULT_DB_SCHEMA_VALIDATION, DEFAULT_APPLICATION_CONTEXT); - } + initialize(); + + return instance; + }else if(!instance.isConnected){ + + StoreUtil.warningDialog("No datasource connection", "Application is not connected to a datastore."); + + // TODO open datasource view + + } + return null; + } + + /** + * Initialize the with the last edited datasource + */ + public static void initialize() { - } + ICdmDataSource datasource = CdmDataSourceRepository.getCurrentDataSource(); - return instance; + initialize(datasource); + } + + /** + * Initialize with a specific datasource + * + * @param datasource + */ + public static void initialize(ICdmDataSource datasource) { + initialize(datasource, DEFAULT_DB_SCHEMA_VALIDATION, DEFAULT_APPLICATION_CONTEXT); } - private static CdmStore initialize(DbSchemaValidation dbSchemaValidation, Resource applicationContextBean){ + /** + * Initialize and provide + * + * @param datasource + * @param dbSchemaValidation + * @param applicationContextBean + */ + private static void initialize(final ICdmDataSource datasource, final DbSchemaValidation dbSchemaValidation, final Resource applicationContextBean){ + if(isActive()){ +// close(); + logger.error("Application context already initialized."); + return; + } logger.info("Initializing application context ..."); - cdmDatasource = CdmDataSourceRepository.getCurrentDataSource(); - try { - if (!cdmDatasource.testConnection()) { - createDatasourceChooser("The database for the chosen datasource '" + cdmDatasource + "' \n could not be connected to." + - "Please choose a new data source to connect to"); - } else { - instance = new CdmStore(cdmDatasource, dbSchemaValidation, applicationContextBean); - logger.info("Application context initialized."); + if (datasource.testConnection()) { + cdmDatasource = datasource; + + ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(StoreUtil.getShell()); + IRunnableWithProgress runnable = new IRunnableWithProgress() { + + public void run(IProgressMonitor monitor) throws InvocationTargetException, + InterruptedException { + String message = ""; + if(cdmDatasource.getDatabaseType().equals(DatabaseTypeEnum.H2)){ + message = " local CDM Store "; + }else{ + message = " CDM Community Store "; + } + message += "'" + cdmDatasource.getName() + "'"; + + monitor.beginTask("Establishing connection to" + message, 10); + // TODO get real feedback from CDMStore initialisation process + monitor.worked(3); + + instance = new CdmStore(datasource, dbSchemaValidation, applicationContextBean); + + monitor.done(); + } + }; + + progressMonitorDialog.run(false, false, runnable); if (!getCommonService().isDatabaseSchemaCompatible()) { + close(); // Show the datasource chooser if(CdmDataSourceRepository.getAll().size() > 1){ - createDatasourceChooser("The database schema for the chosen " + - "datasource '" + cdmDatasource + "' \n is not valid for this version of the taxonomic editor. \n" + - "Please choose a new data source to connect to"); + // Show an error message + StoreUtil.errorDialog("DatabaseCompatibilityCheck failed", "The database schema for the chosen " + + "datasource '" + datasource + "' \n is not valid for this version of the taxonomic editor. \n" + + "Please choose a new data source to connect to in the Datasource View."); + + // Show datasource view if not shown yet + StoreUtil.showView(CdmDataSourceView.ID); } else { throw new DatabaseSchemaMismatchException(); } - } - } - return instance; + } else { + notifyContextStart(); + + logger.info("Application context initialized."); + } + } } catch (DataSourceNotFoundException e) { StoreUtil.errorDialog("Chosen Datasource is not available", "Could not connect to the chosen " + - "datasource '" + cdmDatasource + "'. Please check settings in datasources.xml. If the datasource " + + "datasource '" + datasource + "'. Please check settings in datasources.xml. If the datasource " + "is located on a remote machine, make sure you are connected to the network."); logger.error(e); } catch (NullPointerException e){ StoreUtil.errorDialog("Corrupt Datasource", "The configuration for the chosen " + - "datasource '" + cdmDatasource + "' is corrupt. Please check settings in datasources.xml."); + "datasource '" + datasource + "' is corrupt. Please check settings in datasources.xml."); logger.error(e); } catch (DatabaseSchemaMismatchException e){ StoreUtil.errorDialog("Database Schema incompatible", "The database schema for the chosen " + - "datasource '" + cdmDatasource + "' is not valid for this version of the taxonomic editor."); + "datasource '" + datasource + "' is not valid for this version of the taxonomic editor."); logger.error(e); } catch (Exception e){ StoreUtil.errorDialog("Unknown Datasource Error", "An error occurred while connecting to the datasource." + "Please refer to the error log."); logger.error(e); } - - // FIXME present datasource chooser dialog instead of closing the workbench - PlatformUI.getWorkbench().close(); - return null; } /** - * Creates the datasource chooser. - * @param message Message to show. Specify null if none. + * Closes the current application context */ - private static void createDatasourceChooser(String message) { - DatasourceLauncherDialog chooseDataSource = new DatasourceLauncherDialog(StoreUtil.getShell(), message); - if(chooseDataSource.open() == Status.OK){ - instance = initialize(DEFAULT_DB_SCHEMA_VALIDATION, DEFAULT_APPLICATION_CONTEXT); - }else{ - // no datasource chosen. - logger.warn("No datasource chosen. Exiting now."); - PlatformUI.getWorkbench().close(); + public static void close(){ + notifyContextAboutToStop(); + if(isActive() && StoreUtil.closeAll()){ + notifyContextStop(); + instance.getApplicationController().close(); + instance.isConnected = false; + cdmDatasource = null; + } } @@ -177,7 +243,12 @@ public class CdmStore{ */ private CdmStore(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, Resource applicationContextBean) { try { + // this should be more modulized applicationController = CdmApplicationController.NewInstance(applicationContextBean, dataSource, dbSchemaValidation, false); + // + isConnected = true; + + cdmDatasource = dataSource; } catch (Exception e) { throw new RuntimeException(e); } @@ -196,28 +267,10 @@ public class CdmStore{ } return null; } - - - @Deprecated - public static CdmApplicationController getApplicationControllerWillBeObsolete(){ - return getDefault().getApplicationController(); - } /* * CONVERSATIONS */ - - /** - * Create a new conversation and bind resources to it - * - * @return - */ - public static ConversationHolder NewConversation(){ - - ConversationHolder conversation = getDefault().getApplicationController().NewConversation(); - - return conversation; - } /** * Creates a new conversation, binds resources to the conversation and @@ -225,8 +278,8 @@ public class CdmStore{ * * @return */ - public static ConversationHolder NewTransactionalConversation() { - ConversationHolder conversation = NewConversation(); + public static ConversationHolder createConversation() { + ConversationHolder conversation = getDefault().getApplicationController().NewConversation(); conversation.startTransaction(); return conversation; @@ -240,6 +293,8 @@ public class CdmStore{ public static ITaxonTreeService getTaxonTreeService() { return getDefault().getApplicationController().getTaxonTreeService();} + public static ITaxonNodeService getTaxonNodeService() { return getDefault().getApplicationController().getTaxonNodeService();} + public static INameService getNameService(){ return getDefault().getApplicationController().getNameService();} public static IReferenceService getReferenceService(){ return getDefault().getApplicationController().getReferenceService();} @@ -258,10 +313,12 @@ public class CdmStore{ public static IVocabularyService getVocabularyService() { return getDefault().getApplicationController().getVocabularyService(); } + public static IMediaService getMediaService() { return getDefault().getApplicationController().getMediaService(); } + public static IEditGeoService getGeoService(){ return (IEditGeoService) getDefault().getApplicationController().getBean("editGeoService"); } - + /* * METHODS TO FIND ENTITIES */ @@ -374,6 +431,12 @@ public class CdmStore{ return loginManager; } + private int authenticate(){ + + LoginDialog loginDialog = new LoginDialog(StoreUtil.getShell()); + return loginDialog.open(); + } + /* * IMPORT/EXPORT FACTORIES */ @@ -398,4 +461,53 @@ public class CdmStore{ } return exportHandler; } + + /** + * Whether this CdmStore is currently connected to a datasource + * @return + */ + public static boolean isActive(){ + return instance != null && instance.isConnected; + } + + public static void addContextListener(IContextListener listener){ + contextListeners.add(listener); + } + + public static void removeContextListener(IContextListener listener) { + contextListeners.remove(listener); + } + + public static void notifyContextStart() { + logger.warn("Application event occured"); + + instance.authenticate(); + + + for(Object listener : contextListeners.getListeners()){ + ((IContextListener) listener).onContextEvent(EventType.START); + } + } + + public static void notifyContextAboutToStop(){ + for(Object listener : contextListeners.getListeners()){ + ((IContextListener) listener).onContextEvent(EventType.ABOUT_TO_STOP); + } + } + + public static void notifyContextStop() { + logger.warn("Application event occured"); + + for(Object listener : contextListeners.getListeners()){ + ((IContextListener) listener).onContextEvent(EventType.STOP); + } + } + + public static ICdmDataSource getDataSource(){ + if(isActive()){ + return cdmDatasource; + } + return null; + } + } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java index beb1adbc6..dbb4cc293 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java @@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.store; import java.util.Observable; import org.apache.log4j.Logger; -import org.springframework.security.Authentication; -import org.springframework.security.context.SecurityContextHolder; -import org.springframework.security.providers.UsernamePasswordAuthenticationToken; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import eu.etaxonomy.cdm.model.common.User; diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java index f2511b9e5..1ecca3a1f 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java @@ -11,10 +11,12 @@ package eu.etaxonomy.taxeditor.store; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.SortedSet; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; +import eu.etaxonomy.cdm.model.common.AnnotationType; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.ExtensionType; import eu.etaxonomy.cdm.model.common.Language; @@ -25,8 +27,10 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary; import eu.etaxonomy.cdm.model.common.VocabularyEnum; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase; +import eu.etaxonomy.cdm.model.location.NamedAreaType; import eu.etaxonomy.cdm.model.media.RightsTerm; import eu.etaxonomy.cdm.model.name.NameRelationshipType; +import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus; import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType; import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus; @@ -51,14 +55,33 @@ public class VocabularyStore { SortedSet specimenTypeDesignationStatus = getTermVocabulary(VocabularyEnum.SpecimenTypeDesignationStatus).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); return specimenTypeDesignationStatus; } + + /** + * + * @return + */ + public static SortedSet getNameTypeDesignationStatus() { + SortedSet nameTypeDesignationStatus = getTermVocabulary(VocabularyEnum.NameTypeDesignationStatus).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); + return nameTypeDesignationStatus; + } + /** * * @return */ - public static SortedSet getNameTypeDesignationStatus() { - SortedSet nameTypeDesignationStatus = getTermVocabulary(VocabularyEnum.NameTypeDesignationStatus).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); - return nameTypeDesignationStatus; + public static SortedSet getNamedAreaTypes(){ + SortedSet namedAreaTypes = getTermVocabulary(VocabularyEnum.NamedAreaType).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); + return namedAreaTypes; + } + + /** + * + * @return + */ + public static SortedSet getAnnotationTypes(){ + SortedSet annotationTypes = getTermVocabulary(VocabularyEnum.AnnotationType).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); + return annotationTypes; } /** @@ -164,8 +187,8 @@ public class VocabularyStore { * @return */ public static Set getExtensionTypes() { - Set extensionTypes = getTermVocabulary(VocabularyEnum.ExtensionType).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); - return extensionTypes; + List extensionTypes = CdmStore.getTermService().listByTermClass(ExtensionType.class, null, null, null, null); + return new HashSet(extensionTypes); } /** @@ -193,7 +216,7 @@ public class VocabularyStore { * * @return */ - public static SortedSet>> getPresenceAbsenceTerms() { + public static SortedSet getPresenceAbsenceTerms() { SortedSet presenceAbsenceTerms = getTermVocabulary(VocabularyEnum.PresenceTerm).getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); presenceAbsenceTerms.addAll(getTermVocabulary(VocabularyEnum.AbsenceTerm).getTermsOrderedByLabels(CdmStore.getDefaultLanguage())); @@ -239,4 +262,5 @@ public class VocabularyStore { public static TermVocabulary getTermVocabulary(VocabularyEnum vocabularyType){ return CdmStore.getVocabularyService().getVocabulary(vocabularyType); } + } diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerView.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerView.java index e51551bb7..f4b2250b2 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerView.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerView.java @@ -31,6 +31,7 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.User; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; +import eu.etaxonomy.taxeditor.model.IContextListener; import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -39,7 +40,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * @created 01.07.2009 * @version 1.0 */ -public class UserManagerView extends ViewPart implements IConversationEnabled, IPostOperationEnabled{ +public class UserManagerView extends ViewPart implements IConversationEnabled, IPostOperationEnabled, IContextListener{ private static final Logger logger = Logger .getLogger(UserManagerView.class); @@ -54,8 +55,7 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I */ @Override public void createPartControl(Composite parent) { - - conversation = CdmStore.NewTransactionalConversation(); + CdmStore.addContextListener(this); FillLayout fillLayout = new FillLayout(); fillLayout.marginWidth = 0; @@ -65,7 +65,7 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I listViewer = new ListViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); - + getSite().setSelectionProvider(listViewer); MenuManager menuMgr = new MenuManager(); menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); getSite().registerContextMenu(menuMgr, listViewer); @@ -77,21 +77,10 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I listViewer.setContentProvider(new UserManagerContentProvider()); listViewer.setLabelProvider(new UserManagerLabelProvider()); - listViewer.setInput(getAllUser()); + if(CdmStore.isActive()){ + listViewer.setInput(getAllUser()); + } -// listViewer.addDoubleClickListener(new IDoubleClickListener() { -// -// public void doubleClick(DoubleClickEvent event) { -// if (event.getSelection() instanceof StructuredSelection) { -// -// Object element = ((StructuredSelection) event -// .getSelection()).getFirstElement(); -// if (element instanceof User) { -// handler = new EditUserHandler(); -// } -// } -// } -// }); this.addListenerObject(new FocusAdapter() { /* (non-Javadoc) @@ -111,7 +100,9 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I */ @Override public void setFocus() { - conversation.bind(); + if(conversation != null){ + conversation.bind(); + } listViewer.getControl().setFocus(); } @@ -121,10 +112,12 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase) */ public boolean postOperation(CdmBase objectAffectedByOperation) { - List allUsers = getAllUser(); - - listViewer.setInput(allUsers); - listViewer.refresh(); + if(CdmStore.isActive()){ + List allUsers = getAllUser(); + + listViewer.setInput(allUsers); + listViewer.refresh(); + } return true; } @@ -134,6 +127,7 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I * @return */ private List getAllUser(){ + conversation = CdmStore.createConversation(); return CdmStore.getUserService().list(null, null, null, null, null); } @@ -150,14 +144,23 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I public void update(CdmDataChangeMap changeEvents) { // data changes can only be generate here at the moment } - - /* (non-Javadoc) - * @see org.eclipse.ui.part.WorkbenchPart#dispose() - */ + @Override public void dispose() { + CdmStore.removeContextListener(this); super.dispose(); - conversation.close(); + } + + public boolean onContextEvent(EventType eventType) { + switch(eventType){ + case START: + listViewer.setInput(getAllUser()); + break; + case STOP: + listViewer.setInput(null); + break; + } + return true; } } diff --git a/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/CdmStoreTest.java b/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/CdmStoreTest.java index 2ab40e6d6..aebe703a4 100644 --- a/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/CdmStoreTest.java +++ b/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/CdmStoreTest.java @@ -39,7 +39,7 @@ public class CdmStoreTest /*extends CdmIntegrationTest */{ @BeforeClass public static void setUp() throws Exception { cdmStore = CdmStore.getDefault(); - conversation = CdmStore.NewConversation(); + conversation = CdmStore.createConversation(); } /** diff --git a/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/CreateSynonymInExisitingHomotypicalGroupOperationTest.java b/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/CreateSynonymInExisitingHomotypicalGroupOperationTest.java index cfe755f5e..7c65041b3 100644 --- a/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/CreateSynonymInExisitingHomotypicalGroupOperationTest.java +++ b/taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/operations/CreateSynonymInExisitingHomotypicalGroupOperationTest.java @@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.SynonymRelationship; import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation; +import eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation; /** * @author n.hoffmann @@ -49,12 +49,12 @@ public class CreateSynonymInExisitingHomotypicalGroupOperationTest extends Abstr homotypicalGroup = HomotypicalGroup.NewInstance(); newSynonymName = NonViralName.NewInstance(null); - operation = new CreateSynonymInExisitingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group", + operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group", undoContext, taxon, homotypicalGroup, newSynonymName, postOperation); } /** - * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. + * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. * * Homotypic group is the Taxons homotypic group, so we expect the synonym to be homotypic to the accepted taxon. * @@ -70,7 +70,7 @@ public class CreateSynonymInExisitingHomotypicalGroupOperationTest extends Abstr } /** - * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. + * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. * * Homotypic group is not the accepted taxons. Heterotypic synonym should be created. * @@ -88,7 +88,7 @@ public class CreateSynonymInExisitingHomotypicalGroupOperationTest extends Abstr /** - * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. + * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. * @throws ExecutionException */ @Test @@ -102,7 +102,7 @@ public class CreateSynonymInExisitingHomotypicalGroupOperationTest extends Abstr } /** - * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. + * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. * @throws ExecutionException */ @Test @@ -114,7 +114,7 @@ public class CreateSynonymInExisitingHomotypicalGroupOperationTest extends Abstr } /** - * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. + * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. * @throws ExecutionException */ @Test @@ -130,7 +130,7 @@ public class CreateSynonymInExisitingHomotypicalGroupOperationTest extends Abstr } /** - * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExisitingHomotypicalGroupOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. + * Test method for {@link eu.etaxonomy.taxeditor.operations.CreateSynonymInExistingHomotypicalGroupOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}. * @throws ExecutionException */ @Test diff --git a/taxeditor-store/src/test/resources/dbscripts/001_cdm.ddl b/taxeditor-store/src/test/resources/dbscripts/001_cdm.ddl deleted file mode 100644 index ccf3949e0..000000000 --- a/taxeditor-store/src/test/resources/dbscripts/001_cdm.ddl +++ /dev/null @@ -1,606 +0,0 @@ -create table Address (id integer not null, created timestamp, uuid varchar(255), updated timestamp, locality varchar(255), location_errorradius integer, location_latitude double, location_longitude double, pobox varchar(255), postcode varchar(255), region varchar(255), street varchar(255), createdby_id integer, updatedby_id integer, contact_id integer, country_id integer, location_referencesystem_id integer, primary key (id)); -create table Agent (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, code varchar(255), name varchar(255), nomenclaturaltitle varchar(255), firstname varchar(255), lastname varchar(255), lifespan_end varchar(255), lifespan_start varchar(255), prefix varchar(255), suffix varchar(255), createdby_id integer, updatedby_id integer, contact_id integer, ispartof_id integer, primary key (id)); -create table Agent_Agent (Agent_id integer not null, teammembers_id integer not null); -create table Agent_Annotation (Agent_id integer not null, annotations_id integer not null, primary key (Agent_id, annotations_id), unique (annotations_id)); -create table Agent_DefinedTermBase (Agent_id integer not null, types_id integer not null, primary key (Agent_id, types_id)); -create table Agent_Extension (Agent_id integer not null, extensions_id integer not null, primary key (Agent_id, extensions_id), unique (extensions_id)); -create table Agent_Marker (Agent_id integer not null, markers_id integer not null, primary key (Agent_id, markers_id), unique (markers_id)); -create table Agent_Media (Agent_id integer not null, media_id integer not null, primary key (Agent_id, media_id), unique (media_id)); -create table Agent_OriginalSource (Agent_id integer not null, sources_id integer not null, primary key (Agent_id, sources_id), unique (sources_id)); -create table Agent_Rights (Agent_id integer not null, rights_id integer not null, primary key (Agent_id, rights_id)); -create table Annotation (id integer not null, created timestamp, uuid varchar(255), updated timestamp, text varchar(4096), annotatedObj_type varchar(255), annotatedObj_id integer not null, linkbackurlstr varchar(255), createdby_id integer, updatedby_id integer, language_id integer, annotationtype_id integer, commentator_id integer, primary key (id)); -create table Annotation_Annotation (Annotation_id integer not null, annotations_id integer not null, primary key (Annotation_id, annotations_id), unique (annotations_id)); -create table Annotation_Marker (Annotation_id integer not null, markers_id integer not null, primary key (Annotation_id, markers_id), unique (markers_id)); -create table CDM_VIEW (id integer not null, created timestamp, uuid varchar(255), description varchar(255), name varchar(255), reference varbinary(255), createdby_id integer, primary key (id)); -create table CDM_VIEW_CDM_VIEW (CDM_VIEW_id integer not null, superviews_id integer not null, primary key (CDM_VIEW_id, superviews_id), unique (superviews_id)); -create table Collection (id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, code varchar(255), codestandard varchar(255), name varchar(255), townorlocation varchar(255), createdby_id integer, updatedby_id integer, institute_id integer, supercollection_id integer, primary key (id)); -create table Collection_Annotation (Collection_id integer not null, annotations_id integer not null, primary key (Collection_id, annotations_id), unique (annotations_id)); -create table Collection_Extension (Collection_id integer not null, extensions_id integer not null, primary key (Collection_id, extensions_id), unique (extensions_id)); -create table Collection_Marker (Collection_id integer not null, markers_id integer not null, primary key (Collection_id, markers_id), unique (markers_id)); -create table Collection_Media (Collection_id integer not null, media_id integer not null, primary key (Collection_id, media_id), unique (media_id)); -create table Collection_OriginalSource (Collection_id integer not null, sources_id integer not null, primary key (Collection_id, sources_id), unique (sources_id)); -create table Collection_Rights (Collection_id integer not null, rights_id integer not null, primary key (Collection_id, rights_id)); -create table Contact (id integer not null, created timestamp, uuid varchar(255), updated timestamp, email varchar(255), fax varchar(255), phone varchar(255), url varchar(255), createdby_id integer, updatedby_id integer, primary key (id)); -create table DefinedTermBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, uri varchar(255), orderindex integer, iso639_1 varchar(2), iso639_2 varchar(3), symmetric boolean, transitive boolean, defaultcolor varchar(255), supportscommontaxonname boolean, supportsdistribution boolean, supportsindividualassociation boolean, supportsquantitativedata boolean, supportstaxoninteraction boolean, supportstextdata boolean, pointapproximation_errorradius integer, pointapproximation_latitude double, pointapproximation_longitude double, validperiod_end varchar(255), validperiod_start varchar(255), iso3166_a2 varchar(2), createdby_id integer, updatedby_id integer, kindof_id integer, partof_id integer, vocabulary_id integer, level_id integer, pointapproximation_referencesystem_id integer, shape_id integer, type_id integer, primary key (id)); -create table DefinedTermBase_Continent (DefinedTermBase_id integer not null, continents_id integer not null, primary key (DefinedTermBase_id, continents_id)); -create table DefinedTermBase_Media (DefinedTermBase_id integer not null, media_id integer not null, primary key (DefinedTermBase_id, media_id), unique (media_id)); -create table DefinedTermBase_RecommendedModifierEnumeration (DefinedTermBase_id integer not null, recommendedmodifierenumeration_id integer not null, primary key (DefinedTermBase_id, recommendedmodifierenumeration_id), unique (recommendedmodifierenumeration_id)); -create table DefinedTermBase_Representation (DefinedTermBase_id integer not null, representations_id integer not null, primary key (DefinedTermBase_id, representations_id), unique (representations_id)); -create table DefinedTermBase_StatisticalMeasure (DefinedTermBase_id integer not null, recommendedstatisticalmeasures_id integer not null, primary key (DefinedTermBase_id, recommendedstatisticalmeasures_id)); -create table DefinedTermBase_SupportedCategoricalEnumeration (DefinedTermBase_id integer not null, supportedcategoricalenumerations_id integer not null, primary key (DefinedTermBase_id, supportedcategoricalenumerations_id), unique (supportedcategoricalenumerations_id)); -create table DefinedTermBase_WaterbodyOrCountry (DefinedTermBase_id integer not null, waterbodiesorcountries_id integer not null, primary key (DefinedTermBase_id, waterbodiesorcountries_id)); -create table DerivationEvent (id integer not null, created timestamp, uuid varchar(255), updated timestamp, description varchar(255), timeperiod_end varchar(255), timeperiod_start varchar(255), createdby_id integer, updatedby_id integer, actor_id integer, type_id integer, primary key (id)); -create table DerivationEvent_Annotation (DerivationEvent_id integer not null, annotations_id integer not null, primary key (DerivationEvent_id, annotations_id), unique (annotations_id)); -create table DerivationEvent_Marker (DerivationEvent_id integer not null, markers_id integer not null, primary key (DerivationEvent_id, markers_id), unique (markers_id)); -create table DescriptionBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, createdby_id integer, updatedby_id integer, taxon_fk integer, taxonName_fk integer, primary key (id)); -create table DescriptionBase_Annotation (DescriptionBase_id integer not null, annotations_id integer not null, primary key (DescriptionBase_id, annotations_id), unique (annotations_id)); -create table DescriptionBase_Extension (DescriptionBase_id integer not null, extensions_id integer not null, primary key (DescriptionBase_id, extensions_id), unique (extensions_id)); -create table DescriptionBase_GeoScope (DescriptionBase_id integer not null, geoscopes_id integer not null, primary key (DescriptionBase_id, geoscopes_id), unique (geoscopes_id)); -create table DescriptionBase_Marker (DescriptionBase_id integer not null, markers_id integer not null, primary key (DescriptionBase_id, markers_id), unique (markers_id)); -create table DescriptionBase_OriginalSource (DescriptionBase_id integer not null, sources_id integer not null, primary key (DescriptionBase_id, sources_id), unique (sources_id)); -create table DescriptionBase_ReferenceBase (DescriptionBase_id integer not null, descriptionsources_id integer not null, primary key (DescriptionBase_id, descriptionsources_id)); -create table DescriptionBase_Rights (DescriptionBase_id integer not null, rights_id integer not null, primary key (DescriptionBase_id, rights_id)); -create table DescriptionBase_Scope (DescriptionBase_id integer not null, scopes_id integer not null, primary key (DescriptionBase_id, scopes_id), unique (scopes_id)); -create table DescriptionElementBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), modifyingtext varbinary(255), orderrelevant boolean, name varchar(255), description varbinary(255), createdby_id integer, updatedby_id integer, citation_id integer, feature_id integer, indescription_id integer, language_id integer, area_id integer, status_id integer, associatedspecimenorobservation_id integer, unit_id integer, taxon2_id integer, format_id integer, primary key (id)); -create table DescriptionElementBase_Annotation (DescriptionElementBase_id integer not null, annotations_id integer not null, primary key (DescriptionElementBase_id, annotations_id), unique (annotations_id)); -create table DescriptionElementBase_LanguageString (DescriptionElementBase_id integer not null, multilanguagetext_id integer not null, primary key (DescriptionElementBase_id, multilanguagetext_id), unique (multilanguagetext_id)); -create table DescriptionElementBase_Marker (DescriptionElementBase_id integer not null, markers_id integer not null, primary key (DescriptionElementBase_id, markers_id), unique (markers_id)); -create table DescriptionElementBase_Media (DescriptionElementBase_id integer not null, media_id integer not null, primary key (DescriptionElementBase_id, media_id), unique (media_id)); -create table DescriptionElementBase_Modifier (DescriptionElementBase_id integer not null, modifiers_id integer not null, primary key (DescriptionElementBase_id, modifiers_id), unique (modifiers_id)); -create table DescriptionElementBase_StateData (DescriptionElementBase_id integer not null, states_id integer not null); -create table DescriptionElementBase_StatisticalMeasurementValue (DescriptionElementBase_id integer not null, statisticalvalues_id integer not null, primary key (DescriptionElementBase_id, statisticalvalues_id), unique (statisticalvalues_id)); -create table DeterminationEvent (id integer not null, created timestamp, uuid varchar(255), updated timestamp, description varchar(255), timeperiod_end varchar(255), timeperiod_start varchar(255), preferredflag boolean not null, createdby_id integer, updatedby_id integer, actor_id integer, identifiedunit_id integer, modifier_id integer, taxon_id integer, primary key (id)); -create table DeterminationEvent_Annotation (DeterminationEvent_id integer not null, annotations_id integer not null, primary key (DeterminationEvent_id, annotations_id), unique (annotations_id)); -create table DeterminationEvent_Marker (DeterminationEvent_id integer not null, markers_id integer not null, primary key (DeterminationEvent_id, markers_id), unique (markers_id)); -create table DeterminationEvent_ReferenceBase (DeterminationEvent_id integer not null, references_id integer not null, primary key (DeterminationEvent_id, references_id)); -create table Extension (id integer not null, created timestamp, uuid varchar(255), updated timestamp, value varchar(255), createdby_id integer, updatedby_id integer, type_id integer, primary key (id)); -create table FeatureNode (id integer not null, created timestamp, uuid varchar(255), updated timestamp, createdby_id integer, updatedby_id integer, feature_id integer, parent_fk integer, primary key (id)); -create table FeatureTree (id integer not null, created timestamp, uuid varchar(255), updated timestamp, uri varchar(255), descriptionseparated boolean not null, createdby_id integer, updatedby_id integer, root_id integer, primary key (id)); -create table FeatureTree_Representation (FeatureTree_id integer not null, representations_id integer not null, primary key (FeatureTree_id, representations_id), unique (representations_id)); -create table GatheringEvent (id integer not null, created timestamp, uuid varchar(255), updated timestamp, description varchar(255), timeperiod_end varchar(255), timeperiod_start varchar(255), absoluteelevation integer, absoluteelevationerror integer, collectingmethod varchar(255), distancetoground integer, distancetowatersurface integer, exactlocation_errorradius integer, exactlocation_latitude double, exactlocation_longitude double, createdby_id integer, updatedby_id integer, actor_id integer, exactlocation_referencesystem_id integer, locality_id integer, primary key (id)); -create table GatheringEvent_Annotation (GatheringEvent_id integer not null, annotations_id integer not null, primary key (GatheringEvent_id, annotations_id), unique (annotations_id)); -create table GatheringEvent_DefinedTermBase (GatheringEvent_id integer not null, collectingareas_id integer not null, primary key (GatheringEvent_id, collectingareas_id)); -create table GatheringEvent_Marker (GatheringEvent_id integer not null, markers_id integer not null, primary key (GatheringEvent_id, markers_id), unique (markers_id)); -create table GenBankAccession (id integer not null, created timestamp, uuid varchar(255), updated timestamp, accessionnumber varchar(255), uri varchar(255), createdby_id integer, updatedby_id integer, primary key (id)); -create table GrantedAuthorityImpl (id integer not null, created timestamp, uuid varchar(255), authority varchar(255), createdby_id integer, primary key (id), unique (authority)); -create table HomotypicalGroup (id integer not null, created timestamp, uuid varchar(255), updated timestamp, createdby_id integer, updatedby_id integer, primary key (id)); -create table HomotypicalGroup_Annotation (HomotypicalGroup_id integer not null, annotations_id integer not null, primary key (HomotypicalGroup_id, annotations_id), unique (annotations_id)); -create table HomotypicalGroup_Marker (HomotypicalGroup_id integer not null, markers_id integer not null, primary key (HomotypicalGroup_id, markers_id), unique (markers_id)); -create table HybridRelationship (id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), doubtful boolean not null, ruleconsidered varchar(255), createdby_id integer, updatedby_id integer, citation_id integer, relatedfrom_id integer, relatedto_id integer, type_id integer, primary key (id)); -create table HybridRelationship_Annotation (HybridRelationship_id integer not null, annotations_id integer not null, primary key (HybridRelationship_id, annotations_id), unique (annotations_id)); -create table HybridRelationship_Marker (HybridRelationship_id integer not null, markers_id integer not null, primary key (HybridRelationship_id, markers_id), unique (markers_id)); -create table IdentificationKey_Taxon (identificationKey_fk integer not null, taxon_fk integer not null, primary key (identificationKey_fk, taxon_fk)); -create table InstitutionalMembership (id integer not null, created timestamp, uuid varchar(255), updated timestamp, department varchar(255), period_end varchar(255), period_start varchar(255), role varchar(255), createdby_id integer, updatedby_id integer, institute_id integer, person_id integer, primary key (id)); -create table LanguageString (id integer not null, created timestamp, uuid varchar(255), updated timestamp, text varchar(4096), createdby_id integer, updatedby_id integer, language_id integer, primary key (id)); -create table LanguageString_Annotation (LanguageString_id integer not null, annotations_id integer not null, primary key (LanguageString_id, annotations_id), unique (annotations_id)); -create table LanguageString_Marker (LanguageString_id integer not null, markers_id integer not null, primary key (LanguageString_id, markers_id), unique (markers_id)); -create table Locus (id integer not null, created timestamp, uuid varchar(255), updated timestamp, description varchar(255), name varchar(255), createdby_id integer, updatedby_id integer, primary key (id)); -create table Marker (id integer not null, created timestamp, uuid varchar(255), updated timestamp, flag boolean not null, markedObj_type varchar(255), markedObj_id integer not null, createdby_id integer, updatedby_id integer, markertype_id integer, primary key (id)); -create table Media (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, description varbinary(255), mediacreated date, title varbinary(255), citationmicroreference varchar(255), createdby_id integer, updatedby_id integer, artist_id integer, citation_id integer, primary key (id)); -create table MediaRepresentation (id integer not null, created timestamp, uuid varchar(255), updated timestamp, mimetype varchar(255), suffix varchar(255), createdby_id integer, updatedby_id integer, media_id integer, primary key (id)); -create table MediaRepresentationPart (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, size integer, uri varchar(255), duration integer, height integer, width integer, createdby_id integer, updatedby_id integer, representation_id integer not null, sortIndex integer, primary key (id)); -create table Media_Annotation (Media_id integer not null, annotations_id integer not null, primary key (Media_id, annotations_id), unique (annotations_id)); -create table Media_DefinedTermBase (Media_id integer not null, geoscopes_id integer not null, primary key (Media_id, geoscopes_id)); -create table Media_Marker (Media_id integer not null, markers_id integer not null, primary key (Media_id, markers_id), unique (markers_id)); -create table Media_Rights (Media_id integer not null, rights_id integer not null, primary key (Media_id, rights_id)); -create table Media_Sequence (Media_id integer not null, usedsequences_id integer not null, primary key (Media_id, usedsequences_id), unique (usedsequences_id)); -create table Media_TaxonBase (Media_id integer not null, coveredtaxa_id integer not null, primary key (Media_id, coveredtaxa_id), unique (coveredtaxa_id)); -create table NameRelationship (id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), doubtful boolean not null, ruleconsidered varchar(255), createdby_id integer, updatedby_id integer, citation_id integer, relatedfrom_id integer, relatedto_id integer, type_id integer, primary key (id)); -create table NameRelationship_Annotation (NameRelationship_id integer not null, annotations_id integer not null, primary key (NameRelationship_id, annotations_id), unique (annotations_id)); -create table NameRelationship_Marker (NameRelationship_id integer not null, markers_id integer not null, primary key (NameRelationship_id, markers_id), unique (markers_id)); -create table NomenclaturalStatus (id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), ruleconsidered varchar(255), createdby_id integer, updatedby_id integer, citation_id integer, type_id integer, primary key (id)); -create table NomenclaturalStatus_Annotation (NomenclaturalStatus_id integer not null, annotations_id integer not null, primary key (NomenclaturalStatus_id, annotations_id), unique (annotations_id)); -create table NomenclaturalStatus_Marker (NomenclaturalStatus_id integer not null, markers_id integer not null, primary key (NomenclaturalStatus_id, markers_id), unique (markers_id)); -create table OriginalSource (id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), idinsource varchar(255), idnamespace varchar(255), sourcedObj_type varchar(255), sourcedObj_id integer not null, createdby_id integer, updatedby_id integer, citation_id integer, primary key (id)); -create table OriginalSource_Annotation (OriginalSource_id integer not null, annotations_id integer not null, primary key (OriginalSource_id, annotations_id), unique (annotations_id)); -create table OriginalSource_Marker (OriginalSource_id integer not null, markers_id integer not null, primary key (OriginalSource_id, markers_id), unique (markers_id)); -create table PermissionGroup (id integer not null, created timestamp, uuid varchar(255), name varchar(255), createdby_id integer, primary key (id)); -create table PermissionGroup_GrantedAuthorityImpl (PermissionGroup_id integer not null, grantedauthorities_id integer not null, primary key (PermissionGroup_id, grantedauthorities_id)); -create table Person_Keyword (person_fk integer not null, keyword_fk integer not null, primary key (person_fk, keyword_fk)); -create table ReferenceBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, hasproblem boolean not null, nomenclaturallyrelevant boolean not null, problemends integer not null, problemstarts integer not null, uri varchar(255), datepublished_end varchar(255), datepublished_start varchar(255), title varchar(255), pages varchar(255), series varchar(255), volume varchar(255), address varchar(255), annote varchar(255), booktitle varchar(255), chapter varchar(255), edition varchar(255), editor varchar(255), eprint varchar(255), howpublished varchar(255), institution varchar(255), journal varchar(255), month varchar(255), note varchar(255), number varchar(255), organization varchar(255), publisher varchar(255), reporttype varchar(255), school varchar(255), year varchar(255), placepublished varchar(255), seriespart varchar(255), isbn varchar(255), issn varchar(255), createdby_id integer, updatedby_id integer, authorteam_id integer, injournal_id integer, crossref_id integer, type_id integer, inseries_id integer, inbook_id integer, inproceedings_id integer, institution_id integer, school_id integer, primary key (id)); -create table ReferenceBase_Annotation (ReferenceBase_id integer not null, annotations_id integer not null, primary key (ReferenceBase_id, annotations_id), unique (annotations_id)); -create table ReferenceBase_Extension (ReferenceBase_id integer not null, extensions_id integer not null, primary key (ReferenceBase_id, extensions_id), unique (extensions_id)); -create table ReferenceBase_Marker (ReferenceBase_id integer not null, markers_id integer not null, primary key (ReferenceBase_id, markers_id), unique (markers_id)); -create table ReferenceBase_Media (ReferenceBase_id integer not null, media_id integer not null, primary key (ReferenceBase_id, media_id), unique (media_id)); -create table ReferenceBase_OriginalSource (ReferenceBase_id integer not null, sources_id integer not null, primary key (ReferenceBase_id, sources_id), unique (sources_id)); -create table ReferenceBase_Rights (ReferenceBase_id integer not null, rights_id integer not null, primary key (ReferenceBase_id, rights_id)); -create table RelationshipTermBase_inverseRepresentation (DefinedTermBase_id integer not null, inverserepresentations_id integer not null, primary key (DefinedTermBase_id, inverserepresentations_id), unique (inverserepresentations_id)); -create table Representation (id integer not null, created timestamp, uuid varchar(255), updated timestamp, text varchar(4096), abbreviatedlabel varchar(255), label varchar(255), createdby_id integer, updatedby_id integer, language_id integer, primary key (id)); -create table Representation_Annotation (Representation_id integer not null, annotations_id integer not null, primary key (Representation_id, annotations_id), unique (annotations_id)); -create table Representation_Marker (Representation_id integer not null, markers_id integer not null, primary key (Representation_id, markers_id), unique (markers_id)); -create table Rights (id integer not null, created timestamp, uuid varchar(255), updated timestamp, text varchar(4096), abbreviatedtext varchar(255), uri varchar(255), createdby_id integer, updatedby_id integer, language_id integer, agent_id integer, type_id integer, primary key (id)); -create table Rights_Annotation (Rights_id integer not null, annotations_id integer not null, primary key (Rights_id, annotations_id), unique (annotations_id)); -create table Rights_Marker (Rights_id integer not null, markers_id integer not null, primary key (Rights_id, markers_id), unique (markers_id)); -create table Sequence (id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, barcode boolean not null, citationmicroreference varchar(255), datesequenced date, length integer, sequence varchar(255), createdby_id integer, updatedby_id integer, locus_id integer, publishedin_id integer, primary key (id)); -create table Sequence_Annotation (Sequence_id integer not null, annotations_id integer not null, primary key (Sequence_id, annotations_id), unique (annotations_id)); -create table Sequence_Extension (Sequence_id integer not null, extensions_id integer not null, primary key (Sequence_id, extensions_id), unique (extensions_id)); -create table Sequence_GenBankAccession (Sequence_id integer not null, genbankaccession_id integer not null, primary key (Sequence_id, genbankaccession_id), unique (genbankaccession_id)); -create table Sequence_Marker (Sequence_id integer not null, markers_id integer not null, primary key (Sequence_id, markers_id), unique (markers_id)); -create table Sequence_Media (Sequence_id integer not null, chromatograms_id integer not null, primary key (Sequence_id, chromatograms_id), unique (chromatograms_id)); -create table Sequence_OriginalSource (Sequence_id integer not null, sources_id integer not null, primary key (Sequence_id, sources_id), unique (sources_id)); -create table Sequence_ReferenceBase (Sequence_id integer not null, citations_id integer not null, primary key (Sequence_id, citations_id), unique (citations_id)); -create table Sequence_Rights (Sequence_id integer not null, rights_id integer not null, primary key (Sequence_id, rights_id)); -create table SpecimenOrObservationBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, definition varbinary(255), individualcount integer, accessionnumber varchar(255), catalognumber varchar(255), collectorsnumber varchar(255), fieldnotes varchar(255), fieldnumber varchar(255), createdby_id integer, updatedby_id integer, lifestage_id integer, sex_id integer, collection_id integer, derivationevent_id integer, storedunder_id integer, preservation_id integer, gatheringevent_id integer, primary key (id)); -create table SpecimenOrObservationBase_Annotation (SpecimenOrObservationBase_id integer not null, annotations_id integer not null, primary key (SpecimenOrObservationBase_id, annotations_id), unique (annotations_id)); -create table SpecimenOrObservationBase_DerivationEvent (originals_id integer not null, derivationevents_id integer not null, primary key (originals_id, derivationevents_id)); -create table SpecimenOrObservationBase_Extension (SpecimenOrObservationBase_id integer not null, extensions_id integer not null, primary key (SpecimenOrObservationBase_id, extensions_id), unique (extensions_id)); -create table SpecimenOrObservationBase_Marker (SpecimenOrObservationBase_id integer not null, markers_id integer not null, primary key (SpecimenOrObservationBase_id, markers_id), unique (markers_id)); -create table SpecimenOrObservationBase_Media (SpecimenOrObservationBase_id integer not null, media_id integer not null, primary key (SpecimenOrObservationBase_id, media_id), unique (media_id)); -create table SpecimenOrObservationBase_OriginalSource (SpecimenOrObservationBase_id integer not null, sources_id integer not null, primary key (SpecimenOrObservationBase_id, sources_id), unique (sources_id)); -create table SpecimenOrObservationBase_Rights (SpecimenOrObservationBase_id integer not null, rights_id integer not null, primary key (SpecimenOrObservationBase_id, rights_id)); -create table SpecimenOrObservationBase_Sequence (SpecimenOrObservationBase_id integer not null, sequences_id integer not null, primary key (SpecimenOrObservationBase_id, sequences_id), unique (sequences_id)); -create table StateData (id integer not null, created timestamp, uuid varchar(255), updated timestamp, modifyingtext varbinary(255), createdby_id integer, updatedby_id integer, state_id integer, primary key (id)); -create table StateData_DefinedTermBase (StateData_id integer not null, modifiers_id integer not null, primary key (StateData_id, modifiers_id), unique (modifiers_id)); -create table StatisticalMeasurementValue (id integer not null, created timestamp, uuid varchar(255), updated timestamp, value double not null, createdby_id integer, updatedby_id integer, type_id integer, primary key (id)); -create table StatisticalMeasurementValue_DefinedTermBase (StatisticalMeasurementValue_id integer not null, modifiers_id integer not null, primary key (StatisticalMeasurementValue_id, modifiers_id), unique (modifiers_id)); -create table SynonymRelationship (id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), doubtful boolean not null, partial boolean not null, proparte boolean not null, createdby_id integer, updatedby_id integer, citation_id integer, relatedfrom_id integer, relatedto_id integer, type_id integer, primary key (id)); -create table SynonymRelationship_Annotation (SynonymRelationship_id integer not null, annotations_id integer not null, primary key (SynonymRelationship_id, annotations_id), unique (annotations_id)); -create table SynonymRelationship_Marker (SynonymRelationship_id integer not null, markers_id integer not null, primary key (SynonymRelationship_id, markers_id), unique (markers_id)); -create table TaxonBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, doubtful boolean not null, taxonomicchildrencount integer, createdby_id integer, updatedby_id integer, taxonName_fk integer, sec_id integer, taxonomicparentcache_id integer, primary key (id)); -create table TaxonBase_Annotation (TaxonBase_id integer not null, annotations_id integer not null, primary key (TaxonBase_id, annotations_id), unique (annotations_id)); -create table TaxonBase_Extension (TaxonBase_id integer not null, extensions_id integer not null, primary key (TaxonBase_id, extensions_id), unique (extensions_id)); -create table TaxonBase_Marker (TaxonBase_id integer not null, markers_id integer not null, primary key (TaxonBase_id, markers_id), unique (markers_id)); -create table TaxonBase_OriginalSource (TaxonBase_id integer not null, sources_id integer not null, primary key (TaxonBase_id, sources_id), unique (sources_id)); -create table TaxonBase_Rights (TaxonBase_id integer not null, rights_id integer not null, primary key (TaxonBase_id, rights_id)); -create table TaxonNameBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, lsid varchar(255), titleCache varchar(255), protectedtitlecache boolean not null, appendedphrase varchar(255), hasproblem boolean not null, nomenclaturalmicroreference varchar(255), fullTitleCache varchar(330), problemends integer not null, problemstarts integer not null, protectedfulltitlecache boolean not null, authorshipcache varchar(255), genusoruninomial varchar(255), infragenericepithet varchar(255), infraspecificepithet varchar(255), namecache varchar(255), protectedauthorshipcache boolean, protectednamecache boolean, specificepithet varchar(255), nameapprobation varchar(255), subgenusauthorship varchar(255), anamorphic boolean, binomhybrid boolean, hybridformula boolean, monomhybrid boolean, trinomhybrid boolean, cultivarname varchar(255), acronym varchar(255), breed varchar(255), originalpublicationyear integer, publicationyear integer, createdby_id integer, updatedby_id integer, homotypicalgroup_id integer, nomenclaturalreference_id integer, rank_id integer, basionymauthorteam_id integer, combinationauthorteam_id integer, exbasionymauthorteam_id integer, excombinationauthorteam_id integer, primary key (id)); -create table TaxonNameBase_Annotation (TaxonNameBase_id integer not null, annotations_id integer not null, primary key (TaxonNameBase_id, annotations_id), unique (annotations_id)); -create table TaxonNameBase_Extension (TaxonNameBase_id integer not null, extensions_id integer not null, primary key (TaxonNameBase_id, extensions_id), unique (extensions_id)); -create table TaxonNameBase_HybridRelationship (TaxonNameBase_id integer not null, hybridrelationships_id integer not null, primary key (TaxonNameBase_id, hybridrelationships_id), unique (hybridrelationships_id)); -create table TaxonNameBase_Marker (TaxonNameBase_id integer not null, markers_id integer not null, primary key (TaxonNameBase_id, markers_id), unique (markers_id)); -create table TaxonNameBase_NomenclaturalStatus (TaxonNameBase_id integer not null, status_id integer not null, primary key (TaxonNameBase_id, status_id), unique (status_id)); -create table TaxonNameBase_OriginalSource (TaxonNameBase_id integer not null, sources_id integer not null, primary key (TaxonNameBase_id, sources_id), unique (sources_id)); -create table TaxonNameBase_Rights (TaxonNameBase_id integer not null, rights_id integer not null, primary key (TaxonNameBase_id, rights_id)); -create table TaxonNameBase_TypeDesignationBase (TaxonNameBase_id integer not null, typedesignations_id integer not null, primary key (TaxonNameBase_id, typedesignations_id)); -create table TaxonRelationship (id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), doubtful boolean not null, createdby_id integer, updatedby_id integer, citation_id integer, relatedfrom_id integer, relatedto_id integer, type_id integer, primary key (id)); -create table TaxonRelationship_Annotation (TaxonRelationship_id integer not null, annotations_id integer not null, primary key (TaxonRelationship_id, annotations_id), unique (annotations_id)); -create table TaxonRelationship_Marker (TaxonRelationship_id integer not null, markers_id integer not null, primary key (TaxonRelationship_id, markers_id), unique (markers_id)); -create table TermVocabulary (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, uri varchar(255), termsourceuri varchar(255), createdby_id integer, updatedby_id integer, primary key (id)); -create table TermVocabulary_Representation (TermVocabulary_id integer not null, representations_id integer not null, primary key (TermVocabulary_id, representations_id), unique (representations_id)); -create table TypeDesignationBase (DTYPE varchar(31) not null, id integer not null, created timestamp, uuid varchar(255), updated timestamp, citationmicroreference varchar(255), originalnamestring varchar(255), notdesignated boolean not null, conservedtype boolean, lectotype boolean, rejectedtype boolean, createdby_id integer, updatedby_id integer, citation_id integer, homotypicalgroup_id integer, typename_id integer, typespecimen_id integer, typestatus_id integer, primary key (id)); -create table TypeDesignationBase_Annotation (TypeDesignationBase_id integer not null, annotations_id integer not null, primary key (TypeDesignationBase_id, annotations_id), unique (annotations_id)); -create table TypeDesignationBase_Marker (TypeDesignationBase_id integer not null, markers_id integer not null, primary key (TypeDesignationBase_id, markers_id), unique (markers_id)); -create table TypeDesignationBase_TaxonNameBase (TypeDesignationBase_id integer not null, typifiednames_id integer not null, primary key (TypeDesignationBase_id, typifiednames_id)); -create table User (id integer not null, created timestamp, uuid varchar(255), accountnonexpired boolean not null, accountnonlocked boolean not null, credentialsnonexpired boolean not null, emailaddress varchar(255), enabled boolean not null, password varchar(255), username varchar(255), createdby_id integer, primary key (id), unique (username)); -create table User_GrantedAuthorityImpl (User_id integer not null, grantedauthorities_id integer not null, primary key (User_id, grantedauthorities_id)); -create table User_PermissionGroup (members_id integer not null, groups_id integer not null, primary key (members_id, groups_id)); -alter table Address add constraint FK1ED033D4132A2FE8 foreign key (location_referencesystem_id) references DefinedTermBase; -alter table Address add constraint FK1ED033D4EE7A4BF4 foreign key (contact_id) references Contact; -alter table Address add constraint FK1ED033D4EF7921F6 foreign key (createdby_id) references Agent; -alter table Address add constraint FK1ED033D42687715A foreign key (country_id) references DefinedTermBase; -alter table Address add constraint FK1ED033D45BE3EC03 foreign key (updatedby_id) references Agent; -create index agentTitleCacheIndex on Agent (titleCache); -alter table Agent add constraint FK3C452E5EE7A4BF4 foreign key (contact_id) references Contact; -alter table Agent add constraint FK3C452E5EF7921F6 foreign key (createdby_id) references Agent; -alter table Agent add constraint FK3C452E5A830578 foreign key (ispartof_id) references Agent; -alter table Agent add constraint FK3C452E55BE3EC03 foreign key (updatedby_id) references Agent; -alter table Agent_Agent add constraint FKD792890B8CB642F8 foreign key (Agent_id) references Agent; -alter table Agent_Agent add constraint FKD792890BE9E535F9 foreign key (teammembers_id) references Agent; -alter table Agent_Annotation add constraint FKDD9D78E9C5F7EC54 foreign key (Agent_id) references Agent; -alter table Agent_Annotation add constraint FKDD9D78E91E403E0B foreign key (annotations_id) references Annotation; -alter table Agent_DefinedTermBase add constraint FK7029490CFE425B87 foreign key (Agent_id) references Agent; -alter table Agent_DefinedTermBase add constraint FK7029490C9A161BED foreign key (types_id) references DefinedTermBase; -alter table Agent_Extension add constraint FK8AC9EF45C5F7EC54 foreign key (Agent_id) references Agent; -alter table Agent_Extension add constraint FK8AC9EF45927DE9DF foreign key (extensions_id) references Extension; -alter table Agent_Marker add constraint FK2EEA0EF4C5F7EC54 foreign key (Agent_id) references Agent; -alter table Agent_Marker add constraint FK2EEA0EF4777265A1 foreign key (markers_id) references Marker; -alter table Agent_Media add constraint FKD83AB5EAC5F7EC54 foreign key (Agent_id) references Agent; -alter table Agent_Media add constraint FKD83AB5EAC2C29593 foreign key (media_id) references Media; -alter table Agent_OriginalSource add constraint FK774F9E06C5F7EC54 foreign key (Agent_id) references Agent; -alter table Agent_OriginalSource add constraint FK774F9E063BAB2414 foreign key (sources_id) references OriginalSource; -alter table Agent_Rights add constraint FK37DDFC91C5F7EC54 foreign key (Agent_id) references Agent; -alter table Agent_Rights add constraint FK37DDFC91C13F7B21 foreign key (rights_id) references Rights; -alter table Annotation add constraint FK1A21C74FDF299D00 foreign key (annotationtype_id) references DefinedTermBase; -alter table Annotation add constraint FK1A21C74FEF7921F6 foreign key (createdby_id) references Agent; -alter table Annotation add constraint FK1A21C74FE7692740 foreign key (commentator_id) references Agent; -alter table Annotation add constraint FK1A21C74F5BE3EC03 foreign key (updatedby_id) references Agent; -alter table Annotation add constraint FK1A21C74FE8D36B00 foreign key (language_id) references DefinedTermBase; -alter table Annotation_Annotation add constraint FKC99DFE3F994CCE20 foreign key (Annotation_id) references Annotation; -alter table Annotation_Annotation add constraint FKC99DFE3F1E403E0B foreign key (annotations_id) references Annotation; -alter table Annotation_Marker add constraint FKB17EAF4A994CCE20 foreign key (Annotation_id) references Annotation; -alter table Annotation_Marker add constraint FKB17EAF4A777265A1 foreign key (markers_id) references Marker; -alter table CDM_VIEW add constraint FKC5DE8EF8EF7921F6 foreign key (createdby_id) references Agent; -alter table CDM_VIEW_CDM_VIEW add constraint FK230A885F7208BB38 foreign key (superviews_id) references CDM_VIEW; -alter table CDM_VIEW_CDM_VIEW add constraint FK230A885FC00D1213 foreign key (CDM_VIEW_id) references CDM_VIEW; -create index collectionTitleCacheIndex on Collection (titleCache); -alter table Collection add constraint FKF078ABECEB38EFF foreign key (supercollection_id) references Collection; -alter table Collection add constraint FKF078ABEEF7921F6 foreign key (createdby_id) references Agent; -alter table Collection add constraint FKF078ABE16B9CA77 foreign key (institute_id) references Agent; -alter table Collection add constraint FKF078ABE5BE3EC03 foreign key (updatedby_id) references Agent; -alter table Collection_Annotation add constraint FKEA970F70EB62BE9A foreign key (Collection_id) references Collection; -alter table Collection_Annotation add constraint FKEA970F701E403E0B foreign key (annotations_id) references Annotation; -alter table Collection_Extension add constraint FKF68FEBDE927DE9DF foreign key (extensions_id) references Extension; -alter table Collection_Extension add constraint FKF68FEBDEEB62BE9A foreign key (Collection_id) references Collection; -alter table Collection_Marker add constraint FKF0CA00FBEB62BE9A foreign key (Collection_id) references Collection; -alter table Collection_Marker add constraint FKF0CA00FB777265A1 foreign key (markers_id) references Marker; -alter table Collection_Media add constraint FK7320E703EB62BE9A foreign key (Collection_id) references Collection; -alter table Collection_Media add constraint FK7320E703C2C29593 foreign key (media_id) references Media; -alter table Collection_OriginalSource add constraint FKA8FC990DEB62BE9A foreign key (Collection_id) references Collection; -alter table Collection_OriginalSource add constraint FKA8FC990D3BAB2414 foreign key (sources_id) references OriginalSource; -alter table Collection_Rights add constraint FKF9BDEE98EB62BE9A foreign key (Collection_id) references Collection; -alter table Collection_Rights add constraint FKF9BDEE98C13F7B21 foreign key (rights_id) references Rights; -alter table Contact add constraint FK9BEFBC00EF7921F6 foreign key (createdby_id) references Agent; -alter table Contact add constraint FK9BEFBC005BE3EC03 foreign key (updatedby_id) references Agent; -alter table DefinedTermBase add constraint FK2E340A6636C6F6F6 foreign key (pointapproximation_referencesystem_id) references DefinedTermBase; -alter table DefinedTermBase add constraint FK2E340A66EF7921F6 foreign key (createdby_id) references Agent; -alter table DefinedTermBase add constraint FK2E340A6688206484 foreign key (type_id) references DefinedTermBase; -alter table DefinedTermBase add constraint FK2E340A6647AF954C foreign key (vocabulary_id) references TermVocabulary; -alter table DefinedTermBase add constraint FK2E340A663B0DA0EF foreign key (kindof_id) references DefinedTermBase; -alter table DefinedTermBase add constraint FK2E340A6624AF3F70 foreign key (level_id) references DefinedTermBase; -alter table DefinedTermBase add constraint FK2E340A665BE3EC03 foreign key (updatedby_id) references Agent; -alter table DefinedTermBase add constraint FK2E340A66CC0240B6 foreign key (shape_id) references Media; -alter table DefinedTermBase add constraint FK2E340A66D040DBF0 foreign key (partof_id) references DefinedTermBase; -alter table DefinedTermBase_Continent add constraint FK45F60AFBE8CE10AA foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_Continent add constraint FK45F60AFB3927C853 foreign key (continents_id) references DefinedTermBase; -alter table DefinedTermBase_Media add constraint FK6FC908ABC0DB4934 foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_Media add constraint FK6FC908ABC2C29593 foreign key (media_id) references Media; -alter table DefinedTermBase_RecommendedModifierEnumeration add constraint FKA72FB5AED0BDAE9B foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_RecommendedModifierEnumeration add constraint FKA72FB5AE5255EAFD foreign key (recommendedmodifierenumeration_id) references TermVocabulary; -alter table DefinedTermBase_Representation add constraint FKAAC8AFE6C0DB4934 foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_Representation add constraint FKAAC8AFE6B31C4747 foreign key (representations_id) references Representation; -alter table DefinedTermBase_StatisticalMeasure add constraint FK6FF15DFCD0BDAE9B foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_StatisticalMeasure add constraint FK6FF15DFCC9CD5B57 foreign key (recommendedstatisticalmeasures_id) references DefinedTermBase; -alter table DefinedTermBase_SupportedCategoricalEnumeration add constraint FK2170B25CD0BDAE9B foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_SupportedCategoricalEnumeration add constraint FK2170B25C5AF2C74 foreign key (supportedcategoricalenumerations_id) references TermVocabulary; -alter table DefinedTermBase_WaterbodyOrCountry add constraint FKCAF4393CE5C0F9E foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table DefinedTermBase_WaterbodyOrCountry add constraint FKCAF43931603B036 foreign key (waterbodiesorcountries_id) references DefinedTermBase; -alter table DerivationEvent add constraint FK426BC03EF7921F6 foreign key (createdby_id) references Agent; -alter table DerivationEvent add constraint FK426BC038524B89D foreign key (type_id) references DefinedTermBase; -alter table DerivationEvent add constraint FK426BC035BE3EC03 foreign key (updatedby_id) references Agent; -alter table DerivationEvent add constraint FK426BC03C04DF64 foreign key (actor_id) references Agent; -alter table DerivationEvent_Annotation add constraint FKEFA0D10B4AAB411A foreign key (DerivationEvent_id) references DerivationEvent; -alter table DerivationEvent_Annotation add constraint FKEFA0D10B1E403E0B foreign key (annotations_id) references Annotation; -alter table DerivationEvent_Marker add constraint FKE412C8164AAB411A foreign key (DerivationEvent_id) references DerivationEvent; -alter table DerivationEvent_Marker add constraint FKE412C816777265A1 foreign key (markers_id) references Marker; -alter table DescriptionBase add constraint FKFF4D58CDEF7921F6 foreign key (createdby_id) references Agent; -alter table DescriptionBase add constraint FKFF4D58CDDA93512F foreign key (taxonName_fk) references TaxonNameBase; -alter table DescriptionBase add constraint FKFF4D58CD5BE3EC03 foreign key (updatedby_id) references Agent; -alter table DescriptionBase add constraint FKFF4D58CDDE9A3DE3 foreign key (taxon_fk) references TaxonBase; -alter table DescriptionBase_Annotation add constraint FKF3AD3201F1DDBFAB foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_Annotation add constraint FKF3AD32011E403E0B foreign key (annotations_id) references Annotation; -alter table DescriptionBase_Extension add constraint FKD5D2B32DF1DDBFAB foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_Extension add constraint FKD5D2B32D927DE9DF foreign key (extensions_id) references Extension; -alter table DescriptionBase_GeoScope add constraint FK3ADD7CD5D86445CE foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_GeoScope add constraint FK3ADD7CD586D04E74 foreign key (geoscopes_id) references DefinedTermBase; -alter table DescriptionBase_Marker add constraint FK6132140CF1DDBFAB foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_Marker add constraint FK6132140C777265A1 foreign key (markers_id) references Marker; -alter table DescriptionBase_OriginalSource add constraint FK1E2D0B1EF1DDBFAB foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_OriginalSource add constraint FK1E2D0B1E3BAB2414 foreign key (sources_id) references OriginalSource; -alter table DescriptionBase_ReferenceBase add constraint FK76188CAAF1DDBFAB foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_ReferenceBase add constraint FK76188CAA45AB7BBA foreign key (descriptionsources_id) references ReferenceBase; -alter table DescriptionBase_Rights add constraint FK6A2601A9F1DDBFAB foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_Rights add constraint FK6A2601A9C13F7B21 foreign key (rights_id) references Rights; -alter table DescriptionBase_Scope add constraint FKB9257C42D86445CE foreign key (DescriptionBase_id) references DescriptionBase; -alter table DescriptionBase_Scope add constraint FKB9257C42951A5D40 foreign key (scopes_id) references DefinedTermBase; -alter table DescriptionElementBase add constraint FK38FE767134AF0E81 foreign key (indescription_id) references DescriptionBase; -alter table DescriptionElementBase add constraint FK38FE76716561D9B1 foreign key (associatedspecimenorobservation_id) references SpecimenOrObservationBase; -alter table DescriptionElementBase add constraint FK38FE7671EF7921F6 foreign key (createdby_id) references Agent; -alter table DescriptionElementBase add constraint FK38FE767110A80E07 foreign key (unit_id) references DefinedTermBase; -alter table DescriptionElementBase add constraint FK38FE76716D0D7A56 foreign key (format_id) references DefinedTermBase; -alter table DescriptionElementBase add constraint FK38FE76715E9914B8 foreign key (status_id) references DefinedTermBase; -alter table DescriptionElementBase add constraint FK38FE76714220AFEB foreign key (feature_id) references DefinedTermBase; -alter table DescriptionElementBase add constraint FK38FE76719803512F foreign key (citation_id) references ReferenceBase; -alter table DescriptionElementBase add constraint FK38FE76715BE3EC03 foreign key (updatedby_id) references Agent; -alter table DescriptionElementBase add constraint FK38FE76719108D9B foreign key (taxon2_id) references TaxonBase; -alter table DescriptionElementBase add constraint FK38FE76711C3C3FF7 foreign key (area_id) references DefinedTermBase; -alter table DescriptionElementBase add constraint FK38FE7671E8D36B00 foreign key (language_id) references DefinedTermBase; -alter table DescriptionElementBase_Annotation add constraint FK7EE5E5DD3B8BB609 foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DescriptionElementBase_Annotation add constraint FK7EE5E5DD1E403E0B foreign key (annotations_id) references Annotation; -alter table DescriptionElementBase_LanguageString add constraint FKC753F137ACF5F60B foreign key (multilanguagetext_id) references LanguageString; -alter table DescriptionElementBase_LanguageString add constraint FKC753F137C086B46F foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DescriptionElementBase_Marker add constraint FK1CB715E83B8BB609 foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DescriptionElementBase_Marker add constraint FK1CB715E8777265A1 foreign key (markers_id) references Marker; -alter table DescriptionElementBase_Media add constraint FK21F70076C2C29593 foreign key (media_id) references Media; -alter table DescriptionElementBase_Media add constraint FK21F700763B8BB609 foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DescriptionElementBase_Modifier add constraint FK97E0D105E0960EC4 foreign key (modifiers_id) references DefinedTermBase; -alter table DescriptionElementBase_Modifier add constraint FK97E0D1053B8BB609 foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DescriptionElementBase_StateData add constraint FK592D6F6D987CC6A4 foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DescriptionElementBase_StateData add constraint FK592D6F6D15153604 foreign key (states_id) references StateData; -alter table DescriptionElementBase_StatisticalMeasurementValue add constraint FK8AF511C2D883945E foreign key (statisticalvalues_id) references StatisticalMeasurementValue; -alter table DescriptionElementBase_StatisticalMeasurementValue add constraint FK8AF511C28F213219 foreign key (DescriptionElementBase_id) references DescriptionElementBase; -alter table DeterminationEvent add constraint FK1DB2497EF7921F6 foreign key (createdby_id) references Agent; -alter table DeterminationEvent add constraint FK1DB2497378D1BD foreign key (modifier_id) references DefinedTermBase; -alter table DeterminationEvent add constraint FK1DB2497DE9A3E39 foreign key (taxon_id) references TaxonBase; -alter table DeterminationEvent add constraint FK1DB24974B251DAD foreign key (identifiedunit_id) references SpecimenOrObservationBase; -alter table DeterminationEvent add constraint FK1DB24975BE3EC03 foreign key (updatedby_id) references Agent; -alter table DeterminationEvent add constraint FK1DB2497C04DF64 foreign key (actor_id) references Agent; -alter table DeterminationEvent_Annotation add constraint FKB74F03F76BE0BFDA foreign key (DeterminationEvent_id) references DeterminationEvent; -alter table DeterminationEvent_Annotation add constraint FKB74F03F71E403E0B foreign key (annotations_id) references Annotation; -alter table DeterminationEvent_Marker add constraint FK5C475102777265A1 foreign key (markers_id) references Marker; -alter table DeterminationEvent_Marker add constraint FK5C4751026BE0BFDA foreign key (DeterminationEvent_id) references DeterminationEvent; -alter table DeterminationEvent_ReferenceBase add constraint FK6248EEF4F3C981EE foreign key (references_id) references ReferenceBase; -alter table DeterminationEvent_ReferenceBase add constraint FK6248EEF46BE0BFDA foreign key (DeterminationEvent_id) references DeterminationEvent; -alter table Extension add constraint FK52EF3C1FEF7921F6 foreign key (createdby_id) references Agent; -alter table Extension add constraint FK52EF3C1FAD392BD3 foreign key (type_id) references DefinedTermBase; -alter table Extension add constraint FK52EF3C1F5BE3EC03 foreign key (updatedby_id) references Agent; -alter table FeatureNode add constraint FK4CEED9F8E0AD2C03 foreign key (parent_fk) references FeatureNode; -alter table FeatureNode add constraint FK4CEED9F8EF7921F6 foreign key (createdby_id) references Agent; -alter table FeatureNode add constraint FK4CEED9F84220AFEB foreign key (feature_id) references DefinedTermBase; -alter table FeatureNode add constraint FK4CEED9F85BE3EC03 foreign key (updatedby_id) references Agent; -alter table FeatureTree add constraint FK4CF19F94EF7921F6 foreign key (createdby_id) references Agent; -alter table FeatureTree add constraint FK4CF19F94B7892921 foreign key (root_id) references FeatureNode; -alter table FeatureTree add constraint FK4CF19F945BE3EC03 foreign key (updatedby_id) references Agent; -alter table FeatureTree_Representation add constraint FK8C458F847C496CB foreign key (FeatureTree_id) references FeatureTree; -alter table FeatureTree_Representation add constraint FK8C458F8B31C4747 foreign key (representations_id) references Representation; -alter table GatheringEvent add constraint FK6F1286F3F55AFD89 foreign key (exactlocation_referencesystem_id) references DefinedTermBase; -alter table GatheringEvent add constraint FK6F1286F38B455EC6 foreign key (locality_id) references LanguageString; -alter table GatheringEvent add constraint FK6F1286F3EF7921F6 foreign key (createdby_id) references Agent; -alter table GatheringEvent add constraint FK6F1286F35BE3EC03 foreign key (updatedby_id) references Agent; -alter table GatheringEvent add constraint FK6F1286F3C04DF64 foreign key (actor_id) references Agent; -alter table GatheringEvent_Annotation add constraint FK76DDD01BF95F225A foreign key (GatheringEvent_id) references GatheringEvent; -alter table GatheringEvent_Annotation add constraint FK76DDD01B1E403E0B foreign key (annotations_id) references Annotation; -alter table GatheringEvent_DefinedTermBase add constraint FK69D9A11A7C34B6D6 foreign key (collectingareas_id) references DefinedTermBase; -alter table GatheringEvent_DefinedTermBase add constraint FK69D9A11AF95F225A foreign key (GatheringEvent_id) references GatheringEvent; -alter table GatheringEvent_Marker add constraint FK7B49CF26777265A1 foreign key (markers_id) references Marker; -alter table GatheringEvent_Marker add constraint FK7B49CF26F95F225A foreign key (GatheringEvent_id) references GatheringEvent; -alter table GenBankAccession add constraint FK86C1DBF8EF7921F6 foreign key (createdby_id) references Agent; -alter table GenBankAccession add constraint FK86C1DBF85BE3EC03 foreign key (updatedby_id) references Agent; -alter table GrantedAuthorityImpl add constraint FKB05CF928EF7921F6 foreign key (createdby_id) references Agent; -alter table HomotypicalGroup add constraint FK7DECCC18EF7921F6 foreign key (createdby_id) references Agent; -alter table HomotypicalGroup add constraint FK7DECCC185BE3EC03 foreign key (updatedby_id) references Agent; -alter table HomotypicalGroup_Annotation add constraint FK7A0351D6BFEAE500 foreign key (HomotypicalGroup_id) references HomotypicalGroup; -alter table HomotypicalGroup_Annotation add constraint FK7A0351D61E403E0B foreign key (annotations_id) references Annotation; -alter table HomotypicalGroup_Marker add constraint FK97D36661BFEAE500 foreign key (HomotypicalGroup_id) references HomotypicalGroup; -alter table HomotypicalGroup_Marker add constraint FK97D36661777265A1 foreign key (markers_id) references Marker; -alter table HybridRelationship add constraint FK9033CE745831BDC3 foreign key (relatedfrom_id) references TaxonNameBase; -alter table HybridRelationship add constraint FK9033CE7469ABE292 foreign key (relatedto_id) references TaxonNameBase; -alter table HybridRelationship add constraint FK9033CE74EF7921F6 foreign key (createdby_id) references Agent; -alter table HybridRelationship add constraint FK9033CE7455F241D4 foreign key (type_id) references DefinedTermBase; -alter table HybridRelationship add constraint FK9033CE749803512F foreign key (citation_id) references ReferenceBase; -alter table HybridRelationship add constraint FK9033CE745BE3EC03 foreign key (updatedby_id) references Agent; -alter table HybridRelationship_Annotation add constraint FK2C7E7DFA59832240 foreign key (HybridRelationship_id) references HybridRelationship; -alter table HybridRelationship_Annotation add constraint FK2C7E7DFA1E403E0B foreign key (annotations_id) references Annotation; -alter table HybridRelationship_Marker add constraint FKCEF2448559832240 foreign key (HybridRelationship_id) references HybridRelationship; -alter table HybridRelationship_Marker add constraint FKCEF24485777265A1 foreign key (markers_id) references Marker; -alter table IdentificationKey_Taxon add constraint FKD847ADDC996CD055 foreign key (identificationKey_fk) references Media; -alter table IdentificationKey_Taxon add constraint FKD847ADDCDE9A3DE3 foreign key (taxon_fk) references TaxonBase; -alter table InstitutionalMembership add constraint FK3C8E1FF9EF7921F6 foreign key (createdby_id) references Agent; -alter table InstitutionalMembership add constraint FK3C8E1FF9AAC1B820 foreign key (person_id) references Agent; -alter table InstitutionalMembership add constraint FK3C8E1FF916B9CA77 foreign key (institute_id) references Agent; -alter table InstitutionalMembership add constraint FK3C8E1FF95BE3EC03 foreign key (updatedby_id) references Agent; -alter table LanguageString add constraint FKB5FDC9A9EF7921F6 foreign key (createdby_id) references Agent; -alter table LanguageString add constraint FKB5FDC9A95BE3EC03 foreign key (updatedby_id) references Agent; -alter table LanguageString add constraint FKB5FDC9A9E8D36B00 foreign key (language_id) references DefinedTermBase; -alter table LanguageString_Annotation add constraint FK8400DFA51E403E0B foreign key (annotations_id) references Annotation; -alter table LanguageString_Annotation add constraint FK8400DFA537998500 foreign key (LanguageString_id) references LanguageString; -alter table LanguageString_Marker add constraint FK8DA633B0777265A1 foreign key (markers_id) references Marker; -alter table LanguageString_Marker add constraint FK8DA633B037998500 foreign key (LanguageString_id) references LanguageString; -alter table Locus add constraint FK462F1BEEF7921F6 foreign key (createdby_id) references Agent; -alter table Locus add constraint FK462F1BE5BE3EC03 foreign key (updatedby_id) references Agent; -alter table Marker add constraint FK88F1805AEF7921F6 foreign key (createdby_id) references Agent; -alter table Marker add constraint FK88F1805AD64DC020 foreign key (markertype_id) references DefinedTermBase; -alter table Marker add constraint FK88F1805A5BE3EC03 foreign key (updatedby_id) references Agent; -alter table Media add constraint FK46C7FC4EF7921F6 foreign key (createdby_id) references Agent; -alter table Media add constraint FK46C7FC490A4D0D2 foreign key (artist_id) references Agent; -alter table Media add constraint FK46C7FC49803512F foreign key (citation_id) references ReferenceBase; -alter table Media add constraint FK46C7FC45BE3EC03 foreign key (updatedby_id) references Agent; -alter table MediaRepresentation add constraint FK1966BDB1EF7921F6 foreign key (createdby_id) references Agent; -alter table MediaRepresentation add constraint FK1966BDB1C2C29593 foreign key (media_id) references Media; -alter table MediaRepresentation add constraint FK1966BDB15BE3EC03 foreign key (updatedby_id) references Agent; -alter table MediaRepresentationPart add constraint FK67A45544E3818E37 foreign key (representation_id) references MediaRepresentation; -alter table MediaRepresentationPart add constraint FK67A45544EF7921F6 foreign key (createdby_id) references Agent; -alter table MediaRepresentationPart add constraint FK67A455445BE3EC03 foreign key (updatedby_id) references Agent; -alter table Media_Annotation add constraint FKA020DAAAC2C29593 foreign key (Media_id) references Media; -alter table Media_Annotation add constraint FKA020DAAA1E403E0B foreign key (annotations_id) references Annotation; -alter table Media_DefinedTermBase add constraint FK96F1D7EB8A6C9D18 foreign key (Media_id) references Media; -alter table Media_DefinedTermBase add constraint FK96F1D7EB86D04E74 foreign key (geoscopes_id) references DefinedTermBase; -alter table Media_Marker add constraint FKD21E7935C2C29593 foreign key (Media_id) references Media; -alter table Media_Marker add constraint FKD21E7935777265A1 foreign key (markers_id) references Marker; -alter table Media_Rights add constraint FKDB1266D2C2C29593 foreign key (Media_id) references Media; -alter table Media_Rights add constraint FKDB1266D2C13F7B21 foreign key (rights_id) references Rights; -alter table Media_Sequence add constraint FK61D09FC3282B64 foreign key (Media_id) references Media; -alter table Media_Sequence add constraint FK61D09FCF29B4761 foreign key (usedsequences_id) references Sequence; -alter table Media_TaxonBase add constraint FK1ABD49E07C3D0017 foreign key (coveredtaxa_id) references TaxonBase; -alter table Media_TaxonBase add constraint FK1ABD49E08A6C9D18 foreign key (Media_id) references Media; -alter table NameRelationship add constraint FK5E5108316CDFF85 foreign key (relatedfrom_id) references TaxonNameBase; -alter table NameRelationship add constraint FK5E5108328482454 foreign key (relatedto_id) references TaxonNameBase; -alter table NameRelationship add constraint FK5E51083EF7921F6 foreign key (createdby_id) references Agent; -alter table NameRelationship add constraint FK5E51083AF619DE3 foreign key (type_id) references DefinedTermBase; -alter table NameRelationship add constraint FK5E510839803512F foreign key (citation_id) references ReferenceBase; -alter table NameRelationship add constraint FK5E510835BE3EC03 foreign key (updatedby_id) references Agent; -alter table NameRelationship_Annotation add constraint FK2E38AC8B7B4CB560 foreign key (NameRelationship_id) references NameRelationship; -alter table NameRelationship_Annotation add constraint FK2E38AC8B1E403E0B foreign key (annotations_id) references Annotation; -alter table NameRelationship_Marker add constraint FKE3E463967B4CB560 foreign key (NameRelationship_id) references NameRelationship; -alter table NameRelationship_Marker add constraint FKE3E46396777265A1 foreign key (markers_id) references Marker; -alter table NomenclaturalStatus add constraint FK1FFEC88BEF7921F6 foreign key (createdby_id) references Agent; -alter table NomenclaturalStatus add constraint FK1FFEC88B7029BD9F foreign key (type_id) references DefinedTermBase; -alter table NomenclaturalStatus add constraint FK1FFEC88B9803512F foreign key (citation_id) references ReferenceBase; -alter table NomenclaturalStatus add constraint FK1FFEC88B5BE3EC03 foreign key (updatedby_id) references Agent; -alter table NomenclaturalStatus_Annotation add constraint FKE6E91F838D2CB1D4 foreign key (NomenclaturalStatus_id) references NomenclaturalStatus; -alter table NomenclaturalStatus_Annotation add constraint FKE6E91F831E403E0B foreign key (annotations_id) references Annotation; -alter table NomenclaturalStatus_Marker add constraint FK2F5128E8D2CB1D4 foreign key (NomenclaturalStatus_id) references NomenclaturalStatus; -alter table NomenclaturalStatus_Marker add constraint FK2F5128E777265A1 foreign key (markers_id) references Marker; -alter table OriginalSource add constraint FK229A496CEF7921F6 foreign key (createdby_id) references Agent; -alter table OriginalSource add constraint FK229A496C9803512F foreign key (citation_id) references ReferenceBase; -alter table OriginalSource add constraint FK229A496C5BE3EC03 foreign key (updatedby_id) references Agent; -alter table OriginalSource_Annotation add constraint FK5B3FF802DC2DCA20 foreign key (OriginalSource_id) references OriginalSource; -alter table OriginalSource_Annotation add constraint FK5B3FF8021E403E0B foreign key (annotations_id) references Annotation; -alter table OriginalSource_Marker add constraint FKCF52028DDC2DCA20 foreign key (OriginalSource_id) references OriginalSource; -alter table OriginalSource_Marker add constraint FKCF52028D777265A1 foreign key (markers_id) references Marker; -alter table PermissionGroup add constraint FK629941D0EF7921F6 foreign key (createdby_id) references Agent; -alter table PermissionGroup_GrantedAuthorityImpl add constraint FK5311437CA0971A3 foreign key (PermissionGroup_id) references PermissionGroup; -alter table PermissionGroup_GrantedAuthorityImpl add constraint FK53114371857F6C2 foreign key (grantedauthorities_id) references GrantedAuthorityImpl; -alter table Person_Keyword add constraint FK5F559EFF13A443BE foreign key (keyword_fk) references DefinedTermBase; -alter table Person_Keyword add constraint FK5F559EFFAAC1B7CA foreign key (person_fk) references Agent; -create index ReferenceBaseTitleCacheIndex on ReferenceBase (titleCache); -alter table ReferenceBase add constraint FK8F034C9C1A488155 foreign key (inbook_id) references ReferenceBase; -alter table ReferenceBase add constraint FK8F034C9CEF7921F6 foreign key (createdby_id) references Agent; -alter table ReferenceBase add constraint FK8F034C9C403E17F4 foreign key (institution_id) references Agent; -alter table ReferenceBase add constraint FK8F034C9CCCE9AAE2 foreign key (inseries_id) references ReferenceBase; -alter table ReferenceBase add constraint FK8F034C9CD893F6E6 foreign key (crossref_id) references ReferenceBase; -alter table ReferenceBase add constraint FK8F034C9CAEC3B8B8 foreign key (school_id) references Agent; -alter table ReferenceBase add constraint FK8F034C9CE3A02620 foreign key (type_id) references DefinedTermBase; -alter table ReferenceBase add constraint FK8F034C9CE87E60BF foreign key (inproceedings_id) references ReferenceBase; -alter table ReferenceBase add constraint FK8F034C9CE019003F foreign key (injournal_id) references ReferenceBase; -alter table ReferenceBase add constraint FK8F034C9C697665E foreign key (authorteam_id) references Agent; -alter table ReferenceBase add constraint FK8F034C9C5BE3EC03 foreign key (updatedby_id) references Agent; -alter table ReferenceBase_Annotation add constraint FKC97616D2F443DB5A foreign key (ReferenceBase_id) references ReferenceBase; -alter table ReferenceBase_Annotation add constraint FKC97616D21E403E0B foreign key (annotations_id) references Annotation; -alter table ReferenceBase_Extension add constraint FK81E1703C927DE9DF foreign key (extensions_id) references Extension; -alter table ReferenceBase_Extension add constraint FK81E1703CF443DB5A foreign key (ReferenceBase_id) references ReferenceBase; -alter table ReferenceBase_Marker add constraint FK6888095DF443DB5A foreign key (ReferenceBase_id) references ReferenceBase; -alter table ReferenceBase_Marker add constraint FK6888095D777265A1 foreign key (markers_id) references Marker; -alter table ReferenceBase_Media add constraint FK3D2F4A61C2C29593 foreign key (media_id) references Media; -alter table ReferenceBase_Media add constraint FK3D2F4A61F443DB5A foreign key (ReferenceBase_id) references ReferenceBase; -alter table ReferenceBase_OriginalSource add constraint FK68651F6F3BAB2414 foreign key (sources_id) references OriginalSource; -alter table ReferenceBase_OriginalSource add constraint FK68651F6FF443DB5A foreign key (ReferenceBase_id) references ReferenceBase; -alter table ReferenceBase_Rights add constraint FK717BF6FAF443DB5A foreign key (ReferenceBase_id) references ReferenceBase; -alter table ReferenceBase_Rights add constraint FK717BF6FAC13F7B21 foreign key (rights_id) references Rights; -alter table RelationshipTermBase_inverseRepresentation add constraint FK98592F33ECEEF4AF foreign key (DefinedTermBase_id) references DefinedTermBase; -alter table RelationshipTermBase_inverseRepresentation add constraint FK98592F33473FB677 foreign key (inverserepresentations_id) references Representation; -alter table Representation add constraint FK9C4724EDEF7921F6 foreign key (createdby_id) references Agent; -alter table Representation add constraint FK9C4724ED5BE3EC03 foreign key (updatedby_id) references Agent; -alter table Representation add constraint FK9C4724EDE8D36B00 foreign key (language_id) references DefinedTermBase; -alter table Representation_Annotation add constraint FK371091E147E8AE60 foreign key (Representation_id) references Representation; -alter table Representation_Annotation add constraint FK371091E11E403E0B foreign key (annotations_id) references Annotation; -alter table Representation_Marker add constraint FK560063EC47E8AE60 foreign key (Representation_id) references Representation; -alter table Representation_Marker add constraint FK560063EC777265A1 foreign key (markers_id) references Marker; -alter table Rights add constraint FK91E56DF7C5F7EC54 foreign key (agent_id) references Agent; -alter table Rights add constraint FK91E56DF7EF7921F6 foreign key (createdby_id) references Agent; -alter table Rights add constraint FK91E56DF7E6D2886A foreign key (type_id) references DefinedTermBase; -alter table Rights add constraint FK91E56DF75BE3EC03 foreign key (updatedby_id) references Agent; -alter table Rights add constraint FK91E56DF7E8D36B00 foreign key (language_id) references DefinedTermBase; -alter table Rights_Annotation add constraint FK27CB1E97C13F7B21 foreign key (Rights_id) references Rights; -alter table Rights_Annotation add constraint FK27CB1E971E403E0B foreign key (annotations_id) references Annotation; -alter table Rights_Marker add constraint FKB739BBA2C13F7B21 foreign key (Rights_id) references Rights; -alter table Rights_Marker add constraint FKB739BBA2777265A1 foreign key (markers_id) references Marker; -create index sequenceTitleCacheIndex on Sequence (titleCache); -alter table Sequence add constraint FK544ADBE1EF7921F6 foreign key (createdby_id) references Agent; -alter table Sequence add constraint FK544ADBE1B982A103 foreign key (publishedin_id) references ReferenceBase; -alter table Sequence add constraint FK544ADBE12DBE1F1F foreign key (locus_id) references Locus; -alter table Sequence add constraint FK544ADBE15BE3EC03 foreign key (updatedby_id) references Agent; -alter table Sequence_Annotation add constraint FK1010BA6D1E403E0B foreign key (annotations_id) references Annotation; -alter table Sequence_Annotation add constraint FK1010BA6DD57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_Extension add constraint FK7BE66D41927DE9DF foreign key (extensions_id) references Extension; -alter table Sequence_Extension add constraint FK7BE66D41D57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_GenBankAccession add constraint FK8F69809615C4EF35 foreign key (genbankaccession_id) references GenBankAccession; -alter table Sequence_GenBankAccession add constraint FK8F698096D57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_Marker add constraint FK3D22B278777265A1 foreign key (markers_id) references Marker; -alter table Sequence_Marker add constraint FK3D22B278D57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_Media add constraint FK8E5D91E666ACA7EC foreign key (chromatograms_id) references Media; -alter table Sequence_Media add constraint FK8E5D91E6D57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_OriginalSource add constraint FKD37E7D8A3BAB2414 foreign key (sources_id) references OriginalSource; -alter table Sequence_OriginalSource add constraint FKD37E7D8AD57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_ReferenceBase add constraint FK18D91CBE7291F8A foreign key (citations_id) references ReferenceBase; -alter table Sequence_ReferenceBase add constraint FK18D91CBED57FFDD5 foreign key (Sequence_id) references Sequence; -alter table Sequence_Rights add constraint FK4616A015C13F7B21 foreign key (rights_id) references Rights; -alter table Sequence_Rights add constraint FK4616A015D57FFDD5 foreign key (Sequence_id) references Sequence; -create index specimenOrObservationBaseTitleCacheIndex on SpecimenOrObservationBase (titleCache); -alter table SpecimenOrObservationBase add constraint FK21CA3272C8505DB foreign key (preservation_id) references DefinedTermBase; -alter table SpecimenOrObservationBase add constraint FK21CA3272EF7921F6 foreign key (createdby_id) references Agent; -alter table SpecimenOrObservationBase add constraint FK21CA32727CC340C5 foreign key (storedunder_id) references TaxonNameBase; -alter table SpecimenOrObservationBase add constraint FK21CA3272EB62BE9A foreign key (collection_id) references Collection; -alter table SpecimenOrObservationBase add constraint FK21CA3272E17C9A6B foreign key (sex_id) references DefinedTermBase; -alter table SpecimenOrObservationBase add constraint FK21CA32728C750E27 foreign key (lifestage_id) references DefinedTermBase; -alter table SpecimenOrObservationBase add constraint FK21CA32724AAB411A foreign key (derivationevent_id) references DerivationEvent; -alter table SpecimenOrObservationBase add constraint FK21CA3272F95F225A foreign key (gatheringevent_id) references GatheringEvent; -alter table SpecimenOrObservationBase add constraint FK21CA32725BE3EC03 foreign key (updatedby_id) references Agent; -alter table SpecimenOrObservationBase_Annotation add constraint FK365E4F3C3B8A5ABA foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Annotation add constraint FK365E4F3C1E403E0B foreign key (annotations_id) references Annotation; -alter table SpecimenOrObservationBase_DerivationEvent add constraint FK20132036BD59A1AD foreign key (derivationevents_id) references DerivationEvent; -alter table SpecimenOrObservationBase_DerivationEvent add constraint FK2013203654C216AA foreign key (originals_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Extension add constraint FKE03B82923B8A5ABA foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Extension add constraint FKE03B8292927DE9DF foreign key (extensions_id) references Extension; -alter table SpecimenOrObservationBase_Marker add constraint FK8E6106C73B8A5ABA foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Marker add constraint FK8E6106C7777265A1 foreign key (markers_id) references Marker; -alter table SpecimenOrObservationBase_Media add constraint FK4EEBF7B73B8A5ABA foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Media add constraint FK4EEBF7B7C2C29593 foreign key (media_id) references Media; -alter table SpecimenOrObservationBase_OriginalSource add constraint FK3C4712D93B8A5ABA foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_OriginalSource add constraint FK3C4712D93BAB2414 foreign key (sources_id) references OriginalSource; -alter table SpecimenOrObservationBase_Rights add constraint FK9754F4643B8A5ABA foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Rights add constraint FK9754F464C13F7B21 foreign key (rights_id) references Rights; -alter table SpecimenOrObservationBase_Sequence add constraint FKBBF27B0E7EE2770E foreign key (SpecimenOrObservationBase_id) references SpecimenOrObservationBase; -alter table SpecimenOrObservationBase_Sequence add constraint FKBBF27B0E35B10F24 foreign key (sequences_id) references Sequence; -alter table StateData add constraint FKFB1697BBEF7921F6 foreign key (createdby_id) references Agent; -alter table StateData add constraint FKFB1697BB682A4E4B foreign key (state_id) references DefinedTermBase; -alter table StateData add constraint FKFB1697BB5BE3EC03 foreign key (updatedby_id) references Agent; -alter table StateData_DefinedTermBase add constraint FK107321E28E7BF9AB foreign key (StateData_id) references StateData; -alter table StateData_DefinedTermBase add constraint FK107321E2E0960EC4 foreign key (modifiers_id) references DefinedTermBase; -alter table StatisticalMeasurementValue add constraint FK2DCE0290EF7921F6 foreign key (createdby_id) references Agent; -alter table StatisticalMeasurementValue add constraint FK2DCE02904C428112 foreign key (type_id) references DefinedTermBase; -alter table StatisticalMeasurementValue add constraint FK2DCE02905BE3EC03 foreign key (updatedby_id) references Agent; -alter table StatisticalMeasurementValue_DefinedTermBase add constraint FK686C42B75C9F4F2B foreign key (StatisticalMeasurementValue_id) references StatisticalMeasurementValue; -alter table StatisticalMeasurementValue_DefinedTermBase add constraint FK686C42B7E0960EC4 foreign key (modifiers_id) references DefinedTermBase; -alter table SynonymRelationship add constraint FKF483ADB34BAC703F foreign key (relatedfrom_id) references TaxonBase; -alter table SynonymRelationship add constraint FKF483ADB3F8991B9D foreign key (relatedto_id) references TaxonBase; -alter table SynonymRelationship add constraint FKF483ADB3EF7921F6 foreign key (createdby_id) references Agent; -alter table SynonymRelationship add constraint FKF483ADB380924EEC foreign key (type_id) references DefinedTermBase; -alter table SynonymRelationship add constraint FKF483ADB39803512F foreign key (citation_id) references ReferenceBase; -alter table SynonymRelationship add constraint FKF483ADB35BE3EC03 foreign key (updatedby_id) references Agent; -alter table SynonymRelationship_Annotation add constraint FKF494F15B260A8379 foreign key (SynonymRelationship_id) references SynonymRelationship; -alter table SynonymRelationship_Annotation add constraint FKF494F15B1E403E0B foreign key (annotations_id) references Annotation; -alter table SynonymRelationship_Marker add constraint FK7A439066260A8379 foreign key (SynonymRelationship_id) references SynonymRelationship; -alter table SynonymRelationship_Marker add constraint FK7A439066777265A1 foreign key (markers_id) references Marker; -create index taxonBaseTitleCacheIndex on TaxonBase (titleCache); -alter table TaxonBase add constraint FK9249B49BEF7921F6 foreign key (createdby_id) references Agent; -alter table TaxonBase add constraint FK9249B49BDA93512F foreign key (taxonName_fk) references TaxonNameBase; -alter table TaxonBase add constraint FK9249B49B7C7B5AED foreign key (taxonomicparentcache_id) references TaxonBase; -alter table TaxonBase add constraint FK9249B49B5E4A2F85 foreign key (sec_id) references ReferenceBase; -alter table TaxonBase add constraint FK9249B49B5BE3EC03 foreign key (updatedby_id) references Agent; -alter table TaxonBase_Annotation add constraint FK41ED09739C9D39 foreign key (TaxonBase_id) references TaxonBase; -alter table TaxonBase_Annotation add constraint FK41ED09731E403E0B foreign key (annotations_id) references Annotation; -alter table TaxonBase_Extension add constraint FKF961257B927DE9DF foreign key (extensions_id) references Extension; -alter table TaxonBase_Extension add constraint FKF961257B9C9D39 foreign key (TaxonBase_id) references TaxonBase; -alter table TaxonBase_Marker add constraint FK5CDB747E9C9D39 foreign key (TaxonBase_id) references TaxonBase; -alter table TaxonBase_Marker add constraint FK5CDB747E777265A1 foreign key (markers_id) references Marker; -alter table TaxonBase_OriginalSource add constraint FK10EFD9903BAB2414 foreign key (sources_id) references OriginalSource; -alter table TaxonBase_OriginalSource add constraint FK10EFD9909C9D39 foreign key (TaxonBase_id) references TaxonBase; -alter table TaxonBase_Rights add constraint FK65CF621BC13F7B21 foreign key (rights_id) references Rights; -alter table TaxonBase_Rights add constraint FK65CF621B9C9D39 foreign key (TaxonBase_id) references TaxonBase; -create index taxonNameBaseTitleCacheIndex on TaxonNameBase (titleCache); -alter table TaxonNameBase add constraint FKB4870C6EF7921F6 foreign key (createdby_id) references Agent; -alter table TaxonNameBase add constraint FKB4870C62B4FEDD6 foreign key (basionymauthorteam_id) references Agent; -alter table TaxonNameBase add constraint FKB4870C64AC9C024 foreign key (nomenclaturalreference_id) references ReferenceBase; -alter table TaxonNameBase add constraint FKB4870C6B14B73EF foreign key (combinationauthorteam_id) references Agent; -alter table TaxonNameBase add constraint FKB4870C6BFEAE500 foreign key (homotypicalgroup_id) references HomotypicalGroup; -alter table TaxonNameBase add constraint FKB4870C662AD57A2 foreign key (excombinationauthorteam_id) references Agent; -alter table TaxonNameBase add constraint FKB4870C67F90DF03 foreign key (exbasionymauthorteam_id) references Agent; -alter table TaxonNameBase add constraint FKB4870C65BE3EC03 foreign key (updatedby_id) references Agent; -alter table TaxonNameBase add constraint FKB4870C6D7BE55A0 foreign key (rank_id) references DefinedTermBase; -alter table TaxonNameBase_Annotation add constraint FK9E7794688C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_Annotation add constraint FK9E7794681E403E0B foreign key (annotations_id) references Annotation; -alter table TaxonNameBase_Extension add constraint FKC28EE7E6927DE9DF foreign key (extensions_id) references Extension; -alter table TaxonNameBase_Extension add constraint FKC28EE7E68C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_HybridRelationship add constraint FK371B728D2D57C7D5 foreign key (hybridrelationships_id) references HybridRelationship; -alter table TaxonNameBase_HybridRelationship add constraint FK371B728DCDE98DD2 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_Marker add constraint FK39E3C1F38C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_Marker add constraint FK39E3C1F3777265A1 foreign key (markers_id) references Marker; -alter table TaxonNameBase_NomenclaturalStatus add constraint FK560BA7926615E90D foreign key (status_id) references NomenclaturalStatus; -alter table TaxonNameBase_NomenclaturalStatus add constraint FK560BA7928C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_OriginalSource add constraint FKBEA1E2053BAB2414 foreign key (sources_id) references OriginalSource; -alter table TaxonNameBase_OriginalSource add constraint FKBEA1E2058C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_Rights add constraint FK42D7AF90C13F7B21 foreign key (rights_id) references Rights; -alter table TaxonNameBase_Rights add constraint FK42D7AF908C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonNameBase_TypeDesignationBase add constraint FKC0D6BBB5C7DF530C foreign key (typedesignations_id) references TypeDesignationBase; -alter table TaxonNameBase_TypeDesignationBase add constraint FKC0D6BBB58C85CF94 foreign key (TaxonNameBase_id) references TaxonNameBase; -alter table TaxonRelationship add constraint FK7482BA02E71EF6CE foreign key (relatedfrom_id) references TaxonBase; -alter table TaxonRelationship add constraint FK7482BA02F8991B9D foreign key (relatedto_id) references TaxonBase; -alter table TaxonRelationship add constraint FK7482BA02EF7921F6 foreign key (createdby_id) references Agent; -alter table TaxonRelationship add constraint FK7482BA02F11BD77B foreign key (type_id) references DefinedTermBase; -alter table TaxonRelationship add constraint FK7482BA029803512F foreign key (citation_id) references ReferenceBase; -alter table TaxonRelationship add constraint FK7482BA025BE3EC03 foreign key (updatedby_id) references Agent; -alter table TaxonRelationship_Annotation add constraint FK82C86DAC1E403E0B foreign key (annotations_id) references Annotation; -alter table TaxonRelationship_Annotation add constraint FK82C86DAC2BD180D9 foreign key (TaxonRelationship_id) references TaxonRelationship; -alter table TaxonRelationship_Marker add constraint FK69FBDD37777265A1 foreign key (markers_id) references Marker; -alter table TaxonRelationship_Marker add constraint FK69FBDD372BD180D9 foreign key (TaxonRelationship_id) references TaxonRelationship; -alter table TermVocabulary add constraint FK487AA692EF7921F6 foreign key (createdby_id) references Agent; -alter table TermVocabulary add constraint FK487AA6925BE3EC03 foreign key (updatedby_id) references Agent; -alter table TermVocabulary_Representation add constraint FKA408B63A258E060 foreign key (TermVocabulary_id) references TermVocabulary; -alter table TermVocabulary_Representation add constraint FKA408B63AB31C4747 foreign key (representations_id) references Representation; -alter table TypeDesignationBase add constraint FK8AC9DCAE2FB99E97 foreign key (typestatus_id) references DefinedTermBase; -alter table TypeDesignationBase add constraint FK8AC9DCAEEF7921F6 foreign key (createdby_id) references Agent; -alter table TypeDesignationBase add constraint FK8AC9DCAE94DB044A foreign key (typespecimen_id) references SpecimenOrObservationBase; -alter table TypeDesignationBase add constraint FK8AC9DCAEBFEAE500 foreign key (homotypicalgroup_id) references HomotypicalGroup; -alter table TypeDesignationBase add constraint FK8AC9DCAE9803512F foreign key (citation_id) references ReferenceBase; -alter table TypeDesignationBase add constraint FK8AC9DCAE4CB0F315 foreign key (typename_id) references TaxonNameBase; -alter table TypeDesignationBase add constraint FK8AC9DCAE5BE3EC03 foreign key (updatedby_id) references Agent; -alter table TypeDesignationBase_Annotation add constraint FK4D73278044E9E6D4 foreign key (TypeDesignationBase_id) references TypeDesignationBase; -alter table TypeDesignationBase_Annotation add constraint FK4D7327801E403E0B foreign key (annotations_id) references Annotation; -alter table TypeDesignationBase_Marker add constraint FKB914A10B44E9E6D4 foreign key (TypeDesignationBase_id) references TypeDesignationBase; -alter table TypeDesignationBase_Marker add constraint FKB914A10B777265A1 foreign key (markers_id) references Marker; -alter table TypeDesignationBase_TaxonNameBase add constraint FKF61156F54D901A92 foreign key (typifiednames_id) references TaxonNameBase; -alter table TypeDesignationBase_TaxonNameBase add constraint FKF61156F544E9E6D4 foreign key (TypeDesignationBase_id) references TypeDesignationBase; -alter table User add constraint FK285FEBEF7921F6 foreign key (createdby_id) references Agent; -alter table User_GrantedAuthorityImpl add constraint FKA2FB64FCCF9BC520 foreign key (User_id) references User; -alter table User_GrantedAuthorityImpl add constraint FKA2FB64FC1857F6C2 foreign key (grantedauthorities_id) references GrantedAuthorityImpl; -alter table User_PermissionGroup add constraint FKDD33C17CDA9DCB5F foreign key (groups_id) references PermissionGroup; -alter table User_PermissionGroup add constraint FKDD33C17C887E3D12 foreign key (members_id) references User; -- 2.34.1