jenkins merging release branch into master (strategy: theirs)
authorjenkins <jenkins-int@bgbm.org>
Thu, 17 May 2018 09:48:38 +0000 (11:48 +0200)
committerjenkins <jenkins-int@bgbm.org>
Thu, 17 May 2018 09:48:38 +0000 (11:48 +0200)
219 files changed:
pom.xml
src/main/java/eu/etaxonomy/cdm/addon/config/CdmVaadinConfiguration.java
src/main/java/eu/etaxonomy/cdm/dataInserter/RegistrationRequiredDataInserter.java
src/main/java/eu/etaxonomy/cdm/i18n/Messages.java
src/main/java/eu/etaxonomy/cdm/persistence/hibernate/GrantedAuthorityRevokingRegistrationUpdateLister.java
src/main/java/eu/etaxonomy/cdm/service/CdmStore.java
src/main/java/eu/etaxonomy/cdm/service/CdmUserHelper.java
src/main/java/eu/etaxonomy/cdm/service/IRegistrationWorkingSetService.java
src/main/java/eu/etaxonomy/cdm/service/ISpecimenTypeDesignationWorkingSetService.java
src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java
src/main/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImpl.java
src/main/java/eu/etaxonomy/cdm/service/initstrategies/AgentBaseInit.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/component/CdmProgressComponent.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/PartialDateField.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/TextFieldNFix.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/AbstractTimePeriodField.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/MinMaxTextField.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/PersonField.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/TeamOrPersonField.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/TimePeriodField.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/VerbatimTimePeriodField.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/AreaAndTaxonSettingsConfigWindow.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/AreaAndTaxonSettingsConfigWindow.java with 93% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/DetailWindow.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/component/DetailWindow.java with 98% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/DistributionStatusSettingsConfigWindow.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/DistributionStatusSettingsConfigWindow.java with 87% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/DistributionToolbar.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/component/DistributionToolbar.java with 95% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/HelpWindow.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/SettingsDialogWindowBase.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/SettingsDialogWindowBase.java with 97% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemButtons.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemNameAndTypeButtons.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemEditButtonGroup.java with 84% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemsPanel.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationStateLabel.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/TypeStateLabel.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/ConceptRelationshipComposite.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/ConceptRelationshipPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/EditConceptRelationshipComposite.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/EditConceptRelationshipPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/IConceptRelationshipComponentListener.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/INewTaxonBaseComponentListener.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/INewTaxonBaseComposite.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/IStatusComposite.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/NewTaxonBaseComposite.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/NewTaxonBasePresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/StatusComposite.java
src/main/java/eu/etaxonomy/cdm/vaadin/component/taxon/StatusPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/container/CdmSpringConnectionPool.java
src/main/java/eu/etaxonomy/cdm/vaadin/container/IdUuidName.java
src/main/java/eu/etaxonomy/cdm/vaadin/container/LeafNodeTaxonContainer.java
src/main/java/eu/etaxonomy/cdm/vaadin/container/NamedAreaContainer.java
src/main/java/eu/etaxonomy/cdm/vaadin/container/PresenceAbsenceTermContainer.java
src/main/java/eu/etaxonomy/cdm/vaadin/container/TaxonNodeContainer.java
src/main/java/eu/etaxonomy/cdm/vaadin/debug/EntityCacheDebugger.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEditorAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEntityEvent.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/CollectionEditorAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/EntityChangeEvent.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/ReferenceEditorAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/RegistrationEditorAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/ShowDetailsEventEntityTypeFilter.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/TaxonNameEditorAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/ToOneRelatedEntityButtonUpdater.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/TypeDesignationWorkingsetEditorAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/event/error/DelegatingErrorHandler.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/event/error/ErrorTypeHandler.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/event/error/ExternalServiceExceptionHandler.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/event/error/HibernateExceptionHandler.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/event/registration/RegistrationWorkingsetAction.java
src/main/java/eu/etaxonomy/cdm/vaadin/jscomponent/D3ConceptRelationshipTree.java
src/main/java/eu/etaxonomy/cdm/vaadin/jscomponent/D3ConceptRelationshipTreeState.java
src/main/java/eu/etaxonomy/cdm/vaadin/model/CdmEntityDecoraterDTO.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/model/name/NameRelationshipDTO.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/model/name/TaxonNameDTO.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/KindOfUnitTerms.java
src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/SpecimenTypeDesignationDTO.java
src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/SpecimenTypeDesignationWorkingSetDTO.java
src/main/java/eu/etaxonomy/cdm/vaadin/model/taxonDTO.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/AccessRestrictedView.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/AccessRestrictedView.java with 96% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/AnnotationBasedAccessControlBean.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/AnnotationBasedAccessControlBean.java with 98% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/AnnotationBasedAccessControlConfiguration.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/AnnotationBasedAccessControlConfiguration.java with 94% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/CdmEditDeletePermissionTester.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/PermissionDebugUtils.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/PermissionDebugUtils.java with 91% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/ReleasableResourcesView.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/ReleasableResourcesView.java with 91% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/RolesAndPermissions.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/RolesAndPermissions.java with 93% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/UserHelper.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/UserHelper.java with 75% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/VaadinUserHelper.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/VaadinUserHelper.java with 93% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/annotation/EnableAnnotationBasedAccessControl.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/annotation/EnableAnnotationBasedAccessControl.java with 84% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/permission/annotation/RequireAuthentication.java [moved from src/main/java/eu/etaxonomy/cdm/vaadin/security/annotation/RequireAuthentication.java with 92% similarity]
src/main/java/eu/etaxonomy/cdm/vaadin/session/BasicEvent.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/BasicEventService.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/CdmChangeEvent.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/CdmDataChangeService.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/IBasicEventListener.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/ICdmChangeListener.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/ISelectionListener.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/SelectionEvent.java
src/main/java/eu/etaxonomy/cdm/vaadin/session/SelectionService.java
src/main/java/eu/etaxonomy/cdm/vaadin/statement/CdmStatementDelegate.java
src/main/java/eu/etaxonomy/cdm/vaadin/theme/EditValoTheme.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/ui/CdmBaseUI.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/ConceptRelationshipUI.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/ConceptRelationshipUIRedirect.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/DistributionStatusUI.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUI.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUIDefaults.java
src/main/java/eu/etaxonomy/cdm/vaadin/ui/StatusEditorUI.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmQueryFactory.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmSQLStringDecorator.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmVaadinAuthentication.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmVaadinOperation.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmVaadinSessionUtilities.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmVaadinUtilities.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/DistributionStatusQuery.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/DistributionStatusQueryDefinition.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/DistributionStatusQueryFactory.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/SQLUtils.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/TeamOrPersonBaseCaptionGenerator.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/TermCacher.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/DataIntegrityException.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/DoubleConverter.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/IntegerConverter.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/PresenceAbsenceTermUuidObjectConverter.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/PresenceAbsenceTermUuidTitleStringConverter.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TaxonNodeUuidTitleStringConverter.java
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/UuidTitleStringConverter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/ConceptRelationshipView.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/DistributionTablePresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/DistributionTableViewBean.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/settings/AreaAndTaxonSettingsPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/settings/DistributionStatusSettingsPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/settings/SettingsPresenterBase.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationDTORow.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetEditorPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetPopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorMode.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorView.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TypeDesignationWorkingsetEditorIdSet.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionEditorPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionPopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListView.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListViewBean.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDetailsItem.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationEditorPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesView.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationPopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationType.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationTypeConverter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationValidationException.java [deleted file]
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetView.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorksetViewBean.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationPresenter.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationViewBean.java
src/main/java/eu/etaxonomy/vaadin/component/CompositeCustomField.java
src/main/java/eu/etaxonomy/vaadin/component/NameRelationField.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/component/NameRelationsListEditor.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/component/NestedFieldGroup.java
src/main/java/eu/etaxonomy/vaadin/component/ReloadableLazyComboBoxInstantiator.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/component/SwitchableTextField.java
src/main/java/eu/etaxonomy/vaadin/component/ToManyRelatedEntitiesComboboxSelect.java
src/main/java/eu/etaxonomy/vaadin/component/ToManyRelatedEntitiesListSelect.java
src/main/java/eu/etaxonomy/vaadin/component/ToOneRelatedEntityCombobox.java
src/main/java/eu/etaxonomy/vaadin/event/EntityEditorActionEvent.java
src/main/java/eu/etaxonomy/vaadin/event/EntityEditorActionListener.java
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmDTOEditorPresenter.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmDTOPopupEditor.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmEditorPresenter.java
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmPopupEditor.java
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractEditorPresenter.java
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractPopupEditor.java
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractPopupView.java
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractView.java
src/main/java/eu/etaxonomy/vaadin/mvp/CdmEditorPresenterBase.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/ui/navigation/NavigationManager.java
src/main/java/eu/etaxonomy/vaadin/ui/navigation/NavigationManagerBean.java
src/main/java/eu/etaxonomy/vaadin/ui/navigation/PopupViewRegistration.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/vaadin/ui/view/PopupView.java
src/main/resources/eu/etaxonomy/cdm/i18n/messages.properties
src/main/resources/eu/etaxonomy/cdm/i18n/messages_de.properties
src/main/resources/eu/etaxonomy/cdm/vaadin/component/distributionStatus/help_de.html [new file with mode: 0644]
src/main/resources/eu/etaxonomy/cdm/vaadin/component/distributionStatus/help_en.html [new file with mode: 0644]
src/main/webapp/VAADIN/themes/edit-valo/custom-fields.scss
src/main/webapp/VAADIN/themes/edit-valo/edit-valo.scss
src/test/java/eu/etaxonomy/cdm/CdmVaadinIntegrationTest.java
src/test/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/jscomponent/D3CTree.java
src/test/java/eu/etaxonomy/cdm/vaadin/jscomponent/D3CTreeState.java
src/test/java/eu/etaxonomy/cdm/vaadin/model/RegistrationWorkingSetTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/AuthenticationPresenterTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/ConceptRelationshipPresenterTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/EditConceptRelationshipPresenterTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/NewTaxonBasePresenterTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/StatusPresenterTest.java
src/test/java/eu/etaxonomy/cdm/vaadin/ui/D3CTreeUI.java
src/test/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManagerIT.java
src/test/java/unitils/AlternativeUnitilsJUnit4TestClassRunner.java [deleted file]
src/test/resources/dbscripts/001-cdm.h2.sql [deleted file]
src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-ui-registration-with_auditing_info.xml
src/test/resources/eu/etaxonomy/cdm/database/schema/dataset.dtd [deleted file]
src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest-deleteTest.xml
src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.deleteTypeDesignationTest-result.xml
src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.xml
src/test/resources/eu/etaxonomy/cdm/vaadin/PUBLIC.xsd
src/test/resources/eu/etaxonomy/cdm/vaadin/dataset.xsd
src/test/resources/eu/etaxonomy/cdm/vaadin/presenter/StatusPresenterTest.xml
src/test/resources/spring-environment.mock.properties

diff --git a/pom.xml b/pom.xml
index d7260b66945274ff5435e87c75b9adcd28dbee6d..c039b3af41d21c782aa6f7f8dec9ac8a1cdc37e9 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
   <groupId>eu.etaxonomy</groupId>
   <artifactId>cdm-vaadin</artifactId>
   <packaging>war</packaging>
-  <version>4.14.0</version>
+  <version>5.0.0</version>
   <name>Vaadin Web Application</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -12,7 +12,7 @@
     <vaadin-spring.version>1.2.0</vaadin-spring.version>
     <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
     <vaadin-spring-addon-eventbus.version>2.0.0.RELEASE</vaadin-spring-addon-eventbus.version>
-    <cdmlib.version>4.14.0</cdmlib.version>
+    <cdmlib.version>5.0.0</cdmlib.version>
     <unitils.version>3.4.2</unitils.version>
     <!-- 
         lucene.version must match the version as defined in cdmlib
index 13dd25d98c19fc07e3e0759c2420e45ed9f75c19..48bbf748200dd0d6ff13132d03aa473c1a989b81 100644 (file)
@@ -43,13 +43,13 @@ import eu.etaxonomy.cdm.api.application.AbstractDataInserter;
 import eu.etaxonomy.cdm.api.application.CdmRepository;
 import eu.etaxonomy.cdm.api.application.DummyDataInserter;
 import eu.etaxonomy.cdm.api.cache.CdmCacher;
+import eu.etaxonomy.cdm.api.config.ApplicationConfiguration;
+import eu.etaxonomy.cdm.api.config.ApplicationConfigurationFile;
 import eu.etaxonomy.cdm.api.service.idminter.RegistrationIdentifierMinter;
 import eu.etaxonomy.cdm.cache.CdmTransientEntityCacher;
-import eu.etaxonomy.cdm.common.ConfigFileUtil;
 import eu.etaxonomy.cdm.dataInserter.RegistrationRequiredDataInserter;
-import eu.etaxonomy.cdm.opt.config.DataSourceConfigurer;
 import eu.etaxonomy.cdm.persistence.hibernate.GrantedAuthorityRevokingRegistrationUpdateLister;
-import eu.etaxonomy.cdm.vaadin.security.annotation.EnableAnnotationBasedAccessControl;
+import eu.etaxonomy.cdm.vaadin.permission.annotation.EnableAnnotationBasedAccessControl;
 import eu.etaxonomy.cdm.vaadin.ui.ConceptRelationshipUI;
 import eu.etaxonomy.cdm.vaadin.ui.DistributionStatusUI;
 import eu.etaxonomy.cdm.vaadin.ui.RegistrationUI;
@@ -67,7 +67,8 @@ import eu.etaxonomy.vaadin.ui.annotation.EnableVaadinSpringNavigation;
         "eu.etaxonomy.vaadin.ui",
         "eu.etaxonomy.cdm.vaadin",
         "eu.etaxonomy.cdm.service",
-        "org.springframework.context.event"
+        "org.springframework.context.event",
+        "eu.etaxonomy.cdm.ext.registration.messages.redmine" // FIXME needed???
         },
         // exclude UI classes, these are provided via the @Bean annotated methods below
         excludeFilters={@Filter(
@@ -81,9 +82,6 @@ import eu.etaxonomy.vaadin.ui.annotation.EnableVaadinSpringNavigation;
 @EnableEventBus // enable the vaadin spring event bus
 public class CdmVaadinConfiguration implements ApplicationContextAware  {
 
-
-    public static final String CDM_DATA_SOURCE_ID = DataSourceConfigurer.CDM_DATA_SOURCE_ID;
-
     public static final String CDM_VAADIN_UI_ACTIVATED = "cdm-vaadin.ui.activated";
     public static final String CDM_SERVICE_MINTER_REGSTRATION_MINID = "cdm.service.minter.registration.minLocalId";
     public static final String CDM_SERVICE_MINTER_REGSTRATION_MAXID = "cdm.service.minter.registration.maxLocalId";
@@ -97,6 +95,9 @@ public class CdmVaadinConfiguration implements ApplicationContextAware  {
     @Autowired
     private SessionFactory sessionFactory;
 
+    @Autowired
+    private ApplicationConfiguration appConfig;
+
     @Autowired
     private void  setTermCacher(CdmCacher termCacher){
         CdmTransientEntityCacher.setDefaultCacher(termCacher);
@@ -104,6 +105,9 @@ public class CdmVaadinConfiguration implements ApplicationContextAware  {
 
     private boolean registrationUiHibernateEventListenersDone = false;
 
+
+    ApplicationConfigurationFile configFile = new ApplicationConfigurationFile(PROPERTIES_FILE_NAME, APP_FILE_CONTENT);
+
     /*
      * NOTE: It is necessary to map the URLs starting with /VAADIN/* since none of the
      * @WebServlets is mapped to the root path. It is sufficient to configure one of the
@@ -198,10 +202,10 @@ public class CdmVaadinConfiguration implements ApplicationContextAware  {
     @Bean
     public RegistrationIdentifierMinter registrationIdentifierMinter() throws IOException {
         RegistrationIdentifierMinter minter = new RegistrationIdentifierMinter();
-        ensureVaadinAppPropertiesLoaded();
-        minter.setMinLocalId(appProps.getProperty(CDM_SERVICE_MINTER_REGSTRATION_MINID));
-        minter.setMaxLocalId(appProps.getProperty(CDM_SERVICE_MINTER_REGSTRATION_MAXID));
-        minter.setIdentifierFormatString(appProps.getProperty(CDM_SERVICE_MINTER_REGSTRATION_IDFORMAT));
+
+        minter.setMinLocalId(appConfig.getProperty(configFile , CDM_SERVICE_MINTER_REGSTRATION_MINID));
+        minter.setMaxLocalId(appConfig.getProperty(configFile , CDM_SERVICE_MINTER_REGSTRATION_MAXID));
+        minter.setIdentifierFormatString(appConfig.getProperty(configFile , CDM_SERVICE_MINTER_REGSTRATION_IDFORMAT));
         return minter;
     }
 
@@ -264,24 +268,15 @@ public class CdmVaadinConfiguration implements ApplicationContextAware  {
         String path = uiClass.getAnnotation(SpringUI.class).path().trim();
 
         if(activeUIpaths == null){
-            try {
-
-                String activatedVaadinUIs = env.getProperty(CDM_VAADIN_UI_ACTIVATED);
-                if(activatedVaadinUIs == null){
-                    // not in environment? Read it from the config file!
-                    ensureVaadinAppPropertiesLoaded();
-                    if(appProps.get(CDM_VAADIN_UI_ACTIVATED) != null){
-                        activatedVaadinUIs = appProps.get(CDM_VAADIN_UI_ACTIVATED).toString();
-                    }
-                }
-
-                if(activatedVaadinUIs != null) {
-                    String[] uiPaths = activatedVaadinUIs.split("\\s*,\\s*");
-                    this.activeUIpaths = Arrays.asList(uiPaths);
-                }
-            } catch (IOException e) {
-                logger.error("Error reading the vaadin ui properties file. File corrupted?. Stopping instance ...");
-                throw new RuntimeException(e);
+            String activatedVaadinUIs = env.getProperty(CDM_VAADIN_UI_ACTIVATED);
+            if(activatedVaadinUIs == null){
+                // not in environment? Read it from the config file!
+                activatedVaadinUIs = appConfig.getProperty(configFile , CDM_VAADIN_UI_ACTIVATED);
+            }
+
+            if(activatedVaadinUIs != null) {
+                String[] uiPaths = activatedVaadinUIs.split("\\s*,\\s*");
+                this.activeUIpaths = Arrays.asList(uiPaths);
             }
         }
         if(activeUIpaths.stream().anyMatch(p -> p.trim().equals(path))){
@@ -291,19 +286,7 @@ public class CdmVaadinConfiguration implements ApplicationContextAware  {
 
     }
 
-    /**
-     * @param currentDataSourceId
-     * @throws IOException
-     */
-    protected void ensureVaadinAppPropertiesLoaded() throws IOException {
 
-        String currentDataSourceId = env.getProperty(CDM_DATA_SOURCE_ID);
-        if(appProps == null){
-            appProps = new ConfigFileUtil()
-                    .setDefaultContent(APP_FILE_CONTENT)
-                    .getProperties(currentDataSourceId, PROPERTIES_FILE_NAME);
-        }
-    }
 
     /**
      * {@inheritDoc}
index 4be00e704be762e038b142fbd71d4b622592b2d3..e6929b2b1f62324665fd99731b3a0110c05c2635 100644 (file)
@@ -54,7 +54,7 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmPermissionClass;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.cdm.vaadin.model.registration.KindOfUnitTerms;
-import eu.etaxonomy.cdm.vaadin.security.RolesAndPermissions;
+import eu.etaxonomy.cdm.vaadin.permission.RolesAndPermissions;
 
 /**
  *
index d3c8de2f074229868e8ea215117012dbb1c1051c..3150543b5298e619a451a79f1733e9d666e496d7 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2017 EDIT
 * European Distributed Institute of Taxonomy
@@ -16,10 +15,12 @@ import com.vaadin.server.VaadinSession;
 
 /**
  * @author freimeier
- * @date 07.12.2017
  *
  */
 public class Messages implements Serializable {
+
+    private static final long serialVersionUID = 863200898445493048L;
+
     public static final String BUNDLE_NAME = "eu.etaxonomy.cdm.i18n.messages";
     public static String AreaAndTaxonSettingsConfigWindow_AREAS = "AreaAndTaxonSettingsConfigWindow_AREAS";
     public static String AreaAndTaxonSettingsConfigWindow_CLASSIFICATION = "AreaAndTaxonSettingsConfigWindow_CLASSIFICATION";
@@ -50,6 +51,9 @@ public class Messages implements Serializable {
     public static String DistributionToolbar_LOGOUT = "DistributionToolbar_LOGOUT";
     public static String DistributionToolbar_SAVE = "DistributionToolbar_SAVE";
     public static String DistributionToolbar_STATUS = "DistributionToolbar_STATUS";
+    public static String DistributionToolbar_HELP = "DistributionToolbar_HELP";
+    public static String HelpWindow_RESOURCE = "HelpWindow_RESOURCE";
+    public static String HibernateExceptionHandler_PERMISSION_DENIED = "HibernateExceptionHandler_PERMISSION_DENIED";
     public static String SettingsDialogWindowBase_CANCEL = "SettingsDialogWindowBase_CANCEL";
     public static String SettingsDialogWindowBase_OK = "SettingsDialogWindowBase_OK";
 
index d404dd8afa1761d27d16a06e1dedf217b6582349..90301319a90db202ccdd95178d2808891966530b 100644 (file)
@@ -86,8 +86,8 @@ public class GrantedAuthorityRevokingRegistrationUpdateLister implements PostUpd
     /**
      * Walks the entity graph of the Registration instance and collects all authorities which
      * could have been granted to users. Code parts in which this could have happened can be
-     * found by searching for usage of the methods {@link eu.etaxonomy.cdm.vaadin.security.UserHelper#createAuthorityForCurrentUser(eu.etaxonomy.cdm.model.common.CdmBase, EnumSet, String)
-     * UserHelper.createAuthorityForCurrentUser(eu.etaxonomy.cdm.model.common.CdmBase, EnumSet, String)} and {@link eu.etaxonomy.cdm.vaadin.security.UserHelper#createAuthorityForCurrentUser(Class, Integer, EnumSet, String)
+     * found by searching for usage of the methods {@link eu.etaxonomy.cdm.vaadin.permission.UserHelper#createAuthorityForCurrentUser(eu.etaxonomy.cdm.model.common.CdmBase, EnumSet, String)
+     * UserHelper.createAuthorityForCurrentUser(eu.etaxonomy.cdm.model.common.CdmBase, EnumSet, String)} and {@link eu.etaxonomy.cdm.vaadin.permission.UserHelper#createAuthorityForCurrentUser(Class, Integer, EnumSet, String)
      * UserHelper.createAuthorityForCurrentUser(Class, Integer, EnumSet, String)}
      * <p>
      * At the time of implementing this function these places are:
index 3dd26619e44be8446897da50a475a512b3841a8d..a348874747b36733d95c575d351c9b858c994e70 100644 (file)
@@ -206,11 +206,11 @@ public class CdmStore<T extends CdmBase, S extends IService<T>> {
         T mergedBean = mergedBean(bean);
 
         // NOTE: saveOrUpdate is really needed here even if we to a merge before
-        repo.getCommonService().saveOrUpdate(mergedBean);
+        // repo.getCommonService().saveOrUpdate(mergedBean);
         session.flush();
         commitTransction();
 
-        return new EntityChangeEvent(mergedBean.getClass(), mergedBean.getId(), changeEventType, view);
+        return new EntityChangeEvent(mergedBean, changeEventType, view);
     }
 
     /**
@@ -229,7 +229,7 @@ public class CdmStore<T extends CdmBase, S extends IService<T>> {
             getSession().flush();
             commitTransction();
             logger.trace(this._toString() + ".deleteBean - transaction comitted");
-            return new EntityChangeEvent(bean.getClass(), bean.getId(), Type.REMOVED, view);
+            return new EntityChangeEvent(bean, Type.REMOVED, view);
         } else {
             handleDeleteresultInError(result);
             txStatus = null;
index 734639943b0ce89b5aff1e0bb61ee8b9441e55df..676dd9f557b4bfb2ebd3b41e70d73b03e376222a 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.service;
 
 import java.io.Serializable;
 import java.util.EnumSet;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,8 +38,8 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthorityParsingException;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
-import eu.etaxonomy.cdm.vaadin.security.RolesAndPermissions;
-import eu.etaxonomy.cdm.vaadin.security.VaadinUserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.RolesAndPermissions;
+import eu.etaxonomy.cdm.vaadin.permission.VaadinUserHelper;
 
 /**
  * @author a.kohlbecker
@@ -93,6 +94,15 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
                 && authentication instanceof AnonymousAuthenticationToken;
     }
 
+    @Override
+    public User user() {
+        Authentication authentication = getAuthentication();
+        if(authentication != null && authentication.getPrincipal() != null) {
+            return (User) authentication.getPrincipal();
+        }
+        return null;
+    }
+
     @Override
     public String userName() {
         Authentication authentication = getAuthentication();
@@ -149,6 +159,18 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
         return false;
     }
 
+    @Override
+    public boolean userHasPermission(Class<? extends CdmBase> cdmType, UUID entitiyUuid, Object ... args){
+        EnumSet<CRUD> crudSet = crudSetFromArgs(args);
+        try {
+            CdmBase entity = repo.getCommonService().find(cdmType, entitiyUuid);
+            return permissionEvaluator.hasPermission(getAuthentication(), entity, crudSet);
+        } catch (PermissionDeniedException e){
+            //IGNORE
+        }
+        return false;
+    }
+
     @Override
     public boolean userHasPermission(Class<? extends CdmBase> cdmType, Object ... args){
         EnumSet<CRUD> crudSet = crudSetFromArgs(args);
@@ -250,6 +272,20 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
         return createAuthorityFor(username, cdmEntity, crud, property);
     }
 
+    /**
+     * @param username
+     * @param cdmType
+     * @param entitiyUuid
+     * @param crud
+     * @return
+     */
+    @Override
+    public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property) {
+
+        CdmBase cdmEntity = repo.getCommonService().find(cdmType, entitiyUuid);
+        return createAuthorityFor(username, cdmEntity, crud, property);
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -270,6 +306,17 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
         return createAuthorityFor(userName(), cdmType, entitiyId, crud, property);
     }
 
+    /**
+     * @param cdmType
+     * @param entitiyUuid
+     * @param crud
+     * @return
+     */
+    @Override
+    public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property) {
+        return createAuthorityFor(userName(), cdmType, entitiyUuid, crud, property);
+    }
+
     /**
      * {@inheritDoc}
      */
index e13da0285ea9f3c29837756ae9824a6ddcc1e768..1d000b64895ef3f4fe618da3338f7b7411a73aee 100644 (file)
@@ -10,13 +10,14 @@ package eu.etaxonomy.cdm.service;
 
 import java.util.Collection;
 import java.util.Set;
+import java.util.UUID;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationValidationException;
 
 /**
  * @author a.kohlbecker
@@ -31,6 +32,8 @@ public interface IRegistrationWorkingSetService {
      */
     public RegistrationDTO loadDtoById(Integer id);
 
+    public RegistrationDTO loadDtoByUuid(UUID uuid);
+
     public Pager<RegistrationDTO> pageDTOs(Integer pageSize, Integer pageIndex);
 
     public Pager<RegistrationDTO> pageDTOs(User submitter, Collection<RegistrationStatus> includedStatus,
@@ -43,6 +46,12 @@ public interface IRegistrationWorkingSetService {
      */
     public RegistrationWorkingSet loadWorkingSetByReferenceID(Integer referenceID) throws RegistrationValidationException;
 
-    public Set<RegistrationDTO> loadBlockingRegistrations(Integer blockedRegistrationId);
+    /**
+     * @param referenceID
+     * @return
+     */
+    public RegistrationWorkingSet loadWorkingSetByReferenceUuid(UUID referenceUuid) throws RegistrationValidationException;
+
+    public Set<RegistrationDTO> loadBlockingRegistrations(UUID blockedRegistrationUuid);
 
 }
index 6df9c542f7d0d313e7c147a02238627711d37695..849fb6f510c68ddfede8245704d283a056275b48 100644 (file)
@@ -8,10 +8,12 @@
 */
 package eu.etaxonomy.cdm.service;
 
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.name.Registration;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
 
 /**
@@ -21,13 +23,14 @@ import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorking
  */
 public interface ISpecimenTypeDesignationWorkingSetService {
 
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(int registrationId, int publicationId, int typifiedNameId);
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(UUID registrationUuid, UUID publicationUuid, UUID typifiedNameUuid);
 
     /**
      * @param id the CDM Entity id
      * @return
      */
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> loadDtoByIds(int registrationId, TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef);
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> load(UUID registrationUuid,
+            TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef);
 
     SpecimenTypeDesignationWorkingSetDTO<Registration> fixMissingFieldUnit(SpecimenTypeDesignationWorkingSetDTO<Registration> bean);
 
index 90244225513058d7bd5226670136bffdf2545d83..e51e018006487fdc2d95d869434a6f9932d5930e 100644 (file)
@@ -15,14 +15,18 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
+import org.hibernate.Hibernate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import eu.etaxonomy.cdm.api.application.CdmRepository;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
@@ -37,8 +41,6 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationValidationException;
 
 /**
  * Provides RegistrationDTOs and RegistrationWorkingsets for Registrations in the database.
@@ -61,9 +63,13 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
             "typeDesignations.typeName.$",
             "typeDesignations.citation",
             "typeDesignations.citation.authorship.$",
+            "typeDesignations.annotations", // needed for AnnotatableEntity.clone() in DerivedUnitConverter.copyPropertiesTo
+            "typeDesignations.markers", // needed for AnnotatableEntity.clone() in DerivedUnitConverter.copyPropertiesTo
+            "typeDesignations.registrations", // DerivedUnitConverter.copyPropertiesTo(TARGET n)
+
             // name
             "name.$",
-            "name.nomenclaturalReference.authorship",
+            "name.nomenclaturalReference.authorship.$",
             "name.nomenclaturalReference.inReference",
             "name.rank",
             "name.homotypicalGroup.typifiedNames",
@@ -94,7 +100,7 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
           "gatheringEvent.$",
           "gatheringEvent.country",
           "gatheringEvent.collectingAreas",
-          "gatheringEvent.actor.teamMembers",
+          "gatheringEvent.actor",
           "derivationEvents.derivatives" // important, otherwise the DerivedUnits are not included into the graph of initialized entities!!!
   });
 
@@ -152,6 +158,18 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
     }
 
 
+    /**
+     * @param id the Registration entity id
+     * @return
+     */
+    @Override
+    public RegistrationDTO loadDtoByUuid(UUID uuid) {
+        Registration reg = repo.getRegistrationService().load(uuid, REGISTRATION_INIT_STRATEGY);
+        inititializeSpecimen(reg);
+        return new RegistrationDTO(reg);
+    }
+
+
     @Override
     public Pager<RegistrationDTO> pageDTOs(Integer pageSize, Integer pageIndex) {
 
@@ -178,6 +196,23 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
         return dtoPager;
     }
 
+    /**
+     * {@inheritDoc}
+     * @throws RegistrationValidationException
+     */
+    @Override
+    public RegistrationWorkingSet loadWorkingSetByReferenceUuid(UUID referenceUuid) throws RegistrationValidationException {
+
+        Reference reference = repo.getReferenceService().find(referenceUuid);
+        repo.getReferenceService().load(reference.getUuid()); // needed to avoid the problem described in #7331
+
+        Pager<Registration> pager = repo.getRegistrationService().page(Optional.of(reference), null, null, null, REGISTRATION_INIT_STRATEGY);
+
+        /* for debugging https://dev.e-taxonomy.eu/redmine/issues/7331 */
+        // debugIssue7331(pager);
+        return new RegistrationWorkingSet(makeDTOs(pager.getRecords()));
+    }
+
     /**
      * {@inheritDoc}
      * @throws RegistrationValidationException
@@ -186,14 +221,38 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
     public RegistrationWorkingSet loadWorkingSetByReferenceID(Integer referenceID) throws RegistrationValidationException {
 
         Reference reference = repo.getReferenceService().find(referenceID);
+        repo.getReferenceService().load(reference.getUuid()); // needed to avoid the problem described in #7331
+
         Pager<Registration> pager = repo.getRegistrationService().page(Optional.of(reference), null, null, null, REGISTRATION_INIT_STRATEGY);
+
+        /* for debugging https://dev.e-taxonomy.eu/redmine/issues/7331 */
+        // debugIssue7331(pager);
+
         return new RegistrationWorkingSet(makeDTOs(pager.getRecords()));
     }
 
+
+    /**
+     * @param pager
+     */
+    @SuppressWarnings("unused")
+    private void debugIssue7331(Pager<Registration> pager) {
+        for(Registration reg : pager.getRecords()){
+            if(reg.getName() != null && reg.getName().getNomenclaturalReference().getAuthorship() != null){
+                Reference ref = (Reference) reg.getName().getNomenclaturalReference();
+                if(!Hibernate.isInitialized(ref.getAuthorship())){
+                    logger.error("UNINITIALIZED");
+                }
+            } else {
+                logger.debug("NO AUTHORS");
+            }
+        }
+    }
+
     @Override
-    public Set<RegistrationDTO> loadBlockingRegistrations(Integer blockedRegistrationId){
+    public Set<RegistrationDTO> loadBlockingRegistrations(UUID blockedRegistrationUuid){
 
-        Registration registration = repo.getRegistrationService().load(blockedRegistrationId, BLOCKING_REGISTRATION_INIT_STRATEGY);
+        Registration registration = repo.getRegistrationService().load(blockedRegistrationUuid, BLOCKING_REGISTRATION_INIT_STRATEGY);
         Set<Registration> registrations = registration.getBlockedBy();
 
         Set<RegistrationDTO> blockingSet = new HashSet<>();
index 0b9c5d4d4e01c0c69b03a68248fc75e7fd2f8e75..9913c417167bba1ff3b9edf6e062e145f8b018ff 100644 (file)
@@ -8,11 +8,13 @@
 */
 package eu.etaxonomy.cdm.service;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import org.hibernate.Session;
 import org.jboss.logging.Logger;
@@ -24,6 +26,9 @@ import org.springframework.transaction.annotation.Transactional;
 import eu.etaxonomy.cdm.api.application.CdmRepository;
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSet;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.name.Registration;
@@ -37,11 +42,8 @@ import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
 
 /**
  * @author a.kohlbecker
@@ -64,12 +66,12 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
     }
 
     public static final List<String> TAXON_NAME_INIT_STRATEGY = Arrays.asList(new String []{
-            "name.$",
-            "name.nomenclaturalReference.authorship",
-            "name.nomenclaturalReference.inReference",
-            "name.rank",
-            "name.status.type",
-            "name.typeDesignations"
+            "$",
+            "nomenclaturalReference.authorship",
+            "nomenclaturalReference.inReference.authorship",
+            "nomenclaturalReference.inReference.inReference.authorship",
+            "status.type",
+            "typeDesignations"
             }
     );
 
@@ -85,11 +87,11 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
      * {@inheritDoc}
      */
     @Override
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(int registrationId, int publicationId, int typifiedNameId) {
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(UUID registrationUuid, UUID publicationUuid, UUID typifiedNameUuid) {
         FieldUnit newfieldUnit = FieldUnit.NewInstance();
-        Registration reg = repo.getRegistrationService().load(registrationId, RegistrationWorkingSetService.REGISTRATION_INIT_STRATEGY);
-        TaxonName typifiedName = repo.getNameService().load(typifiedNameId, TAXON_NAME_INIT_STRATEGY);
-        Reference citation = repo.getReferenceService().load(publicationId, Arrays.asList("$"));
+        Registration reg = repo.getRegistrationService().load(registrationUuid, RegistrationWorkingSetService.REGISTRATION_INIT_STRATEGY);
+        TaxonName typifiedName = repo.getNameService().load(typifiedNameUuid, TAXON_NAME_INIT_STRATEGY);
+        Reference citation = repo.getReferenceService().load(publicationUuid, Arrays.asList("$"));
         SpecimenTypeDesignationWorkingSetDTO<Registration> workingSetDto = new SpecimenTypeDesignationWorkingSetDTO<Registration>(reg, newfieldUnit, citation, typifiedName);
         return workingSetDto;
     }
@@ -99,14 +101,25 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
      */
     @Override
     @Transactional
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> loadDtoByIds(int registrationId, TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef) {
-        RegistrationDTO regDTO = registrationWorkingSetService.loadDtoById(registrationId);
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> load(UUID registrationUuid, TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef) {
+        RegistrationDTO regDTO = registrationWorkingSetService.loadDtoByUuid(registrationUuid);
         // find the working set
         TypeDesignationWorkingSet typeDesignationWorkingSet = regDTO.getTypeDesignationWorkingSet(baseEntityRef);
-        SpecimenTypeDesignationWorkingSetDTO<Registration> workingSetDto = regDTO.getSpecimenTypeDesignationWorkingSetDTO(typeDesignationWorkingSet.getBaseEntityReference());
+        SpecimenTypeDesignationWorkingSetDTO<Registration> workingSetDto = specimenTypeDesignationWorkingSetDTO(regDTO, typeDesignationWorkingSet.getBaseEntityReference());
         return workingSetDto;
     }
 
+    protected SpecimenTypeDesignationWorkingSetDTO<Registration> specimenTypeDesignationWorkingSetDTO(RegistrationDTO regDTO, TypedEntityReference baseEntityReference) {
+        Set<TypeDesignationBase> typeDesignations = regDTO.getTypeDesignationsInWorkingSet(baseEntityReference);
+        List<SpecimenTypeDesignation> specimenTypeDesignations = new ArrayList<>(typeDesignations.size());
+        typeDesignations.forEach(td -> specimenTypeDesignations.add((SpecimenTypeDesignation)td));
+        VersionableEntity baseEntity = regDTO.getTypeDesignationWorkingSet(baseEntityReference).getBaseEntity();
+
+        SpecimenTypeDesignationWorkingSetDTO<Registration> dto = new SpecimenTypeDesignationWorkingSetDTO<Registration>(regDTO.registration(),
+                baseEntity, specimenTypeDesignations, regDTO.getCitation(), regDTO.getTypifiedName());
+        return dto;
+    }
+
     @Override
     public SpecimenTypeDesignationWorkingSetDTO<Registration> fixMissingFieldUnit(SpecimenTypeDesignationWorkingSetDTO<Registration> bean) {
 
@@ -114,17 +127,17 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
             // in case the base unit of the working set is not a FieldUnit all contained TypeDesignations must be modified
             // so that they are based on an empty FieldUnit with an associated Gathering Event
 
-            Registration reg = repo.getRegistrationService().find(bean.getOwner().getId());
+            Registration reg = repo.getRegistrationService().find(bean.getOwner().getUuid());
             RegistrationDTO regDTO = new RegistrationDTO(reg);
 
             FieldUnit fieldUnit = FieldUnit.NewInstance();
             GatheringEvent gatheringEvent = GatheringEvent.NewInstance();
             fieldUnit.setGatheringEvent(gatheringEvent);
-            repo.getOccurrenceService().save(fieldUnit);
+            fieldUnit = (FieldUnit) repo.getOccurrenceService().save(fieldUnit);
 
             VersionableEntity baseEntity = bean.getBaseEntity();
             Set<TypeDesignationBase> typeDesignations = regDTO.getTypeDesignationsInWorkingSet(
-                    new TypedEntityReference(baseEntity.getClass(), baseEntity.getId(), baseEntity.toString())
+                    new TypedEntityReference(baseEntity.getClass(), baseEntity.getUuid(), baseEntity.toString())
                     );
             for(TypeDesignationBase td : typeDesignations){
                 DerivationEvent de = DerivationEvent.NewInstance();//
@@ -169,18 +182,15 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
 
             Session session = repo.getSession();
 
-//            PersistentContextAnalyzer regAnalyzer = new PersistentContextAnalyzer(dto.getOwner(), session);
-//            regAnalyzer.printEntityGraph(System.out);
-//            regAnalyzer.printCopyEntities(System.out);
-
             session.merge(dto.getOwner());
             session.flush();
 
             // ------------------------ perform delete of removed SpecimenTypeDesignations
+            // this step also includes the deletion of DerivedUnits which have been converted by
+            // the DerivedUnitConverter in turn of a kindOfUnit change
             for(SpecimenTypeDesignation std : dto.deletedSpecimenTypeDesignations()){
                 deleteSpecimenTypeDesignation(dto, std);
             }
-            session.flush();
         }
 
 
diff --git a/src/main/java/eu/etaxonomy/cdm/service/initstrategies/AgentBaseInit.java b/src/main/java/eu/etaxonomy/cdm/service/initstrategies/AgentBaseInit.java
new file mode 100644 (file)
index 0000000..2ac6a65
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+* Copyright (C) 2018 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.cdm.service.initstrategies;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author a.kohlbecker
+ * @since Apr 17, 2018
+ *
+ */
+public class AgentBaseInit {
+
+    public static final List<String> TEAM_OR_PERSON_INIT_STRATEGY = Arrays.asList(
+            "$",
+            "teamMembers.$"
+            );
+
+}
index 410957f5fde6594ed25127fe4f41bef23c13d583..056c237396d05331753a3797aa994fb52a4c34e3 100644 (file)
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmVaadinUtilities;
 
 /**
  * @author cmathew
- * @date 15 Apr 2015
+ * @since 15 Apr 2015
  *
  */
 public class CdmProgressComponent extends CustomComponent {
index a3dd5a74cc34ed63267c8b816d5cf839377f8b0b..39df88066eab13e79db33548d2a37b6bc0dd7d73 100644 (file)
@@ -9,7 +9,6 @@
 package eu.etaxonomy.cdm.vaadin.component;
 
 import com.vaadin.data.Property;
-import com.vaadin.ui.TextField;
 
 import eu.etaxonomy.cdm.vaadin.util.converter.JodaTimePartialConverter;
 
@@ -23,7 +22,7 @@ import eu.etaxonomy.cdm.vaadin.util.converter.JodaTimePartialConverter;
  * @since Apr 7, 2017
  *
  */
-public class PartialDateField extends TextField {
+public class PartialDateField extends TextFieldNFix {
 
     private static final long serialVersionUID = -347319052346135100L;
 
index c66b6fcaf2c1e49f05e38b4fccb4a2369a1b2a6c..4e9dcbeab104ba47e2fd27303a841bc4443cd48c 100644 (file)
@@ -96,6 +96,9 @@ public class TextFieldNFix extends TextField {
     protected void setInternalValue(String newValue) {
         if(newValue != null){
             newValue = newValue.trim();
+            if(newValue.isEmpty()){
+                newValue = null;
+            }
         }
         super.setInternalValue(newValue);
     }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/common/AbstractTimePeriodField.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/common/AbstractTimePeriodField.java
new file mode 100644 (file)
index 0000000..291d42b
--- /dev/null
@@ -0,0 +1,288 @@
+/**
+* Copyright (C) 2017 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.cdm.vaadin.component.common;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import com.vaadin.data.Validator.InvalidValueException;
+import com.vaadin.data.fieldgroup.BeanFieldGroup;
+import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
+import com.vaadin.data.util.BeanItem;
+import com.vaadin.event.FieldEvents.TextChangeEvent;
+import com.vaadin.server.FontAwesome;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomField;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.themes.ValoTheme;
+
+import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
+import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
+import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStyles;
+import eu.etaxonomy.cdm.vaadin.util.formatter.DateTimeFormat;
+import eu.etaxonomy.cdm.vaadin.util.formatter.TimePeriodFormatter;
+
+/**
+ * @author a.kohlbecker
+ * @since Apr 6, 2017
+ *
+ */
+public abstract class AbstractTimePeriodField<T extends TimePeriod> extends CustomField<T> {
+
+    private static final long serialVersionUID = -7377778547595966252L;
+
+    private static final String PRIMARY_STYLE = "v-time-period-field";
+
+    private BeanFieldGroup<TimePeriod> fieldGroup = new BeanFieldGroup<>(TimePeriod.class);
+
+    TextField parseField = null;
+
+    TextField freeText = null;
+
+    Label toLabel = null;
+
+    GridLayout grid = new GridLayout(3, 4);
+
+    CssLayout detailsView = new CssLayout();
+
+    //TODO implement custom button textfield which does not require a gridLayout
+    GridLayout buttonTextField = new GridLayout(2, 1);
+    GridLayout simpleView = new GridLayout(2, 1);
+
+    TextField cacheField = new TextFieldNFix();
+
+    Set<Component> styledComponents = new HashSet<>();
+
+    private TimePeriodFormatter timePeriodFormatter = new TimePeriodFormatter(DateTimeFormat.ISO8601_DATE);
+
+    /**
+     *
+     */
+    public AbstractTimePeriodField() {
+        super();
+
+    }
+
+    /**
+     * @param string
+     */
+    public AbstractTimePeriodField(String string) {
+        this();
+        setCaption(string);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Component initContent() {
+
+        super.setPrimaryStyleName(PRIMARY_STYLE);
+
+        CssLayout root = new CssLayout();
+
+        initSimpleView();
+        initDetailsView();
+
+        root.addComponent(simpleView);
+        root.addComponent(detailsView);
+
+        applyDefaultStyles();
+
+        showSimple();
+
+        return root;
+    }
+
+    /**
+     *
+     */
+    private void initSimpleView() {
+
+        Button showDetailsButton = new Button(FontAwesome.CALENDAR);
+        showDetailsButton.addClickListener(e -> showDetails());
+        cacheField.setWidth(353, Unit.PIXELS); // FIXME 100% does not work
+
+        simpleView.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
+        simpleView.setWidth(100, Unit.PERCENTAGE);
+        simpleView.addComponent(showDetailsButton, 0, 0);
+        simpleView.addComponent(cacheField, 1, 0);
+        simpleView.setColumnExpandRatio(1, 0.9f);
+    }
+
+    /**
+     *
+     */
+    private void initDetailsView() {
+
+        parseField = new TextFieldNFix();
+        // parseField.setWidth(100, Unit.PERCENTAGE);
+        parseField.setInputPrompt("This field will parse the entered time period");
+        parseField.addTextChangeListener(e -> parseInput(e));
+        parseField.setWidth(100, Unit.PERCENTAGE);
+
+        Button closeDetailsButton = new Button(FontAwesome.CLOSE);
+        closeDetailsButton.addClickListener(e -> {
+            try {
+                fieldGroup.commit();
+            } catch (CommitException e1) {
+                // TODO Auto-generated catch block
+                e1.printStackTrace();
+            }
+            updateCacheField();
+            showSimple();
+        });
+
+        buttonTextField.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
+        buttonTextField.setWidth(100, Unit.PERCENTAGE);
+        buttonTextField.addComponent(closeDetailsButton, 0, 0);
+        buttonTextField.addComponent(parseField, 1, 0);
+        buttonTextField.setColumnExpandRatio(1, 1.0f);
+
+        PartialDateField startDate = new PartialDateField("Start");
+        startDate.setInputPrompt("dd.mm.yyyy");
+        PartialDateField endDate = new PartialDateField("End");
+        endDate.setInputPrompt("dd.mm.yyyy");
+        freeText = new TextFieldNFix("FreeText");
+        freeText.setWidth(100, Unit.PERCENTAGE);
+
+        fieldGroup.bind(startDate, "start");
+        fieldGroup.bind(endDate, "end");
+        fieldGroup.bind(freeText, "freeText");
+
+        toLabel = new Label("\u2014"); // EM DASH : 0x2014
+
+        int row = 0;
+        grid.addComponent(buttonTextField, 0, row, 2, row);
+        row++;
+        grid.addComponent(startDate, 0, row);
+        grid.addComponent(toLabel, 1, row);
+        grid.setComponentAlignment(toLabel, Alignment.BOTTOM_CENTER);
+        grid.addComponent(endDate, 2, row);
+        row++;
+        grid.addComponent(freeText, 0, row, 2, row);
+
+        // apply the style of the container to all child components. E.g. make all tiny
+        addStyleName((getStyleName()));
+
+        detailsView.setStyleName("margin-wrapper");
+        detailsView.addComponent(grid);
+
+    }
+
+
+    /**
+     * @return
+     */
+    private void showSimple() {
+        detailsView.setVisible(false);
+        simpleView.setVisible(true);
+    }
+
+    /**
+     * @return
+     */
+    private void showDetails() {
+        detailsView.setVisible(true);
+        simpleView.setVisible(false);
+    }
+
+    /**
+     * @param e
+     * @return
+     */
+    private void parseInput(TextChangeEvent e) {
+        if(!e.getText().isEmpty()){
+            TimePeriod parsedPeriod = TimePeriodParser.parseString(e.getText());
+            fieldGroup.setItemDataSource(new BeanItem<TimePeriod>(parsedPeriod));
+        }
+    }
+
+    /**
+     *
+     */
+    private void applyDefaultStyles() {
+        if(parseField != null) {
+            parseField.addStyleName(RegistrationStyles.HELPER_FIELD);
+            toLabel.addStyleName("to-label");
+            buttonTextField.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
+        }
+
+    }
+
+    @Override
+    protected void setInternalValue(T newValue) {
+        if(newValue == null){
+            newValue = newModelInstance();
+        }
+        super.setInternalValue(newValue);
+            fieldGroup.setItemDataSource(new BeanItem<TimePeriod>(newValue));
+        updateCacheField();
+    }
+
+    /**
+     * @return
+     */
+    protected abstract T newModelInstance();
+
+    /**
+     * @param newValue
+     */
+    private void updateCacheField() {
+        TimePeriod newValue = fieldGroup.getItemDataSource().getBean();
+        cacheField.setReadOnly(false);
+        cacheField.setValue(timePeriodFormatter.print(newValue));
+        cacheField.setReadOnly(true);
+    }
+
+    @Override
+    public void setStyleName(String style) {
+        super.setStyleName(style);
+        grid.iterator().forEachRemaining(c -> c.setStyleName(style));
+        buttonTextField.iterator().forEachRemaining(c -> c.setStyleName(style));
+        simpleView.iterator().forEachRemaining(c -> c.setStyleName(style));
+        applyDefaultStyles();
+    }
+
+    @Override
+    public void addStyleName(String style) {
+        super.addStyleName(style);
+        grid.iterator().forEachRemaining(c -> c.addStyleName(style));
+        simpleView.iterator().forEachRemaining(c -> {
+            c.addStyleName(style);
+        });
+
+        buttonTextField.iterator().forEachRemaining(c -> c.addStyleName(style));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void commit() throws SourceException, InvalidValueException {
+        super.commit();
+        try {
+            fieldGroup.commit();
+        } catch (CommitException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+
+
+
+}
index ebe6e3621f11f272051fea81aad6d9e241cb7502..b60f448e9c13819a98fba21e1c4bcd8fdf5ae060 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.component.common;
 
 import org.apache.commons.lang.StringUtils;
 
+import com.vaadin.data.util.converter.Converter;
 import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.TextField;
 
@@ -32,11 +33,14 @@ public class MinMaxTextField extends HorizontalLayout {
     TextFieldNFix minField, textField;
     MaxTextField maxField;
 
+    Converter<String, ?> numberConverter;
+
     String unitOfMeasure;
 
-    public MinMaxTextField(String caption, String unitOfMeasure){
+    public MinMaxTextField(String caption, String unitOfMeasure, Converter<String, ?> numberConverter){
 
         this.unitOfMeasure = unitOfMeasure;
+        this.numberConverter = numberConverter;
 
         setCaption(caption);
         setPrimaryStyleName(PRIMARY_STYLE);
@@ -45,6 +49,10 @@ public class MinMaxTextField extends HorizontalLayout {
 
     }
 
+    public MinMaxTextField(String caption, String unitOfMeasure){
+        this(caption, unitOfMeasure, null);
+    }
+
     /**
      * @param unitOfMeasure
      */
index 5619d7aaf04322ffa2eb0a8825b07409d058e080..011682d31dd5c89701897464f2538f8b98910120 100644 (file)
@@ -17,6 +17,7 @@ import org.vaadin.viritin.fields.LazyComboBox;
 import com.vaadin.data.Validator.InvalidValueException;
 import com.vaadin.data.fieldgroup.BeanFieldGroup;
 import com.vaadin.data.fieldgroup.FieldGroup;
+import com.vaadin.server.FontAwesome;
 import com.vaadin.ui.Button;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.CssLayout;
@@ -27,7 +28,7 @@ import com.vaadin.ui.themes.ValoTheme;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.component.CompositeCustomField;
 import eu.etaxonomy.vaadin.component.SwitchButton;
 
@@ -70,11 +71,13 @@ public class PersonField extends CompositeCustomField<Person> {
     private CssLayout root = new CssLayout();
     private CssLayout selectOrNewContainer = new CssLayout();
 
-    private TextField cacheField = new TextFieldNFix();
+    private TextField titleCacheField = new TextFieldNFix();
+    private TextField nomenclaturalTitleField = new TextFieldNFix();
+    private Button nomenclaturalTitleButton = new Button();
     private CssLayout detailsContainer = new CssLayout();
     private TextField initialsField = new TextFieldNFix();
-    private TextField firstNameField = new TextFieldNFix();
-    private TextField lastNameField = new TextFieldNFix();
+    private TextField givenNameField = new TextFieldNFix();
+    private TextField familyNameField = new TextFieldNFix();
     private TextField prefixField = new TextFieldNFix();
     private TextField suffixField = new TextFieldNFix();
     private SwitchButton unlockSwitch = new SwitchButton();
@@ -82,6 +85,7 @@ public class PersonField extends CompositeCustomField<Person> {
     private boolean onCommit = false;
 
 
+
     /**
      * @param caption
      */
@@ -111,18 +115,18 @@ public class PersonField extends CompositeCustomField<Person> {
             personSelect.clear();
         });
         selectOrNewContainer.addComponents(personSelect, personSelectConfirmButton, newPersonButton);
-        newPersonButton.addClickListener(e -> {
-            setValue(Person.NewInstance());
-        });
+        newPersonButton.addClickListener(e -> createNewPerson());
 
         // edit person
-        addStyledComponent(cacheField);
+        addStyledComponent(titleCacheField);
         addStyledComponents(initialsField);
-        addStyledComponent(firstNameField);
-        addStyledComponent(lastNameField);
+        addStyledComponent(givenNameField);
+        addStyledComponent(familyNameField);
         addStyledComponent(prefixField);
         addStyledComponent(suffixField);
         addStyledComponent(unlockSwitch);
+        addStyledComponent(nomenclaturalTitleField);
+        addStyledComponent(nomenclaturalTitleButton);
 
         addSizedComponent(root);
     }
@@ -131,9 +135,8 @@ public class PersonField extends CompositeCustomField<Person> {
      *
      */
     private void checkUserPermissions(Person newValue) {
-        boolean userCanEdit = UserHelper.fromSession().userHasPermission(newValue, "DELETE", "UPDATE");
-        boolean isUnsavedEnitity = newValue.getId() == 0;
-        setEnabled(isUnsavedEnitity || userCanEdit);
+        boolean userCanEdit = newValue == null || !newValue.isPersited() || UserHelper.fromSession().userHasPermission(newValue, "DELETE", "UPDATE");
+        setEnabled(userCanEdit);
     }
 
     private void setMode(Mode mode){
@@ -159,11 +162,11 @@ public class PersonField extends CompositeCustomField<Person> {
         selectOrNewContainer.setWidth(100, Unit.PERCENTAGE);
         personSelect.setWidthUndefined();
 
-        root.addComponent(cacheField);
+        root.addComponent(titleCacheField);
         root.addComponent(unlockSwitch);
         root.addComponent(selectOrNewContainer);
 
-        cacheField.setWidth(100, Unit.PERCENTAGE);
+        titleCacheField.setWidth(100, Unit.PERCENTAGE);
 
         prefixField.setWidth(baseWidth, Unit.PERCENTAGE);
         prefixField.setInputPrompt("Prefix");
@@ -171,11 +174,11 @@ public class PersonField extends CompositeCustomField<Person> {
         initialsField.setWidth(baseWidth, Unit.PERCENTAGE);
         initialsField.setInputPrompt("Initials");
 
-        firstNameField.setWidth(baseWidth * 3, Unit.PERCENTAGE);
-        firstNameField.setInputPrompt("Family name");
+        givenNameField.setWidth(baseWidth * 3, Unit.PERCENTAGE);
+        givenNameField.setInputPrompt("Other/given names");
 
-        lastNameField.setWidth(baseWidth * 3, Unit.PERCENTAGE);
-        lastNameField.setInputPrompt("Other/given names");
+        familyNameField.setWidth(baseWidth * 3, Unit.PERCENTAGE);
+        familyNameField.setInputPrompt("Family name");
 
         suffixField.setWidth(baseWidth, Unit.PERCENTAGE);
         suffixField.setInputPrompt("Suffix");
@@ -183,19 +186,34 @@ public class PersonField extends CompositeCustomField<Person> {
         detailsContainer.setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
         detailsContainer.addComponent(prefixField);
         detailsContainer.addComponent(initialsField);
-        detailsContainer.addComponent(firstNameField);
-        detailsContainer.addComponent(lastNameField);
+        detailsContainer.addComponent(givenNameField);
+        detailsContainer.addComponent(familyNameField);
         detailsContainer.addComponent(suffixField);
         root.addComponent(detailsContainer);
 
+        nomenclaturalTitleButton.setHeight(22, Unit.PIXELS);
+        nomenclaturalTitleButton.setDescription("Show the nomenclatural title cache.");
+        nomenclaturalTitleButton.addClickListener( e -> {
+            nomenclaturalTitleField.setVisible(!nomenclaturalTitleField.isVisible());
+            nomenclaturalTitleButtonChooseIcon();
+            if(nomenclaturalTitleField.isVisible()){
+                nomenclaturalTitleField.focus();
+            }
+        });
+        // nomenclaturalTitleField.setCaption("Nomenclatural title");
+        nomenclaturalTitleField.setWidth(100, Unit.PERCENTAGE);
+
+        root.addComponent(nomenclaturalTitleField);
+        root.addComponent(nomenclaturalTitleButton);
+
         unlockSwitch.addValueChangeListener(e -> {
             if(refreshMode()){
                 switch (currentMode) {
                     case CACHE_MODE:
-                        cacheField.focus();
+                        titleCacheField.focus();
                         break;
                     case DETAILS_MODE:
-                        firstNameField.focus();
+                        givenNameField.focus();
                         break;
                     default:
                         break;
@@ -210,13 +228,14 @@ public class PersonField extends CompositeCustomField<Person> {
         addDefaultStyles();
         setMode(Mode.DETAILS_MODE);
 
-        fieldGroup.bind(cacheField, "titleCache");
+        fieldGroup.bind(titleCacheField, "titleCache");
         fieldGroup.bind(prefixField, "prefix");
         fieldGroup.bind(initialsField, "initials");
-        fieldGroup.bind(firstNameField, "firstname");
-        fieldGroup.bind(lastNameField, "lastname");
+        fieldGroup.bind(givenNameField, "givenName");
+        fieldGroup.bind(familyNameField, "familyName");
         fieldGroup.bind(suffixField, "suffix");
         fieldGroup.bind(unlockSwitch, "protectedTitleCache");
+        fieldGroup.bind(nomenclaturalTitleField, "nomenclaturalTitle");
         fieldGroup.setBuffered(false);
 
         updateVisibilities(getValue());
@@ -224,6 +243,13 @@ public class PersonField extends CompositeCustomField<Person> {
         return root;
     }
 
+    /**
+     *
+     */
+    protected void nomenclaturalTitleButtonChooseIcon() {
+        nomenclaturalTitleButton.setIcon(nomenclaturalTitleField.isVisible() ? FontAwesome.ANGLE_UP : FontAwesome.ELLIPSIS_H);
+    }
+
     /**
      *
      * @return true if the mode has changed
@@ -242,10 +268,17 @@ public class PersonField extends CompositeCustomField<Person> {
         return Person.class;
     }
 
+    private void createNewPerson(){
+        Person p = Person.NewInstance();
+        setValue(p);
+    }
+
     @Override
     public void setValue(Person person){
         super.setValue(person);
-        personSelect.setValue(person);
+        if(person != null && person.getId() != 0){
+            personSelect.setValue(person);
+        }
     }
 
     /**
@@ -269,15 +302,19 @@ public class PersonField extends CompositeCustomField<Person> {
 
         detailsContainer.setVisible(person != null);
         unlockSwitch.setVisible(person != null);
-        cacheField.setVisible(person != null);
+        titleCacheField.setVisible(person != null);
+        String nomTitle = nomenclaturalTitleField.getValue();
+        nomenclaturalTitleField.setVisible(nomTitle != null && nomTitle.equals(titleCacheField.getValue()));
+        nomenclaturalTitleButtonChooseIcon();
 
     }
 
     @Override
     protected void addDefaultStyles(){
-        cacheField.addStyleName("cache-field");
+        titleCacheField.addStyleName("cache-field");
         detailsContainer.addStyleName("details-fields");
         unlockSwitch.addStyleName(Switch.DOM_STYLE);
+        nomenclaturalTitleButton.addStyleName(ValoTheme.BUTTON_BORDERLESS_COLORED + " center-h");
     }
 
     /**
@@ -302,8 +339,8 @@ public class PersonField extends CompositeCustomField<Person> {
             Person value = getValue();
             if(value != null && value.getId() == 0){
                 // only if the entity is unsaved!
-                ignoreFields.add(cacheField);
-                cacheField.setValue(null);
+                ignoreFields.add(titleCacheField);
+                titleCacheField.setValue(null);
             }
         }
         return ignoreFields;
index 7ada50e9301de93d8533f65db4aa3b31cb402cc9..871a65384b7193653203d09d3d6e30a117b74ac5 100644 (file)
@@ -8,6 +8,7 @@
 */
 package eu.etaxonomy.cdm.vaadin.component.common;
 
+import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.List;
 
@@ -33,7 +34,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.CdmBaseDeproxyConverter;
 import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
@@ -79,6 +80,8 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
 
     private TeamOrPersonBaseCaptionGenerator.CacheType cacheType;
 
+    protected List<Component> editorComponents = Arrays.asList(removeButton, personButton, teamButton, teamOrPersonSelect);
+
     public TeamOrPersonField(String caption, TeamOrPersonBaseCaptionGenerator.CacheType cacheType){
 
         setCaption(caption);
@@ -121,24 +124,28 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
 
         selectConfirmButton.setEnabled(teamOrPersonSelect.getValue() != null);
         selectConfirmButton.addClickListener(e -> {
-            setValue(teamOrPersonSelect.getValue());
+            // new entitiy being set, reset the readonly state
+//            resetReadOnlyComponents();
+//            getPropertyDataSource().setReadOnly(false);
+            setValue(teamOrPersonSelect.getValue(), false, true);
             teamOrPersonSelect.clear();
             updateToolBarButtonStates();
         });
         removeButton.addClickListener(e -> {
-            setValue(null);
+//            resetReadOnlyComponents();
+//            getPropertyDataSource().setReadOnly(false);
+            setValue(null, false, true);
             updateToolBarButtonStates();
         });
         removeButton.setDescription("Remove");
 
         personButton.addClickListener(e -> {
-            setValue(Person.NewInstance()); // FIXME add SelectField or open select dialog, use ToOneSelect field!!
-            updateToolBarButtonStates();
+            setValue(Person.NewInstance(), false, true); // FIXME add SelectField or open select dialog, use ToOneSelect field!!
+
         });
         personButton.setDescription("Add person");
         teamButton.addClickListener(e -> {
-            setValue(Team.NewInstance()); // FIXME add SelectField or open select dialog, use ToOneSelect field!!
-            updateToolBarButtonStates();
+            setValue(Team.NewInstance(), false, true); // FIXME add SelectField or open select dialog, use ToOneSelect field!!
         });
         teamButton.setDescription("Add team");
 
@@ -178,6 +185,7 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
     @Override
     protected void setInternalValue(TeamOrPersonBase<?> newValue) {
 
+        TeamOrPersonBase<?> oldValue = getValue();
         super.setInternalValue(newValue);
 
         newValue = HibernateProxyHelper.deproxy(newValue);
@@ -188,7 +196,7 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
         if(newValue != null) {
 
             if(Person.class.isAssignableFrom(newValue.getClass())){
-                // value is a Person:
+                // value is a Person
                 compositeWrapper.addComponent(personField);
 
                 personField.setValue((Person) newValue);
@@ -197,32 +205,62 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
             }
             else if(Team.class.isAssignableFrom(newValue.getClass())){
                 // otherwise it a Team
-
                 compositeWrapper.addComponents(titleField, nomenclaturalTitleField, personsListEditor);
 
                 titleField.bindTo(fieldGroup, "titleCache", "protectedTitleCache");
                 nomenclaturalTitleField.bindTo(fieldGroup, "nomenclaturalTitle", "protectedNomenclaturalTitleCache");
                 fieldGroup.setItemDataSource(new BeanItem<Team>((Team)newValue));
+                boolean readonlyState = personsListEditor.isReadOnly();
                 fieldGroup.bind(personsListEditor, "teamMembers"); // here personField is set readonly since setTeamMembers does not exist
-                personsListEditor.setReadOnly(false); // fixing the readonly state
+                personsListEditor.setReadOnly(readonlyState); // fixing the readonly state
 
                 personsListEditor.registerParentFieldGroup(fieldGroup);
 
             } else {
                 setComponentError(new UserError("TeamOrPersonField Error: Unsupported value type: " + newValue.getClass().getName()));
             }
-
+        } else {
+            if(oldValue != null){
+                // value is null --> clean up all nested fields
+                // allow replacing old content in the editor by null
+                setReadOnlyComponents(false);
+                if(oldValue instanceof Person){
+                    personField.unregisterParentFieldGroup(fieldGroup);
+                    personField.setReadOnly(false);
+                    personField.setValue((Person) null);
+                } else {
+                    titleField.unbindFrom(fieldGroup);
+                    nomenclaturalTitleField.unbindFrom(fieldGroup);
+                    fieldGroup.unbind(personsListEditor);
+                    fieldGroup.setItemDataSource((Team)null);
+                    personsListEditor.registerParentFieldGroup(null);
+                    personsListEditor.setReadOnly(false);
+                    personsListEditor.setValue(null);
+                    personsListEditor.registerParentFieldGroup(null);
+                }
+            }
         }
-
+        adaptToUserPermissions(newValue);
         updateToolBarButtonStates();
     }
 
-    private void checkUserPermissions(TeamOrPersonBase<?> newValue) {
-        boolean userCanEdit = UserHelper.fromSession().userHasPermission(newValue, "DELETE", "UPDATE");
-        setEnabled(userCanEdit);
-        personsListEditor.setEnabled(userCanEdit);
+
+    private void adaptToUserPermissions(TeamOrPersonBase teamOrPerson) {
+
+        UserHelper userHelper = UserHelper.fromSession();
+        boolean canEdit = teamOrPerson == null || !teamOrPerson.isPersited() || userHelper.userHasPermission(teamOrPerson, CRUD.UPDATE);
+        if(!canEdit){
+            getPropertyDataSource().setReadOnly(true);
+            setReadOnlyComponents(true);
+        }
     }
 
+//    private void checkUserPermissions(TeamOrPersonBase<?> newValue) {
+//        boolean userCanEdit = UserHelper.fromSession().userHasPermission(newValue, "DELETE", "UPDATE");
+//        setEnabled(userCanEdit);
+//        personsListEditor.setEnabled(userCanEdit);
+//    }
+
     /**
      * {@inheritDoc}
      */
@@ -260,22 +298,28 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
         //need to commit the subfields propagation through the fielGroups is not enough
         personField.commit();
         personsListEditor.commit();
+        if(!getState(false).readOnly && getPropertyDataSource().isReadOnly()){
+            // the TeamOrPersonBase Editor (remove, addPerson, addTeam) is not readonly
+            // thus removing the TeamOrPerson is allowed. In case the datasource is readonly
+            // due to missing user grants for the TeamOrPerson it must be set to readWrite to
+            // make it possible to change the property of the parent
+            getPropertyDataSource().setReadOnly(false);
+        }
+
         super.commit();
 
+        if(hasNullContent()){
+            getPropertyDataSource().setValue(null);
+            setValue(null);
+        }
+
         TeamOrPersonBase<?> bean = getValue();
         if(bean != null && bean instanceof Team){
-
             boolean isUnsaved = bean.getId() == 0;
             if(isUnsaved){
                 UserHelper.fromSession().createAuthorityForCurrentUser(bean, EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
             }
         }
-
-        if(hasNullContent()){
-            getPropertyDataSource().setValue(null);
-            setValue(null);
-
-        }
     }
 
     /**
@@ -345,8 +389,38 @@ public class TeamOrPersonField extends CompositeCustomField<TeamOrPersonBase<?>>
      */
     @Override
     public void setReadOnly(boolean readOnly) {
+//        super.setReadOnly(readOnly); // moved into setEditorReadOnly()
+        setReadOnlyComponents(readOnly);
+    }
+
+    public void setEditorReadOnly(boolean readOnly) {
         super.setReadOnly(readOnly);
-        setDeepReadOnly(readOnly, getContent());
+        for(Component c : editorComponents){
+            applyReadOnlyState(c, readOnly);
+        }
+
+    }
+
+    /**
+     * Reset the readonly state of nested components to <code>false</code>.
+     */
+    protected void resetReadOnlyComponents() {
+        if(!isReadOnly()){
+            setReadOnlyComponents(false);
+        }
+    }
+
+    /**
+     * Set the nested components (team or person fields) to read only but
+     * keep the state of the <code>TeamOrPersonField</code> untouched so
+     * that the <code>teamOrPersonSelect</code>, <code>removeButton</code>,
+     * <code>personButton</code> and <code>teamButton</code> stay operational.
+     *
+     * @param readOnly
+     */
+    protected void setReadOnlyComponents(boolean readOnly) {
+        setDeepReadOnly(readOnly, getContent(), editorComponents);
+        updateCaptionReadonlyNotice(readOnly);
     }
 
 
index 7c407b04341c9360bf2edfd5e9836f5113283cfa..f0c464b392460432d6190f16dfa81b7741866cde 100644 (file)
@@ -1,5 +1,5 @@
 /**
-* Copyright (C) 2017 EDIT
+* Copyright (C) 2018 EDIT
 * European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
 *
 */
 package eu.etaxonomy.cdm.vaadin.component.common;
 
-import java.util.HashSet;
-import java.util.Set;
-
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.fieldgroup.BeanFieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.util.BeanItem;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.server.FontAwesome;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CssLayout;
-import com.vaadin.ui.CustomField;
-import com.vaadin.ui.GridLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.themes.ValoTheme;
-
 import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
-import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
-import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
-import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStyles;
-import eu.etaxonomy.cdm.vaadin.util.formatter.DateTimeFormat;
-import eu.etaxonomy.cdm.vaadin.util.formatter.TimePeriodFormatter;
 
 /**
  * @author a.kohlbecker
- * @since Apr 6, 2017
+ * @since May 17, 2018
  *
  */
-public class TimePeriodField extends CustomField<TimePeriod> {
-
-    private static final long serialVersionUID = -7377778547595966252L;
-
-    private static final String PRIMARY_STYLE = "v-time-period-field";
-
-    private BeanFieldGroup<TimePeriod> fieldGroup = new BeanFieldGroup<>(TimePeriod.class);
-
-    TextField parseField = null;
-
-    TextField freeText = null;
-
-    Label toLabel = null;
-
-    GridLayout grid = new GridLayout(3, 4);
-
-    CssLayout detailsView = new CssLayout();
-
-    //TODO implement custom button textfield which does not require a gridLayout
-    GridLayout buttonTextField = new GridLayout(2, 1);
-    GridLayout simpleView = new GridLayout(2, 1);
-
-    TextField cacheField = new TextFieldNFix();
-
-    Set<Component> styledComponents = new HashSet<>();
-
-    private TimePeriodFormatter timePeriodFormatter = new TimePeriodFormatter(DateTimeFormat.ISO8601_DATE);
-
-    /**
-     *
-     */
-    public TimePeriodField() {
-        super();
-
-    }
-
-    /**
-     * @param string
-     */
-    public TimePeriodField(String string) {
-        this();
-        setCaption(string);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected Component initContent() {
-
-        super.setPrimaryStyleName(PRIMARY_STYLE);
-
-        CssLayout root = new CssLayout();
-
-        initSimpleView();
-        initDetailsView();
-
-        root.addComponent(simpleView);
-        root.addComponent(detailsView);
-
-        applyDefaultStyles();
-
-        showSimple();
-
-        return root;
-    }
-
-    /**
-     *
-     */
-    private void initSimpleView() {
-
-        Button showDetailsButton = new Button(FontAwesome.CALENDAR);
-        showDetailsButton.addClickListener(e -> showDetails());
-        cacheField.setWidth(353, Unit.PIXELS); // FIXME 100% does not work
-
-        simpleView.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
-        simpleView.setWidth(100, Unit.PERCENTAGE);
-        simpleView.addComponent(showDetailsButton, 0, 0);
-        simpleView.addComponent(cacheField, 1, 0);
-        simpleView.setColumnExpandRatio(1, 0.9f);
-    }
-
-    /**
-     *
-     */
-    private void initDetailsView() {
-
-        parseField = new TextFieldNFix();
-        // parseField.setWidth(100, Unit.PERCENTAGE);
-        parseField.setInputPrompt("This field will parse the entered time period");
-        parseField.addTextChangeListener(e -> parseInput(e));
-        parseField.setWidth(100, Unit.PERCENTAGE);
+public class TimePeriodField extends AbstractTimePeriodField<TimePeriod> {
 
-        Button closeDetailsButton = new Button(FontAwesome.CLOSE);
-        closeDetailsButton.addClickListener(e -> {
-            try {
-                fieldGroup.commit();
-            } catch (CommitException e1) {
-                // TODO Auto-generated catch block
-                e1.printStackTrace();
-            }
-            updateCacheField();
-            showSimple();
-        });
-
-        buttonTextField.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
-        buttonTextField.setWidth(100, Unit.PERCENTAGE);
-        buttonTextField.addComponent(closeDetailsButton, 0, 0);
-        buttonTextField.addComponent(parseField, 1, 0);
-        buttonTextField.setColumnExpandRatio(1, 1.0f);
-
-        PartialDateField startDate = new PartialDateField("Start");
-        startDate.setInputPrompt("dd.mm.yyyy");
-        PartialDateField endDate = new PartialDateField("End");
-        endDate.setInputPrompt("dd.mm.yyyy");
-        freeText = new TextFieldNFix("FreeText");
-        freeText.setWidth(100, Unit.PERCENTAGE);
-
-        fieldGroup.bind(startDate, "start");
-        fieldGroup.bind(endDate, "end");
-        fieldGroup.bind(freeText, "freeText");
-
-        toLabel = new Label("\u2014"); // EM DASH : 0x2014
-
-        int row = 0;
-        grid.addComponent(buttonTextField, 0, row, 2, row);
-        row++;
-        grid.addComponent(startDate, 0, row);
-        grid.addComponent(toLabel, 1, row);
-        grid.setComponentAlignment(toLabel, Alignment.BOTTOM_CENTER);
-        grid.addComponent(endDate, 2, row);
-        row++;
-        grid.addComponent(freeText, 0, row, 2, row);
-
-        // apply the style of the container to all child components. E.g. make all tiny
-        addStyleName((getStyleName()));
-
-        detailsView.setStyleName("margin-wrapper");
-        detailsView.addComponent(grid);
-
-    }
-
-
-    /**
-     * @return
-     */
-    private void showSimple() {
-        detailsView.setVisible(false);
-        simpleView.setVisible(true);
-    }
-
-    /**
-     * @return
-     */
-    private void showDetails() {
-        detailsView.setVisible(true);
-        simpleView.setVisible(false);
-    }
-
-    /**
-     * @param e
-     * @return
-     */
-    private void parseInput(TextChangeEvent e) {
-        if(!e.getText().isEmpty()){
-            TimePeriod parsedPeriod = TimePeriodParser.parseString(e.getText());
-            fieldGroup.setItemDataSource(new BeanItem<TimePeriod>(parsedPeriod));
-        }
-    }
-
-    /**
-     *
-     */
-    private void applyDefaultStyles() {
-        if(parseField != null) {
-            parseField.addStyleName(RegistrationStyles.HELPER_FIELD);
-            toLabel.addStyleName("to-label");
-            buttonTextField.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
-        }
-
-    }
-
-    @Override
-    protected void setInternalValue(TimePeriod newValue) {
-        if(newValue == null){
-            newValue = TimePeriod.NewInstance();
-        }
-        super.setInternalValue(newValue);
-            fieldGroup.setItemDataSource(new BeanItem<TimePeriod>(newValue));
-        updateCacheField();
-    }
-
-    /**
-     * @param newValue
-     */
-    private void updateCacheField() {
-        TimePeriod newValue = fieldGroup.getItemDataSource().getBean();
-        cacheField.setReadOnly(false);
-        cacheField.setValue(timePeriodFormatter.print(newValue));
-        cacheField.setReadOnly(true);
-    }
-
-    @Override
-    public void setStyleName(String style) {
-        super.setStyleName(style);
-        grid.iterator().forEachRemaining(c -> c.setStyleName(style));
-        buttonTextField.iterator().forEachRemaining(c -> c.setStyleName(style));
-        simpleView.iterator().forEachRemaining(c -> c.setStyleName(style));
-        applyDefaultStyles();
-    }
-
-    @Override
-    public void addStyleName(String style) {
-        super.addStyleName(style);
-        grid.iterator().forEachRemaining(c -> c.addStyleName(style));
-        simpleView.iterator().forEachRemaining(c -> {
-            c.addStyleName(style);
-        });
-
-        buttonTextField.iterator().forEachRemaining(c -> c.addStyleName(style));
-    }
+    private static final long serialVersionUID = -8399562684225562651L;
 
     /**
      * {@inheritDoc}
@@ -275,17 +31,9 @@ public class TimePeriodField extends CustomField<TimePeriod> {
      * {@inheritDoc}
      */
     @Override
-    public void commit() throws SourceException, InvalidValueException {
-        super.commit();
-        try {
-            fieldGroup.commit();
-        } catch (CommitException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-
-
+    protected TimePeriod newModelInstance() {
 
+        return TimePeriod.NewInstance();
+    }
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/common/VerbatimTimePeriodField.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/common/VerbatimTimePeriodField.java
new file mode 100644 (file)
index 0000000..e379eca
--- /dev/null
@@ -0,0 +1,55 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.component.common;
+
+import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
+
+/**
+ * @author a.kohlbecker
+ * @since May 17, 2018
+ *
+ */
+public class VerbatimTimePeriodField extends AbstractTimePeriodField<VerbatimTimePeriod> {
+
+    private static final long serialVersionUID = -8399562684225562651L;
+
+
+
+    /**
+     *
+     */
+    public VerbatimTimePeriodField() {
+        super();
+    }
+
+    /**
+     * @param string
+     */
+    public VerbatimTimePeriodField(String string) {
+        super(string);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<? extends VerbatimTimePeriod> getType() {
+        return VerbatimTimePeriod.class;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected VerbatimTimePeriod newModelInstance() {
+
+        return VerbatimTimePeriod.NewVerbatimInstance();
+    }
+
+}
similarity index 93%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/AreaAndTaxonSettingsConfigWindow.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/AreaAndTaxonSettingsConfigWindow.java
index 9c961fad4b1360c31bc385a11b84a494a3863e7d..feb29fd31b54c84daac5da4584a5fae70747c61b 100644 (file)
@@ -6,7 +6,7 @@
  * 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.cdm.vaadin.view.distributionStatus;
+package eu.etaxonomy.cdm.vaadin.component.distributionStatus;
 
 import java.sql.SQLException;
 import java.util.ArrayList;
@@ -29,8 +29,9 @@ import com.vaadin.ui.Button.ClickEvent;
 import com.vaadin.ui.Button.ClickListener;
 import com.vaadin.ui.ComboBox;
 import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.ListSelect;
 import com.vaadin.ui.Notification;
+import com.vaadin.ui.OptionGroup;
+import com.vaadin.ui.Panel;
 import com.vaadin.ui.Table.ColumnHeaderMode;
 import com.vaadin.ui.TextField;
 import com.vaadin.ui.Tree.ExpandEvent;
@@ -52,6 +53,7 @@ import eu.etaxonomy.cdm.vaadin.container.TaxonNodeContainer;
 import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory;
 import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
+import eu.etaxonomy.cdm.vaadin.view.distributionStatus.IDistributionTableView;
 import eu.etaxonomy.cdm.vaadin.view.distributionStatus.settings.AreaAndTaxonSettingsPresenter;
 
 /**
@@ -67,7 +69,7 @@ public class AreaAndTaxonSettingsConfigWindow
     private ComboBox classificationBox;
     private TextField taxonFilter;
     private ComboBox distAreaBox;
-    private ListSelect namedAreaList;
+    private OptionGroup namedAreaList;
     private TreeTable taxonTree;
     private IDistributionTableView distributionTableView;
 
@@ -98,6 +100,8 @@ public class AreaAndTaxonSettingsConfigWindow
         RowId classificationRow = null;
         if(classification!=null){
             classificationRow = new RowId(classification.getId());
+            TaxonNode root = CdmSpringContextHelper.getClassificationService().getRootNode(classification.getUuid());
+            showClassificationTaxa(root);
         }
         else if(classificationBox.getItemIds().size()==1){
             //only one classification exists
@@ -105,7 +109,6 @@ public class AreaAndTaxonSettingsConfigWindow
         }
         if(classificationRow!=null){
             classificationBox.setValue(classificationRow);
-            showClassificationTaxa(getUuidAndTitleCacheFromRowId(classificationRow));
         }
 
         classificationBox.addValueChangeListener(this);
@@ -182,10 +185,13 @@ public class AreaAndTaxonSettingsConfigWindow
         distAreaBox.setWidth("100%"); //$NON-NLS-1$
 
         // named areas
-        namedAreaList = new ListSelect();
-        namedAreaList.setCaption(Messages.getLocalizedString(Messages.AreaAndTaxonSettingsConfigWindow_AREAS));
-        namedAreaList.setSizeFull();
+        namedAreaList = new OptionGroup();
         namedAreaList.setMultiSelect(true);
+        namedAreaList.setSizeFull();
+        Panel namedAreaPanel = new Panel(Messages.getLocalizedString(Messages.AreaAndTaxonSettingsConfigWindow_AREAS));
+        namedAreaPanel.setContent(new VerticalLayout(namedAreaList));
+        namedAreaPanel.setSizeFull();
+
 
         //taxonomy
         taxonTree = new TreeTable(Messages.getLocalizedString(Messages.AreaAndTaxonSettingsConfigWindow_TAXONOMY));
@@ -197,9 +203,9 @@ public class AreaAndTaxonSettingsConfigWindow
         taxonTree.setMultiSelect(true);
 
         leftContainer.addComponent(distAreaBox);
-        leftContainer.addComponent(namedAreaList);
+        leftContainer.addComponent(namedAreaPanel);
         leftContainer.setExpandRatio(distAreaBox, 0.1f);
-        leftContainer.setExpandRatio(namedAreaList, 0.9f);
+        leftContainer.setExpandRatio(namedAreaPanel, 0.9f);
         leftContainer.setSizeFull();
 
         rightContainer.addComponent(classificationBox);
@@ -229,7 +235,8 @@ public class AreaAndTaxonSettingsConfigWindow
         Property<?> property = event.getProperty();
         if(property==classificationBox){
                UuidAndTitleCache<TaxonNode> parent = getUuidAndTitleCacheFromRowId(classificationBox.getValue());
-            showClassificationTaxa(parent);
+               TaxonNode root = CdmSpringContextHelper.getClassificationService().getRootNode(parent.getUuid());
+               showClassificationTaxa(root);
         }
         else if(property==taxonFilter){
             String filterText = taxonFilter.getValue();
@@ -251,7 +258,8 @@ public class AreaAndTaxonSettingsConfigWindow
                }
                else{
                        UuidAndTitleCache<TaxonNode> parent = getUuidAndTitleCacheFromRowId(classificationBox.getValue());
-                       showClassificationTaxa(parent);
+                       TaxonNode root = CdmSpringContextHelper.getClassificationService().getRootNode(parent.getUuid());
+                       showClassificationTaxa(root);
                }
             }
         }
@@ -303,7 +311,7 @@ public class AreaAndTaxonSettingsConfigWindow
         ((TaxonNodeContainer) taxonTree.getContainerDataSource()).addChildItems(parent);
     }
 
-    private void showClassificationTaxa(UuidAndTitleCache<TaxonNode> rootNode) {
+    private void showClassificationTaxa(TaxonNode rootNode) {
         final Collection<UuidAndTitleCache<TaxonNode>> children = CdmSpringContextHelper.getTaxonNodeService().listChildNodesAsUuidAndTitleCache(rootNode);
         // Enable polling and set frequency to 0.5 seconds
         UI.getCurrent().setPollInterval(500);
similarity index 98%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/component/DetailWindow.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/DetailWindow.java
index 8ad76f63562efb8675ad55b0d547340471d52d14..df6b88229b798c4e6cc2eee4b5cd0012b7b7c63b 100644 (file)
@@ -1,4 +1,4 @@
-package eu.etaxonomy.cdm.vaadin.component;
+package eu.etaxonomy.cdm.vaadin.component.distributionStatus;
 import java.util.Collection;
 
 import org.springframework.context.annotation.Scope;
similarity index 87%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/DistributionStatusSettingsConfigWindow.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/DistributionStatusSettingsConfigWindow.java
index bf9e58b594beefd96ed07c8641d29a62e890b053..2bbdd19640ed011222e6e2f5c2246113763e31c1 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.view.distributionStatus;
+package eu.etaxonomy.cdm.vaadin.component.distributionStatus;
 
 import com.vaadin.data.Property;
 import com.vaadin.data.Property.ValueChangeEvent;
@@ -18,16 +18,18 @@ import com.vaadin.ui.Button.ClickEvent;
 import com.vaadin.ui.Button.ClickListener;
 import com.vaadin.ui.CheckBox;
 import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.ListSelect;
+import com.vaadin.ui.OptionGroup;
+import com.vaadin.ui.Panel;
 import com.vaadin.ui.VerticalLayout;
 
 import eu.etaxonomy.cdm.i18n.Messages;
 import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
+import eu.etaxonomy.cdm.vaadin.view.distributionStatus.IDistributionTableView;
 import eu.etaxonomy.cdm.vaadin.view.distributionStatus.settings.DistributionStatusSettingsPresenter;
 
 /**
  * @author alex
- * @date 22.04.2015
+ * @since 22.04.2015
  *
  */
 public class DistributionStatusSettingsConfigWindow
@@ -35,7 +37,7 @@ public class DistributionStatusSettingsConfigWindow
             implements ValueChangeListener, ClickListener{
 
        private static final long serialVersionUID = -8220442386869594032L;
-    private ListSelect distStatusSelect;
+    private OptionGroup distStatusSelect;
     private CheckBox boxToggleAbbreviatedLabels;
     private IDistributionTableView distributionTableView;
 
@@ -74,19 +76,21 @@ public class DistributionStatusSettingsConfigWindow
         mainLayout.setSpacing(true);
 
         //distribution status
-        distStatusSelect = new ListSelect(Messages.getLocalizedString(Messages.DistributionStatusSettingsConfigWindow_DISTRIBUTION_STATUS));
+        distStatusSelect = new OptionGroup();
         distStatusSelect.setImmediate(false);
         distStatusSelect.setMultiSelect(true);
         distStatusSelect.setSizeFull();
-        distStatusSelect.setWidth("100%"); //$NON-NLS-1$
+        Panel distStatusPanel = new Panel(Messages.getLocalizedString(Messages.DistributionStatusSettingsConfigWindow_DISTRIBUTION_STATUS));
+        distStatusPanel.setContent(new VerticalLayout(distStatusSelect));
+        distStatusPanel.setSizeFull();
 
         //toggle abbreviated labels
         boxToggleAbbreviatedLabels = new CheckBox(Messages.getLocalizedString(Messages.DistributionStatusSettingsConfigWindow_SHOW_ABBREVIATED_LABELS), DistributionEditorUtil.isAbbreviatedLabels());
         boxToggleAbbreviatedLabels.setImmediate(true);
 
         mainLayout.addComponent(boxToggleAbbreviatedLabels);
-        mainLayout.addComponent(distStatusSelect);
-        mainLayout.setExpandRatio(distStatusSelect, 1);
+        mainLayout.addComponent(distStatusPanel);
+        mainLayout.setExpandRatio(distStatusPanel, 1);
         mainLayout.setSizeFull();
 
         //button toolbar
similarity index 95%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/component/DistributionToolbar.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/DistributionToolbar.java
index 371a8dd1f935dc1e75f447a87ba0bc3aea77e89f..5413a671a2aae245e3227d8d46946aae51b8b900 100644 (file)
@@ -1,4 +1,4 @@
-package eu.etaxonomy.cdm.vaadin.component;
+package eu.etaxonomy.cdm.vaadin.component.distributionStatus;
 
 import java.io.Serializable;
 
@@ -67,6 +67,8 @@ public class DistributionToolbar extends HorizontalLayout implements Serializabl
 
        private final Button settingsButton =  new Button(Messages.getLocalizedString(Messages.DistributionToolbar_STATUS));
 
+       private final Button helpButton =  new Button(Messages.getLocalizedString(Messages.DistributionToolbar_HELP));
+
 //     private final Authentication authentication;
 //     private ExcelExporter exporter = new ExcelExporter();
 
@@ -89,11 +91,12 @@ public class DistributionToolbar extends HorizontalLayout implements Serializabl
                distributionSettingsButton.setIcon(new ThemeResource("icons/32/settings_1.png")); //$NON-NLS-1$
 
         HorizontalLayout leftLayout = new HorizontalLayout();
-        leftLayout.addComponent(detailButton);
-        leftLayout.addComponent(settingsButton);
         leftLayout.addComponent(distributionSettingsButton);
+        leftLayout.addComponent(settingsButton);
+        leftLayout.addComponent(detailButton);
 
                HorizontalLayout rightLayout = new HorizontalLayout();
+               rightLayout.addComponent(helpButton);
                rightLayout.addComponent(loginButton);
                rightLayout.addComponent(logoutButton);
         rightLayout.addComponent(userButton);
@@ -178,4 +181,7 @@ public class DistributionToolbar extends HorizontalLayout implements Serializabl
                return detailButton;
        }
 
+   public Button getHelpButton() {
+        return helpButton;
+    }
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/HelpWindow.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/HelpWindow.java
new file mode 100644 (file)
index 0000000..38c29e1
--- /dev/null
@@ -0,0 +1,71 @@
+// $Id$
+/**
+* Copyright (C) 2018 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.cdm.vaadin.component.distributionStatus;
+
+import java.io.IOException;
+
+import org.apache.commons.io.IOUtils;
+
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.RichTextArea;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+import eu.etaxonomy.cdm.i18n.Messages;
+import eu.etaxonomy.cdm.vaadin.view.distributionStatus.IDistributionTableView;
+
+/**
+ * @author freimeier
+ * @since 9 Mar 2018
+ *
+ */
+public class HelpWindow extends CustomComponent{
+    private Window window;
+    private AbstractOrderedLayout mainLayout;
+    private IDistributionTableView view;
+
+    public HelpWindow(IDistributionTableView view) {
+        this.view = view;
+        buildMainLayout();
+    }
+
+    private AbstractLayout buildMainLayout() {
+        mainLayout = new VerticalLayout();
+        mainLayout.setSizeFull();
+        String text = "";
+        try {
+            text = IOUtils.toString(this.getClass().getResourceAsStream(Messages.getLocalizedString(Messages.HelpWindow_RESOURCE)),
+                    "UTF-8");
+        } catch (IOException e) {
+        }
+
+        RichTextArea textArea = new RichTextArea();
+        textArea.setValue(text);
+        textArea.setReadOnly(true);
+        textArea.setWidth("95%");
+        mainLayout.addComponent(textArea);
+        mainLayout.setComponentAlignment(textArea, Alignment.TOP_CENTER);
+
+        return mainLayout;
+    }
+
+    public Window createWindow(String caption) {
+        window = new Window();
+        window.setModal(true);
+        window.setWidth("40%"); //$NON-NLS-1$
+        window.setHeight("70%"); //$NON-NLS-1$
+        window.setCaption(caption);
+        window.setContent(mainLayout);
+        return window;
+    }
+}
similarity index 97%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/view/distributionStatus/SettingsDialogWindowBase.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/component/distributionStatus/SettingsDialogWindowBase.java
index 1ef22964a8205f80bb930fd9104f8b62ba322325..eec7efb7d39061d3513ea1d8909c2c066dbff374 100644 (file)
@@ -1,4 +1,4 @@
-package eu.etaxonomy.cdm.vaadin.view.distributionStatus;
+package eu.etaxonomy.cdm.vaadin.component.distributionStatus;
 
 import com.vaadin.ui.AbstractLayout;
 import com.vaadin.ui.AbstractOrderedLayout;
index 3f44d4cb2c804904b31dee8e9b81e52514ccda4d..063a6aec2f7fc0f44316f42b0d129d48cff51822 100644 (file)
@@ -13,6 +13,7 @@ import static eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStyles.
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.Set;
+import java.util.UUID;
 
 import org.joda.time.DateTime;
 import org.joda.time.format.ISODateTimeFormat;
@@ -33,6 +34,7 @@ import com.vaadin.ui.Link;
 import com.vaadin.ui.Panel;
 import com.vaadin.ui.themes.ValoTheme;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -40,11 +42,11 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEvent;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.security.PermissionDebugUtils;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.PermissionDebugUtils;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
+import eu.etaxonomy.cdm.vaadin.theme.EditValoTheme;
 import eu.etaxonomy.cdm.vaadin.util.formatter.DateTimeFormat;
 import eu.etaxonomy.cdm.vaadin.util.formatter.TimePeriodFormatter;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
 import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationTypeConverter;
 import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationWorksetViewBean;
 import eu.etaxonomy.vaadin.event.EditorActionType;
@@ -59,10 +61,12 @@ import eu.etaxonomy.vaadin.ui.navigation.NavigationEvent;
 public class RegistrationItem extends GridLayout {
 
 
-    /**
-     *
-     */
-    public static final String STYLE_NAME_BLOCKED = "blocked";
+
+    public static final String VALIDATION_PROBLEMS = "validationProblems";
+
+    public static final String MESSAGES = "messages";
+
+    public static final String BLOCKED_BY = "blockedBy";
 
     private static final String LABEL_CAPTION_CREATED = "Created";
 
@@ -188,16 +192,16 @@ public class RegistrationItem extends GridLayout {
         this.regDto = regDto;
 
         NavigationEvent navigationEvent = null;
-        if(regDto.getCitationID() != null) {
+        if(regDto.getCitationUuid() != null) {
             navigationEvent = new NavigationEvent(
                     RegistrationWorksetViewBean.NAME,
-                    Integer.toString(regDto.getCitationID())
+                    regDto.getCitationUuid().toString()
                     );
         } else {
             setComponentError(new UserError("Citation is missing"));
         }
 
-        updateUI(regDto.getBibliographicCitationString(), regDto.getCreated(), regDto.getDatePublished(), regDto.getMessages().size(),
+        updateUI(regDto.getBibliographicCitationString(), regDto.getCreated(), regDto.getDatePublished(), regDto.getValidationProblems().size(),
                 navigationEvent, null, regDto, regDto.getSubmitterUserName());
     }
 
@@ -205,11 +209,11 @@ public class RegistrationItem extends GridLayout {
         this.parentView = parentView;
 
         ReferenceEditorAction referenceEditorAction = null;
-        if(workingSet.getCitationId() != null){
-            if(UserHelper.fromSession().userHasPermission(Reference.class, workingSet.getCitationId(), CRUD.UPDATE)){
-                referenceEditorAction = new ReferenceEditorAction(EditorActionType.EDIT, workingSet.getCitationId(), null, parentView);
+        if(workingSet.getCitationUuid() != null){
+            if(UserHelper.fromSession().userHasPermission(Reference.class, workingSet.getCitationUuid(), CRUD.UPDATE)){
+                referenceEditorAction = new ReferenceEditorAction(EditorActionType.EDIT, workingSet.getCitationUuid(), null, null, parentView);
             }
-            PermissionDebugUtils.addGainPerEntityPermissionButton(this, Reference.class, workingSet.getCitationId(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
+            PermissionDebugUtils.addGainPerEntityPermissionButton(this, Reference.class, workingSet.getCitationUuid(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
         } else {
             if(UserHelper.fromSession().userHasPermission(Reference.class, CRUD.CREATE, null, null, parentView)){
                 referenceEditorAction = new ReferenceEditorAction(EditorActionType.ADD);
@@ -219,7 +223,7 @@ public class RegistrationItem extends GridLayout {
         String submitterName = null;
         if(workingSet.getRegistrationDTOs().size() > 0){
             datePublished = workingSet.getRegistrationDTOs().get(0).getDatePublished();
-            submitterName = workingSet.getRegistrationDTOs().get(0).getSubmitterUserName();
+            // submitterName = workingSet.getRegistrationDTOs().get(0).getSubmitterUserName();
         }
         updateUI(workingSet.getCitation(), workingSet.getCreated(), datePublished, workingSet.messagesCount(),
                 referenceEditorAction, FontAwesome.EDIT, null, submitterName);
@@ -242,17 +246,17 @@ public class RegistrationItem extends GridLayout {
             getMessageButton().addClickListener(e -> {
                 ShowDetailsEvent detailsEvent;
                 if(regDto != null){
-                    detailsEvent = new ShowDetailsEvent<RegistrationDTO, Integer>(
+                    detailsEvent = new ShowDetailsEvent<RegistrationDTO, UUID>(
                             e,
                             RegistrationDTO.class,
-                            regDto.getId(),
-                            "messages");
+                            regDto.getUuid(),
+                            VALIDATION_PROBLEMS);
                 } else {
-                    detailsEvent = new ShowDetailsEvent<RegistrationWorkingSet, Integer>(
+                    detailsEvent = new ShowDetailsEvent<RegistrationWorkingSet, UUID>(
                             e,
                             RegistrationWorkingSet.class,
                             null,
-                            "messages");
+                            VALIDATION_PROBLEMS);
                 }
                 publishEvent(detailsEvent);
                 }
@@ -263,7 +267,7 @@ public class RegistrationItem extends GridLayout {
 
         if(regDto != null && regDto.isBlocked()){
             getBlockedByButton().setEnabled(true);
-            getBlockedByButton().addStyleName(STYLE_NAME_BLOCKED);
+            getBlockedByButton().addStyleName(EditValoTheme.BUTTON_HIGHLITE);
         }
 
         labelMarkup.append(citationString);
@@ -298,6 +302,7 @@ public class RegistrationItem extends GridLayout {
 
         getCitationSummaryLabel().setValue(labelMarkup.toString());
         getSubmitterLabel().setValue(submitterUserName);
+        getSubmitterLabel().setVisible(submitterUserName != null);
         updateDateLabels(created, datePublished, registrationDate);
     }
 
@@ -325,8 +330,8 @@ public class RegistrationItem extends GridLayout {
         }
     }
 
-    public int getRegistrationId(){
-        return regDto.getId();
+    public UUID getRegistrationUuid(){
+        return regDto.getUuid();
     }
 
     /**
@@ -379,7 +384,7 @@ public class RegistrationItem extends GridLayout {
     }
 
     /**
-     * @return the messageButton
+     * @return the validationProblemsButton
      */
     public Button getMessageButton() {
         return messageButton;
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemButtons.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemButtons.java
new file mode 100644 (file)
index 0000000..1daabaf
--- /dev/null
@@ -0,0 +1,74 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.component.registration;
+
+import com.vaadin.server.FontAwesome;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.themes.ValoTheme;
+
+/**
+ * @author a.kohlbecker
+ * @since Feb 27, 2018
+ *
+ */
+public class RegistrationItemButtons extends CssLayout {
+
+
+    private static final long serialVersionUID = 6807283645907730475L;
+
+    Button blockingRegistrationButton;
+
+    Button validationProblemsButton;
+
+    Button messagesButton;
+
+    public RegistrationItemButtons() {
+
+          setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
+
+          blockingRegistrationButton = new Button(FontAwesome.BAN);
+          blockingRegistrationButton.setEnabled(false);
+
+          validationProblemsButton = new Button(FontAwesome.WARNING);
+          validationProblemsButton.setEnabled(false);
+
+          messagesButton = new Button(FontAwesome.COMMENT);
+          messagesButton.setEnabled(false);
+
+          addComponents(blockingRegistrationButton, validationProblemsButton, messagesButton);
+    }
+
+    /**
+     * @return the blockingRegistrationButton
+     */
+    public Button getBlockingRegistrationButton() {
+        return blockingRegistrationButton;
+    }
+
+    /**
+     * @return the validationProblemsButton
+     */
+    public Button getValidationProblemsButton() {
+        return validationProblemsButton;
+    }
+
+    /**
+     * @return the messagesButton
+     */
+    public Button getMessagesButton() {
+        return messagesButton;
+    }
+
+
+
+
+
+
+}
similarity index 84%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemEditButtonGroup.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemNameAndTypeButtons.java
index 595c5c0e367d0eb43c8a595fa81efc6866297076..b3ad2d18adadc3ae8db512be63cb0357bc12307b 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.vaadin.component.registration;
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 
@@ -21,17 +22,18 @@ import com.vaadin.ui.Label;
 import com.vaadin.ui.Link;
 import com.vaadin.ui.themes.ValoTheme;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSet;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSetType;
+import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
-import eu.etaxonomy.cdm.vaadin.security.PermissionDebugUtils;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSetType;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
+import eu.etaxonomy.cdm.vaadin.permission.PermissionDebugUtils;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.component.CompositeStyledComponent;
 
 /**
@@ -39,9 +41,9 @@ import eu.etaxonomy.vaadin.component.CompositeStyledComponent;
  * @since May 19, 2017
  *
  */
-public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
+public class RegistrationItemNameAndTypeButtons extends CompositeStyledComponent {
 
-    private final static Logger logger = Logger.getLogger(RegistrationItemEditButtonGroup.class);
+    private final static Logger logger = Logger.getLogger(RegistrationItemNameAndTypeButtons.class);
 
 
     private static final String DEFAULT_BUTTON_STYLES = "";
@@ -62,7 +64,7 @@ public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
 
     private Link identifierLink;
 
-    public RegistrationItemEditButtonGroup(RegistrationDTO regDto) {
+    public RegistrationItemNameAndTypeButtons(RegistrationDTO regDto) {
 
         boolean isRegistrationLocked = EnumSet.of(
                 RegistrationStatus.PUBLISHED, RegistrationStatus.REJECTED)
@@ -73,14 +75,14 @@ public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
         if(regDto.getNameRef() != null){
             Button nameButton = new Button("Name:");
             nameButton.setDescription("Edit the Name");
-            nameIdButton = new IdButton<TaxonName>(TaxonName.class, regDto.getNameRef().getId(), nameButton);
+            nameIdButton = new IdButton<TaxonName>(TaxonName.class, regDto.getNameRef().getUuid(), nameButton);
             Label nameLabel = new Label(regDto.getNameRef().getLabel());
             nameLabel.setWidthUndefined();
             boolean userHasPermission = UserHelper.fromSession().userHasPermission(regDto.registration().getName(), CRUD.UPDATE);
             nameButton.setReadOnly(isRegistrationLocked || ! userHasPermission);
 
             addComponent(nameIdButton.getButton());
-            PermissionDebugUtils.addGainPerEntityPermissionButton(this, TaxonName.class, regDto.getNameRef().getId(),
+            PermissionDebugUtils.addGainPerEntityPermissionButton(this, TaxonName.class, regDto.getNameRef().getUuid(),
                     EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
             addComponent(nameLabel);
         } else {
@@ -90,6 +92,7 @@ public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
                 addComponent(nameLabel);
             }
         }
+        boolean userHasAddPermission = UserHelper.fromSession().userHasPermission(Registration.class, regDto.getUuid(), CRUD.UPDATE);
         if(regDto.getOrderdTypeDesignationWorkingSets() != null){
             for(TypedEntityReference<TypeDesignationBase<?>> baseEntityRef : regDto.getOrderdTypeDesignationWorkingSets().keySet()) {
                 TypeDesignationWorkingSet typeDesignationWorkingSet = regDto.getOrderdTypeDesignationWorkingSets().get(baseEntityRef);
@@ -97,12 +100,12 @@ public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
                 String buttonLabel = SpecimenOrObservationBase.class.isAssignableFrom(baseEntityRef.getType()) ? "Type": "NameType";
                 Button tdButton = new Button(buttonLabel + ":");
                 tdButton.setDescription("Edit the type designation working set");
-                boolean userHasPermission = UserHelper.fromSession().userHasPermission(baseEntityRef.getType(), baseEntityRef.getId(), CRUD.UPDATE);
-                tdButton.setReadOnly(isRegistrationLocked || !userHasPermission);
+                boolean userHasUpdatePermission = UserHelper.fromSession().userHasPermission(baseEntityRef.getType(), baseEntityRef.getUuid(), CRUD.UPDATE, CRUD.DELETE);
+                tdButton.setReadOnly(isRegistrationLocked || !userHasUpdatePermission);
                 addComponent(tdButton);
 
                 PermissionDebugUtils.addGainPerEntityPermissionButton(this, SpecimenOrObservationBase.class,
-                        baseEntityRef.getId(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), RegistrationStatus.PREPARATION.name());
+                        baseEntityRef.getUuid(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), RegistrationStatus.PREPARATION.name());
 
                 typeDesignationButtons.add(new TypeDesignationWorkingSetButton(
                         typeDesignationWorkingSet.getWorkingsetType(),
@@ -126,8 +129,8 @@ public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
             }
         }
         addTypeDesignationButton = new Button(FontAwesome.PLUS);
-        addTypeDesignationButton.setDescription("Add a new type designation workingset");
-        addTypeDesignationButton.setVisible(!isRegistrationLocked);
+        addTypeDesignationButton.setDescription("Add a new type designation workingset.");
+        addTypeDesignationButton.setVisible(!isRegistrationLocked && userHasAddPermission);
         addComponent(addTypeDesignationButton);
 
         //TODO make responsive and use specificIdentifier in case the space gets too narrow
@@ -205,21 +208,21 @@ public class RegistrationItemEditButtonGroup extends CompositeStyledComponent {
     }
 
     public class IdButton<T> {
-        private Integer id;
+        private UUID uuid;
         private Class<T> entityType;
         private Button button;
 
-        public IdButton(Class<T> type, Integer id, Button button){
+        public IdButton(Class<T> type, UUID uuid, Button button){
             this.entityType = type;
-            this.id = id;
+            this.uuid = uuid;
             this.button = button;
         }
 
         /**
          * @return the id
          */
-        public Integer getId() {
-            return id;
+        public UUID getUuid() {
+            return uuid;
         }
 
         /**
index f446d6892f5ea52df0f288bd2cdf037f30d8822c..ed5a4650ce95d54d1b8c127fb5aab69c040af262 100644 (file)
@@ -14,7 +14,7 @@ import com.vaadin.ui.CssLayout;
 import com.vaadin.ui.Layout;
 import com.vaadin.ui.Panel;
 
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
 /**
index 83eb6d3407a6cee17e66ff697c8db9db2d8be984..1ea6373948393c7669b3724fb092037902daa6ab 100644 (file)
@@ -34,7 +34,7 @@ public class RegistrationStateLabel extends Label {
    public RegistrationStateLabel update(RegistrationStatus status) {
 
        setValue(StringUtils.capitalize((status.name().toLowerCase())));
-       addStyleName("status-" + status.name());
+       addStyleName("registration-status registration-status-" + status.name());
        setWidth("90px");
        return this;
    }
index 89eb82f1e28d0e4ecff85cfa3944461d309c2103..e93287d2583e2e1d40282b18f17cc2842c8940e6 100644 (file)
@@ -17,8 +17,8 @@ import com.vaadin.server.FontAwesome;
 import com.vaadin.shared.ui.label.ContentMode;
 import com.vaadin.ui.Label;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationType;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationType;
 
 /**
  * @author a.kohlbecker
index a882a45cbc3d3dd11025dd16c8e486f9360e62a8..2fcd98c1f7eb29e043ee333af66dfceda95f9b76 100644 (file)
@@ -40,7 +40,7 @@ import eu.etaxonomy.cdm.vaadin.view.ConceptRelationshipView;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public class ConceptRelationshipComposite extends CustomComponent implements ISelectionListener, ICdmChangeListener, IBasicEventListener {
index 0dc5826250b0f735d48d02b6adbf22565d160b9f..2ea5dc1a2e9cb58d67083f523193f46c80cd8d8f 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public class ConceptRelationshipPresenter implements IConceptRelationshipComponentListener {
index 374234d9039c3ed7c8f23fac94cd6558984c3ee1..8f1a9a7a4ca5b47979a0e4f0c61edb33e4ec811f 100644 (file)
@@ -58,7 +58,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmVaadinUtilities;
 
 /**
  * @author cmathew
- * @date 13 Apr 2015
+ * @since 13 Apr 2015
  *
  */
 public class EditConceptRelationshipComposite extends CustomComponent {
index c65b18d57ccc96a63a11d5df358cc22cdf958688..9d87a1aa9a553cad567cecc82c166d52a1ae2301 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 13 Apr 2015
+ * @since 13 Apr 2015
  *
  */
 public class EditConceptRelationshipPresenter {
index 70bfc0e66db25a582846959e10822b2ab7f4aecf..683f4833467426e20040588f9bd5ce3bc27c2bf9 100644 (file)
@@ -15,7 +15,7 @@ import eu.etaxonomy.cdm.vaadin.jscomponent.D3ConceptRelationshipTree.Direction;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public interface IConceptRelationshipComponentListener {
index 313d475b243d2dd40109fca44959c9efac489f91..85fe3f4b630532fe6c90743de64e6096b01ce608 100644 (file)
@@ -15,7 +15,7 @@ import eu.etaxonomy.cdm.vaadin.container.IdUuidName;
 
 /**
  * @author cmathew
- * @date 2 Apr 2015
+ * @since 2 Apr 2015
  *
  */
 public interface INewTaxonBaseComponentListener {
index cc78c367392c19c6761ab6708f0aa0cbf439dcee..f2a0a4cc942f53d82f21a844367080aff3632824 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.cdm.vaadin.component.taxon;
 
 /**
  * @author cmathew
- * @date 2 Apr 2015
+ * @since 2 Apr 2015
  *
  */
 public interface INewTaxonBaseComposite {
index 81e98dcbae415179815ffb0454461121c5ff4c1d..1e51323b9fd93bc13c9be32a1c26161dd48693f6 100644 (file)
@@ -15,7 +15,7 @@ import eu.etaxonomy.cdm.vaadin.container.LeafNodeTaxonContainer;
 
 /**
  * @author cmathew
- * @date 10 Mar 2015
+ * @since 10 Mar 2015
  *
  */
 public interface IStatusComposite {
index 330dca725c27af5d7ebccf443391b6c676decaf7..42ccdffffb3a125f9208b81ac9c6f1ef7fb434c9 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmVaadinUtilities;
 
 /**
  * @author cmathew
- * @date 2 Apr 2015
+ * @since 2 Apr 2015
  *
  */
 public class NewTaxonBaseComposite extends CustomComponent implements INewTaxonBaseComposite {
index cbdeaf26b79a7392a253c3a50fb3fdb913b97539..61fb3bae211d65ec9ec6ba650fc815c57005c3df 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 2 Apr 2015
+ * @since 2 Apr 2015
  *
  */
 public class NewTaxonBasePresenter implements INewTaxonBaseComponentListener {
index e65ce2b95b94047b27bb8e5135276e29035d9c7c..24547e022d849fbd6746d888943dca8f608dcf1d 100644 (file)
@@ -68,7 +68,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmVaadinUtilities;
 
 /**
  * @author cmathew
- * @date 11 Mar 2015
+ * @since 11 Mar 2015
  *
  */
 public class StatusComposite extends CustomComponent implements View, IStatusComposite, ICdmChangeListener {
index 1cc9c665146f994a3bd3e45e4e9af3f37a31b65d..2a2d4ef949dc146feff990720ad6f238df607fc8 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 10 Mar 2015
+ * @since 10 Mar 2015
  *
  */
 public class StatusPresenter implements StatusComponentListener {
index 9456dfc6a01e252e9f004e8b647f39b8bff42813..109d8a9cea70eb0ae9d7185955d5d905708a195e 100644 (file)
@@ -15,7 +15,7 @@ import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
 
 /**
  * @author cmathew
- * @date 9 Mar 2015
+ * @since 9 Mar 2015
  *
  * @deprecated unused! should be deleted
  */
index 91e01b8c2bf8a39051b70f5ef36021537b46102b..532b26054394aab4c1df11691979e8ab9e1e3f07 100644 (file)
@@ -12,7 +12,7 @@ import java.util.UUID;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class IdUuidName {
index 51d14c4638e4505032105d2c9721577fb144f2ec..715a085d54bb13d87da9bfd41137c8db8308319f 100644 (file)
@@ -34,7 +34,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory;
 
 /**
  * @author cmathew
- * @date 10 Mar 2015
+ * @since 10 Mar 2015
  *
  */
 public class LeafNodeTaxonContainer extends CdmSQLContainer implements Container.Hierarchical  {
@@ -42,14 +42,14 @@ public class LeafNodeTaxonContainer extends CdmSQLContainer implements Container
     private static final Logger logger = Logger.getLogger(LeafNodeTaxonContainer.class);
 
 
-    public static final String NAME_ID = "Name";
-    public static final String ACCTAXON_ID = "AccTaxonId";
-    public static final String PB_ID = "Pb";
-    public static final String FN_ID = "Fn";
-    public static final String UNP_ID = "Unp";
-    public static final String UNR_ID = "Unr";
-    public static final String RANK_ID = "Rank";
-    public static final String HAS_SYN_ID = "HasSynonyms";
+    public static final String NAME_ID = "NAME";
+    public static final String ACCTAXON_ID = "ACCTAXON";
+    public static final String PB_ID = "PB";
+    public static final String FN_ID = "FN";
+    public static final String UNP_ID = "UNP";
+    public static final String UNR_ID = "UNR";
+    public static final String RANK_ID = "RANK";
+    public static final String HAS_SYN_ID = "HASSYN";
 
     public Set<Filter> currentFilters;
 
index 6542d7568490d5155b6acafb90bfdde8c7e5abb9..d02d6deb189aa23b9b3413633e1836af653941b3 100644 (file)
@@ -11,7 +11,6 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.location.NamedArea;
-import eu.etaxonomy.cdm.vaadin.util.TermCacher;
 
 public class NamedAreaContainer extends BeanItemContainer<NamedArea> {
 
@@ -30,9 +29,7 @@ public class NamedAreaContainer extends BeanItemContainer<NamedArea> {
                Collections.sort(namedAreas, new AlphabeticallyAscendingNamedAreaComparator());
            }
 
-           TermCacher termCacher = TermCacher.getInstance();
            for (NamedArea namedArea: namedAreas) {
-               termCacher.addNamedArea(namedArea);
                addBean(namedArea);
            }
        }
index 3a4e764204dc9fc8191c567046a6304c147a876f..0f66c943f51759c7d53a3b00690ed53b15533b5b 100644 (file)
@@ -2,20 +2,22 @@ package eu.etaxonomy.cdm.vaadin.container;
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 import com.vaadin.data.util.BeanItemContainer;
 import com.vaadin.server.VaadinSession;
 
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
-import eu.etaxonomy.cdm.vaadin.util.TermCacher;
 
 public class PresenceAbsenceTermContainer extends BeanItemContainer<PresenceAbsenceTerm> {
 
@@ -25,6 +27,14 @@ public class PresenceAbsenceTermContainer extends BeanItemContainer<PresenceAbse
 
        private static Collection<PresenceAbsenceTerm> defaultDistributionStatus;
 
+    static class PresenceAbsenceTermComparator implements Comparator<PresenceAbsenceTerm> {
+        @Override
+        public int compare(PresenceAbsenceTerm pa1, PresenceAbsenceTerm pa2) {
+            return pa1.compareTo(pa2);
+        }
+
+    }
+
        private PresenceAbsenceTermContainer()
                        throws IllegalArgumentException {
                super(PresenceAbsenceTerm.class);
@@ -56,11 +66,16 @@ public class PresenceAbsenceTermContainer extends BeanItemContainer<PresenceAbse
 
     public static List<PresenceAbsenceTerm> getDistributionStatusList(List<String> propertyPath){
         CdmPreference statusPref = CdmSpringContextHelper.getPreferenceService().findVaadin(PreferencePredicate.AvailableDistributionStatus);
+        List<PresenceAbsenceTerm> paList;
         if (statusPref != null){
             List<UUID> uuidList = statusPref.getValueUuidList();
-            return (List)CdmSpringContextHelper.getTermService().load(uuidList, propertyPath);
+            paList = CdmSpringContextHelper.getTermService().load(uuidList, propertyPath).stream().map(db -> (PresenceAbsenceTerm)db).collect(Collectors.toList());
+            paList.sort(new PresenceAbsenceTermComparator());
+            return paList;
         }else{
-            return TermCacher.getInstance().getDistributionStatusTermList();
+            paList = CdmSpringContextHelper.getTermService().listByTermType(TermType.PresenceAbsenceTerm, null, null, null,propertyPath);
+            paList.sort(new PresenceAbsenceTermComparator());
+            return paList;
         }
     }
 
@@ -68,5 +83,4 @@ public class PresenceAbsenceTermContainer extends BeanItemContainer<PresenceAbse
             "$",
             "representations",
     });
-
 }
index b3d72c38bbc87aa148a8c7ebe0afdd920b07cc1a..5eecf801a76b0f232cbc452c212d53af1618facb 100644 (file)
@@ -57,9 +57,11 @@ public class TaxonNodeContainer extends HierarchicalContainer {
                 Item childItem = addItem(child);
                 if(childItem!=null){
                     setParent(child, parent);
+                    addChildItems(child);
                 }
+                   /*
                 Collection<UuidAndTitleCache<TaxonNode>> grandChildren = CdmSpringContextHelper.getTaxonNodeService().listChildNodesAsUuidAndTitleCache(child);
-                setChildrenAllowed(child, !grandChildren.isEmpty());
+                setChildrenAllowed(child, !grandChildren.isEmpty());*/
             }
             itemCache.put(parent.getId(), true);
         }
index 1b213bbf10fb3dd51965c06ba1159629668f875e..483e7736b75353c83d0527d817e044ca2327c40b 100644 (file)
@@ -13,22 +13,25 @@ import java.lang.reflect.Method;
 import java.util.Optional;
 
 import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Component;
 import org.vaadin.spring.events.Event;
 import org.vaadin.spring.events.EventBus;
-import org.vaadin.spring.events.EventBus.ViewEventBus;
+import org.vaadin.spring.events.EventBus.UIEventBus;
 import org.vaadin.spring.events.EventBusListener;
 
 import com.vaadin.event.ShortcutAction;
 import com.vaadin.event.ShortcutListener;
 import com.vaadin.navigator.View;
 import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.spring.annotation.UIScope;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.Window;
 
 import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
 import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
+import eu.etaxonomy.vaadin.mvp.AbstractPopupView;
 import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 import eu.etaxonomy.vaadin.ui.view.PopEditorOpenedEvent;
@@ -40,17 +43,19 @@ import eu.etaxonomy.vaadin.ui.view.PopupView;
  *
  */
 @Component
+@UIScope
 @Profile("debug")
 public class EntityCacheDebugger implements ViewChangeListener, EventBusListener<PopEditorOpenedEvent> {
 
     Logger logger = Logger.getLogger(EntityCacheDebugger.class);
-    private ViewEventBus viewEventBus;
 
+    private UIEventBus uiEventBus;
 
-    // @Autowired // FIXME autowiring fails, need to put in UI Scope?
-    protected final void setViewEventBus(EventBus.ViewEventBus viewEventBus){
-        this.viewEventBus = viewEventBus;
-        viewEventBus.subscribe(this);
+
+    @Autowired
+    protected final void setUIEventBus(EventBus.UIEventBus uiEventBus){
+        this.uiEventBus = uiEventBus;
+        uiEventBus.subscribe(this);
     }
 
     EntityCacheDebuggerShortcutListener shortcutListener;
@@ -134,13 +139,13 @@ public class EntityCacheDebugger implements ViewChangeListener, EventBusListener
     @Override
     public void onEvent(Event<PopEditorOpenedEvent> event){
         PopupView popupView = event.getPayload().getPopupView();
-        if(popupView != null && popupView instanceof AbstractCdmPopupEditor){
-            findWindow(((AbstractCdmPopupEditor)popupView)).addShortcutListener(shortcutListener);
+        if(popupView != null && popupView instanceof AbstractPopupView){
+            findWindow((AbstractPopupView)popupView).addShortcutListener(shortcutListener);
         }
 
     }
 
-    private Window findWindow(AbstractCdmPopupEditor view){
+    private Window findWindow(AbstractPopupView view){
         Optional<Window> popUpWindow = UI.getCurrent().getWindows().stream().filter(w -> w.getContent().equals(view)).findFirst();
         if(popUpWindow.isPresent()){
             return popUpWindow.get();
@@ -186,8 +191,8 @@ public class EntityCacheDebugger implements ViewChangeListener, EventBusListener
                 if(sender instanceof AbstractView) {
                     EntityCacheDebugger.this.openFor((AbstractView)sender);
                 }
-                if(sender instanceof Window && ((Window)sender).getContent() instanceof AbstractCdmPopupEditor) {
-                    EntityCacheDebugger.this.openFor((AbstractCdmPopupEditor)((Window)sender).getContent());
+                if(sender instanceof Window && ((Window)sender).getContent() instanceof AbstractPopupView) {
+                    EntityCacheDebugger.this.openFor((AbstractPopupView)((Window)sender).getContent());
                 }
 
             }
index fb1d65eb12241c775915e7d3099d15813c3ce75c..3b9110c00cbd8e6957014bdfdbc8932cabadae26 100644 (file)
@@ -9,14 +9,16 @@
 package eu.etaxonomy.cdm.vaadin.event;
 
 import java.util.Stack;
+import java.util.UUID;
 
-import com.vaadin.ui.Component;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Field;
 
 import eu.etaxonomy.vaadin.event.EditorActionType;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
 /**
- * Base implementation for an event which which represents the request to start
+ * Base implementation for an event which represents the request to start
  * an editor to enable the user to perform the <code>action</code> transported
  * with this event.
  *
@@ -24,22 +26,24 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @since Mar 22, 2017
  *
  */
-public abstract class AbstractEditorAction extends AbstractEntityEvent<EditorActionType> {
+public abstract class AbstractEditorAction<V> extends AbstractEntityEvent<EditorActionType> {
 
-    private Component sourceComponent = null;
+    private Button source = null;
+
+    private Field<V> target = null;
 
     protected Stack<EditorActionContext> context;
 
     public AbstractEditorAction(EditorActionType action) {
-        this(action, null, null);
+        this(action, null, null, null);
     }
 
-    public AbstractEditorAction(EditorActionType action, Component source, AbstractView sourceView) {
-        this(action, null, source, sourceView);
+    public AbstractEditorAction(EditorActionType action, Button source, Field<V> target, AbstractView sourceView) {
+        this(action, null, source, target, sourceView);
     }
 
-    public AbstractEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        this(action, entityId, source, sourceView, null);
+    public AbstractEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<V> target, AbstractView sourceView) {
+        this(action, entityUuid, source, target, sourceView, null);
     }
 
     /**
@@ -57,10 +61,11 @@ public abstract class AbstractEditorAction extends AbstractEntityEvent<EditorAct
      *            Editor actions from previous views and editors that lead to the point
      *            from where this action is spawned.
      */
-    public AbstractEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView,
+    public AbstractEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<V> target, AbstractView sourceView,
             Stack<EditorActionContext> context) {
-        super(action, entityId, sourceView);
-        this.sourceComponent = source;
+        super(action, entityUuid, sourceView);
+        this.source = source;
+        this.target = target;
         this.context = context;
     }
 
@@ -76,12 +81,19 @@ public abstract class AbstractEditorAction extends AbstractEntityEvent<EditorAct
         return type.equals(EditorActionType.REMOVE);
     }
 
-    public Component getSourceComponent() {
-        return sourceComponent;
+    public Button getSource() {
+        return source;
+    }
+
+    /**
+     * @return the target
+     */
+    public Field<V> getTarget() {
+        return target;
     }
 
     public boolean hasSource() {
-        return sourceComponent != null;
+        return source != null;
     }
 
     /**
index abc4b35e9cb57cba1db44ba1f7190041f1b56f57..403d1b75df022d6fc452749c13d42edb5fb9d5bc 100644 (file)
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
+import java.util.UUID;
+
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
 /**
@@ -17,14 +19,14 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  */
 public abstract class AbstractEntityEvent<T extends Enum> {
 
-    private Integer entityId = null;
+    private UUID entityUuid = null;
 
     protected T type;
 
     private AbstractView sourceView = null;
 
-    public AbstractEntityEvent(T type, Integer entityId, AbstractView sourceView) {
-        this.entityId = entityId;
+    public AbstractEntityEvent(T type, UUID entityUuid, AbstractView sourceView) {
+        this.entityUuid = entityUuid;
         this.type = type;
         this.sourceView = sourceView;
         if(type == null){
@@ -35,8 +37,8 @@ public abstract class AbstractEntityEvent<T extends Enum> {
     /**
      * @return the entityId
      */
-    public Integer getEntityId() {
-        return entityId;
+    public UUID getEntityUuid() {
+        return entityUuid;
     }
 
     public T getType() {
index 400e67d746840d62a0bc9fe56e551b2cbc94e713..bfcf55f9fb5544a70b4e81341e4ce3f76feaca7a 100644 (file)
@@ -8,8 +8,12 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
-import com.vaadin.ui.Component;
+import java.util.UUID;
 
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Field;
+
+import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
@@ -17,7 +21,7 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @author a.kohlbecker
  * @since Mar 22, 2017
  */
-public class CollectionEditorAction extends AbstractEditorAction {
+public class CollectionEditorAction extends AbstractEditorAction<Collection> {
 
     /**
      * @param eventType
@@ -30,8 +34,8 @@ public class CollectionEditorAction extends AbstractEditorAction {
      * @param action
      * @param source
      */
-    public CollectionEditorAction(EditorActionType action, Component source, AbstractView sourceView) {
-        super(action, source, sourceView);
+    public CollectionEditorAction(EditorActionType action, Button source, Field<Collection> target, AbstractView sourceView) {
+        super(action, source, target, sourceView);
     }
 
     /**
@@ -40,8 +44,8 @@ public class CollectionEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public CollectionEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public CollectionEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<Collection> target, AbstractView sourceView) {
+        super(action, entityUuid, source, target, sourceView);
     }
 
 }
index 89be299afd463c96b73fdbe598a810bef4cdd28e..513a97369b9dff94ddf1586dfcdb8af1d61b6a51 100644 (file)
@@ -8,6 +8,9 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
+import java.util.EnumSet;
+
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
 /**
@@ -15,7 +18,7 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @since May 10, 2017
  *
  */
-public class EntityChangeEvent extends AbstractEntityEvent<EntityChangeEvent.Type> {
+public class EntityChangeEvent<T extends CdmBase> extends AbstractEntityEvent<EntityChangeEvent.Type> {
 
     public enum Type {
         CREATED,
@@ -23,15 +26,16 @@ public class EntityChangeEvent extends AbstractEntityEvent<EntityChangeEvent.Typ
         REMOVED;
     }
 
-    private Class<?> entityType;
+    public static final EnumSet<Type> CREATE_OR_MODIFIED = EnumSet.of(EntityChangeEvent.Type.CREATED, EntityChangeEvent.Type.MODIFIED);
 
-    /**
-     * @param type
-     * @param entityId
-     */
-    public EntityChangeEvent(Class<?> entityType, Integer entityId, Type type, AbstractView sourceView) {
-        super(type, entityId, sourceView);
-        this.entityType = entityType;
+    private Class<T> entityType;
+
+    private T entity;
+
+    public EntityChangeEvent(T entity, Type type, AbstractView sourceView) {
+        super(type, entity.getUuid(), sourceView);
+        this.entityType = (Class<T>) entity.getClass();
+        this.entity = entity;
     }
 
     /**
@@ -41,4 +45,23 @@ public class EntityChangeEvent extends AbstractEntityEvent<EntityChangeEvent.Typ
         return entityType;
     }
 
+    /**
+     * @return the entity
+     */
+    public T getEntity() {
+        return entity;
+    }
+
+    public boolean isCreateOrModifiedType() {
+       return CREATE_OR_MODIFIED.contains(type);
+    }
+
+    public boolean isRemovedType() {
+        return Type.REMOVED.equals(type);
+     }
+
+    public boolean isCreatedType() {
+        return Type.CREATED.equals(type);
+     }
+
 }
index a4097fcf2b03405709ea92a0780ec02948dfad35..ad0c28de1e64bca3941af52aa90f308c516850b6 100644 (file)
@@ -8,8 +8,12 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
-import com.vaadin.ui.Component;
+import java.util.UUID;
 
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Field;
+
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
@@ -17,31 +21,36 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @author a.kohlbecker
  * @since Mar 22, 2017
  */
-public class ReferenceEditorAction extends AbstractEditorAction {
+public class ReferenceEditorAction extends AbstractEditorAction<Reference> {
+
 
     /**
-     * @param eventType
+     * @param type
      */
     public ReferenceEditorAction(EditorActionType type) {
         super(type);
     }
 
+
     /**
      * @param action
      * @param source
+     * @param target
+     * @param sourceView
      */
-    public ReferenceEditorAction(EditorActionType action, Component source, AbstractView sourceView) {
-        super(action, source, sourceView);
+    public ReferenceEditorAction(EditorActionType action, Button source, Field<Reference> target, AbstractView sourceView) {
+        super(action, source, target, sourceView);
     }
 
     /**
      * @param action
-     * @param entityId
+     * @param entityUuid
      * @param source
+     * @param target
      * @param sourceView
      */
-    public ReferenceEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public ReferenceEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<Reference> target, AbstractView sourceView) {
+        super(action, entityUuid, source, target, sourceView);
     }
 
 }
index 216d0ae873b20f20ac1ff9b6f8f344a66bb093f6..8bc611fe2866123bb819f8cf778b8e46f536f919 100644 (file)
@@ -8,8 +8,12 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
-import com.vaadin.ui.Component;
+import java.util.UUID;
 
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Field;
+
+import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
@@ -17,7 +21,7 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @author a.kohlbecker
  * @since Mar 22, 2017
  */
-public class RegistrationEditorAction extends AbstractEditorAction {
+public class RegistrationEditorAction extends AbstractEditorAction<Registration> {
 
     /**
      * @param eventType
@@ -31,8 +35,8 @@ public class RegistrationEditorAction extends AbstractEditorAction {
      * @param action
      * @param source
      */
-    public RegistrationEditorAction(EditorActionType action, Component source, AbstractView sourceView) {
-        super(action, source, sourceView);
+    public RegistrationEditorAction(EditorActionType action, Button source, Field<Registration> target, AbstractView sourceView) {
+        super(action, source, target, sourceView);
     }
 
     /**
@@ -41,8 +45,8 @@ public class RegistrationEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public RegistrationEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public RegistrationEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<Registration> target, AbstractView sourceView) {
+        super(action, entityUuid, source, target, sourceView);
     }
 
 
index 30b885edc1dd7337eda8ac28cf58d40babcd8c2c..dfb74f8f44e550a5a01addbfff298bc215160d28 100644 (file)
@@ -41,14 +41,14 @@ public class ShowDetailsEventEntityTypeFilter implements EventBusListenerMethodF
     public static class RegistrationWorkingSet extends ShowDetailsEventEntityTypeFilter{
 
         public RegistrationWorkingSet(){
-            super(RegistrationWorkingSet.class);
+            super(eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet.class);
         }
     }
 
     public static class RegistrationDTO extends ShowDetailsEventEntityTypeFilter{
 
         public RegistrationDTO(){
-            super(RegistrationDTO.class);
+            super(eu.etaxonomy.cdm.api.service.dto.RegistrationDTO.class);
         }
     }
 }
index 7d4f9592c3b9f2561c48345eb8068016f830e75b..98155c753d86ea465cc5d81828cf03e90a12bca4 100644 (file)
@@ -9,9 +9,12 @@
 package eu.etaxonomy.cdm.vaadin.event;
 
 import java.util.Stack;
+import java.util.UUID;
 
-import com.vaadin.ui.Component;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Field;
 
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
@@ -20,7 +23,7 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @since Mar 22, 2017
  *
  */
-public class TaxonNameEditorAction extends AbstractEditorAction {
+public class TaxonNameEditorAction extends AbstractEditorAction<TaxonName> {
 
 
     public TaxonNameEditorAction(EditorActionType eventType) {
@@ -31,8 +34,8 @@ public class TaxonNameEditorAction extends AbstractEditorAction {
      * @param action
      * @param source
      */
-    public TaxonNameEditorAction(EditorActionType action, Component source, AbstractView sourceView) {
-        super(action, source, sourceView);
+    public TaxonNameEditorAction(EditorActionType action, Button source, Field<TaxonName> target, AbstractView sourceView) {
+        super(action, source, target, sourceView);
     }
 
     /**
@@ -41,8 +44,8 @@ public class TaxonNameEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public TaxonNameEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public TaxonNameEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<TaxonName> target, AbstractView sourceView) {
+        super(action, entityUuid, source, target, sourceView);
     }
 
     /**
@@ -52,9 +55,9 @@ public class TaxonNameEditorAction extends AbstractEditorAction {
      * @param sourceView
      * @param context
      */
-    public TaxonNameEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView,
+    public TaxonNameEditorAction(EditorActionType action, UUID entityUuid, Button source, Field<TaxonName> target, AbstractView sourceView,
             Stack<EditorActionContext> context) {
-        super(action, entityId, source, sourceView, context);
+        super(action, entityUuid, source, target, sourceView, context);
     }
 
 
index b875640a9a5f2d82f448d19bcecd09a68101666b..4da097c05296856e0c6103f8b023403987535440 100644 (file)
@@ -13,7 +13,7 @@ import com.vaadin.data.Property.ValueChangeListener;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityField;
 
 /**
index cb91360dc7a507186d8995808538d219cac81aed..aa695b23c5e80b02db01336d9b3bf5f55f0798d3 100644 (file)
@@ -9,13 +9,16 @@
 package eu.etaxonomy.cdm.vaadin.event;
 
 import java.util.Stack;
+import java.util.UUID;
 
-import com.vaadin.ui.Component;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Field;
 
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSet;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSetType;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.name.Registration;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSetType;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
@@ -24,28 +27,33 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  * @since Mar 22, 2017
  *
  */
-public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction {
+public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction<TypeDesignationWorkingSet> {
 
     private TypeDesignationWorkingSetType workingSetType;
 
-    private int registrationId;
+    private UUID registrationUuid;
+
+    private UUID typifiedNameUuid;
 
     private TypedEntityReference<IdentifiableEntity<?>> baseEntityRef;
 
     /**
      *
      * @param action
-     * @param typeDesignationWorkingsetId
+     * @param baseEntityRef
      * @param workingSetType
      * @param registrationId
      * @param source
      * @param sourceView
      */
     public TypeDesignationWorkingsetEditorAction(EditorActionType action, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef,
-            TypeDesignationWorkingSetType workingSetType, int registrationId, Component source, AbstractView sourceView, Stack<EditorActionContext> context) {
-        super(action, null, source, sourceView);
+            TypeDesignationWorkingSetType workingSetType,
+            UUID registrationUuid, UUID typifiedNameUuid,
+            Button source, Field<TypeDesignationWorkingSet> target, AbstractView sourceView, Stack<EditorActionContext> context) {
+        super(action, null, source, target, sourceView);
         this.baseEntityRef = baseEntityRef;
-        this.registrationId = registrationId;
+        this.registrationUuid = registrationUuid;
+        this.typifiedNameUuid = typifiedNameUuid;
         this.workingSetType = workingSetType;
         this.context = context;
 
@@ -55,17 +63,19 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
      *
      * @param action
      * @param workingSetType
-     * @param registrationId
+     * @param registrationUuid
      * @param source
      * @param sourceView
      */
-    public TypeDesignationWorkingsetEditorAction(EditorActionType action, TypeDesignationWorkingSetType workingSetType, int registrationId,
-            Component source, AbstractView sourceView) {
-        super(action, null, source, sourceView);
+    public TypeDesignationWorkingsetEditorAction(EditorActionType action, TypeDesignationWorkingSetType workingSetType,
+            UUID registrationUuid, UUID typifiedNameUuid,
+            Button source, Field<TypeDesignationWorkingSet> target, AbstractView sourceView) {
+        super(action, null, source, target, sourceView);
         this.workingSetType = workingSetType;
-        this.registrationId = registrationId;
+        this.registrationUuid = registrationUuid;
+        this.typifiedNameUuid = typifiedNameUuid;
         this.context = new Stack<>();
-        this.context.push(new EditorActionContext(new TypedEntityReference<Registration>(Registration.class, registrationId), sourceView));
+        this.context.push(new EditorActionContext(new TypedEntityReference<Registration>(Registration.class, registrationUuid), sourceView));
     }
 
 
@@ -79,14 +89,14 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
     }
 
     /**
-     * @return the registrationId
+     * @return the registrationUuid
      */
-    public int getRegistrationId() {
-        return registrationId;
+    public UUID getRegistrationUuid() {
+        return registrationUuid;
     }
 
-    public Integer getTypeDesignationWorkingsetId(){
-        return getEntityId();
+    public UUID getTypeDesignationWorkingsetUuid(){
+        return getEntityUuid();
     }
 
     /**
@@ -96,5 +106,12 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
         return baseEntityRef;
     }
 
+    /**
+     * @return the typifiedNameUuid
+     */
+    public UUID getTypifiedNameUuid() {
+        return typifiedNameUuid;
+    }
+
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/DelegatingErrorHandler.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/DelegatingErrorHandler.java
new file mode 100644 (file)
index 0000000..6e2c14c
--- /dev/null
@@ -0,0 +1,81 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.event.error;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.vaadin.server.ErrorEvent;
+import com.vaadin.server.ErrorHandler;
+import com.vaadin.ui.Notification;
+
+/**
+ * Vaadin allows setting an com.vaadin.server.ErrorHandler for UIs and components.
+ * The caveat with this built in approach is that there is only one {@link com.vaadin.server.ErrorHandler}
+ * for any type of errors. This <code>DelegatingErrorHandler</code> allows registering handlers for specific types of errors.
+ *
+ * see https://dev.e-taxonomy.eu/redmine/issues/7241
+ *
+ * @author freimeier
+ *
+ */
+public class DelegatingErrorHandler implements ErrorHandler{
+
+    private static final long serialVersionUID = 3378605204517477112L;
+
+    Set<ErrorTypeHandler<? extends Throwable>> handlers = new HashSet<>();
+
+    public <E extends Throwable> void  registerHandler(ErrorTypeHandler<E> handler) {
+        assert findHandler(handler.supports()) == null;
+        handlers.add(handler);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <E extends Throwable> ErrorTypeHandler<E> findHandler(Class<E> errorClass){
+        for(ErrorTypeHandler<?> h : handlers){
+            if(h.supports().equals(errorClass)){
+                return (ErrorTypeHandler<E>) h;
+            }
+        }
+        return null;
+
+    }
+
+    /* (non-Javadoc)
+     * @see com.vaadin.server.ErrorHandler#error(com.vaadin.server.ErrorEvent)
+     */
+    @Override
+    public void error(ErrorEvent event) {
+
+        boolean handlerFound = true;
+        Throwable throwable = event.getThrowable();
+        while(throwable != null){
+            if(delegate(event, throwable)){
+                break;
+            }
+            throwable = throwable.getCause();
+        }
+        if(!handlerFound){
+            Notification.show(event.getThrowable().getMessage());
+          }
+    }
+
+    private <E extends Throwable> boolean delegate(ErrorEvent event, E throwable){
+        Class<E> errorClass = (Class<E>) throwable.getClass();
+        Logger.getLogger(this.getClass()).debug(errorClass);
+        ErrorTypeHandler<E> handler = findHandler(errorClass);
+        if(handler != null){
+            handler.handleError(event, throwable);
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/ErrorTypeHandler.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/ErrorTypeHandler.java
new file mode 100644 (file)
index 0000000..70a0a2c
--- /dev/null
@@ -0,0 +1,38 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.event.error;
+
+import com.vaadin.server.ErrorEvent;
+import com.vaadin.server.ErrorHandler;
+
+/**
+ * see {@link DelegatingErrorHandler}
+ *
+ * @author freimeier
+ *
+ */
+public abstract class ErrorTypeHandler<E extends Throwable> implements ErrorHandler {
+
+    private  static final long serialVersionUID = 1782060185842059311L;
+
+    public abstract Class<E> supports();
+
+    public final void handleError(ErrorEvent event, E throwable){
+        error(event);
+        exception(throwable);
+    }
+
+    /**
+     * @param exception
+     */
+    public abstract void exception(E throwable);
+}
+
+
+
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/ExternalServiceExceptionHandler.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/ExternalServiceExceptionHandler.java
new file mode 100644 (file)
index 0000000..79dd5c8
--- /dev/null
@@ -0,0 +1,61 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.event.error;
+
+import com.vaadin.server.ErrorEvent;
+import com.vaadin.server.Page;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Notification.Type;
+
+import eu.etaxonomy.cdm.ext.common.ExternalServiceException;
+import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
+
+
+public class ExternalServiceExceptionHandler extends ErrorTypeHandler<ExternalServiceException>{
+
+    private static final long serialVersionUID = -5703485298578474572L;
+    private String mainMessage;
+
+    public ExternalServiceExceptionHandler(String mainMessage){
+        this.mainMessage = mainMessage;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<ExternalServiceException> supports() {
+        return ExternalServiceException.class;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void error(ErrorEvent event) {
+        // only exception() needed in this class
+
+    }
+
+    @Override
+    public void exception(ExternalServiceException exception) {
+        Notification notification = new Notification(mainMessage,
+                "<div><strong>Service:</strong> "+ exception.getExternalService() + "</div>" +
+                "<div><strong>Problem:</strong> "+ exception.getProblem() + "</div>" +
+                "<p>" + RegistrationUIDefaults.ERROR_CONTACT_MESSAGE_LINE + "</p>"
+                , Type.ERROR_MESSAGE);
+        notification.setHtmlContentAllowed(true);
+        notification.show(Page.getCurrent());
+    }
+
+
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/HibernateExceptionHandler.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/error/HibernateExceptionHandler.java
new file mode 100644 (file)
index 0000000..6d7b7b0
--- /dev/null
@@ -0,0 +1,61 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.event.error;
+
+import org.hibernate.HibernateException;
+
+import com.vaadin.server.ErrorEvent;
+import com.vaadin.server.Page;
+import com.vaadin.ui.Notification;
+
+import eu.etaxonomy.cdm.database.PermissionDeniedException;
+import eu.etaxonomy.cdm.i18n.Messages;
+
+/**
+ * @author freimeier
+ *
+ */
+public class HibernateExceptionHandler extends ErrorTypeHandler<HibernateException>{
+
+    private static final long serialVersionUID = -5703485298578474572L;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<HibernateException> supports() {
+        return HibernateException.class;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void error(ErrorEvent event) {
+        // not needed in this class so far
+    }
+
+    @Override
+    public void exception(HibernateException exception) {
+        if(exception != null) {
+            Notification notification = new Notification(exception.getMessage());
+            if(exception.getCause() != null) {
+                if(exception.getCause().getClass().equals(PermissionDeniedException.class)) {
+                    notification = new Notification(Messages.getLocalizedString(Messages.HibernateExceptionHandler_PERMISSION_DENIED));
+                }else {
+                    notification = new Notification(exception.getCause().getMessage());
+                }
+            }
+            notification.show(Page.getCurrent());
+        }
+    }
+
+
+
+}
index 4764a64204323fe8b28b91c4a4ad572ec9fe5b45..580529457d62d6233f6b193463d59a5a53ccdf7b 100644 (file)
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event.registration;
 
+import java.util.UUID;
+
 /**
  * @author a.kohlbecker
  * @since Mar 3, 2017
@@ -16,16 +18,16 @@ package eu.etaxonomy.cdm.vaadin.event.registration;
 public class RegistrationWorkingsetAction {
 
     private Action action;
-    private Integer citationID = null;
+    private UUID citationUuid = null;
 
     /**
      *
      * @param citationID the id of a {@link Reference} denoting a
      * complete registration working set.
      */
-    public RegistrationWorkingsetAction(int citationID, Action action){
+    public RegistrationWorkingsetAction(UUID citationUuid, Action action){
         this.action = action;
-        this.citationID = citationID;
+        this.citationUuid = citationUuid;
     }
 
     /**
@@ -36,10 +38,10 @@ public class RegistrationWorkingsetAction {
     }
 
     /**
-     * @return the registrationID
+     * @return the citationUuid
      */
-    public Integer getCitationID() {
-        return citationID;
+    public UUID getCitationUuid() {
+        return citationUuid;
     }
 
     public boolean isStart() {
index dbd0ae54290ea1b9658530682bc8246b1ff64131..9957d0f8488a7296d4a0931f7f9d58106de29f4d 100644 (file)
@@ -36,7 +36,7 @@ import eu.etaxonomy.cdm.vaadin.component.taxon.ConceptRelationshipComposite;
 
 /**
  * @author cmathew
- * @date 8 Apr 2015
+ * @since 8 Apr 2015
  *
  */
 @StyleSheet({"css/d3.conceptrelationshiptree.css"})
index 617d67d09825aa2bd8e6e5e2d98157a89e3de0c2..a435285b33b2fa3149e0dae55b25076f42e070dd 100644 (file)
@@ -12,7 +12,7 @@ import com.vaadin.shared.ui.JavaScriptComponentState;
 
 /**
  * @author cmathew
- * @date 8 Apr 2015
+ * @since 8 Apr 2015
  *
  */
 public class D3ConceptRelationshipTreeState extends JavaScriptComponentState {
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/CdmEntityDecoraterDTO.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/CdmEntityDecoraterDTO.java
new file mode 100644 (file)
index 0000000..610220a
--- /dev/null
@@ -0,0 +1,70 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.model;
+
+import java.io.Serializable;
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.User;
+
+/**
+ * @author a.kohlbecker
+ * @since Apr 23, 2018
+ *
+ */
+public class CdmEntityDecoraterDTO<CDM extends CdmBase> implements Serializable {
+
+    private static final long serialVersionUID = 1715911851453178727L;
+
+    protected CDM entity;
+
+    public CdmEntityDecoraterDTO(CDM entity){
+        this.entity = entity;
+    }
+
+    public CDM cdmEntity(){
+        return entity;
+    }
+
+    public void setCreated(DateTime created) {
+        entity.setCreated(created);
+    }
+
+    public void setCreatedBy(User createdBy) {
+        entity.setCreatedBy(createdBy);
+    }
+
+    public DateTime getCreated() {
+        return entity.getCreated();
+    }
+
+    public User getCreatedBy() {
+        return entity.getCreatedBy();
+    }
+
+    public int getId() {
+        return entity.getId();
+    }
+
+    public void setId(int id) {
+        entity.setId(id);
+    }
+
+    public UUID getUuid() {
+        return entity.getUuid();
+    }
+
+    public void setUuid(UUID uuid) {
+        entity.setUuid(uuid);
+    }
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java
deleted file mode 100644 (file)
index e375b66..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.model;
-
-import org.apache.commons.lang.builder.HashCodeBuilder;
-
-public class EntityReference {
-    int id;
-    String label;
-
-    public EntityReference(int id, String label) {
-        this.id = id;
-        this.label = label;
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    public String getLabel() {
-        return label;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public int hashCode() {
-        return new HashCodeBuilder(17, 31)
-                .append(label)
-                .append(id)
-                .toHashCode();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean equals(Object obj) {
-        try {
-            EntityReference other = (EntityReference) obj;
-            return id == other.id && label.equals(other.label);
-
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java
deleted file mode 100644 (file)
index 5961d64..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.model;
-
-import org.apache.commons.lang.builder.HashCodeBuilder;
-
-/**
- * @author a.kohlbecker
- * @since Jun 12, 2017
- *
- */
-public class TypedEntityReference<T> extends EntityReference {
-
-    /**
-     * @param id
-     * @param label
-     */
-    public TypedEntityReference(Class<T> type, int id, String label) {
-        super(id, label);
-        this.type = type;
-    }
-
-    public TypedEntityReference(Class<T> type, int id) {
-        super(id, null);
-        this.type = type;
-    }
-
-    /**
-     * @return the type
-     */
-    public Class<T> getType() {
-        return type;
-    }
-
-    /**
-     * @param type the type to set
-     */
-    public void setType(Class<T> type) {
-        this.type = type;
-    }
-
-    private Class<T> type;
-
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public int hashCode() {
-        return new HashCodeBuilder(17, 31)
-                .append(id)
-                .appendSuper(type.hashCode())
-                .hashCode();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @SuppressWarnings("rawtypes")
-    @Override
-    public boolean equals(Object obj) {
-        try {
-            TypedEntityReference other = (TypedEntityReference) obj;
-            return id == other.id && type.equals(other.type);
-
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-    @Override
-    public String toString(){
-        return type.getSimpleName() + "#" + id;
-
-    }
-
-}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/name/NameRelationshipDTO.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/name/NameRelationshipDTO.java
new file mode 100644 (file)
index 0000000..2d9108d
--- /dev/null
@@ -0,0 +1,151 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.model.name;
+
+import java.io.Serializable;
+
+import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
+import eu.etaxonomy.cdm.model.name.NameRelationship;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.reference.Reference;
+
+/**
+ * @author a.kohlbecker
+ * @since May 3, 2018
+ *
+ */
+public class NameRelationshipDTO implements Serializable {
+
+    private static final long serialVersionUID = 966322755160849163L;
+
+    NameRelationship nameRel;
+
+    TaxonName otherName;
+    NameRelationshipType type;
+    Direction direction;
+    Reference citation;
+    String citationMicroReference;
+    String ruleConsidered;
+
+    /**
+     * @param entity
+     */
+    public NameRelationshipDTO(Direction direction, NameRelationshipType type) {
+        this.direction = direction;
+        this.type = type;
+    }
+
+    public NameRelationshipDTO(Direction direction, NameRelationship nameRel) {
+        this.direction = direction;
+        otherName = otherNameFrom(nameRel);
+        type = nameRel.getType();
+        citation = nameRel.getCitation();
+        citationMicroReference = nameRel.getCitationMicroReference();
+        ruleConsidered = nameRel.getRuleConsidered();
+    }
+
+    /**
+     * @return
+     */
+    protected TaxonName otherNameFrom(NameRelationship nameRel) {
+        return this.direction.equals(Direction.relatedTo) ?  nameRel.getFromName() : nameRel.getToName();
+    }
+
+    protected TaxonName thisNameFrom(NameRelationship nameRel) {
+        return this.direction.equals(Direction.relatedTo) ?  nameRel.getToName() : nameRel.getFromName();
+    }
+
+    /**
+     * @return the otherName
+     */
+    public TaxonName getOtherName() {
+        return otherName;
+    }
+
+    /**
+     * @param otherName the otherName to set
+     */
+    public void setOtherName(TaxonName otherName) {
+        this.otherName = otherName;
+    }
+
+    /**
+     * @return the type
+     */
+    public NameRelationshipType getType() {
+        return type;
+    }
+
+    /**
+     * @param type the type to set
+     */
+    public void setType(NameRelationshipType type) {
+        this.type = type;
+    }
+
+    /**
+     * @return the direction
+     */
+    public Direction getDirection() {
+        return direction;
+    }
+
+    /**
+     * @param direction the direction to set
+     */
+    public void setDirection(Direction direction) {
+        this.direction = direction;
+    }
+
+    /**
+     * @return the citation
+     */
+    public Reference getCitation() {
+        return citation;
+    }
+
+    /**
+     * @param citation the citation to set
+     */
+    public void setCitation(Reference citation) {
+        this.citation = citation;
+    }
+
+    /**
+     * @return the citationMicroReference
+     */
+    public String getCitationMicroReference() {
+        return citationMicroReference;
+    }
+
+    /**
+     * @param citationMicroReference the citationMicroReference to set
+     */
+    public void setCitationMicroReference(String citationMicroReference) {
+        this.citationMicroReference = citationMicroReference;
+    }
+
+    /**
+     * @return the ruleConsidered
+     */
+    public String getRuleConsidered() {
+        return ruleConsidered;
+    }
+
+    /**
+     * @param ruleConsidered the ruleConsidered to set
+     */
+    public void setRuleConsidered(String ruleConsidered) {
+        this.ruleConsidered = ruleConsidered;
+    }
+
+
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/name/TaxonNameDTO.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/name/TaxonNameDTO.java
new file mode 100644 (file)
index 0000000..6340a28
--- /dev/null
@@ -0,0 +1,413 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.model.name;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.joda.time.DateTime;
+
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.Credit;
+import eu.etaxonomy.cdm.model.common.Extension;
+import eu.etaxonomy.cdm.model.common.Identifier;
+import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.name.NameRelationship;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
+import eu.etaxonomy.cdm.vaadin.model.CdmEntityDecoraterDTO;
+
+/**
+ * @author a.kohlbecker
+ * @since Apr 23, 2018
+ *
+ */
+public class TaxonNameDTO extends CdmEntityDecoraterDTO<TaxonName> {
+
+    private static final long serialVersionUID = -8018109905949198530L;
+
+    private TaxonName name;
+
+    private Set<TaxonName> persistedBasionyms;
+
+    private Set<TaxonName> persistedReplacedSynonyms;
+
+    private TaxonName persistedValidatedName;
+
+    /**
+     * @param entity
+     */
+    public TaxonNameDTO(TaxonName entity) {
+        super(entity);
+        name = entity;
+    }
+
+    public String getAcronym() {
+        return name.getAcronym();
+    }
+
+    public Set<Annotation> getAnnotations() {
+        return name.getAnnotations();
+    }
+
+    public String getAppendedPhrase() {
+        return name.getAppendedPhrase();
+    }
+
+    public String getAuthorshipCache() {
+
+        return name.getAuthorshipCache();
+    }
+
+    public TeamOrPersonBase<?> getBasionymAuthorship() {
+        return name.getBasionymAuthorship();
+    }
+
+    public Set<TaxonName> getBasionyms() {
+        Set<TaxonName> basionyms = name.getRelatedNames(Direction.relatedTo, NameRelationshipType.BASIONYM());
+        if(persistedBasionyms == null){
+            // remember the persisted state before starting to operate on the DTO
+            persistedBasionyms = basionyms;
+        }
+        return basionyms;
+    }
+
+    public Set<TaxonName> getReplacedSynonyms() {
+        Set<TaxonName> replacedSynonyms = name.getRelatedNames(Direction.relatedTo, NameRelationshipType.REPLACED_SYNONYM());
+        if(persistedReplacedSynonyms == null){
+            // remember the persisted state before starting to operate on the DTO
+            persistedReplacedSynonyms = replacedSynonyms;
+        }
+        return replacedSynonyms;
+    }
+
+    public NameRelationshipDTO getValidationFor() {
+        NameRelationshipDTO nameRelDto  = null;
+        NameRelationship validatingRelationship = validatingRelationship();
+        if(validatingRelationship != null){
+            nameRelDto = new NameRelationshipDTO(Direction.relatedTo, validatingRelationship);
+            if(persistedValidatedName == null){
+               persistedValidatedName = nameRelDto.getOtherName();
+            }
+        }
+        return nameRelDto;
+    }
+
+    /**
+     * @return
+     */
+    protected NameRelationship validatingRelationship() {
+        Set<NameRelationship> toRelations = name.getRelationsToThisName();
+        Set<NameRelationship> validatedNameRelations = toRelations.stream().filter(
+                    nr -> nr.getType().equals(NameRelationshipType.VALIDATED_BY_NAME())
+                ).collect(Collectors.toSet());
+        if(validatedNameRelations.size() > 1){
+            // TODO use non RuntimeException
+            throw new RuntimeException("More than one validated name found.");
+        } else if(validatedNameRelations.size() == 0) {
+            return null;
+        }
+        return validatedNameRelations.iterator().next();
+    }
+
+    public void setValidationFor(NameRelationshipDTO nameRelDto) {
+
+        if(nameRelDto != null && nameRelDto.getOtherName() == null){
+            // treat as if there is no validation
+            nameRelDto = null;
+        }
+
+        NameRelationship validatingRelationship = validatingRelationship();
+
+        if(nameRelDto != null){
+            // add or update ...
+            if(validatingRelationship != null && persistedValidatedName != null && validatingRelationship.getFromName().equals(persistedValidatedName)){
+                // validated name has not changed, so we can update the relation
+                validatingRelationship.setCitation(nameRelDto.getCitation());
+                validatingRelationship.setCitationMicroReference(nameRelDto.getCitationMicroReference());
+                validatingRelationship.setRuleConsidered(nameRelDto.getRuleConsidered());
+            } else {
+                // need to remove the old relationship and to create a new one.
+                // the actual removal will take place ....
+                name.addRelationshipFromName(nameRelDto.getOtherName(), NameRelationshipType.VALIDATED_BY_NAME(),
+                        nameRelDto.getCitation(), nameRelDto.getCitationMicroReference(), nameRelDto.getRuleConsidered());
+                if(persistedValidatedName != null){
+                    name.removeRelationWithTaxonName(persistedValidatedName, Direction.relatedTo, NameRelationshipType.VALIDATED_BY_NAME());
+                }
+            }
+        } else {
+            // remove ...
+            if(persistedValidatedName != null && validatingRelationship != null){
+                name.removeRelationWithTaxonName(persistedValidatedName, Direction.relatedTo, NameRelationshipType.VALIDATED_BY_NAME());
+            }
+        }
+    }
+
+    public void setBasionyms(Set<TaxonName> basionyms) {
+        setRelatedNames(Direction.relatedTo, NameRelationshipType.BASIONYM(), basionyms);
+    }
+
+    public void setReplacedSynonyms(Set<TaxonName> replacedSynonyms) {
+        setRelatedNames(Direction.relatedTo, NameRelationshipType.REPLACED_SYNONYM(), replacedSynonyms);
+    }
+
+    /**
+     * @param basionyms
+     * @param relType
+     * @param direction
+     */
+    protected void setRelatedNames(Direction direction, NameRelationshipType relType, Set<TaxonName> relatedNames) {
+        Set<TaxonName> currentRelatedNames = new HashSet<>();
+        Set<TaxonName> namesSeen = new HashSet<>();
+
+        for(TaxonName tn : name.getRelatedNames(direction, relType)){
+            currentRelatedNames.add(tn);
+        }
+        for(TaxonName tn : relatedNames){
+            if(tn == null){
+                continue;
+            }
+            if(!currentRelatedNames.contains(tn)){
+                if(direction.equals(Direction.relatedTo)){
+                    tn.addRelationshipToName(name, relType, null);
+                } else {
+                    tn.addRelationshipFromName(name, relType, null);
+                }
+            }
+            namesSeen.add(tn);
+        }
+        for(TaxonName tn : currentRelatedNames){
+            if(!namesSeen.contains(tn)){
+                name.removeRelationWithTaxonName(tn, direction, relType);
+            }
+        }
+    }
+
+    public Set<TaxonName> persistedBasionyms(){
+        return persistedBasionyms;
+    }
+
+    public TeamOrPersonBase<?> getCombinationAuthorship() {
+        return name.getCombinationAuthorship();
+    }
+
+    public List<Credit> getCredits() {
+        return name.getCredits();
+    }
+
+    public String getCultivarName() {
+        return name.getCultivarName();
+    }
+
+    public TeamOrPersonBase<?> getExBasionymAuthorship() {
+        return name.getExBasionymAuthorship();
+    }
+
+    public TeamOrPersonBase<?> getExCombinationAuthorship() {
+        return name.getExCombinationAuthorship();
+    }
+
+    public Set<Extension> getExtensions() {
+        return name.getExtensions();
+    }
+
+    public String getFullTitleCache() {
+        return name.getFullTitleCache();
+    }
+
+    public String getGenusOrUninomial() {
+        return name.getGenusOrUninomial();
+    }
+
+    public HomotypicalGroup getHomotypicalGroup() {
+        return name.getHomotypicalGroup();
+    }
+
+    public List<Identifier> getIdentifiers() {
+        return name.getIdentifiers();
+    }
+
+    public String getInfraGenericEpithet() {
+        return name.getInfraGenericEpithet();
+    }
+
+    public String getInfraSpecificEpithet() {
+        return name.getInfraSpecificEpithet();
+    }
+
+    public String getSpecificEpithet() {
+        return name.getSpecificEpithet();
+    }
+
+    public String getNameCache() {
+        return name.getNameCache();
+    }
+
+    public String getNomenclaturalMicroReference() {
+        return name.getNomenclaturalMicroReference();
+    }
+
+    public INomenclaturalReference getNomenclaturalReference() {
+        return name.getNomenclaturalReference();
+    }
+
+    public Rank getRank() {
+        return name.getRank();
+    }
+
+    public Set<NomenclaturalStatus> getStatus() {
+        return name.getStatus();
+    }
+
+    public boolean isProtectedAuthorshipCache() {
+        return name.isProtectedAuthorshipCache();
+    }
+
+    public boolean isProtectedFullTitleCache() {
+        return name.isProtectedFullTitleCache();
+    }
+
+    public boolean isProtectedNameCache() {
+        return name.isProtectedNameCache();
+    }
+
+    public boolean isProtectedTitleCache() {
+        return name.isProtectedTitleCache();
+    }
+
+    public void setAcronym(String acronym) {
+        name.setAcronym(acronym);
+    }
+
+    public void setAppendedPhrase(String appendedPhrase) {
+        name.setAppendedPhrase(appendedPhrase);
+    }
+
+    public void setBasionymAuthorship(TeamOrPersonBase<?> basionymAuthorship) {
+        name.setBasionymAuthorship(basionymAuthorship);
+    }
+
+    public void setBinomHybrid(boolean binomHybrid) {
+        name.setBinomHybrid(binomHybrid);
+    }
+
+    public void setBreed(String breed) {
+        name.setBreed(breed);
+    }
+
+    public void setCombinationAuthorship(TeamOrPersonBase<?> combinationAuthorship) {
+        name.setCombinationAuthorship(combinationAuthorship);
+    }
+
+    public void setCultivarName(String cultivarName) {
+        name.setCultivarName(cultivarName);
+    }
+
+    public void setExBasionymAuthorship(TeamOrPersonBase<?> exBasionymAuthorship) {
+        name.setExBasionymAuthorship(exBasionymAuthorship);
+    }
+
+    public void setExCombinationAuthorship(TeamOrPersonBase<?> exCombinationAuthorship) {
+        name.setExCombinationAuthorship(exCombinationAuthorship);
+    }
+
+    public void setFullTitleCache(String fullTitleCache) {
+        name.setFullTitleCache(fullTitleCache);
+    }
+
+    public void setGenusOrUninomial(String genusOrUninomial) {
+        name.setGenusOrUninomial(genusOrUninomial);
+    }
+
+    public void setHybridFormula(boolean hybridFormula) {
+        name.setHybridFormula(hybridFormula);
+    }
+
+    public void setInfraGenericEpithet(String infraGenericEpithet) {
+        name.setInfraGenericEpithet(infraGenericEpithet);
+    }
+
+    public void setInfraSpecificEpithet(String infraSpecificEpithet) {
+        name.setInfraSpecificEpithet(infraSpecificEpithet);
+    }
+
+    public void setMonomHybrid(boolean monomHybrid) {
+        name.setMonomHybrid(monomHybrid);
+    }
+
+    public void setNameApprobation(String nameApprobation) {
+        name.setNameApprobation(nameApprobation);
+    }
+
+    public void setNameCache(String nameCache) {
+        name.setNameCache(nameCache);
+    }
+
+    public void setNameType(NomenclaturalCode nameType) {
+        name.setNameType(nameType);
+    }
+
+    public void setNomenclaturalMicroReference(String nomenclaturalMicroReference) {
+        name.setNomenclaturalMicroReference(nomenclaturalMicroReference);
+    }
+
+    public void setNomenclaturalReference(INomenclaturalReference nomenclaturalReference) {
+        name.setNomenclaturalReference(nomenclaturalReference);
+    }
+
+    public void setProtectedAuthorshipCache(boolean protectedAuthorshipCache) {
+        name.setProtectedAuthorshipCache(protectedAuthorshipCache);
+    }
+
+    public void setProtectedFullTitleCache(boolean protectedFullTitleCache) {
+        name.setProtectedFullTitleCache(protectedFullTitleCache);
+    }
+
+    public void setProtectedNameCache(boolean protectedNameCache) {
+        name.setProtectedNameCache(protectedNameCache);
+    }
+
+    public void setProtectedTitleCache(boolean protectedTitleCache) {
+        name.setProtectedTitleCache(protectedTitleCache);
+    }
+
+    public void setRank(Rank rank) {
+        name.setRank(rank);
+    }
+
+    public void setSpecificEpithet(String specificEpithet) {
+        name.setSpecificEpithet(specificEpithet);
+    }
+
+    public void setTitleCache(String titleCache) {
+        name.setTitleCache(titleCache);
+    }
+
+    public void setTrinomHybrid(boolean trinomHybrid) {
+        name.setTrinomHybrid(trinomHybrid);
+    }
+
+    public void setUpdated(DateTime updated) {
+        name.setUpdated(updated);
+    }
+
+    public void setUpdatedBy(User updatedBy) {
+        name.setUpdatedBy(updatedBy);
+    }
+
+}
index 710b99a2ebf7313c39486633af0f7ced5e8e937a..e51f2bdeddecd1df82f0e0c3e92584f075da99f7 100644 (file)
@@ -14,6 +14,11 @@ import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
 
 /**
+ * Terms to be used as kindOfUnit for {@link SpecimenOrObservationBase#setKindOfUnit()}.
+ * These terms are specific to the phycobank project but are temporarily necessary in
+ * cdmlib-services for {@link SpecimenTypeDesignationDTO}
+ *
+ *
  * @author a.kohlbecker
  * @since Jun 20, 2017
  *
index 862afdfb593473b29cb45ed386d51305f2f7253b..123629071e049fa8bd5731e38eb345aa86bb30bc 100644 (file)
@@ -14,15 +14,16 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.UUID;
 
 import org.joda.time.DateTime;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
 import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationValidationException;
 
 /**
  * @author a.kohlbecker
@@ -33,7 +34,7 @@ public class RegistrationWorkingSet {
 
     private List<RegistrationDTO> registrationDTOs = new ArrayList<>();
 
-    private Integer citationId = null;
+    private UUID citationUuid = null;
 
     private DateTime created = null;
 
@@ -43,7 +44,7 @@ public class RegistrationWorkingSet {
      * Creates an empty working set
      */
     public RegistrationWorkingSet(Reference citation) {
-        citationId = citation.getId();
+        citationUuid = citation.getUuid();
         this.citationString= citation.getTitleCache();
 
     }
@@ -83,11 +84,11 @@ public class RegistrationWorkingSet {
         }
         for(RegistrationDTO regDto : candidates){
                 Reference citation = publicationUnit(regDto);
-                if(citationId == null){
-                    citationId = citation.getId();
+                if(citationUuid == null){
+                    citationUuid = citation.getUuid();
                     citationString = citation.getTitleCache();
                 } else {
-                    if(citation.getId() != citationId.intValue()){
+                    if(!citation.getUuid().equals(citationUuid)){
                         problems.add("Removing Registration " + regDto.getSummary() + " from set since this refers to a different citationString.");
                         continue;
                     }
@@ -151,7 +152,7 @@ public class RegistrationWorkingSet {
     public int messagesCount() {
         int messagesCount = 0;
         for(RegistrationDTO dto : getRegistrationDTOs()) {
-            messagesCount = messagesCount + dto.getMessages().size();
+            messagesCount = messagesCount + dto.getValidationProblems().size();
         }
         return messagesCount;
     }
@@ -180,15 +181,15 @@ public class RegistrationWorkingSet {
         return registrationDTOs;
     }
 
-    public Optional<RegistrationDTO> getRegistrationDTO(int registrationId) {
-        return registrationDTOs.stream().filter(r -> r.getId() == registrationId).findFirst();
+    public Optional<RegistrationDTO> getRegistrationDTO(UUID registrationUuid) {
+        return registrationDTOs.stream().filter(r -> r.getUuid().equals(registrationUuid) ).findFirst();
     }
 
     /**
      * @return the citationId
      */
-    public Integer getCitationId() {
-        return citationId;
+    public UUID getCitationUuid() {
+        return citationUuid;
     }
 
     /**
index 43b4fd24757be706b1569d4434a505c3feccc998..55c711d926055741c24b7efd11df9b75ee703108 100644 (file)
@@ -15,7 +15,6 @@ import org.apache.commons.collections.CollectionUtils;
 
 import eu.etaxonomy.cdm.api.utility.DerivedUnitConversionException;
 import eu.etaxonomy.cdm.api.utility.DerivedUnitConverter;
-import eu.etaxonomy.cdm.api.utility.DerivedUnitConverterFactory;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
@@ -53,6 +52,7 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 public class SpecimenTypeDesignationDTO {
 
     SpecimenTypeDesignation std;
+    private DerivedUnit replacedTypeSpecimen;
 
     /**
      * @return the std
@@ -61,6 +61,10 @@ public class SpecimenTypeDesignationDTO {
         return std;
     }
 
+    public DerivedUnit replacedTypeSpecimen(){
+        return replacedTypeSpecimen;
+    }
+
     /**
      * Creates an new new instance of SpecimenTypeDesignationDTO which is backed up
      * by an newly instantiated <code>SpecimenTypeDesignation.typeSpecimen.derivedFrom.type</code> object graph.
@@ -103,27 +107,34 @@ public class SpecimenTypeDesignationDTO {
         Class<? extends DerivedUnit> currentType = typeSpecimen.getClass();
 
         if(!requiredSpecimenType.equals(currentType)){
-
-            DerivedUnit convertedSpecimen;
-
             SpecimenOrObservationType convertToType = specimenOrObservationTypeFor(kindOfUnit);
             if(requiredSpecimenType.equals(MediaSpecimen.class)){
-                DerivedUnitConverter<MediaSpecimen> converter = DerivedUnitConverterFactory.createDerivedUnitConverter(typeSpecimen, MediaSpecimen.class);
-                convertedSpecimen = converter.convertTo((Class<MediaSpecimen>)requiredSpecimenType, convertToType);
+                DerivedUnitConverter<MediaSpecimen> converter = new DerivedUnitConverter<MediaSpecimen>(std);
+                std = converter.convertTo((Class<MediaSpecimen>)requiredSpecimenType, convertToType);
             } else {
                  if(currentType == MediaSpecimen.class){
                      MediaSpecimen mediaSpecimen = (MediaSpecimen)typeSpecimen;
                      // set null to allow conversion
                      mediaSpecimen.setMediaSpecimen(null);
                  }
-                DerivedUnitConverter<DerivedUnit> converter = DerivedUnitConverterFactory.createDerivedUnitConverter(typeSpecimen, DerivedUnit.class);
-                convertedSpecimen = converter.convertTo((Class<DerivedUnit>)requiredSpecimenType, convertToType);
+                DerivedUnitConverter<DerivedUnit> converter = new DerivedUnitConverter<DerivedUnit>(std);
+                std = converter.convertTo((Class<DerivedUnit>)requiredSpecimenType, convertToType);
+            }
+            if(typeSpecimen.getId() != 0){
+                replacedTypeSpecimen = typeSpecimen;
             }
 
-            std.setTypeSpecimen(convertedSpecimen);
         }
     }
 
+    /**
+     *
+     * @return the total count of typeDesignations associated with the type specimen
+     */
+    public int getAssociatedTypeDesignationCount() {
+        return std.getTypeSpecimen().getSpecimenTypeDesignations().size();
+    }
+
 
     /**
      * See constructor doc.
index 27eb82268a443aa06b96c35e446ecc86705e9ee1..27c651db38452352b8106e77448a7328e007a306 100644 (file)
@@ -23,6 +23,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.Point;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -293,7 +294,7 @@ public class SpecimenTypeDesignationWorkingSetDTO<OWNER extends VersionableEntit
         return fieldUnit.getGatheringEvent().getGatheringDate();
     }
 
-    public void getGatheringDate(Partial gatheringDate){
+    public void setGatheringDate(Partial gatheringDate){
         fieldUnit.getGatheringEvent().setGatheringDate(gatheringDate);
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/taxonDTO.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/taxonDTO.java
deleted file mode 100644 (file)
index 8cf2cc3..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-package eu.etaxonomy.cdm.vaadin.model;
-
-import java.io.Serializable;
-
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-
-public class taxonDTO implements Serializable {
-       
-       private String taxon;
-       private DistributionDTO distribution;
-       
-       public taxonDTO(String taxon, DistributionDTO distribution){
-               this.taxon = taxon;
-               this.distribution = distribution;
-       }
-
-       public String getTaxon() {
-               return taxon;
-       }
-
-       public void setTaxon(String taxon) {
-               this.taxon = taxon;
-       }
-
-       public DistributionDTO getDistribution() {
-               return distribution;
-       }
-
-       public void setDistribution(DistributionDTO distribution) {
-               this.distribution = distribution;
-       }
-
-}
similarity index 96%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/AccessRestrictedView.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/AccessRestrictedView.java
index 05b9e0db15fa0f1eb25a333010ea05ab85b7fdcd..084418d6bc60f2c59e1848c429814b094e173da1 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import java.util.Collection;
 
similarity index 98%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/AnnotationBasedAccessControlBean.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/AnnotationBasedAccessControlBean.java
index 7c41d9a277b1c86229e93eefbe9d9eed05ae791b..8d592dfa33f0565ef6aab485bf5cccbe376d8e2f 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import java.io.Serializable;
 
similarity index 94%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/AnnotationBasedAccessControlConfiguration.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/AnnotationBasedAccessControlConfiguration.java
index 2237f26c2fee044e61a33abaa711f61ba2c72c0a..5dd6a7e0cce4c6d060d7893e406947e92f279fe8 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/permission/CdmEditDeletePermissionTester.java b/src/main/java/eu/etaxonomy/cdm/vaadin/permission/CdmEditDeletePermissionTester.java
new file mode 100644 (file)
index 0000000..503c82c
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.permission;
+
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
+import eu.etaxonomy.vaadin.permission.EditPermissionTester;
+
+/**
+ * To be used for {@link ToManyRelatedEntitiesComboboxSelect}
+ *
+ * @author a.kohlbecker
+ * @since Apr 20, 2018
+ *
+ */
+public class CdmEditDeletePermissionTester implements EditPermissionTester {
+    @Override
+    public boolean userHasEditPermission(Object bean) {
+        return  UserHelper.fromSession().userHasPermission((CdmBase)bean, CRUD.UPDATE, CRUD.DELETE);
+    }
+}
\ No newline at end of file
similarity index 91%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/PermissionDebugUtils.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/PermissionDebugUtils.java
index a96645ed9a8b022ec4e1f80db1daec126855bb37..f654e0292faa6b1709ef5070b96d3e54d9d5aab5 100644 (file)
@@ -6,10 +6,11 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import java.io.Serializable;
 import java.util.EnumSet;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.springframework.context.annotation.Profile;
@@ -65,11 +66,11 @@ public class PermissionDebugUtils implements Serializable {
      }
 
     public static Button addGainPerEntityPermissionButton(AbstractComponentContainer toContainer, Class<? extends CdmBase> cdmType,
-            Integer entitiyId, EnumSet<CRUD> crud, String property){
+            UUID entitiyUuid, EnumSet<CRUD> crud, String property){
 
         PermissionDebugUtils pu = PermissionDebugUtils.fromSession();
         if(pu != null){
-            Button button = pu.gainPerEntityPermissionButton(cdmType, entitiyId, crud, property);
+            Button button = pu.gainPerEntityPermissionButton(cdmType, entitiyUuid, crud, property);
             if(button != null){
                 toContainer.addComponent(button);
             }
@@ -78,10 +79,10 @@ public class PermissionDebugUtils implements Serializable {
         return null;
     }
 
-    public Button gainPerEntityPermissionButton(Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property){
+    public Button gainPerEntityPermissionButton(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property){
 
        Button button = new Button(FontAwesome.BOLT);
-       button.addClickListener(e -> UserHelper.fromSession().createAuthorityFor(UserHelper.fromSession().userName(), cdmType, entitiyId, crud, property));
+       button.addClickListener(e -> UserHelper.fromSession().createAuthorityFor(UserHelper.fromSession().userName(), cdmType, entitiyUuid, crud, property));
        button.addStyleName(ValoTheme.BUTTON_DANGER);
        return button;
 
similarity index 91%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/ReleasableResourcesView.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/ReleasableResourcesView.java
index 03e84fa41bf37039d905520edaedce559f6915d6..c8a109d1fa672514d82fbf4a02f8108f3d16161c 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 /**
  * @author a.kohlbecker
similarity index 93%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/RolesAndPermissions.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/RolesAndPermissions.java
index 214c77f8e1ec582282b140bff3695619dc7b44fe..8abb86abc1386888a2c4436de5b7d97e3fe73d2d 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import java.util.UUID;
 
similarity index 75%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/UserHelper.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/UserHelper.java
index cfd4ecff334c5ee8281f9bb469162327699d983f..448f49268c94631472b9a47c2d052d525a1b76f5 100644 (file)
@@ -6,13 +6,15 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import java.util.EnumSet;
+import java.util.UUID;
 
 import com.vaadin.server.VaadinSession;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
 
@@ -40,6 +42,8 @@ public interface UserHelper {
 
     boolean userHasPermission(Class<? extends CdmBase> cdmType, Integer entitiyId, Object ... args);
 
+    boolean userHasPermission(Class<? extends CdmBase> cdmType, UUID entitiyUUID, Object ... args);
+
     boolean userHasPermission(Class<? extends CdmBase> cdmType, Object ... args);
 
     boolean userHasPermission(CdmBase entity, Object ... args);
@@ -48,6 +52,8 @@ public interface UserHelper {
 
     boolean userIsAdmin();
 
+    User user();
+
     String userName();
 
     boolean userIsAnnonymous();
@@ -77,6 +83,20 @@ public interface UserHelper {
      */
     public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property);
 
+
+    /**
+    *
+    * @param username
+    * @param cdmType
+    * @param entitiyUuid
+    * @param crud
+    * @param property
+    * @return the newly created CdmAuthority only if a new CdmAuthority has been added to the user otherwise
+    * <code>null</code> in case the operation failed of if the user was already granted with this authority.
+    */
+   public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property);
+
+
     /**
      * @param cdmType
      * @param entitiyId
@@ -86,6 +106,15 @@ public interface UserHelper {
      */
     public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property);
 
+    /**
+     * @param cdmType
+     * @param entitiyUuid
+     * @param crud
+     * @return the newly created CdmAuthority only if a new CdmAuthority has been added to the user otherwise
+     * <code>null</code> in case the operation failed of if the user was already granted with this authority.
+     */
+    public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property);
+
     /**
      * @param cdmType
      * @param entitiyId
similarity index 93%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/VaadinUserHelper.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/VaadinUserHelper.java
index 915bb6aaafb2cd11154ea1ce86d53d9d2f8b72df..ed372b6257ea1eafb091d7e12ee03614627b5357 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security;
+package eu.etaxonomy.cdm.vaadin.permission;
 
 import com.vaadin.server.VaadinSession;
 
similarity index 84%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/annotation/EnableAnnotationBasedAccessControl.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/annotation/EnableAnnotationBasedAccessControl.java
index e7f246c25ccc52e9258f84a1a13afd2db284f551..e26fab912cf1a8632b33d69cd48962e7fb90a7df 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security.annotation;
+package eu.etaxonomy.cdm.vaadin.permission.annotation;
 
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
@@ -17,7 +17,7 @@ import java.lang.annotation.Target;
 
 import org.springframework.context.annotation.Import;
 
-import eu.etaxonomy.cdm.vaadin.security.AnnotationBasedAccessControlConfiguration;
+import eu.etaxonomy.cdm.vaadin.permission.AnnotationBasedAccessControlConfiguration;
 
 @Documented
 @Retention(RUNTIME)
similarity index 92%
rename from src/main/java/eu/etaxonomy/cdm/vaadin/security/annotation/RequireAuthentication.java
rename to src/main/java/eu/etaxonomy/cdm/vaadin/permission/annotation/RequireAuthentication.java
index 4bc0d95b5b99f662cebe579660fccc6bb9883dfd..336c5ae34e91c58667e0ff6106e5357b68f5fcb2 100644 (file)
@@ -6,7 +6,7 @@
 * 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.cdm.vaadin.security.annotation;
+package eu.etaxonomy.cdm.vaadin.permission.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
index dd29c648b9136d03a7a4a8ac341f1bf4123bb11f..cf63ce7d2040b46a9270d0d7c718bd0676a51e46 100644 (file)
@@ -12,7 +12,7 @@ import com.vaadin.ui.Component;
 
 /**
  * @author cmathew
- * @date 21 Apr 2015
+ * @since 21 Apr 2015
  *
  */
 public class BasicEvent {
index 795d22e9c400800c3ea03cc6ba72da7f174e9004..5f927d9a49253bafe4793ba108c2d64d584974f7 100644 (file)
@@ -15,7 +15,7 @@ import com.vaadin.ui.UI;
 
 /**
  * @author cmathew
- * @date 21 Apr 2015
+ * @since 21 Apr 2015
  *
  */
 public class BasicEventService {
index b007f0de9440233c301f6a11bca0bfcd09337887..fcce3c1c426adfce57ace1e512c6bf8b51bf6d36 100644 (file)
@@ -14,7 +14,7 @@ import com.vaadin.ui.Component;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class CdmChangeEvent {
index 294fdddfa6f47fabe8322ac714c7b8d075897817..0cb8e1b83952afe729b24002f20e5e7946626ad7 100644 (file)
@@ -15,7 +15,7 @@ import com.vaadin.ui.UI;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class CdmDataChangeService {
index 21be72685733db8e98652dbfe3a2487f25d19f1a..650e3a65dbeda859cf3ed3ffea13be17b53342ba 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.cdm.vaadin.session;
 
 /**
  * @author cmathew
- * @date 21 Apr 2015
+ * @since 21 Apr 2015
  *
  */
 public interface IBasicEventListener {
index 9f315fafed05c95f6be644b2727f11a29d50c590..921ea3cf581cb318f5ae7e574f5196c9b6aef506 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.cdm.vaadin.session;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public interface ICdmChangeListener {
index 5f28b9f6578b7fc04a86c7e5c699ef10b98539a9..47ae88c6d447edb682cc30829c72a46ef235dad1 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.cdm.vaadin.session;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public interface ISelectionListener {
index 90eb205abb13a3d03914ab64f003cc826e23de76..5420def98a657881d2254a3f6c263387576362e0 100644 (file)
@@ -14,7 +14,7 @@ import com.vaadin.ui.Component;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public class SelectionEvent {
index 5bc65c35bce5e36779e512feca6f0b4abea23a48..e7d34e405dd3bda10fd5b8c145c7f5c1e3952b2e 100644 (file)
@@ -15,7 +15,7 @@ import com.vaadin.ui.UI;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public class SelectionService {
index 120e0ecb7e6899ef6349f8ef8504e7f02511b9b7..e1178e8dfd0a365a206f03505784d480ec450520 100644 (file)
@@ -23,7 +23,7 @@ import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
 
 /**
  * @author cmathew
- * @date 10 Mar 2015
+ * @since 10 Mar 2015
  *
  */
 public class CdmStatementDelegate implements FreeformStatementDelegate {
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/theme/EditValoTheme.java b/src/main/java/eu/etaxonomy/cdm/vaadin/theme/EditValoTheme.java
new file mode 100644 (file)
index 0000000..da89296
--- /dev/null
@@ -0,0 +1,24 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.theme;
+
+import com.vaadin.ui.themes.ValoTheme;
+
+/**
+ * @author a.kohlbecker
+ * @since Mar 20, 2018
+ *
+ */
+public class EditValoTheme extends ValoTheme {
+
+    public static final String BUTTON_HIGHLITE = "highlite";
+
+    public static final String PANEL_CONTENT_PADDING_LEFT = "padding-left";
+
+}
index f16ef070bdf03004d7a8497047e809bfde6491fb..ae9c85d0b7b26c1ee527b395871ad904fc5c89cb 100644 (file)
@@ -17,7 +17,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmVaadinSessionUtilities;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class CdmBaseUI extends UI {
index 4901a8d39dcd514c01904333fc057e71a8c683e7..c0ba523089b5141ea70e0a7169b890cb2dea8896 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.vaadin.view.ConceptRelationshipView;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 @Theme("valo")
index d67128e059a55cb2d6be3c127bb0652c3ff6f4f0..a48d7e2547b9a81171ee736f2dbb08a76d4b90d5 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.vaadin.view.ConceptRelationshipView;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 @Theme("edit")
index 300c3af1c705120f9f7d7b7b870965c542e73ea3..be558a3558c889abc1b3291c22ff1282c98eb450 100644 (file)
@@ -17,7 +17,7 @@ import com.vaadin.spring.annotation.SpringUI;
 import com.vaadin.spring.navigator.SpringViewProvider;
 import com.vaadin.ui.UI;
 
-import eu.etaxonomy.cdm.vaadin.security.ReleasableResourcesView;
+import eu.etaxonomy.cdm.vaadin.permission.ReleasableResourcesView;
 import eu.etaxonomy.cdm.vaadin.view.RedirectToLoginView;
 import eu.etaxonomy.cdm.vaadin.view.distributionStatus.DistributionTableViewBean;
 import eu.etaxonomy.vaadin.ui.UIInitializedEvent;
index 5f0c3ce93ea97ff48abfe953a2235f18a2c44478..c6bbecc38e377235717cb33d47b5c680971ec7b7 100644 (file)
@@ -81,7 +81,7 @@ public class RegistrationUI extends UI {
          */
     //    @Autowired
     //    MenuBeanDiscoveryBean bean;
-    
+
         @Autowired
         private MainMenu mainMenu;
 
@@ -90,13 +90,13 @@ public class RegistrationUI extends UI {
              */
         //    @Autowired
         //    MenuBeanDiscoveryBean bean;
-        
+
             @Autowired
             @Qualifier("registrationToolbar")
             private Toolbar toolbar;
 
     //---------------------------------------------
-            
+
             public static final String INITIAL_VIEW =  DashBoardView.NAME;
 
     protected void configureAccessDeniedView() {
@@ -118,7 +118,7 @@ public class RegistrationUI extends UI {
 
     //---------------------------------------------
 
-    
+
 
 
     /*
@@ -134,7 +134,7 @@ public class RegistrationUI extends UI {
     @Override
     protected void init(VaadinRequest request) {
 
-        setErrorHandler(new WindowErrorHandler(this, "Please contact the editsupport@bgbm.org for more information.</br></br>"
+        setErrorHandler(new WindowErrorHandler(this, RegistrationUIDefaults.ERROR_CONTACT_MESSAGE_LINE + "</br></br>"
                 + "<i>To help analyzing the problem please describe your actions that lead to this error and provide the error details from below in your email. "
                 + "You also might want to add a sreenshot of the browser page in error.</i>"));
 
index 97bf734e7d48c5363f16c6d838bf65c050a14f58..bbd5829f5565592a6cbb221c61410ea597fd83b3 100644 (file)
@@ -51,4 +51,6 @@ public class RegistrationUIDefaults {
      *  TODO make configurable as preset and in TaxonNameEditor
      */
     public static final NomenclaturalCode NOMENCLATURAL_CODE = NomenclaturalCode.ICNAFP;
+
+    public static final String ERROR_CONTACT_MESSAGE_LINE = "Please contact <a href=\"mailto:editsupport@bgbm.org\">editsupport@bgbm.org</a> for support and more information.";
 }
index 7f665c7ae49c218225db80564f4a9c70f26649cb..6adcc5d27b330478a8eeda485e6e2eab63fde10d 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.vaadin.component.taxon.StatusComposite;
 
 /**
  * @author cmathew
- * @date 11 Mar 2015
+ * @since 11 Mar 2015
  *
  */
 @Theme("edit")
index 1be88edc82d7f37aa25bfb121a3bfed7430f47ba..6500f3c846c66825f160217b9bcc39603343422f 100644 (file)
@@ -29,21 +29,21 @@ import eu.etaxonomy.cdm.vaadin.statement.CdmStatementDelegate;
 
 /**
  * @author cmathew
- * @date 1 Apr 2015
+ * @since 1 Apr 2015
  *
  */
 public class CdmQueryFactory {
 
 
        public static final String DTYPE_COLUMN = "DTYPE";
-       public static final String ID_COLUMN = "id";
-       public static final String UUID_COLUMN = "uuid";
-       public static final String CLASSIFICATION_COLUMN = "classification";
-       public static final String RANK_COLUMN = "Rang";
-       public static final String TAXON_COLUMN = "Taxon";
-
-    public static final String ID = "id";
-    public static final String UUID_ID = "uuid";
+       public static final String ID_COLUMN = "ID";
+       public static final String UUID_COLUMN = "UUID";
+       public static final String CLASSIFICATION_COLUMN = "CLASSIFICATION";
+       public static final String RANK_COLUMN = "RANK";
+       public static final String TAXON_COLUMN = "TAXON";
+
+    public static final String ID = "ID";
+    public static final String UUID_ID = "UUID";
 
     public static QueryDelegate generateTaxonTreeQuery(String name_id, String classificationId)  {
         String FROM_QUERY = " FROM TaxonBase tb " +
index 8ca508e0713c31cb311061b000c48bd77e014a36..739cb43833be90ae7bd1f08f4b0ab1df97fb235f 100644 (file)
@@ -12,7 +12,7 @@ import com.vaadin.data.util.sqlcontainer.query.generator.filter.StringDecorator;
 
 /**
  * @author cmathew
- * @date 16 Mar 2015
+ * @since 16 Mar 2015
  *
  */
 public class CdmSQLStringDecorator extends StringDecorator {
index f981061e90b3136496ee78afef9ba89b9b159443..fe47d515c70ee52c47ae046e4d1214a78e871a42 100644 (file)
@@ -18,7 +18,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
 
 /**
  * @author cmathew
- * @date 28 Apr 2015
+ * @since 28 Apr 2015
  *
  */
 public class CdmVaadinAuthentication {
index 9f206fad5988e34a367acfeebdd8a5c620311337..78782620cf7e4533ba7f3d46989b53ad5b07df0a 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent;
 
 /**
  * @author cmathew
- * @date 14 Apr 2015
+ * @since 14 Apr 2015
  *
  */
 public abstract class CdmVaadinOperation implements Runnable {
index 51b15f31e08655b64ff64d82e79ba069773dd90f..583cd1617e4a961dfdefa394b89a110cba7726f1 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.vaadin.session.SelectionService;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class CdmVaadinSessionUtilities {
index 8fb128130e0488debf8e33e0c7a6f9a7fc58183f..40241700c74d5773d8c637b3180204b356f1933d 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.vaadin.component.CdmProgressComponent;
 
 /**
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class CdmVaadinUtilities {
index d10004c6214d29a1625e00a85f86e3c62b973c69..a5dd5efc5bac3f2bcb36609b71dfbe068428781e 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 
 /**
  * @author freimeier
- * @date 16.11.2017
+ * @since 16.11.2017
  *
  */
 
index 5b3239ffe8360094dbc90c736aaf9c6bc6da3262..9e4ab08adbc4af11b0a04a8d4e1ac8782b2091bc 100644 (file)
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 
 /**
  * @author freimeier
- * @date 22.11.2017
+ * @since 22.11.2017
  *
  */
 public class DistributionStatusQueryDefinition extends LazyQueryDefinition {
index cc180a7277bb96fcb95097e7089f53c1e196f04b..19e6ead83329dcabc95b538a89d26242611ac527 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 
 /**
  * @author freimeier
- * @date 16.11.2017
+ * @since 16.11.2017
  *
  */
 public class DistributionStatusQueryFactory implements QueryFactory{
index aa7ac5bd35d2147f5e9b1f1ea49cc159c23729b4..f0a9a27682e943ba347edf2b7e5b402e05eb9fa2 100644 (file)
@@ -20,7 +20,7 @@ import org.apache.log4j.Logger;
  * org.dbunit.util.SQLHelper class
  *
  * @author cmathew
- * @date 7 Apr 2015
+ * @since 7 Apr 2015
  *
  */
 public class SQLUtils {
index 78bde01af0c30697f2784eb4e07c72af7d367be8..900ac9a438a8bb1c110ba3798ac853e879e23494 100644 (file)
@@ -35,6 +35,18 @@ public final class TeamOrPersonBaseCaptionGenerator<T extends TeamOrPersonBase>
 
     @Override
     public String getCaption(T option) {
+        String caption = chooseTitle(option);
+        if(caption == null){
+            caption = option.getTitleCache();
+        }
+        return caption;
+    }
+
+    /**
+     * @param option
+     * @return
+     */
+    protected String chooseTitle(T option) {
         switch(cacheType){
         case NOMENCLATURAL_TITLE:
             return option.getNomenclaturalTitle();
@@ -42,7 +54,7 @@ public final class TeamOrPersonBaseCaptionGenerator<T extends TeamOrPersonBase>
             // return option.getCollectorTitle(); // enable once #4311 is solved
         case BIBLIOGRAPHIC_TITLE:
         default:
-            return option.getTitleCache();
+            return null;
         }
     }
 }
\ No newline at end of file
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/TermCacher.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/TermCacher.java
deleted file mode 100644 (file)
index f752d4f..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
-* Copyright (C) 2016 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.cdm.vaadin.util;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
-import eu.etaxonomy.cdm.model.location.NamedArea;
-
-/**
- * @author pplitzner
- * @date 10.10.2016
- *
- */
-public class TermCacher {
-
-    private static final Map<String, NamedArea> titleToNamedAreaMap = new HashMap<>();
-
-    private static final Map<String, PresenceAbsenceTerm> titleToPresenceAbsenceTermMap = new HashMap<>();
-
-    private static TermCacher instance;
-
-    private TermCacher() {
-        // TODO Auto-generated constructor stub
-    }
-
-    public static TermCacher getInstance(){
-        if(instance==null){
-            instance = new TermCacher();
-        }
-        return instance;
-    }
-
-
-    public void addNamedArea(NamedArea namedArea){
-        titleToNamedAreaMap.put(namedArea.getTitleCache(), namedArea);
-    }
-
-//    private void loadNamedAreaTerms() {
-//        List<NamedArea> naTerms = CdmSpringContextHelper.getTermService().listByTermType(TermType.NamedArea,
-//                                                                     null, null, null, TERMS_INIT_STRATEGY);
-//        for(NamedArea naTerm : naTerms) {
-//            this.addNamedArea(naTerm);
-//        }
-//    }
-
-    public NamedArea getNamedArea(String title){
-//        // TODO: Only load single area if not already cached.
-//        if(titleToNamedAreaMap.isEmpty()) {
-//            loadNamedAreaTerms();
-//        }
-        return titleToNamedAreaMap.get(title);
-    }
-
-//    // Performance Issue
-//    public List<NamedArea> getNamedAreaTermList(){
-//        if (titleToNamedAreaMap.isEmpty()) {
-//            loadNamedAreaTerms();
-//        }
-//        List<NamedArea> naList = new ArrayList<>();
-//        naList.addAll(titleToNamedAreaMap.values());
-//        return naList;
-//    }
-
-    public void addPresenceAbsenceTerm(PresenceAbsenceTerm presenceAbsenceTerm){
-        titleToPresenceAbsenceTermMap.put(presenceAbsenceTerm.getTitleCache(), presenceAbsenceTerm);
-    }
-
-    private void loadDistributionStatusTerms() {
-        List<PresenceAbsenceTerm> paTerms = CdmSpringContextHelper.getTermService().listByTermType(
-                                                TermType.PresenceAbsenceTerm, null, null, null,
-                                                TERMS_INIT_STRATEGY);
-        for(PresenceAbsenceTerm paTerm : paTerms) {
-            this.addPresenceAbsenceTerm(paTerm);
-        }
-    }
-
-    public PresenceAbsenceTerm getPresenceAbsenceTerm(String title){
-        if(titleToPresenceAbsenceTermMap.isEmpty()) {
-            loadDistributionStatusTerms();
-        }
-        return titleToPresenceAbsenceTermMap.get(title);
-    }
-
-    public List<PresenceAbsenceTerm> getDistributionStatusTermList(){
-        if (titleToPresenceAbsenceTermMap.isEmpty()) {
-            loadDistributionStatusTerms();
-        }
-        List<PresenceAbsenceTerm> paList = new ArrayList<>();
-        paList.addAll(titleToPresenceAbsenceTermMap.values());
-        return paList;
-    }
-
-    protected static final List<String> TERMS_INIT_STRATEGY = Arrays.asList(new String []{
-            "$",
-            "representations",
-    });
-}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/DataIntegrityException.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/DataIntegrityException.java
deleted file mode 100644 (file)
index e649232..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.util.converter;
-
-/**
- * @author a.kohlbecker
- * @since Jun 19, 2017
- *
- */
-public class DataIntegrityException extends Exception {
-
-    /**
-     * @param string
-     */
-    public DataIntegrityException(String string) {
-        super(string);
-    }
-
-}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/DoubleConverter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/DoubleConverter.java
new file mode 100644 (file)
index 0000000..b5ea225
--- /dev/null
@@ -0,0 +1,86 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.util.converter;
+
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.vaadin.data.util.converter.Converter;
+
+/**
+ * @author a.kohlbecker
+ * @since Mar 28, 2018
+ *
+ */
+public class DoubleConverter implements Converter<String, Double> {
+
+    private static final long serialVersionUID = -8799792699785931554L;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Double convertToModel(String value, Class<? extends Double> targetType, Locale locale)
+            throws com.vaadin.data.util.converter.Converter.ConversionException {
+
+        if(StringUtils.isBlank(value)){
+            return null;
+        }
+        if(locale == null){
+            locale = Locale.getDefault();
+        }
+        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
+        NumberFormat nf = NumberFormat.getNumberInstance(locale);
+        String separator = symbols.getDecimalSeparator() + "";
+        value = value.replaceAll("[.,;]", separator);
+        try {
+            return nf.parse(value).doubleValue();
+        } catch (ParseException e){
+            throw new ConversionException(e);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String convertToPresentation(Double value, Class<? extends String> targetType, Locale locale)
+            throws com.vaadin.data.util.converter.Converter.ConversionException {
+
+        if(value == null){
+            return null;
+        }
+        if(locale == null){
+            locale = Locale.getDefault();
+        }
+        NumberFormat nf = NumberFormat.getInstance(locale);
+        return nf.format(value);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<Double> getModelType() {
+        return Double.class;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<String> getPresentationType() {
+        return String.class;
+    }
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/IntegerConverter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/IntegerConverter.java
new file mode 100644 (file)
index 0000000..3f8c3d6
--- /dev/null
@@ -0,0 +1,86 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.util.converter;
+
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.vaadin.data.util.converter.Converter;
+
+/**
+ * @author a.kohlbecker
+ * @since Mar 28, 2018
+ *
+ */
+public class IntegerConverter implements Converter<String, Integer> {
+
+    private static final long serialVersionUID = -8799792699785931554L;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Integer convertToModel(String value, Class<? extends Integer> targetType, Locale locale)
+            throws com.vaadin.data.util.converter.Converter.ConversionException {
+
+        if(StringUtils.isBlank(value)){
+            return null;
+        }
+        if(locale == null){
+            locale = Locale.getDefault();
+        }
+        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
+        NumberFormat nf = NumberFormat.getNumberInstance(locale);
+        String separator = symbols.getDecimalSeparator() + "";
+        value = value.replaceAll("[.,;]", separator);
+        try {
+            return nf.parse(value).intValue();
+        } catch (ParseException e){
+            throw new ConversionException(e);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String convertToPresentation(Integer value, Class<? extends String> targetType, Locale locale)
+            throws com.vaadin.data.util.converter.Converter.ConversionException {
+
+        if(value == null){
+            return null;
+        }
+        if(locale == null){
+            locale = Locale.getDefault();
+        }
+        NumberFormat nf = NumberFormat.getInstance(locale);
+        return nf.format(value);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<Integer> getModelType() {
+        return Integer.class;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<String> getPresentationType() {
+        return String.class;
+    }
+
+}
index 9f3bbaecec291a7d95a417489e2a6ab284e38a26..fe24ed729b2cadb770b712c6769508bea2f80cd1 100644 (file)
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author freimeier
- * @date 22.11.2017
+ * @since 22.11.2017
  *
  */
 public class PresenceAbsenceTermUuidObjectConverter implements Converter<Object, UUID> {
index 9d73b357e6caf1b8890a55ae1197ce661e147ac4..cdd854d2581b1a9765b7fb8f5af66c4a6f2e8c14 100644 (file)
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
 
 /**
  * @author freimeier
- * @date 22.11.2017
+ * @since 22.11.2017
  *
  */
 public class PresenceAbsenceTermUuidTitleStringConverter extends UuidTitleStringConverter {
index 27150f03a51c8718d331b1cb90ad8c48851474d4..510a0b253a99abd45125280bdf75310ff07e6f45 100644 (file)
@@ -15,7 +15,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author freimeier
- * @date 22.11.2017
+ * @since 22.11.2017
  *
  */
 public class TaxonNodeUuidTitleStringConverter extends UuidTitleStringConverter {
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java
deleted file mode 100644 (file)
index 74b41c0..0000000
+++ /dev/null
@@ -1,748 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.util.converter;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-import org.hibernate.search.hcore.util.impl.HibernateHelper;
-
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VersionableEntity;
-import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
-import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.vaadin.model.EntityReference;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationValidationException;
-
-/**
- * Manages a collection of {@link TypeDesignationBase TypeDesignations} for the same typified name.
- *
- * Type designations are ordered by the base type which is a {@link TaxonName} for {@link NameTypeDesignation NameTypeDesignations} or
- * in case of {@link SpecimenTypeDesignation SpecimenTypeDesignations} the  associate {@link FieldUnit} or the {@link DerivedUnit}
- * if the former is missing. The type designations per base type are furthermore ordered by the {@link TypeDesignationStatusBase}.
- *
- * The TypeDesignationSetManager also provides string representations of the whole ordered set of all
- * {@link TypeDesignationBase TypeDesignations} and of the TypeDesignationWorkingSets:
- * <ul>
- *  <li>{@link #print()})
- *  <li>{@link #getOrderdTypeDesignationWorkingSets()} ... {@link TypeDesignationWorkingSet#getRepresentation()}
- * </ul>
- * Prior using the representations you need to trigger their generation by calling {@link #buildString()}
- *
- * @author a.kohlbecker
- * @since Mar 10, 2017
- *
- */
-public class TypeDesignationSetManager {
-
-    enum NameTypeBaseEntityType{
-
-        NAME_TYPE_DESIGNATION,
-        TYPE_NAME;
-
-    }
-
-    private static final String TYPE_STATUS_SEPARATOR = "; ";
-
-    private static final String TYPE_SEPARATOR = "; ";
-
-    private static final String TYPE_DESIGNATION_SEPARATOR = ", ";
-
-    private Collection<TypeDesignationBase> typeDesignations;
-
-    private NameTypeBaseEntityType nameTypeBaseEntityType = NameTypeBaseEntityType.NAME_TYPE_DESIGNATION;
-
-    /**
-     * Groups the EntityReferences for each of the TypeDesignations by the according TypeDesignationStatus.
-     * The TypeDesignationStatusBase keys are already ordered by the term order defined in the vocabulary.
-     */
-    private LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderedByTypesByBaseEntity;
-
-    private EntityReference typifiedNameRef;
-
-    private TaxonName typifiedName;
-
-    private String finalString = null;
-
-    final NullTypeDesignationStatus NULL_STATUS = new NullTypeDesignationStatus();
-
-    private List<String> probelms = new ArrayList<>();
-
-    private boolean printCitation = false;
-
-    /**
-     * @param containgEntity
-     * @param taxonName
-     * @throws RegistrationValidationException
-     *
-     */
-    public TypeDesignationSetManager(Collection<TypeDesignationBase> typeDesignations) throws RegistrationValidationException {
-        this.typeDesignations = typeDesignations;
-        findTypifiedName();
-        mapAndSort();
-    }
-
-    /**
-     * @param typifiedName2
-     */
-    public TypeDesignationSetManager(TaxonName typifiedName) {
-        this.typeDesignations = new ArrayList<>();
-        this.typifiedNameRef = new EntityReference(typifiedName.getId(), typifiedName.getTitleCache());
-    }
-
-    /**
-     * Add one or more TypeDesignations to the manager. This causes re-grouping and re-ordering
-     * of all managed TypeDesignations.
-     *
-     * @param containgEntity
-     * @param typeDesignations
-     */
-    public void addTypeDesigations(CdmBase containgEntity, TypeDesignationBase ... typeDesignations){
-       this.typeDesignations.addAll(Arrays.asList(typeDesignations));
-       mapAndSort();
-    }
-
-    /**
-     * Groups and orders all managed TypeDesignations.
-     *
-     * @param containgEntity
-     */
-    protected void mapAndSort() {
-        finalString = null;
-        Map<TypedEntityReference, TypeDesignationWorkingSet> byBaseEntityByTypeStatus = new HashMap<>();
-        this.typeDesignations.forEach(td -> mapTypeDesignation(byBaseEntityByTypeStatus, td));
-        orderedByTypesByBaseEntity = orderByTypeByBaseEntity(byBaseEntityByTypeStatus);
-    }
-
-
-    /**
-     *
-     * @param containgEntity
-     * @param byBaseEntityByTypeStatus
-     * @param td
-     */
-    private void mapTypeDesignation(Map<TypedEntityReference, TypeDesignationWorkingSet> byBaseEntityByTypeStatus,
-            TypeDesignationBase<?> td){
-
-        TypeDesignationStatusBase<?> status = td.getTypeStatus();
-
-        try {
-            final VersionableEntity baseEntity = baseEntity(td);
-            final TypedEntityReference<VersionableEntity> baseEntityReference = makeEntityReference(baseEntity);
-
-            EntityReference typeDesignationEntityReference = new EntityReference(td.getId(), stringify(td));
-
-            TypeDesignationWorkingSet typedesignationWorkingSet;
-            if(!byBaseEntityByTypeStatus.containsKey(baseEntityReference)){
-                byBaseEntityByTypeStatus.put(baseEntityReference, new TypeDesignationWorkingSet(baseEntity, baseEntityReference));
-            }
-
-            typedesignationWorkingSet = byBaseEntityByTypeStatus.get(baseEntityReference);
-            typedesignationWorkingSet.insert(status, typeDesignationEntityReference);
-        } catch (DataIntegrityException e){
-            probelms.add(e.getMessage());
-        }
-    }
-
-    /**
-     * @param td
-     * @return
-     * @throws DataIntegrityException
-     */
-    protected VersionableEntity baseEntity(TypeDesignationBase<?> td) throws DataIntegrityException {
-
-        VersionableEntity baseEntity = null;
-        if(td  instanceof SpecimenTypeDesignation){
-            SpecimenTypeDesignation std = (SpecimenTypeDesignation) td;
-            FieldUnit fu = findFieldUnit(std);
-            if(fu != null){
-                baseEntity = fu;
-            } else if(((SpecimenTypeDesignation) td).getTypeSpecimen() != null){
-                baseEntity = ((SpecimenTypeDesignation) td).getTypeSpecimen();
-            }
-        } else if(td instanceof NameTypeDesignation){
-            if(nameTypeBaseEntityType == NameTypeBaseEntityType.NAME_TYPE_DESIGNATION){
-                baseEntity = td;
-            } else {
-                // only other option is TaxonName
-                baseEntity = ((NameTypeDesignation)td).getTypeName();
-            }
-        }
-        if(baseEntity == null) {
-            throw new DataIntegrityException("Incomplete TypeDesignation, no type missin in " + td.toString());
-        }
-        return baseEntity;
-    }
-
-    /**
-     * @param td
-     * @return
-     */
-    protected TypedEntityReference<VersionableEntity> makeEntityReference(VersionableEntity baseEntity) {
-
-        baseEntity = (VersionableEntity) HibernateHelper.unproxy(baseEntity);
-        String label = "";
-        if(baseEntity  instanceof FieldUnit){
-                label = ((FieldUnit)baseEntity).getTitleCache();
-        }
-
-        TypedEntityReference<VersionableEntity> baseEntityReference = new TypedEntityReference(baseEntity.getClass(), baseEntity.getId(), label);
-
-        return baseEntityReference;
-    }
-
-
-    private LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> orderByTypeByBaseEntity(
-            Map<TypedEntityReference, TypeDesignationWorkingSet> stringsByTypeByBaseEntity){
-
-       // order the FieldUnit TypeName keys
-       List<TypedEntityReference> baseEntityKeyList = new LinkedList<>(stringsByTypeByBaseEntity.keySet());
-       Collections.sort(baseEntityKeyList, new Comparator<TypedEntityReference>(){
-        /**
-         * Sorts the base entities (TypedEntityReference) in the following order:
-         *
-         * 1. FieldUnits
-         * 2. DerivedUnit (in case of missing FieldUnit we expect the base type to be DerivedUnit)
-         * 3. NameType
-         *
-         * {@inheritDoc}
-         */
-        @Override
-        public int compare(TypedEntityReference o1, TypedEntityReference o2) {
-
-            Class type1 = o1.getType();
-            Class type2 = o2.getType();
-
-            if(!type1.equals(type2)) {
-                if(type1.equals(FieldUnit.class) || type2.equals(FieldUnit.class)){
-                    // FieldUnits first
-                    return type1.equals(FieldUnit.class) ? -1 : 1;
-                } else {
-                    // name types last (in case of missing FieldUnit we expect the base type to be DerivedUnit which comes into the middle)
-                    return type2.equals(TaxonName.class) || type2.equals(NameTypeDesignation.class) ? -1 : 1;
-                }
-            } else {
-                return o1.getLabel().compareTo(o2.getLabel());
-            }
-        }});
-
-       // new LinkedHashMap for the ordered FieldUnitOrTypeName keys
-       LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> stringsOrderedbyBaseEntityOrderdByType = new LinkedHashMap<>(stringsByTypeByBaseEntity.size());
-
-       for(TypedEntityReference baseEntityRef : baseEntityKeyList){
-
-           TypeDesignationWorkingSet typeDesignationWorkingSet = stringsByTypeByBaseEntity.get(baseEntityRef);
-           // order the TypeDesignationStatusBase keys
-            List<TypeDesignationStatusBase<?>> keyList = new LinkedList<>(typeDesignationWorkingSet.keySet());
-            Collections.sort(keyList, new Comparator<TypeDesignationStatusBase>() {
-                @SuppressWarnings("unchecked")
-                @Override
-                public int compare(TypeDesignationStatusBase o1, TypeDesignationStatusBase o2) {
-                    // fix inverted order of cdm terms by -1*
-                    if(o1 == null && o2 == null || o1 instanceof NullTypeDesignationStatus && o2 instanceof NullTypeDesignationStatus){
-                        return 0;
-                    }
-                    if(o1 == null || o1 instanceof NullTypeDesignationStatus){
-                        return -1;
-                    }
-
-                    if(o2 == null || o2 instanceof NullTypeDesignationStatus){
-                        return 1;
-                    }
-                    return -1 * o1.compareTo(o2);
-                }
-            });
-            // new LinkedHashMap for the ordered TypeDesignationStatusBase keys
-            TypeDesignationWorkingSet orderedStringsByOrderedTypes = new TypeDesignationWorkingSet(
-                    typeDesignationWorkingSet.getBaseEntity(),
-                    baseEntityRef);
-            keyList.forEach(key -> orderedStringsByOrderedTypes.put(key, typeDesignationWorkingSet.get(key)));
-            stringsOrderedbyBaseEntityOrderdByType.put(baseEntityRef, orderedStringsByOrderedTypes);
-       }
-
-        return stringsOrderedbyBaseEntityOrderdByType;
-    }
-
-    /*
-    private LinkedHashMap<TypedEntityReference, LinkedHashMap<String, Collection<EntityReference>>> buildOrderedRepresentations(){
-
-        orderedStringsByOrderedTypes.keySet().forEach(
-                key -> orderedRepresentations.put(
-                        getTypeDesignationStytusLabel(key),
-                        orderedStringsByOrderedTypes.get(key))
-                );
-        return orderedRepresentations;
-    }
-*/
-
-    public TypeDesignationSetManager buildString(){
-
-        if(finalString == null){
-
-            finalString = "";
-            if(getTypifiedNameCache() != null){
-                finalString += getTypifiedNameCache() + " ";
-            }
-
-            int typeCount = 0;
-            if(orderedByTypesByBaseEntity != null){
-                for(TypedEntityReference baseEntityRef : orderedByTypesByBaseEntity.keySet()) {
-                    StringBuilder sb = new StringBuilder();
-                    if(typeCount++ > 0){
-                        sb.append(TYPE_SEPARATOR);
-                    }
-                    boolean isNameTypeDesignation = false;
-                    if(SpecimenOrObservationBase.class.isAssignableFrom(baseEntityRef.getType())){
-                        sb.append("Type: ");
-                    } else {
-                        sb.append("NameType: ");
-                        isNameTypeDesignation = true;
-                    }
-                    if(!baseEntityRef.getLabel().isEmpty()){
-                        sb.append(baseEntityRef.getLabel()).append(" ");
-                    }
-                    TypeDesignationWorkingSet typeDesignationWorkingSet = orderedByTypesByBaseEntity.get(baseEntityRef);
-                    if(!isNameTypeDesignation ){
-                        sb.append("(");
-                    }
-                    int typeStatusCount = 0;
-                    for(TypeDesignationStatusBase<?> typeStatus : typeDesignationWorkingSet.keySet()) {
-                        if(typeStatusCount++  > 0){
-                            sb.append(TYPE_STATUS_SEPARATOR);
-                        }
-                        boolean isPlural = typeDesignationWorkingSet.get(typeStatus).size() > 1;
-                        if(!typeStatus.equals(NULL_STATUS)) {
-                            sb.append(typeStatus.getLabel());
-                            if(isPlural){
-                                sb.append("s: ");
-                            } else {
-                                sb.append(", ");
-                            }
-                        }
-                        int typeDesignationCount = 0;
-                        for(EntityReference typeDesignationEntityReference : typeDesignationWorkingSet.get(typeStatus)) {
-                            if(typeDesignationCount++  > 0){
-                                sb.append(TYPE_DESIGNATION_SEPARATOR);
-                            }
-                            sb.append(typeDesignationEntityReference.getLabel());
-                        }
-                    }
-                    if(!isNameTypeDesignation ){
-                        sb.append(")");
-                    }
-                    typeDesignationWorkingSet.setRepresentation(sb.toString());
-                    finalString += typeDesignationWorkingSet.getRepresentation();
-                }
-            }
-        }
-        return this;
-    }
-
-    /**
-     * FIXME use the validation framework validators and to store the validation problems!!!
-     *
-     * @return
-     * @throws RegistrationValidationException
-     */
-    private void findTypifiedName() throws RegistrationValidationException {
-
-        List<String> problems = new ArrayList<>();
-
-        TaxonName typifiedName = null;
-
-        for(TypeDesignationBase<?> typeDesignation : typeDesignations){
-            typeDesignation.getTypifiedNames();
-            if(typeDesignation.getTypifiedNames().isEmpty()){
-
-                //TODO instead throw RegistrationValidationException()
-                problems.add("Missing typifiedName in " + typeDesignation.toString());
-                continue;
-            }
-            if(typeDesignation.getTypifiedNames().size() > 1){
-              //TODO instead throw RegistrationValidationException()
-                problems.add("Multiple typifiedName in " + typeDesignation.toString());
-                continue;
-            }
-            if(typifiedName == null){
-                // remember
-                typifiedName = typeDesignation.getTypifiedNames().iterator().next();
-            } else {
-                // compare
-                TaxonName otherTypifiedName = typeDesignation.getTypifiedNames().iterator().next();
-                if(typifiedName.getId() != otherTypifiedName.getId()){
-                  //TODO instead throw RegistrationValidationException()
-                    problems.add("Multiple typifiedName in " + typeDesignation.toString());
-                }
-            }
-
-        }
-        if(!problems.isEmpty()){
-            // FIXME use the validation framework
-            throw new RegistrationValidationException("Inconsistent type designations", problems);
-        }
-
-        if(typifiedName != null){
-            // ON SUCCESS -------------------
-            this.typifiedName = typifiedName;
-            this.typifiedNameRef = new EntityReference(typifiedName.getId(), typifiedName.getTitleCache());
-
-        }
-    }
-
-
-    /**
-     * @return the title cache of the typifying name or <code>null</code>
-     */
-    public String getTypifiedNameCache() {
-        if(typifiedNameRef != null){
-            return typifiedNameRef.getLabel();
-        }
-        return null;
-    }
-
-    /**
-     * @return the title cache of the typifying name or <code>null</code>
-     */
-    public EntityReference getTypifiedNameRef() {
-
-       return typifiedNameRef;
-    }
-
-    /**
-     * @return
-     */
-    public Collection<TypeDesignationBase> getTypeDesignations() {
-        return typeDesignations;
-    }
-
-    /**
-     * @param ref
-     * @return
-     */
-    public TypeDesignationBase findTypeDesignation(EntityReference typeDesignationRef) {
-        for(TypeDesignationBase td : typeDesignations){
-            if(td.getId() == typeDesignationRef.getId()){
-                return td;
-            }
-        }
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-
-    public LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> getOrderdTypeDesignationWorkingSets() {
-        return orderedByTypesByBaseEntity;
-    }
-
-    /**
-     * @param td
-     * @return
-     */
-    private String stringify(TypeDesignationBase td) {
-
-        if(td instanceof NameTypeDesignation){
-            return stringify((NameTypeDesignation)td);
-        } else {
-            return stringify((SpecimenTypeDesignation)td, false);
-        }
-    }
-
-
-    /**
-     * @param td
-     * @return
-     */
-    protected String stringify(NameTypeDesignation td) {
-
-        StringBuffer sb = new StringBuffer();
-
-        if(td.getTypeName() != null){
-            sb.append(td.getTypeName().getTitleCache());
-        }
-        if(td.getCitation() != null){
-            sb.append(" ").append(td.getCitation().getTitleCache());
-            if(td.getCitationMicroReference() != null){
-                sb.append(":").append(td.getCitationMicroReference());
-            }
-        }
-        if(td.isNotDesignated()){
-            sb.append(" not designated");
-        }
-        if(td.isRejectedType()){
-            sb.append(" rejected");
-        }
-        if(td.isConservedType()){
-            sb.append(" conserved");
-        }
-        return sb.toString();
-    }
-
-    /**
-     * @param td
-     * @return
-     */
-    private String stringify(SpecimenTypeDesignation td, boolean useFullTitleCache) {
-        String  result = "";
-
-        if(useFullTitleCache){
-            if(td.getTypeSpecimen() != null){
-                String nameTitleCache = td.getTypeSpecimen().getTitleCache();
-                if(getTypifiedNameCache() != null){
-                    nameTitleCache = nameTitleCache.replace(getTypifiedNameCache(), "");
-                }
-                result += nameTitleCache;
-            }
-        } else {
-            if(td.getTypeSpecimen() != null){
-                DerivedUnit du = td.getTypeSpecimen();
-                if(du.isProtectedTitleCache()){
-                    result += du.getTitleCache();
-                } else {
-                    DerivedUnitFacadeCacheStrategy cacheStrategy = new DerivedUnitFacadeCacheStrategy();
-                    result += cacheStrategy.getTitleCache(du, true);
-                }
-            }
-        }
-
-        if(isPrintCitation() && td.getCitation() != null){
-            if(td.getCitation().getAbbrevTitle() != null){
-                result += " " + td.getCitation().getAbbrevTitle();
-            } else {
-                result += " " + td.getCitation().getTitleCache();
-            }
-            if(td.getCitationMicroReference() != null){
-                result += " :" + td.getCitationMicroReference();
-            }
-        }
-        if(td.isNotDesignated()){
-            result += " not designated";
-        }
-
-        return result;
-    }
-
-    /**
-     * @param td
-     * @return
-     * @deprecated
-     */
-    @Deprecated
-    private FieldUnit findFieldUnit(SpecimenTypeDesignation td) {
-
-        DerivedUnit du = td.getTypeSpecimen();
-        return findFieldUnit(du);
-    }
-
-    private FieldUnit findFieldUnit(DerivedUnit du) {
-
-        if(du == null || du.getOriginals() == null){
-            return null;
-        }
-        @SuppressWarnings("rawtypes")
-        Set<SpecimenOrObservationBase> originals = du.getDerivedFrom().getOriginals();
-        @SuppressWarnings("rawtypes")
-        Optional<SpecimenOrObservationBase> fieldUnit = originals.stream()
-                .filter(original -> original instanceof FieldUnit).findFirst();
-        if (fieldUnit.isPresent()) {
-            return (FieldUnit) fieldUnit.get();
-        } else {
-            for (@SuppressWarnings("rawtypes")
-            SpecimenOrObservationBase sob : originals) {
-                if (sob instanceof DerivedUnit) {
-                    FieldUnit fu = findFieldUnit((DerivedUnit) sob);
-                    if (fu != null) {
-                        return fu;
-                    }
-                }
-            }
-        }
-
-        return null;
-    }
-
-    public String print() {
-        return finalString.trim();
-    }
-
-    /**
-     * @return the printCitation
-     */
-    public boolean isPrintCitation() {
-        return printCitation;
-    }
-
-    /**
-     * @param printCitation the printCitation to set
-     */
-    public void setPrintCitation(boolean printCitation) {
-        this.printCitation = printCitation;
-    }
-
-    /**
-     * @return the typifiedName
-     */
-    public TaxonName getTypifiedName() {
-        return typifiedName;
-    }
-
-    public void setNameTypeBaseEntityType(NameTypeBaseEntityType nameTypeBaseEntityType){
-        this.nameTypeBaseEntityType = nameTypeBaseEntityType;
-    }
-
-    public NameTypeBaseEntityType getNameTypeBaseEntityType(){
-        return nameTypeBaseEntityType;
-    }
-
-    /**
-     * TypeDesignations which refer to the same FieldUnit (SpecimenTypeDesignation) or TaxonName
-     * (NameTypeDesignation) form a working set. The <code>TypeDesignationWorkingSet</code> internally
-     * works with EnityReferences to the actual TypeDesignations.
-     *
-     * The EntityReferences for TypeDesignations are grouped by the according TypeDesignationStatus.
-     * The TypeDesignationStatusBase keys can be ordered by the term order defined in the vocabulary.
-     *
-     * A workingset can be referenced by the <code>baseEntityReference</code>.
-     */
-    public class TypeDesignationWorkingSet extends LinkedHashMap<TypeDesignationStatusBase<?>, Collection<EntityReference>> {
-
-        private static final long serialVersionUID = -1329007606500890729L;
-
-        String workingSetRepresentation = null;
-
-        TypedEntityReference<VersionableEntity> baseEntityReference;
-
-        VersionableEntity baseEntity;
-
-        List<DerivedUnit> derivedUnits = null;
-
-        /**
-         * @param baseEntityReference
-         */
-        public TypeDesignationWorkingSet(VersionableEntity baseEntity, TypedEntityReference<VersionableEntity> baseEntityReference) {
-            this.baseEntity = baseEntity;
-            this.baseEntityReference = baseEntityReference;
-        }
-
-        /**
-         * @return
-         */
-        public VersionableEntity getBaseEntity() {
-            return baseEntity;
-        }
-
-        public List<EntityReference> getTypeDesignations() {
-            List<EntityReference> typeDesignations = new ArrayList<>();
-            this.values().forEach(typeDesignationReferences -> typeDesignationReferences.forEach(td -> typeDesignations.add(td)));
-            return typeDesignations;
-        }
-
-        /**
-         * @param status
-         * @param typeDesignationEntityReference
-         */
-        public void insert(TypeDesignationStatusBase<?> status, EntityReference typeDesignationEntityReference) {
-
-            if(status == null){
-                status = NULL_STATUS;
-            }
-            if(!containsKey(status)){
-                put(status, new ArrayList<EntityReference>());
-            }
-            get(status).add(typeDesignationEntityReference);
-        }
-
-
-        public String getRepresentation() {
-            return workingSetRepresentation;
-        }
-
-        public void setRepresentation(String representation){
-            this.workingSetRepresentation = representation;
-        }
-
-        /**
-         * A reference to the entity which is the common base entity for all TypeDesignations in this workingset.
-         * For a {@link SpecimenTypeDesignation} this is usually the {@link FieldUnit} if it is present. Otherwise it can also be
-         * a {@link DerivedUnit} or something else depending on the specific use case.
-         *
-         * @return the baseEntityReference
-         */
-        public TypedEntityReference<VersionableEntity> getBaseEntityReference() {
-            return baseEntityReference;
-        }
-
-        @Override
-        public String toString(){
-            if(workingSetRepresentation != null){
-                return workingSetRepresentation;
-            } else {
-                return super.toString();
-            }
-        }
-
-        /**
-         * @return
-         */
-        public boolean isSpecimenTypeDesigationWorkingSet() {
-            return SpecimenOrObservationBase.class.isAssignableFrom(baseEntityReference.getType());
-        }
-
-        public TypeDesignationWorkingSetType getWorkingsetType() {
-            return isSpecimenTypeDesigationWorkingSet() ? TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET : TypeDesignationWorkingSetType.NAME_TYPE_DESIGNATION_WORKINGSET;
-        }
-
-    }
-
-    public enum TypeDesignationWorkingSetType {
-        SPECIMEN_TYPE_DESIGNATION_WORKINGSET,
-        NAME_TYPE_DESIGNATION_WORKINGSET,
-    }
-
-    @SuppressWarnings({ "deprecation", "serial" })
-    class NullTypeDesignationStatus extends TypeDesignationStatusBase<NullTypeDesignationStatus>{
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void resetTerms() {
-            // empty
-
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        protected void setDefaultTerms(TermVocabulary<NullTypeDesignationStatus> termVocabulary) {
-            // empty
-        }
-
-    }
-
-}
index 314e04f590e647408bd0dca6c59b3a739bc832db..f05d8528d5b5906f7ff0599e12c595c896e3f032 100644 (file)
@@ -15,7 +15,7 @@ import com.vaadin.data.util.converter.Converter;
 
 /**
  * @author freimeier
- * @date 21.11.2017
+ * @since 21.11.2017
  *
  */
 abstract class UuidTitleStringConverter implements Converter<String, UUID> {
index db09429816ef84981f2e96de020b6a5dede1b6b2..0856b589220b0727ab823d2ab4827ab3fbebac24 100644 (file)
@@ -42,7 +42,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmVaadinUtilities;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 public class ConceptRelationshipView extends CustomComponent implements View, IBasicEventListener {
index 8d15765e6ee65e943977bdda2863cc6b748502e0..65c5c88d0e2915db4f9017be232468bdcc510613 100644 (file)
@@ -87,33 +87,10 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
         // no point subscribing
     }
 
-    public int updateDistributionField(String distributionAreaString, Object comboValue, Taxon taxon) {
+    public int updateDistributionField(NamedArea area, PresenceAbsenceTerm distributionStatus, Taxon taxon) {
            TransactionStatus tx = repo.startTransaction();
            taxon = (Taxon)repo.getTaxonService().find(taxon.getUuid());
-           Set<DefinedTermBase> chosenTerms = getChosenTerms();
-           NamedArea namedArea = null;
-           for(DefinedTermBase term:chosenTerms){
-               Representation representation = term.getRepresentation(Language.DEFAULT());
-               if(representation!=null){
-                       if(DistributionEditorUtil.isAbbreviatedLabels()){
-                               String label = representation.getLabel();
-                               String abbreviatedLabel = representation.getAbbreviatedLabel();
-                                       if(abbreviatedLabel!=null && abbreviatedLabel.equalsIgnoreCase(distributionAreaString)){
-                                       namedArea = (NamedArea) term;
-                                       break;
-                               }
-                                       else if(label!=null && label.equalsIgnoreCase(distributionAreaString)){
-                                               namedArea = (NamedArea) term;
-                                               break;
-                                       }
-                       }
-               }
-               if(term.getTitleCache().equalsIgnoreCase(distributionAreaString)){
-                       namedArea = (NamedArea) term;
-                       break;
-               }
-           }
-           if(namedArea==null){
+           if(area==null){
                Notification.show(Messages.getLocalizedString(Messages.DistributionTablePresenter_ERROR_UPDATE_DISTRIBUTION_TERM));
                repo.commitTransaction(tx);
                return -1;
@@ -121,14 +98,14 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
            List<Distribution> distributions = getDistributions(taxon);
            Distribution distribution = null;
            for(Distribution dist : distributions){
-               if(dist.getArea()!=null && dist.getArea().equals(namedArea)){
+               if(dist.getArea()!=null && dist.getArea().equals(area)){
                    distribution = dist;
                    break;
                }
            }
            if(distribution==null){
                //create new distribution
-               distribution = Distribution.NewInstance(namedArea, (PresenceAbsenceTerm) comboValue);
+               distribution = Distribution.NewInstance(area, distributionStatus);
                        Set<TaxonDescription> descriptions = taxon.getDescriptions();
                        if (descriptions != null && !descriptions.isEmpty()) {
                            for (TaxonDescription desc : descriptions) {
@@ -144,14 +121,14 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
                            return 0;
                        }
            }
-           else if(comboValue == null){//delete descriptionElementBase
+           else if(distributionStatus == null){//delete descriptionElementBase
                DescriptionBase<?> desc = distribution.getInDescription();
                desc.removeElement(distribution);
                repo.commitTransaction(tx);
             return 1;
            }
            else{//update distribution
-           distribution.setStatus((PresenceAbsenceTerm)comboValue);
+           distribution.setStatus(distributionStatus);
            repo.getCommonService().saveOrUpdate(distribution);
            repo.commitTransaction(tx);
            return 0;
@@ -160,35 +137,79 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
            return -1;
        }
 
-       public Set<DefinedTermBase> getChosenTerms() {
-               VaadinSession session = VaadinSession.getCurrent();
-               UUID vocUUID = (UUID) session.getAttribute(DistributionEditorUtil.SATTR_SELECTED_AREA_VOCABULARY_UUID);
-//             getConversationHolder().getSession();
-               TermVocabulary<DefinedTermBase> voc = CdmSpringContextHelper.getVocabularyService().load(vocUUID, Arrays.asList("terms")); //$NON-NLS-1$
-//             voc = CdmBase.deproxy(voc);
-               return voc.getTerms();
-       }
+    public CdmSQLContainer getSQLContainer() throws SQLException{
+         List<Integer> nodeIds = new ArrayList<>();
+         for (TaxonNode taxonNode : getAllNodes()) {
+             nodeIds.add(taxonNode.getId());
+         }
+         List<NamedArea> namedAreas = getChosenAreas();
+         if(namedAreas!=null){
+             return new CdmSQLContainer(CdmQueryFactory.generateTaxonDistributionQuery(nodeIds, namedAreas));
+         }
+         return null;
+    }
 
-       public List<String> getAbbreviatedTermList() {
-               List<NamedArea> terms = getTermSet();
-               List<String> list = new ArrayList<>();
-               for(DefinedTermBase<?> dtb: terms){
-                   for(Representation r : dtb.getRepresentations()){
-                       list.add(r.getAbbreviatedLabel());
-                   }
-               }
-               return list;
-       }
+    public PresenceAbsenceTermContainer getPresenceAbsenceTermContainer() {
+        return PresenceAbsenceTermContainer.getInstance();
+    }
+
+    public List<DescriptionElementBase> listDescriptionElementsForTaxon(Taxon taxon, Set<Feature> setFeature){
+        List<DescriptionElementBase> listDescriptionElementsForTaxon = CdmSpringContextHelper.getDescriptionService().listDescriptionElementsForTaxon(taxon, setFeature, null, null, null, DESCRIPTION_INIT_STRATEGY);
+        sort(listDescriptionElementsForTaxon);
+        return listDescriptionElementsForTaxon;
+    }
+
+    public List<NamedArea> getReadOnlyAreas(){
+        List<NamedArea> readonly = new ArrayList<>();
+        // TODO: HACK FOR RL 2017: Remove as soon as possible by receiving read only areas from cdm preferences
+        readonly.add(this.getAreaFromString("Deutschland"));
+        return readonly;
+    }
+
+    public NamedArea getAreaFromString(String areaString){
+        List<NamedArea> namedAreas = getChosenAreas();
+        NamedArea area = null;
+        for(NamedArea namedArea:namedAreas){
+            Representation representation = namedArea.getRepresentation(Language.DEFAULT());
+            if(representation!=null){
+                if(DistributionEditorUtil.isAbbreviatedLabels()){
+                    String label = representation.getLabel();
+                    String abbreviatedLabel = representation.getAbbreviatedLabel();
+                    if(abbreviatedLabel!=null && abbreviatedLabel.equalsIgnoreCase(areaString)){
+                        area = namedArea;
+                        break;
+                    }
+                    else if(label!=null && label.equalsIgnoreCase(areaString)){
+                        area = namedArea;
+                        break;
+                    }
+                }
+            }
+            if(namedArea.getTitleCache().equalsIgnoreCase(areaString)){
+                area = namedArea;
+                break;
+            }
+        }
+        return area;
+    }
+
+    private List<Distribution> getDistributions(Taxon taxon) {
+        Set<Feature> setFeature = new HashSet<>(Arrays.asList(Feature.DISTRIBUTION()));
+        List<Distribution> listTaxonDescription = CdmSpringContextHelper.getDescriptionService()
+                .listDescriptionElementsForTaxon(taxon, setFeature, null, null, null, DESCRIPTION_INIT_STRATEGY);
+        return listTaxonDescription;
+
+    }
 
-       public List<NamedArea> getNamedAreas(){
+       private List<NamedArea> getChosenAreas(){
            List<NamedArea> namedAreas = (List<NamedArea>)VaadinSession.getCurrent().getAttribute(DistributionEditorUtil.SATTR_SELECTED_AREAS);
            if(namedAreas!=null && namedAreas.isEmpty()){
-               return getTermSet();
+               return getChosenAreasFromVoc();
            }
            return namedAreas;
        }
 
-       private List<NamedArea> getTermSet(){
+       private List<NamedArea> getChosenAreasFromVoc(){
            VaadinSession session = VaadinSession.getCurrent();
            UUID vocUUID = (UUID) session.getAttribute(DistributionEditorUtil.SATTR_SELECTED_AREA_VOCABULARY_UUID);
            TermVocabulary<NamedArea> vocabulary = CdmSpringContextHelper.getVocabularyService().load(vocUUID, Arrays.asList("terms")); //$NON-NLS-1$
@@ -203,38 +224,24 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
 
        }
 
-       public HashMap<DescriptionElementBase, Distribution> getDistribution(DefinedTermBase dt, Taxon taxon) {
-               Set<Feature> setFeature = new HashSet<>(Arrays.asList(Feature.DISTRIBUTION()));
-               List<DescriptionElementBase> listTaxonDescription = CdmSpringContextHelper.getDescriptionService().listDescriptionElementsForTaxon(taxon, setFeature, null, null, null, DESCRIPTION_INIT_STRATEGY);
-               HashMap<DescriptionElementBase, Distribution> map = null;
-               for(DescriptionElementBase deb : listTaxonDescription){
-                       if(deb instanceof Distribution){
-                               Distribution db = (Distribution)deb;
-                               String titleCache = dt.getTitleCache();
-                               if(db.getArea().getTitleCache().equalsIgnoreCase(titleCache)){
-                                       map = new HashMap<DescriptionElementBase, Distribution>();
-                                       map.put(deb, db);
-                               }
-                       }
-               }
-               return map;
-       }
-
-       public List<DescriptionElementBase> listDescriptionElementsForTaxon(Taxon taxon, Set<Feature> setFeature){
-               List<DescriptionElementBase> listDescriptionElementsForTaxon = CdmSpringContextHelper.getDescriptionService().listDescriptionElementsForTaxon(taxon, setFeature, null, null, null, DESCRIPTION_INIT_STRATEGY);
-               sort(listDescriptionElementsForTaxon);
-               return listDescriptionElementsForTaxon;
-       }
-
-       public List<Distribution> getDistributions(Taxon taxon) {
-               Set<Feature> setFeature = new HashSet<>(Arrays.asList(Feature.DISTRIBUTION()));
-               List<Distribution> listTaxonDescription = CdmSpringContextHelper.getDescriptionService()
-                       .listDescriptionElementsForTaxon(taxon, setFeature, null, null, null, DESCRIPTION_INIT_STRATEGY);
-               return listTaxonDescription;
-
-       }
+   private List<TaxonNode> getChosenTaxonNodes() {
+        VaadinSession session = VaadinSession.getCurrent();
+        List<UUID> taxonNodeUUIDs = (List<UUID>) session.getAttribute(DistributionEditorUtil.SATTR_TAXON_NODES_UUID);
+        UUID classificationUuid = (UUID)session.getAttribute(DistributionEditorUtil.SATTR_CLASSIFICATION);
+        if((taxonNodeUUIDs==null || taxonNodeUUIDs.isEmpty()) && classificationUuid!=null){
+            Classification classification = CdmSpringContextHelper.getClassificationService().load(classificationUuid);
+            if(classification!=null){
+                taxonNodeUUIDs = Collections.singletonList(classification.getRootNode().getUuid());
+            }
+        }
+        List<TaxonNode> loadedNodes = CdmSpringContextHelper.getTaxonNodeService().load(taxonNodeUUIDs, null);
+        if(loadedNodes!=null){
+            return loadedNodes;
+        }
+        return Collections.emptyList();
+    }
 
-       public List<TaxonNode> getAllNodes(){
+       private List<TaxonNode> getAllNodes(){
                List<TaxonNode> allNodes = new ArrayList<>();
 
                List<TaxonNode> taxonNodes = getChosenTaxonNodes();
@@ -247,51 +254,6 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
                return allNodes;
        }
 
-
-       public List<TaxonNode> getChosenTaxonNodes() {
-               VaadinSession session = VaadinSession.getCurrent();
-               List<UUID> taxonNodeUUIDs = (List<UUID>) session.getAttribute(DistributionEditorUtil.SATTR_TAXON_NODES_UUID);
-               UUID classificationUuid = (UUID)session.getAttribute(DistributionEditorUtil.SATTR_CLASSIFICATION);
-               if((taxonNodeUUIDs==null || taxonNodeUUIDs.isEmpty()) && classificationUuid!=null){
-                       Classification classification = CdmSpringContextHelper.getClassificationService().load(classificationUuid);
-                       if(classification!=null){
-                               taxonNodeUUIDs = Collections.singletonList(classification.getRootNode().getUuid());
-                       }
-               }
-               List<TaxonNode> loadedNodes = CdmSpringContextHelper.getTaxonNodeService().load(taxonNodeUUIDs, null);
-               if(loadedNodes!=null){
-                       return loadedNodes;
-               }
-               return Collections.emptyList();
-       }
-
-   public LazyQueryContainer getAreaDistributionStatusContainer() {
-        List<UUID> nodeUuids = getAllNodes().stream().map(n -> n.getUuid()).collect(Collectors.toCollection(ArrayList::new));
-        List<NamedArea> namedAreas = getNamedAreas();
-        if(namedAreas!=null){
-            QueryFactory factory = new DistributionStatusQueryFactory(this.repo, nodeUuids, namedAreas);
-            QueryDefinition defintion = new DistributionStatusQueryDefinition(namedAreas, true, 50);
-            return new LazyQueryContainer(defintion, factory);
-        }
-        return null;
-    }
-
-       public CdmSQLContainer getSQLContainer() throws SQLException{
-               List<Integer> nodeIds = new ArrayList<>();
-               for (TaxonNode taxonNode : getAllNodes()) {
-                       nodeIds.add(taxonNode.getId());
-               }
-               List<NamedArea> namedAreas = getNamedAreas();
-               if(namedAreas!=null){
-                       return new CdmSQLContainer(CdmQueryFactory.generateTaxonDistributionQuery(nodeIds, namedAreas));
-               }
-               return null;
-       }
-
-       public PresenceAbsenceTermContainer getPresenceAbsenceTermContainer() {
-           return PresenceAbsenceTermContainer.getInstance();
-       }
-
        protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
             "$", //$NON-NLS-1$
             "elements.*", //$NON-NLS-1$
@@ -354,4 +316,45 @@ public class DistributionTablePresenter extends AbstractPresenter<IDistributionT
         }
     }
 
+       /**Unused Methods*/
+       // TODO: Currently unused. Remove?
+    private List<String> getAbbreviatedNamedAreas() {
+        List<NamedArea> terms = getChosenAreasFromVoc();
+        List<String> list = new ArrayList<>();
+        for(DefinedTermBase<?> dtb: terms){
+            for(Representation r : dtb.getRepresentations()){
+                list.add(r.getAbbreviatedLabel());
+            }
+        }
+        return list;
+    }
+
+    // TODO: Currently unused. Remove?
+    private HashMap<DescriptionElementBase, Distribution> getDistribution(DefinedTermBase dt, Taxon taxon) {
+        Set<Feature> setFeature = new HashSet<>(Arrays.asList(Feature.DISTRIBUTION()));
+        List<DescriptionElementBase> listTaxonDescription = CdmSpringContextHelper.getDescriptionService().listDescriptionElementsForTaxon(taxon, setFeature, null, null, null, DESCRIPTION_INIT_STRATEGY);
+        HashMap<DescriptionElementBase, Distribution> map = null;
+        for(DescriptionElementBase deb : listTaxonDescription){
+            if(deb instanceof Distribution){
+                Distribution db = (Distribution)deb;
+                String titleCache = dt.getTitleCache();
+                if(db.getArea().getTitleCache().equalsIgnoreCase(titleCache)){
+                    map = new HashMap<DescriptionElementBase, Distribution>();
+                    map.put(deb, db);
+                }
+            }
+        }
+        return map;
+    }
+
+    public LazyQueryContainer getAreaDistributionStatusContainer() {
+        List<UUID> nodeUuids = getAllNodes().stream().map(n -> n.getUuid()).collect(Collectors.toCollection(ArrayList::new));
+        List<NamedArea> namedAreas = getChosenAreas();
+        if(namedAreas!=null){
+            QueryFactory factory = new DistributionStatusQueryFactory(this.repo, nodeUuids, namedAreas);
+            QueryDefinition defintion = new DistributionStatusQueryDefinition(namedAreas, true, 50);
+            return new LazyQueryContainer(defintion, factory);
+        }
+        return null;
+    }
 }
index b154f2dfbcc70486a3f10c1b513fadf69855bd3c..d01b699ee49d30075e6b6a1fec4816afd39d6a6f 100644 (file)
@@ -43,11 +43,17 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.vaadin.component.DetailWindow;
-import eu.etaxonomy.cdm.vaadin.component.DistributionToolbar;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.AreaAndTaxonSettingsConfigWindow;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.DetailWindow;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.DistributionStatusSettingsConfigWindow;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.DistributionToolbar;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.HelpWindow;
 import eu.etaxonomy.cdm.vaadin.container.CdmSQLContainer;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.event.error.DelegatingErrorHandler;
+import eu.etaxonomy.cdm.vaadin.event.error.HibernateExceptionHandler;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory;
 import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
@@ -78,6 +84,7 @@ public class DistributionTableViewBean
     private LazyQueryContainer gridcontainer;
        private AreaAndTaxonSettingsConfigWindow areaAndTaxonConfigWindow;;
        private DistributionStatusSettingsConfigWindow distributionStatusConfigWindow;
+       private HelpWindow helpWindow;
 
        public DistributionTableViewBean() {
                super();
@@ -105,7 +112,6 @@ public class DistributionTableViewBean
                                PresenceAbsenceTerm presenceAbsenceTerm = null;
                                Object value = property.getValue();
                                if(value instanceof String){
-//                                     presenceAbsenceTerm = TermCacher.getInstance().getPresenceAbsenceTerm((String) value);
                     try {
                         presenceAbsenceTerm = (PresenceAbsenceTerm)CdmSpringContextHelper.getTermService().load(UUID.fromString((String)value));
                     }catch(IllegalArgumentException|ClassCastException e) {
@@ -145,49 +151,53 @@ public class DistributionTableViewBean
 
                table.addItemClickListener(event -> {
             if(!(event.getPropertyId().toString().equalsIgnoreCase(CdmQueryFactory.TAXON_COLUMN))
-                       && !(event.getPropertyId().toString().equalsIgnoreCase(CdmQueryFactory.RANK_COLUMN))
-                       // TODO: HACK FOR RL 2017, REMOVE AS SOON AS POSSIBLE
-                       && !(event.getPropertyId().toString().equalsIgnoreCase("DE"))
-                       && !(event.getPropertyId().toString().equalsIgnoreCase("Deutschland"))){
-                final Item item = event.getItem();
-                Property<?> itemProperty = item.getItemProperty("uuid");
-                UUID uuid = UUID.fromString(itemProperty.getValue().toString());
-                final Taxon taxon = CdmBase.deproxy(CdmSpringContextHelper.getTaxonService()
-                               .load(uuid,Arrays.asList("descriptions.descriptionElements","name.taxonBases","updatedBy")), Taxon.class);
-                final String areaID = (String)event.getPropertyId();
-                PresenceAbsenceTerm presenceAbsenceTerm = null;
-                Object statusValue = item.getItemProperty(areaID).getValue();
-                if(statusValue instanceof String){
-//                     presenceAbsenceTerm = TermCacher.getInstance().getPresenceAbsenceTerm((String) statusValue);
-                    try {
-                        presenceAbsenceTerm = (PresenceAbsenceTerm)CdmSpringContextHelper.getTermService().load(UUID.fromString((String)statusValue));
-                    }catch(IllegalArgumentException|ClassCastException e) {
-                        // Not a PresenceAbsenceTerm Column
+                       && !(event.getPropertyId().toString().equalsIgnoreCase(CdmQueryFactory.RANK_COLUMN))){
+
+                final String areaString = (String)event.getPropertyId();
+                final NamedArea area = getPresenter().getAreaFromString(areaString);
+
+                if(!getPresenter().getReadOnlyAreas().contains(area)) {
+                    final Item item = event.getItem();
+                    Property<?> itemProperty = item.getItemProperty(CdmQueryFactory.UUID_COLUMN);
+                    UUID uuid = UUID.fromString(itemProperty.getValue().toString());
+                    final Taxon taxon = CdmBase.deproxy(CdmSpringContextHelper.getTaxonService()
+                               .load(uuid,Arrays.asList("descriptions.descriptionElements","name.taxonBases","updatedBy")), Taxon.class);
+                    PresenceAbsenceTerm presenceAbsenceTerm = null;
+                    Object statusValue = item.getItemProperty(areaString).getValue();
+                    if(statusValue instanceof String){
+                        try {
+                            presenceAbsenceTerm = (PresenceAbsenceTerm)CdmSpringContextHelper.getTermService().load(UUID.fromString((String)statusValue));
+                        }catch(IllegalArgumentException|ClassCastException e) {
+                            // Not a PresenceAbsenceTerm Column
+                        }
                     }
+                    //popup window
+                    final Window popup = new Window(Messages.getLocalizedString(Messages.DistributionTableViewBean_CHOOSE_DISTRIBUTION_STATUS));
+                    DelegatingErrorHandler errorHandler = new DelegatingErrorHandler();
+                    errorHandler.registerHandler(new HibernateExceptionHandler());
+                    popup.setErrorHandler(errorHandler);
+                    final ListSelect termSelect = new ListSelect();
+                    termSelect.setSizeFull();
+                    termSelect.setContainerDataSource(getPresenter().getPresenceAbsenceTermContainer());
+                    termSelect.setNullSelectionAllowed(presenceAbsenceTerm != null);
+                    if(presenceAbsenceTerm != null){
+                       termSelect.setNullSelectionItemId(Messages.getLocalizedString(Messages.DistributionTableViewBean_NO_STATUS_SELECT));
+                    }else{
+                        logger.debug("No distribution status exists yet for area");
+                    }
+                    termSelect.setValue(presenceAbsenceTerm);
+                    termSelect.addValueChangeListener(valueChangeEvent -> {
+                                               PresenceAbsenceTerm distributionStatus = (PresenceAbsenceTerm) valueChangeEvent.getProperty().getValue();
+                                               getPresenter().updateDistributionField(area, distributionStatus, taxon);
+                                               container.refresh();
+                                               popup.close();
+                               });
+                    VerticalLayout layout = new VerticalLayout(termSelect);
+                    popup.setContent(layout);
+                    popup.setModal(true);
+                    popup.center();
+                    UI.getCurrent().addWindow(popup);
                 }
-                //popup window
-                final Window popup = new Window(Messages.getLocalizedString(Messages.DistributionTableViewBean_CHOOSE_DISTRIBUTION_STATUS));
-                final ListSelect termSelect = new ListSelect();
-                termSelect.setSizeFull();
-                termSelect.setContainerDataSource(getPresenter().getPresenceAbsenceTermContainer());
-                termSelect.setNullSelectionAllowed(presenceAbsenceTerm != null);
-                if(presenceAbsenceTerm != null){
-                       termSelect.setNullSelectionItemId(Messages.getLocalizedString(Messages.DistributionTableViewBean_NO_STATUS_SELECT));
-                }else{
-                    logger.debug("No distribution status exists yet for area");
-                }
-                termSelect.setValue(presenceAbsenceTerm);
-                termSelect.addValueChangeListener(valueChangeEvent -> {
-                                               Object distributionStatus = valueChangeEvent.getProperty().getValue();
-                                               getPresenter().updateDistributionField(areaID, distributionStatus, taxon);
-                                               container.refresh();
-                                               popup.close();
-                               });
-                VerticalLayout layout = new VerticalLayout(termSelect);
-                popup.setContent(layout);
-                popup.setModal(true);
-                popup.center();
-                UI.getCurrent().addWindow(popup);
             }
         });
 
@@ -232,25 +242,6 @@ public class DistributionTableViewBean
                columnHeaders.remove(CdmQueryFactory.ID_COLUMN);
                columnHeaders.remove(CdmQueryFactory.UUID_COLUMN);
                columnHeaders.remove(CdmQueryFactory.CLASSIFICATION_COLUMN);
-//             columnHeaders.sort(new Comparator<String>() {
-//            @Override
-//            public int compare(String o1, String o2) {
-//                if(o1.equals(CdmQueryFactory.TAXON_COLUMN) || o2.equals(CdmQueryFactory.TAXON_COLUMN)) {
-//                    return o1.equals(CdmQueryFactory.TAXON_COLUMN) ? -1 : 1;
-//                }
-//                if(o1.equals(CdmQueryFactory.RANK_COLUMN) || o2.equals(CdmQueryFactory.RANK_COLUMN)) {
-//                    return o1.equals(CdmQueryFactory.RANK_COLUMN) ? -1 : 1;
-//                }
-//
-//                // TODO: HACK FOR RL 2017, REMOVE AS SOON AS POSSIBLE
-//                if(o1.equals("DE") || o1.equals("Deutschland")
-//                        || o2.equals("DE") || o2.equals("Deutschland")) {
-//                    return (o1.equals("DE") || o1.equals("Deutschland")) ? -1 : 1;
-//                }
-//
-//                return o1.compareTo(o2);
-//            }
-//             });
 
                List<String> columnList = new ArrayList<>(columnHeaders);
 
@@ -359,6 +350,10 @@ public class DistributionTableViewBean
                //distr status
                Button distrStatusButton = toolbar.getSettingsButton();
                distrStatusButton.addClickListener(event -> openStatusSettings());
+
+           //help
+        Button helpButton = toolbar.getHelpButton();
+        helpButton.addClickListener(event -> openHelpWindow());
        }
 
     /**
@@ -387,6 +382,14 @@ public class DistributionTableViewBean
         UI.getCurrent().addWindow(window);
        }
 
+       public void openHelpWindow() {
+              if(helpWindow==null){
+                  helpWindow = new HelpWindow(this);
+               }
+               Window window  = helpWindow.createWindow(Messages.getLocalizedString(Messages.DistributionToolbar_HELP));
+               UI.getCurrent().addWindow(window);
+       }
+
     /**
      * {@inheritDoc}
      */
index f3d3a283e848abda37142ab060047d1b4ae48b54..3a8f57ddb0ac6b0cd5d97a6442c69c7d6389a907 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.vaadin.util.DistributionEditorUtil;
 
 /**
  * @author a.mueller
- * @date 22.10.2017
+ * @since 22.10.2017
  *
  */
 public class AreaAndTaxonSettingsPresenter extends SettingsPresenterBase {
@@ -73,7 +73,7 @@ public class AreaAndTaxonSettingsPresenter extends SettingsPresenterBase {
         return CdmSpringContextHelper.getVocabularyService().load(areaVocabUUID, VOCABULARY_INIT_STRATEGY);
     }
 
-
+    // TODO: Currently unused. Remove?
     public List<TaxonNode> getChosenTaxonNodes(){
         List<UUID> nodeUuids = (List<UUID>) VaadinSession.getCurrent()
                 .getAttribute(DistributionEditorUtil.SATTR_TAXON_NODES_UUID);
index 1a8ca3215face9eec38285accb7be273f1c1ed77..2186c87c511f63b28b5afdf1bdeab4f05a53df95 100644 (file)
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.vaadin.container.PresenceAbsenceTermContainer;
 
 /**
  * @author a.mueller
- * @date 22.10.2017
+ * @since 22.10.2017
  *
  */
 public class DistributionStatusSettingsPresenter extends SettingsPresenterBase {
index 03bc1faf07f4b38273718e59646801b8a6826b46..4f79e7b6dfdb89de51c03e690940dee5e9d6d398 100644 (file)
@@ -8,14 +8,14 @@
 */
 package eu.etaxonomy.cdm.vaadin.view.distributionStatus.settings;
 
-import eu.etaxonomy.cdm.vaadin.view.distributionStatus.AreaAndTaxonSettingsConfigWindow;
-import eu.etaxonomy.cdm.vaadin.view.distributionStatus.DistributionStatusSettingsConfigWindow;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.AreaAndTaxonSettingsConfigWindow;
+import eu.etaxonomy.cdm.vaadin.component.distributionStatus.DistributionStatusSettingsConfigWindow;
 
 /**
  * Note: This presenter is used for {@link DistributionStatusSettingsConfigWindow} AND {@link AreaAndTaxonSettingsConfigWindow}
  *
  * @author alex
- * @date 22.04.2015
+ * @since 22.04.2015
  *
  *
  */
index 523b6d53a4d385a747331eb149ca1906d4d819ce..633bd3d02e92abaf1d171e8bb5f2106ce14bff74 100644 (file)
@@ -21,6 +21,7 @@ import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
+import eu.etaxonomy.cdm.vaadin.permission.CdmEditDeletePermissionTester;
 import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
 import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
@@ -54,7 +55,7 @@ public class NameTypeDesignationPopupEditor extends AbstractCdmPopupEditor<NameT
 
     private TextField citationDetailField;
 
-    private boolean showTypeFlags = false;
+    private boolean showTypeFlags = true;
 
 
     /**
@@ -145,7 +146,8 @@ public class NameTypeDesignationPopupEditor extends AbstractCdmPopupEditor<NameT
                 getViewEventBus().publish(this,
                     new TaxonNameEditorAction(
                             EditorActionType.EDIT,
-                            typeNameField.getValue().getId(),
+                            typeNameField.getValue().getUuid(),
+                            e.getButton(),
                             typeNameField,
                             this)
                 );
@@ -155,8 +157,9 @@ public class NameTypeDesignationPopupEditor extends AbstractCdmPopupEditor<NameT
         row++;
         typifiedNamesComboboxSelect = new ToManyRelatedEntitiesComboboxSelect<TaxonName>(TaxonName.class, "Typified names");
         typifiedNamesComboboxSelect.setConverter(new SetToListConverter<TaxonName>());
+        typifiedNamesComboboxSelect.setEditPermissionTester(new CdmEditDeletePermissionTester());
         addField(typifiedNamesComboboxSelect, "typifiedNames", 0, row, 3, row);
-        typifiedNamesComboboxSelect.setReadOnly(false); // FIXME this does not help
+        typifiedNamesComboboxSelect.setReadOnly(false); // FIXME this does not help, see #7389
 
         row++;
         citationCombobox = new ToOneRelatedEntityCombobox<Reference>("Citation", Reference.class);
index f1d5af973781e572e3e16ae9d8ddcf31d12b338b..09787f262cd775eb66b3e66374c590547ac25d4a 100644 (file)
@@ -12,6 +12,7 @@ import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
@@ -21,6 +22,8 @@ import com.vaadin.spring.annotation.SpringComponent;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IService;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSet;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonName;
@@ -33,17 +36,13 @@ import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
 import eu.etaxonomy.cdm.vaadin.event.EditorActionTypeFilter;
 import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
 import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent.Type;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
 import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
 import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
 import eu.etaxonomy.vaadin.mvp.AbstractView;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
 
 /**
  * @author a.kohlbecker
@@ -73,11 +72,11 @@ public class NameTypeDesignationPresenter
         if(identifier instanceof Integer || identifier == null){
             return super.loadBeanById(identifier);
 //        } else if(identifier instanceof TypedEntityReference && ((TypedEntityReference)identifier).getType().equals(TaxonName.class)) {
-//            typifiedNameInContext = getRepo().getNameService().find(((TypedEntityReference)identifier).getId());
+//            typifiedNameInContext = getRepo().getNameService().find(((TypedEntityReference)identifier).getUuid());
 //            bean = super.loadBeanById(null);
         } else {
             TypeDesignationWorkingsetEditorIdSet idset = (TypeDesignationWorkingsetEditorIdSet)identifier;
-            RegistrationDTO regDTO = registrationWorkingSetService.loadDtoById(idset.registrationId);
+            RegistrationDTO regDTO = registrationWorkingSetService.loadDtoByUuid(idset.registrationUuid);
             typifiedNameInContext = regDTO.getTypifiedName();
             // find the working set
             TypeDesignationWorkingSet typeDesignationWorkingSet = regDTO.getTypeDesignationWorkingSet(idset.baseEntityRef);
@@ -87,8 +86,8 @@ public class NameTypeDesignationPresenter
                 throw new RuntimeException("TypeDesignationWorkingsetEditorIdSet references not a NameTypeDesignation");
             }
             // TypeDesignationWorkingSet for NameTyped only contain one item!!!
-            int nameTypeDesignationId = typeDesignationWorkingSet.getTypeDesignations().get(0).getId();
-            return super.loadBeanById(nameTypeDesignationId);
+            UUID nameTypeDesignationUuid = typeDesignationWorkingSet.getTypeDesignations().get(0).getUuid();
+            return super.loadBeanById(nameTypeDesignationUuid);
         }
     }
 
@@ -97,7 +96,7 @@ public class NameTypeDesignationPresenter
      * {@inheritDoc}
      */
     @Override
-    protected NameTypeDesignation loadCdmEntityById(Integer identifier) {
+    protected NameTypeDesignation loadCdmEntity(UUID uuid) {
         List<String> initStrategy = Arrays.asList(new String []{
                 "$",
                 "typifiedNames.typeDesignations", // important !!
@@ -107,8 +106,8 @@ public class NameTypeDesignationPresenter
         );
 
         NameTypeDesignation typeDesignation;
-        if(identifier != null){
-            typeDesignation = (NameTypeDesignation) getRepo().getNameService().loadTypeDesignation(identifier, initStrategy);
+        if(uuid != null){
+            typeDesignation = (NameTypeDesignation) getRepo().getNameService().loadTypeDesignation(uuid, initStrategy);
         } else {
             if(beanInstantiator != null){
                 typeDesignation = beanInstantiator.createNewBean();
@@ -155,7 +154,7 @@ public class NameTypeDesignationPresenter
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(NameTypeDesignation.class, identifier, crud, null);
         }
@@ -181,9 +180,10 @@ public class NameTypeDesignationPresenter
 
     @Override
     protected void deleteBean(NameTypeDesignation bean){
-        DeleteResult deletResult = getRepo().getNameService().deleteTypeDesignation(typifiedNameInContext, bean);
+        // deleteTypedesignation(uuid, uuid) needs to be called so the name is loaded in the transaction of the method and is saved.
+        DeleteResult deletResult = getRepo().getNameService().deleteTypeDesignation(typifiedNameInContext.getUuid(), bean.getUuid());
         if(deletResult.isOk()){
-            EntityChangeEvent changeEvent = new EntityChangeEvent(bean.getClass(), bean.getId(), Type.REMOVED, (AbstractView) getView());
+            EntityChangeEvent changeEvent = new EntityChangeEvent(bean, Type.REMOVED, (AbstractView) getView());
             viewEventBus.publish(this, changeEvent);
         } else {
             CdmStore.handleDeleteresultInError(deletResult);
@@ -195,7 +195,7 @@ public class NameTypeDesignationPresenter
      * {@inheritDoc}
      */
     @Override
-    protected NameTypeDesignation handleTransientProperties(NameTypeDesignation bean) {
+    protected NameTypeDesignation preSaveBean(NameTypeDesignation bean) {
 
         // the typifiedNames can only be set on the name side, so we need to
         // handle changes explicitly here
@@ -203,6 +203,9 @@ public class NameTypeDesignationPresenter
 
         // handle adds
         for(TaxonName name : typifiedNames){
+            if(name == null){
+                throw new NullPointerException("typifiedName must not be null");
+            }
             if(!name.getTypeDesignations().contains(bean)){
                 name.addTypeDesignation(bean, false);
             }
@@ -227,7 +230,7 @@ public class NameTypeDesignationPresenter
             return;
         }
 
-        typeNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
+        typeNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView(), null);
         typeNamePopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         typeNamePopup.withDeleteButton(true);
         // TODO configure Modes???
@@ -245,22 +248,27 @@ public class NameTypeDesignationPresenter
 
         //  basionymSourceField = (AbstractField<TaxonName>)event.getSourceComponent();
 
-        typeNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
+        typeNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView(), null);
         typeNamePopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         typeNamePopup.withDeleteButton(true);
         // TODO configure Modes???
-        typeNamePopup.loadInEditor(action.getEntityId());
+        typeNamePopup.loadInEditor(action.getEntityUuid());
 
     }
 
     @EventBusListenerMethod
-    public void onDoneWithPopupEvent(DoneWithPopupEvent event){
-
-        if(event.getPopup() == typeNamePopup){
-            if(event.getReason() == Reason.SAVE){
-                getView().getTypeNameField().reload();
+    public void onEntityChangeEvent(EntityChangeEvent<?>event){
+
+        if(event.getSourceView() == typeNamePopup){
+            if(event.isCreateOrModifiedType()){
+                getCache().load(event.getEntity());
+                if(event.isCreatedType()){
+                    getView().getTypeNameField().setValue((TaxonName) event.getEntity());
+                } else {
+                    getView().getTypeNameField().reload();
+                }
             }
-            if(event.getReason() == Reason.DELETE){
+            if(event.isRemovedType()){
                 getView().getTypeNameField().selectNewItem(null);
             }
             typeNamePopup = null;
index dbec3f1574ae47ecef7720601dd732cb06935c33..d00c5758be1898edc5abfa9b401404993aab2235 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.name;
 
 import java.util.Arrays;
+import java.util.List;
 
 import com.vaadin.server.Sizeable.Unit;
 import com.vaadin.ui.Component;
@@ -40,7 +41,8 @@ public class SpecimenTypeDesignationDTORow extends CollectionRowItemCollection i
      *
      * The fieldname must match the properties of the SpecimenTypeDesignationDTO
      */
-    RowListSelect kindOfUnit = new RowListSelect();
+    TextField associatedTypeDesignationCount = new TextField();
+    RowListSelect kindOfUnit = new RowListSelect(); // position is IMPORTANT, see rowListSelectColumn()
     ListSelect typeStatus = new ListSelect();
     ToOneRelatedEntityCombobox<eu.etaxonomy.cdm.model.occurrence.Collection> collection =
             new ToOneRelatedEntityCombobox<eu.etaxonomy.cdm.model.occurrence.Collection>(null, eu.etaxonomy.cdm.model.occurrence.Collection.class);
@@ -57,6 +59,7 @@ public class SpecimenTypeDesignationDTORow extends CollectionRowItemCollection i
         kindOfUnit.setRow(this);
         typeStatus.setRows(1);
         typeStatus.setRequired(true);
+
         accessionNumber.setWidth(100, Unit.PIXELS);
         preferredStableUri.setWidth(150, Unit.PIXELS);
         preferredStableUri.setConverter(new UriConverter());
@@ -77,16 +80,28 @@ public class SpecimenTypeDesignationDTORow extends CollectionRowItemCollection i
      */
     public Component[] components() {
         Component[] components = new Component[]{
+            associatedTypeDesignationCount,
             kindOfUnit, typeStatus,
             collection, accessionNumber,
             preferredStableUri,
             mediaUri, mediaSpecimenReference,
-            mediaSpecimenReferenceDetail, mediaSpecimenReferenceDetail
+            mediaSpecimenReferenceDetail
             };
         addAll(Arrays.asList(components));
         return components;
     }
 
+    public static List<String> visibleFields() {
+        List<String> visibleFields = Arrays.asList(new String[]{
+            "kindOfUnit", "typeStatus",
+            "collection", "accessionNumber",
+            "preferredStableUri",
+            "mediaUri", "mediaSpecimenReference",
+            "mediaSpecimenReferenceDetail"
+            });
+        return visibleFields;
+    }
+
     @Override
     public void updateRowItemsEnablement() {
 
@@ -95,12 +110,25 @@ public class SpecimenTypeDesignationDTORow extends CollectionRowItemCollection i
         boolean publishedImageType = kindOfUnitTerm != null && kindOfUnitTerm.equals(KindOfUnitTerms.PUBLISHED_IMAGE());
         boolean unPublishedImageType = kindOfUnitTerm != null && kindOfUnitTerm.equals(KindOfUnitTerms.UNPUBLISHED_IMAGE());
 
-        mediaSpecimenReference.setEnabled(publishedImageType);
-        mediaSpecimenReferenceDetail.setEnabled(publishedImageType);
+        boolean kindOfUnitLocked = !associatedTypeDesignationCount.getValue().isEmpty() && Integer.valueOf(associatedTypeDesignationCount.getValue()) > 1;
+        kindOfUnit.setEnabled(!kindOfUnitLocked);
+        kindOfUnit.setDescription(kindOfUnitLocked ?
+                "Can not be changed since the type specimen is associated with multiple type designations" : "");
+        mediaSpecimenReference.setEnabled(publishedImageType || unPublishedImageType);
+        mediaSpecimenReferenceDetail.setEnabled(publishedImageType || unPublishedImageType);
         mediaUri.setEnabled(publishedImageType || unPublishedImageType);
 
     }
 
+    /**
+     *
+     * @return the 0-based position index of the <code>kindOfUnit</code> field in this class
+     * which are visible according to {@link #visibleFields())
+     */
+    public static int rowListSelectColumn(){
+        return 0;
+    }
+
     class RowListSelect extends ListSelect implements CollectionRowRepresentative {
 
         private static final long serialVersionUID = 3235653923633494213L;
index 2df6d8f5734ca89c8fe9ba97be4d1191801557b1..569e566089cda27a009318d3197459851dd88bb2 100644 (file)
@@ -10,7 +10,9 @@ package eu.etaxonomy.cdm.vaadin.view.name;
 
 import java.util.Arrays;
 import java.util.EnumSet;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +38,7 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
 import eu.etaxonomy.cdm.service.CdmStore;
 import eu.etaxonomy.cdm.service.ISpecimenTypeDesignationWorkingSetService;
+import eu.etaxonomy.cdm.service.initstrategies.AgentBaseInit;
 import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
 import eu.etaxonomy.cdm.vaadin.component.CollectionRowItemCollection;
 import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
@@ -45,7 +48,7 @@ import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationTermLists;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
 import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.view.occurrence.CollectionPopupEditor;
@@ -90,11 +93,11 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
 
     SpecimenTypeDesignationWorkingSetDTO<Registration> workingSetDto;
 
-    private CollectionPopupEditor collectionPopupEditor;
+    private Map<CollectionPopupEditor, SpecimenTypeDesignationDTORow> collectionPopupEditorsRowMap = new HashMap<>();
 
-    private Set<CollectionRowItemCollection> collectionPopuEditorSourceRows = new HashSet<>();
+    private Map<ReferencePopupEditor, SpecimenTypeDesignationDTORow> referencePopupEditorsRowMap = new HashMap<>();
 
-    private ReferencePopupEditor referencePopupEditor;
+    private Set<CollectionRowItemCollection> popuEditorTypeDesignationSourceRows = new HashSet<>();
 
     private java.util.Collection<CdmBase> rootEntities = new HashSet<>();
 
@@ -125,7 +128,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
             TypeDesignationWorkingsetEditorIdSet idset = (TypeDesignationWorkingsetEditorIdSet)identifier;
 
             if(idset.baseEntityRef != null){
-                workingSetDto = specimenTypeDesignationWorkingSetService.loadDtoByIds(idset.registrationId, idset.baseEntityRef);
+                workingSetDto = specimenTypeDesignationWorkingSetService.load(idset.registrationUuid, idset.baseEntityRef);
                 if(workingSetDto.getFieldUnit() == null){
                     workingSetDto = specimenTypeDesignationWorkingSetService.fixMissingFieldUnit(workingSetDto);
                         // FIXME open Dialog to warn user about adding an empty fieldUnit to the typeDesignations
@@ -137,7 +140,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
                 rootEntities.add(workingSetDto.getOwner());
             } else {
                 // create a new workingset, for a new fieldunit which is the base for the workingset
-                workingSetDto = specimenTypeDesignationWorkingSetService.create(idset.registrationId, idset.publicationId, idset.typifiedNameId);
+                workingSetDto = specimenTypeDesignationWorkingSetService.create(idset.registrationUuid, idset.publicationUuid, idset.typifiedNameUuid);
                 // need to use load but put see #7214
                 cache.load(workingSetDto.getOwner());
                 rootEntities.add(workingSetDto.getOwner());
@@ -163,6 +166,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
 
         CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase> termOrPersonPagingProvider = new CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase>(getRepo().getAgentService(), TeamOrPersonBase.class);
         CdmFilterablePagingProvider<AgentBase, Person> personPagingProvider = new CdmFilterablePagingProvider<AgentBase, Person>(getRepo().getAgentService(), Person.class);
+        termOrPersonPagingProvider.setInitStrategy(AgentBaseInit.TEAM_OR_PERSON_INIT_STRATEGY);
         getView().getCollectorField().setFilterablePersonPagingProvider(personPagingProvider, this);
         getView().getCollectorField().setFilterableTeamPagingProvider(termOrPersonPagingProvider, this);
 
@@ -170,7 +174,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
         getView().getTypeDesignationsCollectionField().addElementAddedListener(e -> addTypeDesignation(e.getElement()));
 
 
-        collectionPopuEditorSourceRows.clear();
+        popuEditorTypeDesignationSourceRows.clear();
         getView().getTypeDesignationsCollectionField().setEditorInstantiator(new AbstractElementCollection.Instantiator<SpecimenTypeDesignationDTORow>() {
 
             CdmFilterablePagingProvider<Collection, Collection> collectionPagingProvider = new CdmFilterablePagingProvider<Collection, Collection>(getRepo().getCollectionService());
@@ -202,10 +206,10 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
                 row.collection.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Collection>(row.collection));
                 row.collection.getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Collection>(row.collection.getSelect(),
                         SpecimenTypeDesignationWorkingsetEditorPresenter.this));
-                row.collection.addClickListenerAddEntity(e -> doCollectionEditorAdd());
+                row.collection.addClickListenerAddEntity(e -> doCollectionEditorAdd(row));
                 row.collection.addClickListenerEditEntity(e -> {
                         if(row.collection.getValue() != null){
-                            doCollectionEditorEdit(row.collection.getValue().getId());
+                            doCollectionEditorEdit(row);
                         }
                     });
 
@@ -219,16 +223,16 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
                 row.mediaSpecimenReference.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(row.mediaSpecimenReference));
                 row.mediaSpecimenReference.getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Reference>(row.mediaSpecimenReference.getSelect(),
                         SpecimenTypeDesignationWorkingsetEditorPresenter.this));
-                row.mediaSpecimenReference.addClickListenerAddEntity(e -> doReferenceEditorAdd());
+                row.mediaSpecimenReference.addClickListenerAddEntity(e -> doReferenceEditorAdd(row));
                 row.mediaSpecimenReference.addClickListenerEditEntity(e -> {
                     if(row.mediaSpecimenReference.getValue() != null){
-                        doReferenceEditorEdit(row.mediaSpecimenReference.getValue().getId());
+                        doReferenceEditorEdit(row);
                     }
                 });
 
                 getView().applyDefaultComponentStyle(row.components());
 
-                collectionPopuEditorSourceRows.add(row);
+                popuEditorTypeDesignationSourceRows.add(row);
 
                 return row;
             }
@@ -303,22 +307,26 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
         return cache;
     }
 
-    public void doCollectionEditorAdd() {
+    public void doCollectionEditorAdd(SpecimenTypeDesignationDTORow row) {
 
-        collectionPopupEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView());
+        CollectionPopupEditor collectionPopupEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView(), null);
 
         collectionPopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
         collectionPopupEditor.withDeleteButton(true);
         collectionPopupEditor.loadInEditor(null);
+
+        collectionPopupEditorsRowMap.put(collectionPopupEditor, row);
     }
 
-    public void doCollectionEditorEdit(int collectionId) {
+    public void doCollectionEditorEdit(SpecimenTypeDesignationDTORow row) {
 
-        collectionPopupEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView());
+        CollectionPopupEditor collectionPopupEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView(), null);
 
         collectionPopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
         collectionPopupEditor.withDeleteButton(true);
-        collectionPopupEditor.loadInEditor(collectionId);
+        collectionPopupEditor.loadInEditor(row.collection.getValue().getUuid());
+
+        collectionPopupEditorsRowMap.put(collectionPopupEditor, row);
     }
 
 
@@ -326,44 +334,60 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
     public void onCollectionEvent(EntityChangeEvent event){
 
         Collection newCollection = getRepo().getCollectionService().load(
-                event.getEntityId(), Arrays.asList(new String[]{"$.institute"})
+                event.getEntityUuid(), Arrays.asList(new String[]{"$.institute"})
                 );
         cache.load(newCollection);
 
-        for( CollectionRowItemCollection row : collectionPopuEditorSourceRows) {
-            ToOneRelatedEntityCombobox<Collection> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 2);
+        if(event.isCreatedType()){
+            SpecimenTypeDesignationDTORow row = collectionPopupEditorsRowMap.get(event.getSourceView());
+            ToOneRelatedEntityCombobox<Collection> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 3);
+            combobox.setValue((Collection) event.getEntity());
+        }
+        for( CollectionRowItemCollection row : popuEditorTypeDesignationSourceRows) {
+            ToOneRelatedEntityCombobox<Collection> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 3);
             combobox.reload();
         }
     }
 
-    public void doReferenceEditorAdd() {
+    public void doReferenceEditorAdd(SpecimenTypeDesignationDTORow row) {
 
-        referencePopupEditor = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        ReferencePopupEditor referencePopupEditor = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
 
         referencePopupEditor.withReferenceTypes(RegistrationUIDefaults.MEDIA_REFERENCE_TYPES);
         referencePopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
         referencePopupEditor.withDeleteButton(true);
         referencePopupEditor.loadInEditor(null);
+
+        referencePopupEditorsRowMap.put(referencePopupEditor, row);
     }
 
-    public void doReferenceEditorEdit(int referenceId) {
+    public void doReferenceEditorEdit(SpecimenTypeDesignationDTORow row) {
 
-        referencePopupEditor = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        ReferencePopupEditor referencePopupEditor = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
         referencePopupEditor.withReferenceTypes(RegistrationUIDefaults.MEDIA_REFERENCE_TYPES);
         referencePopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
         referencePopupEditor.withDeleteButton(true);
-        referencePopupEditor.loadInEditor(referenceId);
+        referencePopupEditor.loadInEditor(row.mediaSpecimenReference.getValue().getUuid());
+
+        referencePopupEditorsRowMap.put(referencePopupEditor, row);
     }
 
     @EventBusListenerMethod(filter = EntityChangeEventFilter.ReferenceFilter.class)
     public void onReferenceEvent(EntityChangeEvent event){
 
-        Reference newRef = getRepo().getReferenceService().load(event.getEntityId(), Arrays.asList(new String[]{"$"}));
+        Reference newRef = getRepo().getReferenceService().load(event.getEntityUuid(), Arrays.asList(new String[]{"$"}));
         cache.load(newRef);
 
-        for( CollectionRowItemCollection row : collectionPopuEditorSourceRows) {
-            ToOneRelatedEntityCombobox<Collection> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 6);
-            combobox.reload();
+        if(event.isCreatedType()){
+            SpecimenTypeDesignationDTORow row = referencePopupEditorsRowMap.get(event.getSourceView());
+            ToOneRelatedEntityCombobox<Reference> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 7);
+            combobox.setValue((Reference) event.getEntity());
+
+        } else {
+            for( CollectionRowItemCollection row : popuEditorTypeDesignationSourceRows) {
+                ToOneRelatedEntityCombobox<Reference> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 7);
+                combobox.reload();
+            }
         }
     }
 
index cd34bb53250dd6850b8ec47d4a97bcfae536c045..fa00cbb2bf256f688792907715c6053bb68280c1 100644 (file)
@@ -26,14 +26,16 @@ import com.vaadin.ui.TextArea;
 
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.vaadin.component.CollectionRowRepresentative;
+import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
 import eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField;
 import eu.etaxonomy.cdm.vaadin.component.common.MinMaxTextField;
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
-import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
+import eu.etaxonomy.cdm.vaadin.util.converter.DoubleConverter;
+import eu.etaxonomy.cdm.vaadin.util.converter.IntegerConverter;
 import eu.etaxonomy.cdm.vaadin.view.PerEntityAuthorityGrantingEditor;
 import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
 
@@ -47,6 +49,11 @@ import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
 public class SpecimenTypeDesignationWorkingsetPopupEditor
     extends AbstractPopupEditor<SpecimenTypeDesignationWorkingSetDTO, SpecimenTypeDesignationWorkingsetEditorPresenter>
     implements SpecimenTypeDesignationWorkingsetPopupEditorView, AccessRestrictedView, PerEntityAuthorityGrantingEditor {
+    /**
+     *
+     */
+    private static final String CAN_T_SAVE_AS_LONG_AS_TYPE_DESIGNATIONS_ARE_MISSING = "Can't save as long as type designations are missing.";
+
     /**
      * @param layout
      * @param dtoType
@@ -102,6 +109,7 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
 
         row++;
         TextArea localityField = new TextArea("Locality");
+        localityField.setNullRepresentation("");
         addField(localityField, "locality", 0, row , 2, row);
         localityField.setWidth("100%");
         // NOTE: setRows and SetCold breaks he width setting,
@@ -122,6 +130,9 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         bindField(absElevationMinMax.getMaxField(), "absoluteElevationMax");
         bindField(absElevationMinMax.getTextField(), "absoluteElevationText");
 
+        absElevationMinMax.getMaxField().setConverter(new IntegerConverter());
+        absElevationMinMax.getMinField().setConverter(new IntegerConverter());
+
         row++;
         MinMaxTextField distanceToWaterSurfaceMinMax = new MinMaxTextField("Distance to water surface", "m");
         distanceToWaterSurfaceMinMax.setWidth("100%");
@@ -131,6 +142,8 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         bindField(distanceToWaterSurfaceMinMax.getMinField(), "distanceToWaterSurface");
         bindField(distanceToWaterSurfaceMinMax.getMaxField(), "distanceToWaterSurfaceMax");
         bindField(distanceToWaterSurfaceMinMax.getTextField(), "distanceToWaterSurfaceText");
+        distanceToWaterSurfaceMinMax.getMaxField().setConverter(new DoubleConverter());
+        distanceToWaterSurfaceMinMax.getMinField().setConverter(new DoubleConverter());
         distanceToWaterSurfaceMinMax.getMaxField().addValidator(new DoubleRangeValidator("Negative values are not allowed here.", 0.0, Double.MAX_VALUE));
         distanceToWaterSurfaceMinMax.getMinField().addValidator(new DoubleRangeValidator("Negative values are not allowed here.", 0.0, Double.MAX_VALUE));
 
@@ -143,32 +156,39 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         bindField(distanceToGroundMinMax.getMinField(), "distanceToGround");
         bindField(distanceToGroundMinMax.getMaxField(), "distanceToGroundMax");
         bindField(distanceToGroundMinMax.getTextField(), "distanceToGroundText");
+        distanceToGroundMinMax.getMaxField().setConverter(new DoubleConverter());
+        distanceToGroundMinMax.getMinField().setConverter(new DoubleConverter());
 
         row++;
         collectorField = new TeamOrPersonField("Collector", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         addField(collectorField, "collector", 0, row, 2, row);
 
         row++;
-        TimePeriodField collectionDateField = new TimePeriodField("Collection date");
+        PartialDateField collectionDateField = new PartialDateField("Collection date");
+        collectionDateField.setInputPrompt("dd.mm.yyyy");
         addField(collectionDateField, "gatheringDate", 0, row, 1, row);
         addTextField("Field number", "fieldNumber", 2, row);
 
+
         row++;
 
         // FIXME: can we use the Grid instead?
         typeDesignationsCollectionField = new ElementCollectionField<>(
                 SpecimenTypeDesignationDTO.class,
-                //getPresenter().specimenTypeDesignationDTOInstantiator(getBean());
                 SpecimenTypeDesignationDTORow.class
                 );
         typeDesignationsCollectionField.withCaption("Types");
         typeDesignationsCollectionField.getLayout().setSpacing(false);
         typeDesignationsCollectionField.getLayout().setColumns(3);
 
+        typeDesignationsCollectionField.setVisibleProperties(SpecimenTypeDesignationDTORow.visibleFields());
+
         typeDesignationsCollectionField.setPropertyHeader("accessionNumber", "Access. num.");
         typeDesignationsCollectionField.setPropertyHeader("preferredStableUri", "Stable URI");
         typeDesignationsCollectionField.setPropertyHeader("mediaSpecimenReference", "Image reference");
         typeDesignationsCollectionField.setPropertyHeader("mediaSpecimenReferenceDetail", "Reference detail");
+        typeDesignationsCollectionField.addElementAddedListener( e -> updateAllowSave());
+        typeDesignationsCollectionField.addElementRemovedListener( e -> updateAllowSave());
 
         // typeDesignationsCollectionField.getLayout().setMargin(false);
         // typeDesignationsCollectionField.addStyleName("composite-field-wrapper");
@@ -263,10 +283,11 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         super.afterItemDataSourceSet();
         GridLayout gridLayout = this.typeDesignationsCollectionField.getLayout();
         for(int rowIndex = 1; rowIndex < gridLayout.getRows(); rowIndex++){ // first row is header
-            Component item = gridLayout.getComponent(0, rowIndex);
+            Component item = gridLayout.getComponent(SpecimenTypeDesignationDTORow.rowListSelectColumn(), rowIndex);
             ((CollectionRowRepresentative)item).updateRowItemsEnabledStates();
         }
         updateAllowDelete();
+        updateAllowSave();
     }
 
     /**
@@ -283,6 +304,17 @@ public class SpecimenTypeDesignationWorkingsetPopupEditor
         }
     }
 
+    public void updateAllowSave(){
+        boolean hasTypeDesignations = getBean().getSpecimenTypeDesignationDTOs().size() > 0;
+        setSaveButtonEnabled(hasTypeDesignations);
+        if(!hasTypeDesignations){
+            addStatusMessage(CAN_T_SAVE_AS_LONG_AS_TYPE_DESIGNATIONS_ARE_MISSING);
+        } else {
+            removeStatusMessage(CAN_T_SAVE_AS_LONG_AS_TYPE_DESIGNATIONS_ARE_MISSING);
+        }
+
+    }
+
     /**
      * {@inheritDoc}
      */
index a74043c57d613d54b49446ea97a6d7923c453752..0baf10a8cee332e6bc3c24d4ce8da92b2bc351db 100644 (file)
@@ -10,24 +10,24 @@ package eu.etaxonomy.cdm.vaadin.view.name;
 
 import java.util.Arrays;
 import java.util.EnumSet;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.hibernate.criterion.Restrictions;
 import org.springframework.context.annotation.Scope;
 import org.vaadin.spring.events.annotation.EventBusListenerMethod;
 
+import com.vaadin.data.Property;
 import com.vaadin.spring.annotation.SpringComponent;
-import com.vaadin.ui.AbstractField;
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.Field;
 
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
@@ -36,21 +36,24 @@ import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
+import eu.etaxonomy.cdm.service.initstrategies.AgentBaseInit;
 import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
 import eu.etaxonomy.cdm.vaadin.event.EditorActionTypeFilter;
+import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.model.name.TaxonNameDTO;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
 import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.view.reference.ReferencePopupEditor;
+import eu.etaxonomy.vaadin.component.ReloadableLazyComboBox;
 import eu.etaxonomy.vaadin.component.ReloadableSelect;
-import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
+import eu.etaxonomy.vaadin.mvp.AbstractCdmDTOEditorPresenter;
+import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
 import eu.etaxonomy.vaadin.mvp.BeanInstantiator;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
 
 /**
  * @author a.kohlbecker
@@ -59,12 +62,15 @@ import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
  */
 @SpringComponent
 @Scope("prototype")
-public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonName, TaxonNamePopupEditorView> {
+public class TaxonNameEditorPresenter extends AbstractCdmDTOEditorPresenter<TaxonNameDTO, TaxonName, TaxonNamePopupEditorView> {
 
-    /**
-     *
-     */
-    private static final List<String> BASIONYM_INIT_STRATEGY = Arrays.asList("$", "relationsFromThisName", "relationsToThisName.type", "homotypicalGroup.typifiedNames");
+
+    private static final List<String> BASIONYM_INIT_STRATEGY = Arrays.asList(
+            "$",
+            "relationsFromThisName",
+            "relationsToThisName.type",
+            "homotypicalGroup.typifiedNames"
+            );
 
     private static final List<String> REFERENCE_INIT_STRATEGY = Arrays.asList("authorship", "inReference.authorship", "inReference.inReference.authorship", "inReference.inReference.inReference.authorship");
 
@@ -82,10 +88,6 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
 
     private BeanInstantiator<Reference> newReferenceInstantiator;
 
-    private BeanInstantiator<TaxonName> newBasionymNameInstantiator;
-
-    private AbstractField<TaxonName> basionymSourceField;
-
     /**
      * {@inheritDoc}
      */
@@ -99,6 +101,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
         getView().getRankSelect().setItemCaptionPropertyId("label");
 
         CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase> termOrPersonPagingProvider = new CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase>(getRepo().getAgentService(), TeamOrPersonBase.class);
+        termOrPersonPagingProvider.setInitStrategy(AgentBaseInit.TEAM_OR_PERSON_INIT_STRATEGY);
         CdmFilterablePagingProvider<AgentBase, Person> personPagingProvider = new CdmFilterablePagingProvider<AgentBase, Person>(getRepo().getAgentService(), Person.class);
 
         getView().getCombinationAuthorshipField().setFilterableTeamPagingProvider(termOrPersonPagingProvider, this);
@@ -121,17 +124,31 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
         getView().getNomReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<>(getView().getNomReferenceCombobox(), this));
 
         getView().getBasionymComboboxSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TaxonName>());
-
         CdmFilterablePagingProvider<TaxonName, TaxonName> basionymPagingProvider = new CdmFilterablePagingProvider<TaxonName, TaxonName>(getRepo().getNameService());
         basionymPagingProvider.setInitStrategy(BASIONYM_INIT_STRATEGY);
         getView().getBasionymComboboxSelect().setPagingProviders(basionymPagingProvider, basionymPagingProvider, basionymPagingProvider.getPageSize(), this);
+
+        getView().getReplacedSynonymsComboboxSelect().setCaptionGenerator( new CdmTitleCacheCaptionGenerator<TaxonName>());
+        // reusing the basionymPagingProvider for the replaced synonyms to benefit from caching
+        getView().getReplacedSynonymsComboboxSelect().setPagingProviders(basionymPagingProvider, basionymPagingProvider, basionymPagingProvider.getPageSize(), this);
+
+        getView().getValidationField().getValidatedNameComboBox().getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TaxonName>());
+        // reusing the basionymPagingProvider for the replaced synonyms to benefit from caching
+        getView().getValidationField().getValidatedNameComboBox().loadFrom(basionymPagingProvider, basionymPagingProvider, basionymPagingProvider.getPageSize());
+        getView().getValidationField().getValidatedNameComboBox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<>(getView().getValidationField().getValidatedNameComboBox(), this));
+
+
+        getView().getValidationField().getCitatonComboBox().getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Reference>());
+        getView().getValidationField().getCitatonComboBox().loadFrom(referencePagingProvider, referencePagingProvider, referencePagingProvider.getPageSize());
+        getView().getValidationField().getCitatonComboBox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<>(getView().getValidationField().getCitatonComboBox(), this));
+
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    protected TaxonName loadCdmEntityById(Integer identifier) {
+    protected TaxonName loadCdmEntity(UUID identifier) {
 
         List<String> initStrategy = Arrays.asList(new String []{
 
@@ -153,6 +170,8 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
                 // basionyms: relationsToThisName.fromName
                 "relationsToThisName.type",
                 "relationsToThisName.fromName.rank",
+                "relationsToThisName.fromName.combinationAuthorship",
+                "relationsToThisName.fromName.exCombinationAuthorship",
                 "relationsToThisName.fromName.nomenclaturalReference.authorship",
                 "relationsToThisName.fromName.nomenclaturalReference.inReference.authorship",
                 "relationsToThisName.fromName.nomenclaturalReference.inReference.inReference.inReference.authorship",
@@ -172,9 +191,9 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
             taxonName = TaxonNameFactory.NewNameInstance(RegistrationUIDefaults.NOMENCLATURAL_CODE, Rank.SPECIES());
         }
 
-        if(getView().isModeEnabled(TaxonNamePopupEditorMode.nomenclaturalReferenceSectionEditingOnly)){
+        if(getView().isModeEnabled(TaxonNamePopupEditorMode.NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY)){
             if(taxonName.getNomenclaturalReference() != null){
-                Reference nomRef = (Reference)taxonName.getNomenclaturalReference();
+                Reference nomRef = taxonName.getNomenclaturalReference();
                 //getView().getNomReferenceCombobox().setEnabled(nomRef.isOfType(ReferenceType.Section));
                 publishedUnit = nomRef;
                 while(publishedUnit.isOfType(ReferenceType.Section) && publishedUnit.getInReference() != null){
@@ -210,7 +229,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(TaxonName.class, identifier, crud, null);
         }
@@ -227,48 +246,6 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
         }
     }
 
-    @Override
-    protected TaxonName handleTransientProperties(TaxonName bean) {
-
-        logger.trace(this._toString() + ".onEditorSaveEvent - handling transient properties");
-
-
-        List<TaxonName> newBasionymNames = getView().getBasionymComboboxSelect().getValueFromNestedFields();
-        Set<TaxonName> oldBasionyms = bean.getBasionyms();
-        Set<TaxonName> updateBasionyms = new HashSet<>();
-        Set<TaxonName> removeBasionyms = new HashSet<>();
-
-        for(TaxonName newB : newBasionymNames){
-            if(!oldBasionyms.contains(newB)){
-                updateBasionyms.add(newB);
-            }
-        }
-
-        for(TaxonName oldB : oldBasionyms){
-            if(!newBasionymNames.contains(oldB)){
-                removeBasionyms.add(oldB);
-            }
-        }
-        for(TaxonName removeBasionym :removeBasionyms){
-            Set<NameRelationship> removeRelations = new HashSet<NameRelationship>();
-            for (NameRelationship nameRelation : bean.getRelationsToThisName()){
-                if (nameRelation.getType().isBasionymRelation() && nameRelation.getFromName().equals(removeBasionym)){
-                    removeRelations.add(nameRelation);
-                }
-            }
-            for (NameRelationship relation : removeRelations){
-                bean.removeNameRelationship(relation);
-            }
-        }
-        getRepo().getSession().clear();
-        for(TaxonName addBasionymName :updateBasionyms){
-            if(addBasionymName != null){
-                bean.addBasionym(addBasionymName);
-            }
-        }
-        return bean;
-    }
-
     /**
      * {@inheritDoc}
      */
@@ -284,7 +261,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
             return;
         }
 
-        referenceEditorPopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        referenceEditorPopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
 
         referenceEditorPopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         referenceEditorPopup.withDeleteButton(true);
@@ -305,12 +282,11 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
         if(getView() == null || event.getSourceView() != getView() ){
             return;
         }
-        referenceEditorPopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        referenceEditorPopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
 
-        referenceEditorPopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         referenceEditorPopup.withDeleteButton(true);
         referenceEditorPopup.setBeanInstantiator(newReferenceInstantiator);
-        referenceEditorPopup.loadInEditor(event.getEntityId());
+        referenceEditorPopup.loadInEditor(event.getEntityUuid());
         if(newReferenceInstantiator != null){
             // this is a bit clumsy, we actually need to inject something like a view configurer
             // which can enable, disable fields
@@ -320,34 +296,52 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
     }
 
     @EventBusListenerMethod
-    public void onDoneWithPopupEvent(DoneWithPopupEvent event){
+    public void onEntityChangeEvent(EntityChangeEvent<?> event){
 
-        if(event.getPopup() == referenceEditorPopup){
-            if(event.getReason() == Reason.SAVE){
+        if(event.getSourceView() instanceof AbstractPopupEditor) {
 
-                Reference modifiedReference = referenceEditorPopup.getBean();
+            AbstractPopupEditor popupEditor = (AbstractPopupEditor) event.getSourceView();
+            Field<?> targetField = getNavigationManager().targetFieldOf(getView(), popupEditor);
 
-                // the bean contained in the popup editor is not yet updated at this point.
-                // so re reload it using the uuid since new beans might not have an Id at this point.
-                // modifiedReference = getRepo().getReferenceService().load(modifiedReference.getUuid(), Arrays.asList("inReference"));
-                getView().getNomReferenceCombobox().reload(); // refreshSelectedValue(modifiedReference);
-            }
+            Property ds = targetField.getPropertyDataSource();
+            if(event.getSourceView() == referenceEditorPopup){
+                if(event.isCreateOrModifiedType()){
 
-            referenceEditorPopup = null;
-        }
-        if(event.getPopup() == basionymNamePopup){
-            if(event.getReason() == Reason.SAVE){
-                // TaxonName modifiedTaxonName = basionymNamePopup.getBean();
-                // modifiedTaxonName = getRepo().getNameService().load(modifiedTaxonName.getUuid(), BASIONYM_INIT_STRATEGY);
-                ((ReloadableSelect)basionymSourceField).reload();
+                    getCache().load(event.getEntity());
+                    if(event.isCreatedType()){
+                        getView().getNomReferenceCombobox().setValue((Reference) event.getEntity());
+                    } else {
+                        getView().getNomReferenceCombobox().reload(); // refreshSelectedValue(modifiedReference);
+                    }
+                    getView().getCombinationAuthorshipField().discard(); //refresh from the datasource
+                    getView().updateAuthorshipFields();
+                }
 
+                referenceEditorPopup = null;
             }
-            if(event.getReason() == Reason.DELETE){
-                basionymSourceField.setValue(null);
+            if(event.getSourceView()  == basionymNamePopup){
+                AbstractSelect basionymSourceField = (AbstractSelect) targetField;
+                if(event.isCreateOrModifiedType()){
+
+                    getCache().load(event.getEntity());
+                    if(event.isCreatedType()){
+                        basionymSourceField .setValue(event.getEntity());
+                    } else {
+                        ((ReloadableSelect)basionymSourceField).reload();
+                    }
+                    getView().getBasionymAuthorshipField().discard(); //refresh from the datasource
+                    getView().getExBasionymAuthorshipField().discard(); //refresh from the datasource
+                    getView().updateAuthorshipFields();
+
+                }
+                if(event.isRemovedType()){
+                    basionymSourceField.setValue(null);
+                    getView().updateAuthorshipFields();
+                }
+
+                basionymNamePopup = null;
             }
 
-            basionymNamePopup = null;
-            basionymSourceField = null;
         }
     }
 
@@ -357,18 +351,21 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
         if(getView() == null || event.getSourceView() != getView() ){
             return;
         }
+        ReloadableLazyComboBox<TaxonName> targetField = (ReloadableLazyComboBox<TaxonName>)event.getTarget();
 
-        basionymSourceField = (AbstractField<TaxonName>)event.getSourceComponent();
+        if(targetField == getView().getValidationField().getValidatedNameComboBox().getSelect()){
+            // validatedNameSourceField .. this is awkward, better use a map to correlate fields to popup editors!!!!
 
-        basionymNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
-        basionymNamePopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
-        basionymNamePopup.withDeleteButton(true);
-        getView().getModesActive().stream()
-                .filter(
-                        m -> !TaxonNamePopupEditorMode.nomenclaturalReferenceSectionEditingOnly.equals(m))
-                .forEach(m -> basionymNamePopup.enableMode(m));
-        basionymNamePopup.loadInEditor(event.getEntityId());
-        basionymNamePopup.getBasionymToggle().setVisible(false);
+        } else {
+            basionymNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView(), event.getTarget());
+            basionymNamePopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
+            basionymNamePopup.withDeleteButton(true);
+            getView().getModesActive().stream()
+                    .filter(m -> !TaxonNamePopupEditorMode.NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY.equals(m))
+                    .forEach(m -> basionymNamePopup.enableMode(m));
+            basionymNamePopup.loadInEditor(event.getEntityUuid());
+            basionymNamePopup.getBasionymToggle().setVisible(false);
+        }
 
     }
 
@@ -379,19 +376,24 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
             return;
         }
 
-        basionymSourceField = (AbstractField<TaxonName>)event.getSourceComponent();
-
-        basionymNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
+        basionymNamePopup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView(), event.getTarget());
         basionymNamePopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         basionymNamePopup.withDeleteButton(true);
         getView().getModesActive().stream()
-                .filter(
-                        m -> !TaxonNamePopupEditorMode.nomenclaturalReferenceSectionEditingOnly.equals(m))
+                .filter(m -> !TaxonNamePopupEditorMode.NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY.equals(m))
                 .forEach(m -> basionymNamePopup.enableMode(m));
         basionymNamePopup.loadInEditor(null);
         basionymNamePopup.getBasionymToggle().setVisible(false);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected TaxonNameDTO createDTODecorator(TaxonName cdmEntitiy) {
+        return new TaxonNameDTO(cdmEntitiy);
+    }
+
 
 
 
index 144da85c950e2c34e9b068855074c419d4820463..f386ad3cf1479e0544e7dffe247b8bb440ee956a 100644 (file)
@@ -10,13 +10,21 @@ package eu.etaxonomy.cdm.vaadin.view.name;
 
 import java.util.Collection;
 import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 
 import org.apache.commons.lang3.BooleanUtils;
+import org.apache.log4j.Level;
 import org.springframework.context.annotation.Scope;
 import org.springframework.security.core.GrantedAuthority;
 
+import com.vaadin.data.Property;
+import com.vaadin.data.Property.ValueChangeListener;
 import com.vaadin.shared.ui.label.ContentMode;
 import com.vaadin.spring.annotation.SpringComponent;
+import com.vaadin.ui.AbstractField;
 import com.vaadin.ui.Alignment;
 import com.vaadin.ui.CheckBox;
 import com.vaadin.ui.GridLayout;
@@ -24,24 +32,29 @@ import com.vaadin.ui.Label;
 import com.vaadin.ui.ListSelect;
 import com.vaadin.ui.TextField;
 
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.model.name.NameRelationshipDTO;
+import eu.etaxonomy.cdm.vaadin.model.name.TaxonNameDTO;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.CdmEditDeletePermissionTester;
 import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
+import eu.etaxonomy.vaadin.component.NameRelationField;
+import eu.etaxonomy.vaadin.component.ReloadableLazyComboBox;
 import eu.etaxonomy.vaadin.component.SwitchableTextField;
 import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
 import eu.etaxonomy.vaadin.event.EditorActionType;
-import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
-import eu.etaxonomy.vaadin.permission.EditPermissionTester;
+import eu.etaxonomy.vaadin.mvp.AbstractCdmDTOPopupEditor;
 
 /**
  * @author a.kohlbecker
@@ -50,13 +63,13 @@ import eu.etaxonomy.vaadin.permission.EditPermissionTester;
  */
 @SpringComponent
 @Scope("prototype")
-public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, TaxonNameEditorPresenter> implements TaxonNamePopupEditorView, AccessRestrictedView {
+public class TaxonNamePopupEditor extends AbstractCdmDTOPopupEditor<TaxonNameDTO, TaxonName, TaxonNameEditorPresenter> implements TaxonNamePopupEditorView, AccessRestrictedView {
 
     private static final long serialVersionUID = -7037436241474466359L;
 
     private final static int GRID_COLS = 4;
 
-    private final static int GRID_ROWS = 13;
+    private final static int GRID_ROWS = 16;
 
     private static final boolean HAS_BASIONYM_DEFAULT = false;
 
@@ -82,8 +95,14 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
 
     private ToManyRelatedEntitiesComboboxSelect<TaxonName> basionymsComboboxSelect;
 
+    private ToManyRelatedEntitiesComboboxSelect<TaxonName> replacedSynonymsComboboxSelect;
+
+    private NameRelationField validationField;
+
     private CheckBox basionymToggle;
 
+    private CheckBox replacedSynonymsToggle;
+
     private CheckBox validationToggle;
 
     private ListSelect rankSelect;
@@ -94,12 +113,22 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
 
     private EnumSet<TaxonNamePopupEditorMode> modesActive = EnumSet.noneOf(TaxonNamePopupEditorMode.class);
 
+    private Boolean isInferredCombinationAuthorship = null;
+
+    private Boolean isInferredBasionymAuthorship = null;
+
+    private Boolean isInferredExBasionymAuthorship = null;
+
+    private Map<AbstractField, Property.ValueChangeListener> authorshipUpdateListeners = new HashMap<>();
+
+    private Boolean isInferredExCombinationAuthorship;
+
     /**
      * @param layout
      * @param dtoType
      */
     public TaxonNamePopupEditor() {
-        super(new GridLayout(GRID_COLS, GRID_ROWS), TaxonName.class);
+        super(new GridLayout(GRID_COLS, GRID_ROWS), TaxonNameDTO.class);
     }
 
     /**
@@ -116,7 +145,7 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
      * {@inheritDoc}
      */
     @Override
-    public int getWindowPixelWidth() {
+    public int getWindowWidth() {
         return 800;
     }
 
@@ -216,17 +245,26 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         basionymToggle = new CheckBox("With basionym");
         basionymToggle.setValue(HAS_BASIONYM_DEFAULT);
         basionymToggle.addValueChangeListener(e -> {
-                updateFieldVisibility();
-            });
+            updateAuthorshipFields();
+        });
+
         basionymToggle.setStyleName(getDefaultComponentStyles());
         grid.addComponent(basionymToggle, 2, row, 3, row);
         grid.setComponentAlignment(basionymToggle, Alignment.BOTTOM_LEFT);
 
+        row++;
+        replacedSynonymsToggle = new CheckBox("With replaced synonym");
+        replacedSynonymsToggle.addValueChangeListener(e -> {
+            boolean enable = e.getProperty().getValue() != null && (Boolean)e.getProperty().getValue();
+            replacedSynonymsComboboxSelect.setVisible(enable);
+        });
+        grid.addComponent(replacedSynonymsToggle, 2, row, 3, row);
+        grid.setComponentAlignment(replacedSynonymsToggle, Alignment.BOTTOM_LEFT);
+
         row++;
         validationToggle = new CheckBox("Validation");
         validationToggle.addValueChangeListener(e -> {
-                boolean enable = e.getProperty().getValue() != null && (Boolean)e.getProperty().getValue();
-                exCombinationAuthorshipField.setVisible(enable);
+            updateAuthorshipFields();
             });
         grid.addComponent(validationToggle, 2, row, 3, row);
         grid.setComponentAlignment(validationToggle, Alignment.BOTTOM_LEFT);
@@ -253,7 +291,7 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         grid.addComponent(new Label("Hint: <i>Edit nomenclatural authors in the nomenclatural reference.</i>", ContentMode.HTML), 0, row, 3, row);
 
         row++;
-        combinationAuthorshipField = new TeamOrPersonField("combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
+        combinationAuthorshipField = new TeamOrPersonField("Combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         combinationAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(combinationAuthorshipField, "combinationAuthorship", 0, row, GRID_COLS-1, row);
 
@@ -268,48 +306,42 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
                 getViewEventBus().publish(this,
                     new ReferenceEditorAction(
                             EditorActionType.EDIT,
-                            nomReferenceCombobox.getValue().getId(),
+                            nomReferenceCombobox.getValue().getUuid(),
+                            e.getButton(),
                             nomReferenceCombobox,
                             this)
                 );
             }
             });
+        logger.setLevel(Level.DEBUG);
+        nomReferenceCombobox.getSelect().addValueChangeListener(e -> logger.debug("nomReferenceCombobox value changed #1"));
         // nomReferenceCombobox.setWidth(300, Unit.PIXELS);
         nomReferenceCombobox.setWidth("100%");
         addField(nomReferenceCombobox, "nomenclaturalReference", 0, row, 2, row);
         nomenclaturalReferenceDetail = addTextField("Reference detail", "nomenclaturalMicroReference", 3, row, 3, row);
         nomenclaturalReferenceDetail.setWidth(100, Unit.PIXELS);
 
-        row++;
-        exCombinationAuthorshipField = new TeamOrPersonField("Ex-combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
-        exCombinationAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
-        addField(exCombinationAuthorshipField, "exCombinationAuthorship", 0, row, GRID_COLS-1, row);
-
-        // Basionym
+        // --------------- Basionyms
         row++;
         basionymsComboboxSelect = new ToManyRelatedEntitiesComboboxSelect<TaxonName>(TaxonName.class, "Basionym");
         basionymsComboboxSelect.setConverter(new SetToListConverter<TaxonName>());
         addField(basionymsComboboxSelect, "basionyms", 0, row, 3, row);
         basionymsComboboxSelect.setWidth(100, Unit.PERCENTAGE);
         basionymsComboboxSelect.withEditButton(true);
-        basionymsComboboxSelect.setEditPermissionTester(new EditPermissionTester() {
-
-            @Override
-            public boolean userHasEditPermission(Object bean) {
-                return  UserHelper.fromSession().userHasPermission((CdmBase)bean, CRUD.UPDATE, CRUD.DELETE);
-            }
-        });
+        basionymsComboboxSelect.setEditPermissionTester(new CdmEditDeletePermissionTester());
         basionymsComboboxSelect.setEditActionListener(e -> {
 
             Object fieldValue = e.getSource().getValue();
-            Integer beanId = null;
+            UUID beanUuid = null;
             if(fieldValue != null){
-                beanId = ((CdmBase)fieldValue).getId();
+                beanUuid = ((CdmBase)fieldValue).getUuid();
 
             }
-            getViewEventBus().publish(this, new TaxonNameEditorAction(e.getAction(), beanId, e.getSource(), this));
+            ReloadableLazyComboBox<TaxonName>  lazyCombobox = (ReloadableLazyComboBox<TaxonName>) e.getSource();
+            getViewEventBus().publish(this, new TaxonNameEditorAction(e.getAction(), beanUuid, null, lazyCombobox, this));
         });
         grid.setComponentAlignment(basionymsComboboxSelect, Alignment.TOP_RIGHT);
+
         row++;
         basionymAuthorshipField = new TeamOrPersonField("Basionym author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
         basionymAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
@@ -319,72 +351,163 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         exBasionymAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(exBasionymAuthorshipField, "exBasionymAuthorship", 0, row, GRID_COLS-1, row);
 
+        // --------------- ReplacedSynonyms
+        row++;
+        replacedSynonymsComboboxSelect = new ToManyRelatedEntitiesComboboxSelect<TaxonName>(TaxonName.class, "Replaced synonyms");
+        replacedSynonymsComboboxSelect.setConverter(new SetToListConverter<TaxonName>());
+        addField(replacedSynonymsComboboxSelect, "replacedSynonyms", 0, row, 3, row);
+        replacedSynonymsComboboxSelect.setWidth(100, Unit.PERCENTAGE);
+        replacedSynonymsComboboxSelect.withEditButton(true);
+        replacedSynonymsComboboxSelect.setEditPermissionTester(new CdmEditDeletePermissionTester());
+        replacedSynonymsComboboxSelect.setEditActionListener(e -> {
+
+            Object fieldValue = e.getSource().getValue();
+            UUID beanUuid = null;
+            if(fieldValue != null){
+                beanUuid = ((CdmBase)fieldValue).getUuid();
+
+            }
+            ReloadableLazyComboBox<TaxonName>  lazyCombobox = (ReloadableLazyComboBox<TaxonName>) e.getSource();
+            getViewEventBus().publish(this, new TaxonNameEditorAction(e.getAction(), beanUuid, null, lazyCombobox, this));
+        });
+        grid.setComponentAlignment(replacedSynonymsComboboxSelect, Alignment.TOP_RIGHT);
+
+        // --------------- Validation
+        row++;
+        validationField = new NameRelationField("Validation", Direction.relatedTo, NameRelationshipType.VALIDATED_BY_NAME());
+        validationField.setWidth(100, Unit.PERCENTAGE);
+        ToOneRelatedEntityCombobox<TaxonName> validatedNameComboBox = validationField.getValidatedNameComboBox();
+        validatedNameComboBox.addClickListenerAddEntity(e -> getViewEventBus().publish(
+                this,
+                new TaxonNameEditorAction(EditorActionType.ADD, null, validatedNameComboBox, this)
+                ));
+        validatedNameComboBox.addClickListenerAddEntity(e -> {
+            if(validatedNameComboBox.getValue() != null){
+                getViewEventBus().publish(this,
+                    new TaxonNameEditorAction(
+                            EditorActionType.EDIT,
+                            validatedNameComboBox.getValue().getUuid(),
+                            e.getButton(),
+                            validatedNameComboBox,
+                            this)
+                );
+            }
+        });
+        ToOneRelatedEntityCombobox<Reference> validationCitatonComboBox = validationField.getCitatonComboBox();
+        validationCitatonComboBox.addClickListenerAddEntity(e -> getViewEventBus().publish(
+                this,
+                new ReferenceEditorAction(EditorActionType.ADD, null, validationCitatonComboBox, this)
+                ));
+        validationCitatonComboBox.addClickListenerAddEntity(e -> {
+            if(validationCitatonComboBox.getValue() != null){
+                getViewEventBus().publish(this,
+                    new ReferenceEditorAction(
+                            EditorActionType.EDIT,
+                            validationCitatonComboBox.getValue().getUuid(),
+                            e.getButton(),
+                            validationCitatonComboBox,
+                            this)
+                );
+            }
+        });
+        addField(validationField, "validationFor", 0, row, 3, row);
+        grid.setComponentAlignment(validationField, Alignment.TOP_RIGHT);
+
+        row++;
+        exCombinationAuthorshipField = new TeamOrPersonField("Ex-combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
+        exCombinationAuthorshipField.setWidth(100,  Unit.PERCENTAGE);
+        addField(exCombinationAuthorshipField, "exCombinationAuthorship", 0, row, GRID_COLS-1, row);
 
+        // -----------------------------------------------------------------------------
 
         setAdvancedModeEnabled(true);
         registerAdvancedModeComponents(fullTitleCacheFiled, protectedNameCacheField);
-        registerAdvancedModeComponents(basionymAuthorshipField.getCachFields());
-        registerAdvancedModeComponents(exBasionymAuthorshipField.getCachFields());
+
+        registerAdvancedModeComponents(combinationAuthorshipField);
+        registerAdvancedModeComponents(basionymAuthorshipField);
+        registerAdvancedModeComponents(exBasionymAuthorshipField);
+        registerAdvancedModeComponents(exCombinationAuthorshipField);
+
         registerAdvancedModeComponents(combinationAuthorshipField.getCachFields());
         registerAdvancedModeComponents(exCombinationAuthorshipField.getCachFields());
+        registerAdvancedModeComponents(basionymAuthorshipField.getCachFields());
+        registerAdvancedModeComponents(exBasionymAuthorshipField.getCachFields());
+
         setAdvancedMode(false);
 
     }
 
-    /**
-     * @param rank
-     * @return
-     */
-    private void updateFieldVisibility() {
-
-        // TODO use getField() instead and remove field references
-
-        TaxonName taxonName = getBean();
-        Rank rank = taxonName.getRank();
+    protected TeamOrPersonBase inferBasiomynAuthors() {
+        List<TaxonName> basionyms = basionymsComboboxSelect.getValue();
+        if(!basionyms.isEmpty()){
+            TaxonName basionym = basionyms.get(0);
+            if(basionym.getCombinationAuthorship() != null){
+                return basionym.getCombinationAuthorship();
+            } else if(basionym.getNomenclaturalReference() != null){
+                return basionym.getNomenclaturalReference().getAuthorship();
+            }
+        }
+        return null;
+    }
 
-        boolean isSpeciesOrBelow = !rank.isHigher(Rank.SPECIES());
-        Boolean withBasionym = BooleanUtils.isTrue(basionymToggle.getValue());
-        Boolean withValidation = BooleanUtils.isTrue(validationToggle.getValue());
+    protected TeamOrPersonBase inferExBasiomynAuthors() {
+        List<TaxonName> basionyms = basionymsComboboxSelect.getValue();
+        if(!basionyms.isEmpty()){
+            TaxonName basionym = basionyms.get(0);
+                return basionym.getExCombinationAuthorship();
+        }
+        return null;
+    }
 
-        basionymAuthorshipField.setVisible(withBasionym != null && withBasionym);
-        exBasionymAuthorshipField.setVisible(withBasionym);
-        basionymsComboboxSelect.setVisible(withBasionym);
+    protected TeamOrPersonBase inferCombinationAuthors() {
+        Reference nomRef = nomReferenceCombobox.getValue();
+        if(nomRef != null) {
+            return nomRef.getAuthorship();
+        }
+        return null;
+    }
 
-        if(taxonName != null){
-            if(modesActive.contains(TaxonNamePopupEditorMode.suppressReplacementAuthorshipData)){
-                basionymAuthorshipField.setVisible(taxonName.getBasionymAuthorship() != null);
-                exBasionymAuthorshipField.setVisible(taxonName.getExBasionymAuthorship() != null);
+    protected TeamOrPersonBase inferExCombinationAuthors() {
+        NameRelationshipDTO nameRelationDTO = validationField.getValue();
+        if(nameRelationDTO != null && nameRelationDTO.getOtherName() != null){
+            TaxonName validatedName = nameRelationDTO.getOtherName();
+            if(validatedName.getCombinationAuthorship() != null) {
+                return validatedName.getCombinationAuthorship();
+            } else if(validatedName.getNomenclaturalReference() != null){
+                return validatedName.getNomenclaturalReference().getAuthorship();
             }
         }
-
-        infraSpecificEpithetField.setVisible(rank.isInfraSpecific());
-        specificEpithetField.setVisible(isSpeciesOrBelow);
-        infraGenericEpithetField.setVisible(rank.isInfraGenericButNotSpeciesGroup());
-        genusOrUninomialField.setCaption(isSpeciesOrBelow ? "Genus" : "Uninomial");
-        exCombinationAuthorshipField.setVisible(isSpeciesOrBelow && withValidation);
+        return null;
     }
 
     @Override
     protected void afterItemDataSourceSet() {
-        TaxonName taxonName = getBean();
-        boolean showBasionymSection = taxonName.getBasionyms().size() > 0
-                || taxonName.getBasionymAuthorship() != null
-                || taxonName.getExBasionymAuthorship() != null;
+        TaxonNameDTO taxonNameDTO = getBean();
+        boolean showBasionymSection = taxonNameDTO.getBasionyms().size() > 0
+                || taxonNameDTO.getBasionymAuthorship() != null
+                || taxonNameDTO.getExBasionymAuthorship() != null;
         basionymToggle.setValue(showBasionymSection);
         basionymToggle.setReadOnly(showBasionymSection);
 
-        boolean showExAuthors = taxonName.getExCombinationAuthorship() != null;
-        validationToggle.setValue(showExAuthors);
-        validationToggle.setReadOnly(showExAuthors);
-        exCombinationAuthorshipField.setVisible(showExAuthors);
+        boolean showReplacedSynonyms = taxonNameDTO.getReplacedSynonyms().size() > 0;
+        replacedSynonymsToggle.setValue(showReplacedSynonyms);
+        replacedSynonymsToggle.setReadOnly(showReplacedSynonyms);
+        replacedSynonymsComboboxSelect.setVisible(showReplacedSynonyms);
+
+        boolean showValidationSection = taxonNameDTO.getValidationFor() != null || taxonNameDTO.getExCombinationAuthorship() != null;
 
-        if(isModeEnabled(TaxonNamePopupEditorMode.suppressReplacementAuthorshipData)){
-            combinationAuthorshipField.setVisible(taxonName.getCombinationAuthorship() != null);
+        validationToggle.setValue(showValidationSection);
+        validationToggle.setReadOnly(showValidationSection);
+//        validationField.setVisible(showValidation);
+//        exCombinationAuthorshipField.setVisible(showExAuthors);
+
+        if(isModeEnabled(TaxonNamePopupEditorMode.AUTOFILL_AUTHORSHIP_DATA)){
+            updateAuthorshipFields();
         }
-        if(isModeEnabled(TaxonNamePopupEditorMode.nomenclaturalReferenceSectionEditingOnly) && getBean().getNomenclaturalReference() != null) {
+        if(isModeEnabled(TaxonNamePopupEditorMode.NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY) && getBean().getNomenclaturalReference() != null) {
             nomReferenceCombobox.setCaption("Selection limited to nomenclatural reference and sections");
         }
-        if(isModeEnabled(TaxonNamePopupEditorMode.requireNomenclaturalReference)) {
+        if(isModeEnabled(TaxonNamePopupEditorMode.REQUIRE_NOMENCLATURALREFERENCE)) {
             if(combinationAuthorshipField.getValue() == null){
                 nomReferenceCombobox.setRequired(true);
             } else {
@@ -398,6 +521,167 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
 
     }
 
+    /**
+     * Updates all authorship fields if the an authorship field is empty this method attempts to infer the
+     * authors from the related nomenclatural reference or taxon name.
+     * <p>
+     * Finally the {@link #updateFieldVisibility()} is invoked.
+     *
+     * @param taxonName
+     */
+    @Override
+    public void updateAuthorshipFields() {
+
+        TaxonNameDTO taxonName = getBean();
+
+        // ------------- CombinationAuthors
+        isInferredCombinationAuthorship = updateAuthorshipFieldData(
+                taxonName.getCombinationAuthorship(),
+                inferCombinationAuthors(),
+                combinationAuthorshipField,
+                nomReferenceCombobox.getSelect(),
+                isInferredCombinationAuthorship);
+
+
+        // ------------- Basionym and ExBasionymAuthors
+        if(BooleanUtils.isTrue(basionymToggle.getValue())){
+
+            isInferredBasionymAuthorship = updateAuthorshipFieldData(
+                    taxonName.getBasionymAuthorship(),
+                    inferBasiomynAuthors(),
+                    basionymAuthorshipField,
+                    basionymsComboboxSelect,
+                    isInferredBasionymAuthorship
+                    );
+
+            isInferredExBasionymAuthorship = updateAuthorshipFieldData(
+                    taxonName.getExBasionymAuthorship(),
+                    inferExBasiomynAuthors(),
+                    exBasionymAuthorshipField,
+                    basionymsComboboxSelect,
+                    isInferredExBasionymAuthorship
+                    );
+
+        }
+
+        // ------------- Validation and ExCombinationAuthors
+        isInferredExCombinationAuthorship = updateAuthorshipFieldData(
+                taxonName.getExCombinationAuthorship(),
+                inferExCombinationAuthors(),
+                exCombinationAuthorshipField,
+                validationField.getValidatedNameComboBox(),
+                isInferredExCombinationAuthorship
+                );
+
+        updateFieldVisibility();
+
+    }
+
+//    /**
+//     *
+//     */
+//    protected void updateAuthorshipFieldsVisibility() {
+//        combinationAuthorshipField.setVisible(!isInferredCombinationAuthorship);
+//        if(BooleanUtils.isTrue(basionymToggle.getValue())){
+//            basionymAuthorshipField.setVisible(!isInferredBasionymAuthorship);
+//            exBasionymAuthorshipField.setVisible(!isInferredExBasionymAuthorship);
+//        }
+//    }
+
+    /**
+     *
+     * @param authorship
+     *    the value of the taxonName authorship field
+     * @param inferredAuthors
+     *    the value inferred from other fields which may be set as authorship to the taxon name
+     * @param authorshipField
+     *    the ui element to edit the taxonName authorship field
+     * @param updateTriggerField
+     * @param lastInferredAuthorshipState
+     * @return
+     */
+    protected Boolean updateAuthorshipFieldData(TeamOrPersonBase<?> authorship, TeamOrPersonBase inferredAuthors,
+            TeamOrPersonField authorshipField, AbstractField updateTriggerField,
+            Boolean lastInferredAuthorshipState) {
+
+        if(authorship == null){
+            authorshipField.setValue(inferredAuthors);
+            lastInferredAuthorshipState = true;
+        } else {
+            boolean authorshipMatch = authorship == inferredAuthors;
+            if(lastInferredAuthorshipState == null){
+                // initialization of authorshipState, this comes only into account when the editor is just being initialized
+                lastInferredAuthorshipState = authorshipMatch;
+            }
+            if(!authorshipMatch && lastInferredAuthorshipState){
+                // update the combinationAuthorshipField to follow changes of the nomenclatural reference in case it was autofilled before
+                authorshipField.setValue(inferredAuthors);
+                lastInferredAuthorshipState = true;
+            }
+        }
+
+        if(updateTriggerField != null){
+            // IMPORTANT!
+            // this ChangeListener must be added at this very late point in the editor lifecycle so that it is called after
+            // the ToOneRelatedEntityReloader which may have been added to the updateTriggerField in the presenters handleViewEntered() method.
+            // Otherwise we risk multiple representation problems in the hibernate session
+            if(!authorshipUpdateListeners.containsKey(updateTriggerField)){
+                ValueChangeListener listener = e ->  {
+                    logger.debug(" value changed #2");
+                    updateAuthorshipFields();
+                };
+                updateTriggerField.addValueChangeListener(listener);
+                authorshipUpdateListeners.put(updateTriggerField, listener);
+            }
+        }
+
+        return lastInferredAuthorshipState;
+    }
+
+    /**
+     * @param rank
+     * @return
+     */
+    private void updateFieldVisibility() {
+
+        // TODO use getField() instead and remove field references
+        Rank rank = (Rank) rankSelect.getValue();
+
+        boolean isSpeciesOrBelow = !rank.isHigher(Rank.SPECIES());
+        Boolean withBasionymSection = BooleanUtils.isTrue(basionymToggle.getValue());
+        Boolean withValidationSection = isSpeciesOrBelow && BooleanUtils.isTrue(validationToggle.getValue());
+
+        specificEpithetField.setVisible(isSpeciesOrBelow);
+        infraSpecificEpithetField.setVisible(rank.isInfraSpecific());
+        infraGenericEpithetField.setVisible(rank.isInfraGeneric());
+
+        basionymsComboboxSelect.setVisible(withBasionymSection);
+
+        combinationAuthorshipField.setVisible(isInferredCombinationAuthorship != null && !isInferredCombinationAuthorship);
+        basionymAuthorshipField.setVisible(withBasionymSection && isInferredBasionymAuthorship != null && !isInferredBasionymAuthorship);
+        exBasionymAuthorshipField.setVisible(withBasionymSection && isInferredExBasionymAuthorship != null && !isInferredExBasionymAuthorship);
+
+        validationField.setVisible(withValidationSection);
+        exCombinationAuthorshipField.setVisible(withValidationSection && isInferredExCombinationAuthorship != null && !isInferredExCombinationAuthorship);
+
+
+//        if(taxonName != null){
+//            if(modesActive.contains(TaxonNamePopupEditorMode.AUTOFILL_AUTHORSHIP_DATA)){
+//            }
+//        }
+
+        infraSpecificEpithetField.setVisible(rank.isInfraSpecific());
+        specificEpithetField.setVisible(isSpeciesOrBelow);
+        infraGenericEpithetField.setVisible(rank.isInfraGenericButNotSpeciesGroup());
+        genusOrUninomialField.setCaption(isSpeciesOrBelow ? "Genus" : "Uninomial");
+    }
+
+    @Override
+    public void cancel() {
+        authorshipUpdateListeners.keySet().forEach(field -> field.removeValueChangeListener(authorshipUpdateListeners.get(field)));
+        super.cancel();
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -430,6 +714,14 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         return basionymsComboboxSelect;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ToManyRelatedEntitiesComboboxSelect<TaxonName> getReplacedSynonymsComboboxSelect() {
+        return replacedSynonymsComboboxSelect;
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -470,6 +762,11 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         return exCombinationAuthorshipField;
     }
 
+    @Override
+    public NameRelationField getValidationField(){
+        return validationField;
+    }
+
     @Override
     public void enableMode(TaxonNamePopupEditorMode mode){
             modesActive.add(mode);
@@ -503,6 +800,10 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         boolean basionymToggleReadonly = basionymToggle.isReadOnly();
         boolean validationToggleReadonly = validationToggle.isReadOnly();
         super.setReadOnly(readOnly);
+        combinationAuthorshipField.setEditorReadOnly(readOnly);
+        exCombinationAuthorshipField.setEditorReadOnly(readOnly);
+        basionymAuthorshipField.setEditorReadOnly(readOnly);
+        exBasionymAuthorshipField.setEditorReadOnly(readOnly);
         // preserve old readonly states if they were true
         if(basionymToggleReadonly){
             basionymToggle.setReadOnly(true);
index 21301bd71f2db529e3b9c32860abc2064a1c9167..e12bde48aa7326860862378bda4eff08a57aa3b8 100644 (file)
@@ -19,7 +19,7 @@ public enum TaxonNamePopupEditorMode {
      * CombinationAuthorship BasionymAuthorship fields only visible if
      * not empty
      */
-    suppressReplacementAuthorshipData,
+    AUTOFILL_AUTHORSHIP_DATA,
 
     /**
      * Editing of the nomenclatural reference is limited to editing the sub section of the
@@ -29,13 +29,13 @@ public enum TaxonNamePopupEditorMode {
      * section can be edited via a ReferencePopupEditor.
      *
      */
-    nomenclaturalReferenceSectionEditingOnly,
+    NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY,
 
     /**
      * setting the nomenclatural reference is required with the exception
      * that existing data is considered complete if the combination
      * authors are set.
      */
-    requireNomenclaturalReference
+    REQUIRE_NOMENCLATURALREFERENCE
 
 }
index dcc5a192c956a55056ebb6076cfdfb79cd700e58..2065008beb70b0d547fe6a4043f62944f9d39310 100644 (file)
@@ -16,6 +16,7 @@ import com.vaadin.ui.ListSelect;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
+import eu.etaxonomy.vaadin.component.NameRelationField;
 import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
@@ -81,4 +82,16 @@ public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEdito
      */
     CheckBox getBasionymToggle();
 
+    void updateAuthorshipFields();
+
+    /**
+     * @return
+     */
+    ToManyRelatedEntitiesComboboxSelect<TaxonName> getReplacedSynonymsComboboxSelect();
+
+    /**
+     * @return
+     */
+    NameRelationField getValidationField();
+
 }
index 00f2f415bb9d0c171e72e94eb0a7f87c230ba3dd..98a41863847e0c127c756222cc9481429f335ca2 100644 (file)
@@ -8,45 +8,44 @@
 */
 package eu.etaxonomy.cdm.vaadin.view.name;
 
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 
 public class TypeDesignationWorkingsetEditorIdSet {
 
-    Integer registrationId;
+    UUID registrationUuid;
     TypedEntityReference<IdentifiableEntity<?>> baseEntityRef;
-    Integer publicationId;
-    Integer typifiedNameId;
+    UUID publicationUuid;
+    UUID typifiedNameUuid;
 
     /**
-     * @param registrationId
+     * @param registrationUuid
      *            must be present
-     * @param workingsetId
-     *            can <code>null</code>. In this case the <code>publicationId</code>
-     *            and and typifiedNameId must be set.
-     *            <code>RegistrationAndWorkingsetId</code> refers to a not yet
-     *            existing working set, which should be created by the code in
-     *            case this makes sense.
-     * @param publicationId
-     *            Can <code>null</code> if the <code>workingsetId</code> is given.
-     * @param typifiedNameId
+     * @param baseEntityRef
+     *
+     * @param publicationUuid
+     *            Can <code>null</code> if the <code>workingsetID</code> is given.
+     * @param typifiedNameUuid
      *            Can <code>null</code> if the <code>workingsetId</code> is given
      */
-    protected TypeDesignationWorkingsetEditorIdSet(Integer registrationId, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef, Integer publicationId, Integer typifiedNameId) {
-        this.registrationId = registrationId;
+    protected TypeDesignationWorkingsetEditorIdSet(UUID registrationUuid, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef,
+            UUID publicationUuid, UUID typifiedNameUuid) {
+        this.registrationUuid = registrationUuid;
         this.baseEntityRef = baseEntityRef;
-        this.publicationId = publicationId;
-        this.typifiedNameId = typifiedNameId;
-        if(baseEntityRef == null && publicationId == null|| baseEntityRef == null && typifiedNameId == null){
+        this.publicationUuid = publicationUuid;
+        this.typifiedNameUuid = typifiedNameUuid;
+        if(baseEntityRef == null && publicationUuid == null|| baseEntityRef == null && typifiedNameUuid == null){
             throw new NullPointerException("When workingsetId is null, publicationId and typifiedNameId must be non null.");
         }
     }
 
-    public TypeDesignationWorkingsetEditorIdSet(Integer registrationId, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef) {
-        this(registrationId, baseEntityRef, null, null);
+    public TypeDesignationWorkingsetEditorIdSet(UUID registrationUuid, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef) {
+        this(registrationUuid, baseEntityRef, null, null);
     }
 
-    public TypeDesignationWorkingsetEditorIdSet(Integer registrationId, Integer publicationId, Integer typifiedNameId) {
-        this(registrationId, null, publicationId, typifiedNameId);
+    public TypeDesignationWorkingsetEditorIdSet(UUID registrationUuid, UUID publicationUuid, UUID typifiedNameUuid) {
+        this(registrationUuid, null, publicationUuid, typifiedNameUuid);
     }
 }
\ No newline at end of file
index 5982295718f75a2242bd739ec355b8be81edaa45..0df66bf52160e3a3db327fbe4135a4dbe5a22c11 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.occurrence;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.context.annotation.Scope;
 import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -21,11 +22,10 @@ import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
 import eu.etaxonomy.cdm.vaadin.event.CollectionEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.EditorActionTypeFilter;
+import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
 
 /**
  * @author a.kohlbecker
@@ -44,7 +44,7 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
      * {@inheritDoc}
      */
     @Override
-    protected Collection loadCdmEntityById(Integer identifier) {
+    protected Collection loadCdmEntity(UUID identifier) {
 
         List<String> initStrategy = Arrays.asList(new String []{
 
@@ -67,7 +67,7 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(Collection.class, identifier, crud, null);
         }
@@ -113,7 +113,7 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
             return;
         }
 
-        collectionPopuEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView());
+        collectionPopuEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView(), null);
 
         collectionPopuEditor.grantToCurrentUser(this.crud);
         collectionPopuEditor.withDeleteButton(true);
@@ -127,24 +127,25 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
             return;
         }
 
-        collectionPopuEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView());
+        collectionPopuEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView(), null);
 
         collectionPopuEditor.grantToCurrentUser(this.crud);
         collectionPopuEditor.withDeleteButton(true);
-        collectionPopuEditor.loadInEditor(event.getEntityId());
+        collectionPopuEditor.loadInEditor(event.getEntityUuid());
     }
 
     @EventBusListenerMethod()
-    public void onDoneWithPopupEvent(DoneWithPopupEvent event){
-        if(event.getPopup() == collectionPopuEditor){
-            if(event.getReason() == Reason.SAVE){
-
-                Collection newCollection = collectionPopuEditor.getBean();
-
-                // TODO the bean contained in the popup editor is not yet updated at this point.
-                //      so re reload it using the uuid since new beans will not have an Id at this point.
-                newCollection = getRepo().getCollectionService().find(newCollection.getUuid());
-                getView().getSuperCollectionCombobox().getSelect().setValue(newCollection);
+    public void onEntityChangeEvent(EntityChangeEvent<?> event){
+        if(event.getSourceView() == collectionPopuEditor){
+            if(event.isCreateOrModifiedType()){
+
+                Collection newCollection = (Collection) event.getEntity();
+                getCache().load(newCollection);
+                if(event.isCreatedType()){
+                    getView().getSuperCollectionCombobox().setValue(newCollection);
+                } else {
+                    getView().getSuperCollectionCombobox().reload();
+                }
             }
 
             collectionPopuEditor = null;
index 88f20df7966670c584003a64c67c63c5b29043c3..911c6a39eb7026dc8c25ce1e8d549be82904b382 100644 (file)
@@ -18,7 +18,7 @@ import com.vaadin.ui.TextField;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.vaadin.event.CollectionEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
 import eu.etaxonomy.vaadin.event.EditorActionType;
@@ -67,7 +67,7 @@ public class CollectionPopupEditor extends AbstractCdmPopupEditor<Collection, Co
      * {@inheritDoc}
      */
     @Override
-    public int getWindowPixelWidth() {
+    public int getWindowWidth() {
         return 500;
     }
 
@@ -145,7 +145,8 @@ public class CollectionPopupEditor extends AbstractCdmPopupEditor<Collection, Co
                 getViewEventBus().publish(this,
                     new CollectionEditorAction(
                             EditorActionType.EDIT,
-                            superCollectionCombobox.getValue().getId(),
+                            superCollectionCombobox.getValue().getUuid(),
+                            e.getButton(),
                             superCollectionCombobox,
                             this)
                 );
@@ -173,7 +174,8 @@ public class CollectionPopupEditor extends AbstractCdmPopupEditor<Collection, Co
                     getViewEventBus().publish(this,
                             new CollectionEditorAction(
                                 EditorActionType.EDIT,
-                                superCollectionCombobox.getValue().getId(),
+                                superCollectionCombobox.getValue().getUuid(),
+                                e.getButton(),
                                 superCollectionCombobox,
                                 this
                             )
index 1a6bf8dbc40a00b4ef1733609ff4285435cafb04..b05983db7aec32a02a7046235b3ffba9fe96603c 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.reference;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.springframework.context.annotation.Scope;
@@ -25,14 +26,13 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
+import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
 import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.component.ToOneRelatedEntityField;
 import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent;
-import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
 
 /**
  * @author a.kohlbecker
@@ -75,7 +75,7 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
         getView().getInReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getInReferenceCombobox()));
         getView().getInReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Reference>(getView().getInReferenceCombobox(),this));
 
-        CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase> teamOrPersonPagingProvider = new CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase>(getRepo().getAgentService());
+        CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase> teamOrPersonPagingProvider = new CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase>(getRepo().getAgentService(), TeamOrPersonBase.class);
         CdmFilterablePagingProvider<AgentBase, Person> personPagingProvider = new CdmFilterablePagingProvider<AgentBase, Person>(getRepo().getAgentService(), Person.class);
         getView().getAuthorshipField().setFilterableTeamPagingProvider(teamOrPersonPagingProvider, this);
         getView().getAuthorshipField().setFilterablePersonPagingProvider(personPagingProvider, this);
@@ -85,7 +85,7 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
      * {@inheritDoc}
      */
     @Override
-    protected Reference loadCdmEntityById(Integer identifier) {
+    protected Reference loadCdmEntity(UUID identifier) {
 
         List<String> initStrategy = Arrays.asList(new String []{
 
@@ -118,7 +118,7 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(Reference.class, identifier, crud, null);
         }
@@ -143,32 +143,32 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
    @EventBusListenerMethod
    public void onReferenceEditorAction(ReferenceEditorAction editorAction) {
 
-       if(!isFromOwnView(editorAction) || editorAction.getSourceComponent() == null){
+       if(!isFromOwnView(editorAction) || editorAction.getTarget() == null){
            return;
        }
 
-       if(ToOneRelatedEntityField.class.isAssignableFrom(editorAction.getSourceComponent().getClass())){
+       if(ToOneRelatedEntityField.class.isAssignableFrom(editorAction.getTarget().getClass())){
            if(editorAction.isAddAction()){
-               inReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+               inReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
                inReferencePopup.loadInEditor(null);
            }
            if(editorAction.isEditAction()){
-               inReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+               inReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
                inReferencePopup.withDeleteButton(true);
-               inReferencePopup.loadInEditor(editorAction.getEntityId());
+               inReferencePopup.loadInEditor(editorAction.getEntityUuid());
            }
        }
    }
 
    @EventBusListenerMethod
-   public void doDoneWithPopupEvent(DoneWithPopupEvent event){
+   public void onEntityChangeEvent(EntityChangeEvent<?> event){
 
-       if(event.getPopup().equals(inReferencePopup)){
-           if(event.getReason().equals(Reason.SAVE)){
-               Reference bean = inReferencePopup.getBean();
-               getView().getInReferenceCombobox().reload(); //refreshSelectedValue(bean);
+       if(event.getSourceView() == inReferencePopup){
+           if(event.isCreateOrModifiedType()){
+               getCache().load(event.getEntity());
+               getView().getInReferenceCombobox().reload();
            }
-           if(event.getReason().equals(Reason.DELETE)){
+           if(event.isRemovedType()){
                getView().getInReferenceCombobox().selectNewItem(null);
            }
            inReferencePopup = null;
index 757410f3a082ffb0245fc8eed85a0dac93527b17..b093e3ccd42d0cf9965fb6d39448e4c3c39c8223 100644 (file)
@@ -24,9 +24,9 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
 import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
-import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
+import eu.etaxonomy.cdm.vaadin.component.common.VerbatimTimePeriodField;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.DoiConverter;
 import eu.etaxonomy.cdm.vaadin.util.converter.UriConverter;
@@ -109,38 +109,38 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor<Reference, Refe
         addField(typeSelect, "type", 3, row);
         grid.setComponentAlignment(typeSelect, Alignment.TOP_RIGHT);
         row++;
+
         SwitchableTextField titleCacheField = addSwitchableTextField("Reference cache", "titleCache", "protectedTitleCache", 0, row, GRID_COLS-1, row);
         titleCacheField.setWidth(100, Unit.PERCENTAGE);
         row++;
+
         SwitchableTextField abbrevTitleCacheField = addSwitchableTextField("Abbrev. cache", "abbrevTitleCache", "protectedAbbrevTitleCache", 0, row, GRID_COLS-1, row);
         abbrevTitleCacheField.setWidth(100, Unit.PERCENTAGE);
         row++;
+
         titleField = addTextField("Title", "title", 0, row, GRID_COLS-1, row);
         titleField.setWidth(100, Unit.PERCENTAGE);
         row++;
         addTextField("Nomenclatural title", "abbrevTitle", 0, row, GRID_COLS-1, row).setWidth(100, Unit.PERCENTAGE);
         row++;
+
         authorshipField = new TeamOrPersonField("Author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.BIBLIOGRAPHIC_TITLE);
         authorshipField.setWidth(100,  Unit.PERCENTAGE);
         addField(authorshipField, "authorship", 0, row, 3, row);
         row++;
-        addTextField("Series", "seriesPart", 0, row);
-        addTextField("Volume", "volume", 1, row);
-        addTextField("Pages", "pages", 2, row);
-        addTextField("Editor", "editor", 3, row).setWidth(100, Unit.PERCENTAGE);
-        row++;
 
         inReferenceCombobox = new ToOneRelatedEntityCombobox<Reference>("In-reference", Reference.class);
         inReferenceCombobox.setWidth(100, Unit.PERCENTAGE);
         inReferenceCombobox.addClickListenerAddEntity(e -> getViewEventBus().publish(this,
-                new ReferenceEditorAction(EditorActionType.ADD, null, inReferenceCombobox, this)
+                new ReferenceEditorAction(EditorActionType.ADD, e.getButton(), inReferenceCombobox, this)
                 ));
         inReferenceCombobox.addClickListenerEditEntity(e -> {
             if(inReferenceCombobox.getValue() != null){
                 getViewEventBus().publish(this,
                     new ReferenceEditorAction(
                             EditorActionType.EDIT,
-                            inReferenceCombobox.getValue().getId(),
+                            inReferenceCombobox.getValue().getUuid(),
+                            e.getButton(),
                             inReferenceCombobox,
                             this)
                 );
@@ -148,12 +148,20 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor<Reference, Refe
             });
         addField(inReferenceCombobox, "inReference", 0, row, 3, row);
         row++;
+
+        addTextField("Series", "seriesPart", 0, row);
+        addTextField("Volume", "volume", 1, row);
+        addTextField("Pages", "pages", 2, row);
+        addTextField("Editor", "editor", 3, row).setWidth(100, Unit.PERCENTAGE);
+        row++;
+
         addTextField("Place published", "placePublished", 0, row, 1, row).setWidth(100, Unit.PERCENTAGE);
         TextField publisherField = addTextField("Publisher", "publisher", 2, row, 3, row);
         publisherField.setWidth(100, Unit.PERCENTAGE);
-        TimePeriodField timePeriodField = new TimePeriodField("Date published");
+        VerbatimTimePeriodField timePeriodField = new VerbatimTimePeriodField("Date published");
         addField(timePeriodField, "datePublished");
         row++;
+
         addTextField("ISSN", "issn", 0, row);
         addTextField("ISBN", "isbn", 1, row);
         TextFieldNFix doiField = new TextFieldNFix("DOI");
index e9cd7c3eebb61f5fd722be64a9eeb1ed854ff78c..99ed5994ae5b53c82a90afb2ed1d363925b90c07 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.EnumSet;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@ import com.vaadin.spring.annotation.SpringComponent;
 import com.vaadin.spring.annotation.ViewScope;
 import com.vaadin.ui.TextField;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
@@ -133,24 +135,24 @@ public class ListPresenter extends AbstractPresenter<ListView> {
     }
 
     @EventBusListenerMethod
-    public void onShowDetailsEvent(ShowDetailsEvent<RegistrationDTO, Integer> event) {
+    public void onShowDetailsEvent(ShowDetailsEvent<RegistrationDTO, UUID> event) {
 
         // FIXME check from own view!!!
         if(getView() == null){
             return;
         }
 
-        Integer registrationId = event.getIdentifier();
+        UUID registrationUuid = event.getIdentifier();
 
-        RegistrationDTO regDto = getWorkingSetService().loadDtoById(registrationId);
+        RegistrationDTO regDto = getWorkingSetService().loadDtoByUuid(registrationUuid);
         if(event.getProperty().equals("messages")){
 
-            getView().openDetailsPopup("Messages", regDto.getMessages());
+            getView().openDetailsPopup("Messages", regDto.getValidationProblems());
 
         } else if(event.getProperty().equals("blockedBy")){
 
-            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationId);
-            RegistrationItem regItem = getView().getRegistrationItem(registrationId);
+            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationUuid);
+            RegistrationItem regItem = getView().getRegistrationItem(registrationUuid);
             regItem.showBlockingRegistrations(blockingRegs);
         }
 
index af211d6f194f36bd4303dbaa34941b0c00175698..23995336473b152ecfe20231295e73e7f5e8602c 100644 (file)
@@ -9,10 +9,12 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.List;
+import java.util.UUID;
 
 import com.vaadin.ui.ListSelect;
 import com.vaadin.ui.TextField;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItem;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
@@ -74,7 +76,7 @@ public interface ListView extends ApplicationView<ListPresenter>{
      */
     Mode getViewMode();
 
-    public RegistrationItem getRegistrationItem(int registrationId);
+    public RegistrationItem getRegistrationItem(UUID registrationUuid);
 
 
 }
index 8e4c3f71bc42e4e0b9765b7750d9995ee440e18d..290cb2b90487e8876c46eb43223b29d3f115fa40 100644 (file)
@@ -12,6 +12,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.security.core.GrantedAuthority;
 
@@ -31,6 +32,7 @@ import com.vaadin.ui.ListSelect;
 import com.vaadin.ui.Notification;
 import com.vaadin.ui.TextField;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
@@ -38,8 +40,8 @@ import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
 import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItem;
 import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEvent;
 import eu.etaxonomy.cdm.vaadin.event.UpdateResultsEvent;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.cdm.vaadin.view.AbstractPageView;
 
 /**
@@ -162,8 +164,8 @@ public class ListViewBean extends AbstractPageView<ListPresenter> implements Lis
             item.setWidth(100, Unit.PERCENTAGE);
             item.getBlockedByButton().addClickListener(e -> getViewEventBus().publish(
                     this,
-                    new ShowDetailsEvent<Registration, Integer>(
-                            e, Registration.class, regDto.getId(), "blockedBy"
+                    new ShowDetailsEvent<Registration, UUID>(
+                            e, Registration.class, regDto.getUuid(), "blockedBy"
                             )
                     ));
             listContainer.addComponent(item);
@@ -274,10 +276,11 @@ public class ListViewBean extends AbstractPageView<ListPresenter> implements Lis
         return viewMode;
     }
 
-    public RegistrationItem getRegistrationItem(int registrationId){
+    @Override
+    public RegistrationItem getRegistrationItem(UUID registrationUuid){
         for(Component c : listContainer){
             RegistrationItem item = (RegistrationItem)c;
-            if(registrationId == item.getRegistrationId()){
+            if(registrationUuid.equals(item.getRegistrationUuid())){
                 return item;
             }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java
deleted file mode 100644 (file)
index d714088..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.view.registration;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
-import org.joda.time.DateTime;
-
-import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.model.common.VersionableEntity;
-import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
-import eu.etaxonomy.cdm.model.name.Registration;
-import eu.etaxonomy.cdm.model.name.RegistrationStatus;
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
-import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.vaadin.model.EntityReference;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
-import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSet;
-
-public class RegistrationDTO{
-
-    private static final Logger logger = Logger.getLogger(RegistrationDTO.class);
-
-    private String summary = "";
-
-    private RegistrationType registrationType;
-
-    private Reference citation = null;
-
-    private String citationDetail = null;
-
-    private String submitterUserName = null;
-
-    private EntityReference name = null;
-
-    private TypeDesignationSetManager typeDesignationManager;
-
-    private Registration reg;
-
-    private List<String> messages = new ArrayList<>();
-
-    private Set<TypedEntityReference<Registration>> blockedBy;
-
-
-    /**
-     * @param reg
-     * @param typifiedName should be provided in for Registrations for TypeDesignations
-     * @throws RegistrationValidationException
-     */
-    public RegistrationDTO(Registration reg) {
-
-         this.reg = reg;
-
-         registrationType = RegistrationType.from(reg);
-
-         if(reg.getSubmitter() != null ){
-             submitterUserName = reg.getSubmitter().getUsername();
-         }
-
-        if(hasName(reg)){
-            citation = (Reference) reg.getName().getNomenclaturalReference();
-            citationDetail = reg.getName().getNomenclaturalMicroReference();
-            name = new EntityReference(reg.getName().getId(), reg.getName().getTitleCache());
-        }
-        if(hasTypifications(reg)){
-            if(!reg.getTypeDesignations().isEmpty()){
-                for(TypeDesignationBase td : reg.getTypeDesignations()){
-                    if(citation == null) {
-                        citation = td.getCitation();
-                        citationDetail = td.getCitationMicroReference();
-                    }
-                }
-            }
-        }
-        switch(registrationType) {
-        case EMPTY:
-            summary = "BLANK REGISTRATION";
-            break;
-        case NAME:
-            summary = reg.getName().getTitleCache();
-            break;
-        case NAME_AND_TYPIFICATION:
-        case TYPIFICATION:
-        default:
-            try {
-                typeDesignationManager = new TypeDesignationSetManager(reg.getTypeDesignations());
-                summary = typeDesignationManager.buildString().print();
-            } catch (RegistrationValidationException e) {
-                messages.add("Validation errors: " + e.getMessage());
-            }
-            break;
-        }
-
-        // trigger initialization of the reference
-        getNomenclaturalCitationString();
-
-    }
-
-    /**
-     * To create an initially empty DTO for which only the <code>typifiedName</code> and the <code>publication</code> are defined.
-     * All TypeDesignations added to the <code>Registration</code> need to refer to the same <code>typifiedName</code> and must be
-     * published in the same <code>publication</code>.
-     *
-     * @param reg
-     * @param typifiedName
-     */
-    public RegistrationDTO(Registration reg, TaxonName typifiedName, Reference publication) {
-        this.reg = reg;
-        citation = publication;
-        // create a TypeDesignationSetManager with only a reference to the typifiedName for validation
-        typeDesignationManager = new TypeDesignationSetManager(typifiedName);
-    }
-
-    /**
-     * @param reg
-     * @return
-     */
-    private boolean hasTypifications(Registration reg) {
-        return reg.getTypeDesignations() != null && reg.getTypeDesignations().size() > 0;
-    }
-
-    /**
-     * @param reg
-     * @return
-     */
-    private boolean hasName(Registration reg) {
-        return reg.getName() != null;
-    }
-
-
-    /**
-     * Provides access to the Registration entity this DTO has been build from.
-     * This method is purposely not a getter to hide the original Registration
-     * from generic processes which are exposing, binding bean properties.
-     *IReference
-     * @return
-     */
-    public Registration registration() {
-        return reg;
-    }
-
-
-    /**
-     * @return the summary
-     */
-    public String getSummary() {
-        return summary;
-    }
-
-    public String getSubmitterUserName(){
-        return submitterUserName;
-    }
-
-    /**
-     * @return the registrationType
-     */
-    public RegistrationType getRegistrationType() {
-        return registrationType;
-    }
-
-    /**
-     * @return the status
-     */
-    public RegistrationStatus getStatus() {
-        return reg.getStatus();
-    }
-
-    /**
-     * @return the identifier
-     */
-    public String getIdentifier() {
-        return reg.getIdentifier();
-    }
-
-
-    /**
-     * The entity ID of the Registration Item
-     * @return
-     */
-    public int getId() {
-        return reg.getId();
-    }
-
-
-    public UUID getUuid() {
-        return reg.getUuid();
-    }
-
-    /**
-     * @return the specificIdentifier
-     */
-    public String getSpecificIdentifier() {
-        return reg.getSpecificIdentifier();
-    }
-
-    /**
-     * @return the registrationDate
-     */
-    public DateTime getRegistrationDate() {
-        return reg.getRegistrationDate();
-    }
-
-    /**
-     * @return the registrationDate
-     */
-    public TimePeriod getDatePublished() {
-        return citation == null ? null : citation.getDatePublished();
-    }
-
-    /**
-     * @return the created
-     */
-    public DateTime getCreated() {
-        return reg.getCreated();
-    }
-
-    public Reference getCitation() {
-        return citation;
-    }
-
-    public void setCitation(Reference citation) throws Exception {
-        if(this.citation == null){
-            this.citation = citation;
-        } else {
-            throw new Exception("Can not set the citation on a non emtpy RegistrationDTO");
-        }
-    }
-
-    /**
-     * @return the citationID
-     */
-    public Integer getCitationID() {
-        return citation == null ? null : citation.getId();
-    }
-
-    public EntityReference getTypifiedNameRef() {
-        return typeDesignationManager != null ? typeDesignationManager.getTypifiedNameRef() : null;
-    }
-
-    public TaxonName getTypifiedName() {
-        return typeDesignationManager != null ? typeDesignationManager.getTypifiedName() : null;
-    }
-
-    public EntityReference getNameRef() {
-        return name;
-    }
-
-    public LinkedHashMap<TypedEntityReference, TypeDesignationWorkingSet> getOrderdTypeDesignationWorkingSets() {
-        return typeDesignationManager != null ? typeDesignationManager.getOrderdTypeDesignationWorkingSets() : null;
-    }
-
-    /**
-     * @param baseEntityReference
-     */
-    public TypeDesignationWorkingSet getTypeDesignationWorkingSet(TypedEntityReference baseEntityReference) {
-        return typeDesignationManager != null ? typeDesignationManager.getOrderdTypeDesignationWorkingSets().get(baseEntityReference) : null;
-
-    }
-
-    /**
-     * @param baseEntityReference
-     */
-    public Set<TypeDesignationBase> getTypeDesignationsInWorkingSet(TypedEntityReference baseEntityReference) {
-        Set<TypeDesignationBase> typeDesignations = new HashSet<>();
-        TypeDesignationWorkingSet workingSet = getTypeDesignationWorkingSet(baseEntityReference);
-        for(EntityReference ref :  workingSet.getTypeDesignations()){
-            typeDesignations.add(findTypeDesignation(ref));
-        }
-        return typeDesignations;
-    }
-
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> getSpecimenTypeDesignationWorkingSetDTO(TypedEntityReference baseEntityReference) {
-        Set<TypeDesignationBase> typeDesignations = getTypeDesignationsInWorkingSet(baseEntityReference);
-        List<SpecimenTypeDesignation> specimenTypeDesignations = new ArrayList<>(typeDesignations.size());
-        typeDesignations.forEach(td -> specimenTypeDesignations.add((SpecimenTypeDesignation)td));
-        VersionableEntity baseEntity = getTypeDesignationWorkingSet(baseEntityReference).getBaseEntity();
-
-        SpecimenTypeDesignationWorkingSetDTO<Registration> dto = new SpecimenTypeDesignationWorkingSetDTO<Registration>(reg,
-                baseEntity, specimenTypeDesignations, getCitation(), getTypifiedName());
-        return dto;
-    }
-
-    public NameTypeDesignation getNameTypeDesignation(TypedEntityReference baseEntityReference) {
-        Set<TypeDesignationBase> typeDesignations = getTypeDesignationsInWorkingSet(baseEntityReference);
-        if(typeDesignations.size() == 1){
-            TypeDesignationBase item = typeDesignations.iterator().next();
-            return (NameTypeDesignation)item ;
-        }
-        if(typeDesignations.size() == 0){
-            return null;
-        }
-        if(typeDesignations.size() > 1){
-            throw new RuntimeException("Workingsets of NameTypeDesignations must contain exactly one item.");
-        }
-        return null;
-    }
-
-    /**
-     * @param ref
-     * @return
-     */
-    private TypeDesignationBase findTypeDesignation(EntityReference ref) {
-        return typeDesignationManager != null ? typeDesignationManager.findTypeDesignation(ref) : null;
-    }
-
-    public Collection<TypeDesignationBase> getTypeDesignations() {
-        return typeDesignationManager != null ? typeDesignationManager.getTypeDesignations() : null;
-    }
-
-    /**
-     * @return the citationString
-     */
-    public String getNomenclaturalCitationString() {
-        if(citation == null){
-            return null;
-        }
-        if(INomenclaturalReference.class.isAssignableFrom(citation.getClass())){
-            return ((INomenclaturalReference)citation).getNomenclaturalCitation(citationDetail);
-        } else {
-            logger.error("The citation is not a NomenclaturalReference");
-            return citation.generateTitle();
-        }
-    }
-
-    /**
-     * @return the citationString
-     */
-    public String getBibliographicCitationString() {
-        if(citation == null){
-            return null;
-        } else {
-            if(StringUtils.isNotEmpty(citationDetail)){
-                // TODO see https://dev.e-taxonomy.eu/redmine/issues/6623
-                return citation.generateTitle().replaceAll("\\.$", "") + (StringUtils.isNotEmpty(citationDetail) ? ": " + citationDetail : "");
-            } else {
-                return citation.generateTitle();
-
-            }
-
-        }
-    }
-
-    public boolean isBlocked() {
-        return reg.getBlockedBy() != null && !reg.getBlockedBy().isEmpty();
-    }
-
-    /**
-     * @return the blockedBy
-     */
-    public Set<TypedEntityReference<Registration>> getBlockedBy() {
-
-        if(blockedBy == null){
-            blockedBy = new HashSet<>();
-            if(reg.getBlockedBy() != null){
-                for(Registration blockReg : reg.getBlockedBy()){
-                    blockedBy.add(new TypedEntityReference<Registration>(Registration.class, blockReg.getId(), blockReg.getIdentifier()));
-                }
-            }
-        }
-        return blockedBy;
-    }
-
-    /**
-     * @return
-     */
-    public List<String> getMessages() {
-        return messages;
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDetailsItem.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDetailsItem.java
new file mode 100644 (file)
index 0000000..8eda730
--- /dev/null
@@ -0,0 +1,29 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.view.registration;
+
+import com.vaadin.ui.CssLayout;
+
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemButtons;
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemNameAndTypeButtons;
+
+class RegistrationDetailsItem {
+
+    RegistrationItemNameAndTypeButtons registrationItemEditButtonGroup;
+    RegistrationItemButtons regItemButtons;
+    CssLayout itemFooter;
+
+    public RegistrationDetailsItem(RegistrationItemNameAndTypeButtons registrationItemEditButtonGroup, RegistrationItemButtons regItemButtons, CssLayout itemFooter){
+        this.registrationItemEditButtonGroup = registrationItemEditButtonGroup;
+        this.regItemButtons = regItemButtons;
+        this.itemFooter = itemFooter;
+    }
+
+
+}
\ No newline at end of file
index a2f7d0814d3fa7126d316292c3ae5124b1fd3df1..8ed0f4aa2f51ec6ba6cdfa618fa72c7ab599ebd8 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.context.annotation.Scope;
 
@@ -20,7 +21,7 @@ import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
 
 /**
@@ -46,7 +47,7 @@ public class RegistrationEditorPresenter extends AbstractCdmEditorPresenter<Regi
      * {@inheritDoc}
      */
     @Override
-    protected Registration loadCdmEntityById(Integer identifier) {
+    protected Registration loadCdmEntity(UUID identifier) {
 
         Registration reg;
         if(identifier != null){
@@ -62,7 +63,7 @@ public class RegistrationEditorPresenter extends AbstractCdmEditorPresenter<Regi
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(Registration.class, identifier, crud, null);
         }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java
new file mode 100644 (file)
index 0000000..47b6ea7
--- /dev/null
@@ -0,0 +1,204 @@
+/**
+* Copyright (C) 2017 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.cdm.vaadin.view.registration;
+
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.security.core.GrantedAuthority;
+
+import com.vaadin.server.FontAwesome;
+import com.vaadin.shared.ui.label.ContentMode;
+import com.vaadin.spring.annotation.SpringComponent;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.TextArea;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.themes.ValoTheme;
+
+import eu.etaxonomy.cdm.ext.registration.messages.Message;
+import eu.etaxonomy.cdm.vaadin.event.error.DelegatingErrorHandler;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.theme.EditValoTheme;
+import eu.etaxonomy.vaadin.mvp.AbstractPopupView;
+
+@SpringComponent
+@Scope("prototype")
+public class RegistrationMessagesPopup extends AbstractPopupView<RegistrationMessagesPresenter>
+    implements RegistrationMessagesView, AccessRestrictedView {
+
+    private static final long serialVersionUID = 713522519903334889L;
+
+    Panel messagesPanel;
+
+    TextArea newMessageField;
+
+    Button sendMessageButton;
+
+    private VerticalLayout mainLayout;
+
+    private DelegatingErrorHandler errrorHandler = new DelegatingErrorHandler();
+
+    public RegistrationMessagesPopup() {
+
+        mainLayout = new VerticalLayout();
+        // IMPORTANT: mainLayout must be set to full size otherwise the
+        // popup window may have problems with automatic resizing of its
+        // content.
+        mainLayout.setSizeFull();
+
+        setCompositionRoot(mainLayout);
+    }
+
+
+    @Override
+    protected void initContent() {
+
+        messagesPanel = new Panel();
+        messagesPanel.setStyleName(EditValoTheme.PANEL_CONTENT_PADDING_LEFT);
+
+        newMessageField = new TextArea();
+        newMessageField.setNullRepresentation("");
+        newMessageField.addTextChangeListener(e -> {
+            sendMessageButton.setEnabled(StringUtils.isNoneBlank(e.getText()));
+        });
+        newMessageField.setHeight("64px"); // height of the Submit button when ValoTheme.BUTTON_HUGE
+        newMessageField.setWidth("100%");
+
+        sendMessageButton = new Button(FontAwesome.SEND);
+        sendMessageButton.addClickListener(e -> postNewMessage());
+        sendMessageButton.setStyleName(ValoTheme.BUTTON_HUGE + " " +ValoTheme.BUTTON_PRIMARY);
+
+        HorizontalLayout sendMessagebar = new HorizontalLayout(newMessageField, sendMessageButton);
+        sendMessagebar.setComponentAlignment(sendMessageButton, Alignment.MIDDLE_RIGHT);
+        sendMessagebar.setExpandRatio(newMessageField, 1f);
+        sendMessagebar.setWidth("100%");
+
+        mainLayout.addComponents(messagesPanel, sendMessagebar);
+
+        mainLayout.setErrorHandler(errrorHandler);
+        mainLayout.setComponentAlignment(sendMessagebar, Alignment.BOTTOM_CENTER);
+    }
+
+
+    @Override
+    public int getWindowHeight() {
+        // undefined
+        return -1;
+    }
+
+    @Override
+    public boolean isClosable() {
+        return true;
+    }
+
+    @Override
+    public boolean isResizable() {
+        return true;
+    }
+
+    /**
+     * @return
+     */
+    private void postNewMessage() {
+        // quick and dirty implementation, better send an event
+        String text = newMessageField.getValue();
+        if(StringUtils.isNotBlank(text)){
+            getPresenter().postMessage(text);
+            newMessageField.setValue(null);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getWindowCaption() {
+        return "Messages";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void focusFirst() {
+        // none
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean allowAnonymousAccess() {
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Collection<Collection<GrantedAuthority>> allowedGrantedAuthorities() {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void cancel() {
+        // not needed
+
+    }
+
+    /**
+     * @param identifier
+     */
+    public void loadMessagesFor(UUID registrationEntityUuid) {
+        getPresenter().loadMessagesFor(registrationEntityUuid);
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void showMessages(String registrationLabel, List<Message> messages) {
+
+        VerticalLayout messagesList = new VerticalLayout();
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
+
+        for(Message message : messages){
+            Label item = new Label("<span class=\"date-time\">(" +  dateFormat.format(message.getCreatedOn()) + ")</span> <span class=\"user-name\">" + message.getFrom().getUsername() + "</span>: <span class=\"message-text\">"  + message.getText() + "</span>");
+            item.setStyleName("message-item");
+            item.setContentMode(ContentMode.HTML);
+            messagesList.addComponent(item);
+
+        }
+        messagesPanel.setCaption(registrationLabel);
+        messagesPanel.setContent(messagesList);
+
+    }
+
+    // TODO move into AbstractPopupView?
+    @Override
+    public DelegatingErrorHandler getErrrorHandler(){
+        return errrorHandler;
+    }
+
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java
new file mode 100644 (file)
index 0000000..3ef4bc1
--- /dev/null
@@ -0,0 +1,112 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.view.registration;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Stack;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+
+import com.vaadin.spring.annotation.SpringComponent;
+
+import eu.etaxonomy.cdm.api.service.IRegistrationService;
+import eu.etaxonomy.cdm.ext.common.ExternalServiceException;
+import eu.etaxonomy.cdm.ext.registration.messages.IRegistrationMessageService;
+import eu.etaxonomy.cdm.ext.registration.messages.Message;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.name.Registration;
+import eu.etaxonomy.cdm.vaadin.event.error.ExternalServiceExceptionHandler;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
+import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
+
+/**
+ * @author a.kohlbecker
+ * @since Feb 27, 2018
+ *
+ */
+@SpringComponent
+@Scope("prototype")
+public class RegistrationMessagesPresenter extends AbstractPresenter<RegistrationMessagesView> {
+
+    private static final long serialVersionUID = -1069755744585623770L;
+
+    @Autowired
+    IRegistrationMessageService messageService;
+
+    @Autowired
+    IRegistrationService registrationService;
+
+    Registration registration;
+
+    @Override
+    public void onPresenterReady() {
+        getView().getErrrorHandler().registerHandler(
+                new ExternalServiceExceptionHandler("The external messages service reported an error")
+                );
+    }
+
+    /**
+     * @param identifier
+     */
+    public void loadMessagesFor(UUID uuid) {
+        if(registration == null){
+            registration = registrationService.load(uuid, Arrays.asList("submitter"));
+        }
+        try {
+            List<Message> messages = messageService.listMessages(registration);
+            getView().showMessages("On Registration " + registration.getIdentifier(), messages);
+        } catch (ExternalServiceException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    /**
+     * @param value
+     */
+    public void postMessage(String message) {
+
+        User user = UserHelper.fromSession().user();
+        List<Message> activeMessages;
+        try {
+            activeMessages = messageService.listActiveMessagesFor(registration, user);
+        } catch (ExternalServiceException e) {
+            throw new RuntimeException(e);
+        }
+        User toUser = null;
+        if(UserHelper.fromSession().userIsRegistrationCurator()){
+            toUser = registration.getSubmitter();
+        } else {
+            Stack<Message> stack = new Stack<>();
+            stack.addAll(activeMessages);
+            while(!stack.empty()){
+                toUser = stack.pop().getFrom();
+                if(!toUser.equals(user)){
+                    break;
+                }
+            }
+            if(toUser == null){
+                throw new RuntimeException("Only a curator can initiate a communication");
+            }
+        }
+        try {
+            messageService.postMessage(registration, message, user, toUser);
+            loadMessagesFor(registration.getUuid());
+        } catch (ExternalServiceException e) {
+            logger.error(e);
+            throw new RuntimeException(e);
+        }
+
+
+    }
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesView.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesView.java
new file mode 100644 (file)
index 0000000..542510c
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.view.registration;
+
+import java.util.List;
+
+import eu.etaxonomy.cdm.ext.registration.messages.Message;
+import eu.etaxonomy.cdm.vaadin.event.error.DelegatingErrorHandler;
+import eu.etaxonomy.vaadin.mvp.ApplicationView;
+
+/**
+ * @author a.kohlbecker
+ * @since Feb 27, 2018
+ *
+ */
+public interface RegistrationMessagesView extends ApplicationView<RegistrationMessagesPresenter> {
+
+    /**
+     * @param messages
+     */
+    void showMessages(String registrationLabel, List<Message> messages);
+
+    DelegatingErrorHandler getErrrorHandler();
+
+}
index e050d4b8c015314e9b8af2f11cb62305a35ef360..1579726dc156f433e85d425a9f41fb4973c05c26 100644 (file)
@@ -23,7 +23,7 @@ import com.vaadin.ui.TextField;
 import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
 import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.util.converter.JodaDateTimeConverter;
 import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationType.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationType.java
deleted file mode 100644 (file)
index e246f62..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.view.registration;
-
-import eu.etaxonomy.cdm.model.name.Registration;
-
-/**
- * @author a.kohlbecker
- * @since Mar 3, 2017
- *
- */
-public enum RegistrationType {
-
-    /**
-     * A <code>Registration</code> for a new name
-     */
-    NAME,
-    /**
-     * A <code>Registration</code> for a new name and one or more according
-     * typifications.
-     */
-    NAME_AND_TYPIFICATION,
-    /**
-     * A <code>Registration</code> for one or more typifications for an
-     * previously published name.
-     */
-    TYPIFICATION,
-    /**
-     * A newly created <code>Registration</code> without any name and
-     * typification.
-     */
-    EMPTY;
-
-    /**
-     * @param reg
-     * @return
-     */
-    public static RegistrationType from(Registration reg) {
-
-        if (reg.getName() != null && reg.getTypeDesignations() != null && reg.getTypeDesignations().size() > 0) {
-            return NAME_AND_TYPIFICATION;
-        }
-        if (reg.getName() != null) {
-            return NAME;
-        }
-        if (reg.getTypeDesignations().size() > 0) {
-            return TYPIFICATION;
-        }
-        return EMPTY;
-    }
-
-    /**
-     * @return
-     */
-    public boolean isName() {
-        return NAME.equals(this);
-
-    }
-
-    /**
-     * @return
-     */
-    public boolean isTypification() {
-        return TYPIFICATION.equals(this);
-    }
-
-    /**
-     * @return
-     */
-    public boolean isNameAndTypification() {
-        return NAME_AND_TYPIFICATION.equals(this);
-    }
-
-    /**
-     * @return
-     */
-    public boolean isEnmpty() {
-        return EMPTY.equals(this);
-    }
-
-}
index e8f53f85524b8ac52f5845fcf2cf247cf1ebd3d0..55f8448b1bd1047caab9219c6be730681d39d11e 100644 (file)
@@ -13,6 +13,8 @@ import java.util.Locale;
 import com.vaadin.data.util.converter.Converter;
 import com.vaadin.server.FontAwesome;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationType;
+
 /**
  * @author a.kohlbecker
  * @since Mar 7, 2017
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationValidationException.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationValidationException.java
deleted file mode 100644 (file)
index 1c192ec..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
-* Copyright (C) 2017 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.cdm.vaadin.view.registration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author a.kohlbecker
- * @since Mar 23, 2017
- *
- */
-@SuppressWarnings("serial")
-public class RegistrationValidationException extends Exception {
-
-    List<String> problems = new ArrayList<>();
-
-    /**
-     * @param message
-     */
-    public RegistrationValidationException(String message, List<String> problems) {
-        super(message);
-        this.problems = problems;
-    }
-
-    @Override
-    public String getMessage() {
-        StringBuffer sb = new StringBuffer(super.getMessage()).append(" - Problems:");
-        problems.forEach(p -> sb.append("- ").append(p).append("\n"));
-        return sb.toString();
-    }
-
-    public List<String> getProblems() {
-        return problems;
-    }
-
-
-}
index 80e138fe73fcc63b4f9f8595c207cfb14ac575cd..b51664002f442b49a83c5d8d77f18119607d5d07 100644 (file)
@@ -23,8 +23,10 @@ import org.springframework.security.core.Authentication;
 import org.springframework.transaction.TransactionStatus;
 import org.vaadin.spring.events.annotation.EventBusListenerMethod;
 
+import com.vaadin.server.SystemError;
 import com.vaadin.spring.annotation.SpringComponent;
 import com.vaadin.spring.annotation.ViewScope;
+import com.vaadin.ui.Button;
 import com.vaadin.ui.Label;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
@@ -32,8 +34,15 @@ import com.vaadin.ui.Window;
 
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.IRegistrationService;
+import eu.etaxonomy.cdm.api.service.dto.EntityReference;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
+import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
 import eu.etaxonomy.cdm.api.service.idminter.IdentifierMinter.Identifier;
 import eu.etaxonomy.cdm.api.service.idminter.RegistrationIdentifierMinter;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSetType;
+import eu.etaxonomy.cdm.ext.common.ExternalServiceException;
+import eu.etaxonomy.cdm.ext.registration.messages.IRegistrationMessageService;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -48,6 +57,7 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
 import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
 import eu.etaxonomy.cdm.service.CdmStore;
 import eu.etaxonomy.cdm.service.IRegistrationWorkingSetService;
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItem;
 import eu.etaxonomy.cdm.vaadin.event.AbstractEditorAction.EditorActionContext;
 import eu.etaxonomy.cdm.vaadin.event.EditorActionTypeFilter;
 import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
@@ -58,17 +68,16 @@ import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEventEntityTypeFilter;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.TypeDesignationWorkingsetEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.registration.RegistrationWorkingsetAction;
-import eu.etaxonomy.cdm.vaadin.model.EntityReference;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
+import eu.etaxonomy.cdm.vaadin.theme.EditValoTheme;
 import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
 import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSetType;
 import eu.etaxonomy.cdm.vaadin.view.name.NameTypeDesignationPopupEditor;
 import eu.etaxonomy.cdm.vaadin.view.name.SpecimenTypeDesignationWorkingsetPopupEditor;
 import eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor;
 import eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditorMode;
+import eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditorView;
 import eu.etaxonomy.cdm.vaadin.view.name.TypeDesignationWorkingsetEditorIdSet;
 import eu.etaxonomy.cdm.vaadin.view.reference.ReferencePopupEditor;
 import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
@@ -87,6 +96,18 @@ import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
 @ViewScope
 public class RegistrationWorkingsetPresenter extends AbstractPresenter<RegistrationWorkingsetView> {
 
+    /**
+     *
+     */
+    private static final List<String> REGISTRATION_INIT_STRATEGY = Arrays.asList(
+            "$",
+            "blockedBy",
+            "name.combinationAuthorship",
+            "name.exCombinationAuthorship",
+            "name.basionymAuthorship",
+            "name.exBasionymAuthorship"
+            );
+
     private static final long serialVersionUID = 1L;
 
     @Autowired
@@ -95,6 +116,9 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
     @Autowired
     private RegistrationIdentifierMinter minter;
 
+    @Autowired
+    private IRegistrationMessageService messageService;
+
     /**
      * @return the regWorkingSetService
      */
@@ -140,7 +164,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
      * @param taxonNameId
      * @return
      */
-    protected Registration createNewRegistrationForName(Integer taxonNameId) {
+    protected Registration createNewRegistrationForName(UUID taxonNameUuid) {
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         // move into RegistrationWorkflowStateMachine
         TransactionStatus txStatus = getRepo().startTransaction();
@@ -152,15 +176,15 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         Registration reg = Registration.NewInstance(
                 identifiers.getIdentifier(),
                 identifiers.getLocalId(),
-                taxonNameId != null ? getRepo().getNameService().find(taxonNameId) : null,
+                taxonNameUuid != null ? getRepo().getNameService().find(taxonNameUuid) : null,
                 null);
         Authentication authentication = currentSecurityContext().getAuthentication();
         reg.setSubmitter((User)authentication.getPrincipal());
         EntityChangeEvent event = getRegistrationStore().saveBean(reg, (AbstractView) getView());
-        UserHelper.fromSession().createAuthorityForCurrentUser(Registration.class, event.getEntityId(), Operation.UPDATE, RegistrationStatus.PREPARATION.name());
+        UserHelper.fromSession().createAuthorityForCurrentUser(Registration.class, event.getEntityUuid(), Operation.UPDATE, RegistrationStatus.PREPARATION.name());
         getRepo().commitTransaction(txStatus);
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        return getRepo().getRegistrationService().find(event.getEntityId());
+        return getRepo().getRegistrationService().load(event.getEntityUuid(), Arrays.asList(new String []{"blockedBy"}));
     }
 
 
@@ -173,7 +197,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return; // nothing to do
         }
         if(doReload){
-            loadWorkingSet(workingset.getCitationId());
+            loadWorkingSet(workingset.getCitationUuid());
         }
         getView().setWorkingset(workingset);
     }
@@ -187,23 +211,60 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
 
         super.handleViewEntered();
 
-        loadWorkingSet(getView().getCitationID());
+        loadWorkingSet(getView().getCitationUuid());
         getView().setWorkingset(workingset);
 
+        // PagingProviders and CacheGenerator for the existingNameCombobox
         CdmFilterablePagingProvider<TaxonName, TaxonName> pagingProvider = new CdmFilterablePagingProvider<TaxonName, TaxonName>(
                 getRepo().getNameService());
-        CdmTitleCacheCaptionGenerator<TaxonName> titleCacheGenrator = new CdmTitleCacheCaptionGenerator<TaxonName>();
-        getView().getAddExistingNameCombobox().setCaptionGenerator(titleCacheGenrator);
+        CdmTitleCacheCaptionGenerator<TaxonName> titleCacheGenerator = new CdmTitleCacheCaptionGenerator<TaxonName>();
+        getView().getAddExistingNameCombobox().setCaptionGenerator(titleCacheGenerator);
         getView().getAddExistingNameCombobox().loadFrom(pagingProvider, pagingProvider, pagingProvider.getPageSize());
+
+        // update the messages
+        User user = UserHelper.fromSession().user();
+        for (UUID registrationUuid : getView().getRegistrationItemMap().keySet()) {
+            Button messageButton = getView().getRegistrationItemMap().get(registrationUuid).regItemButtons.getMessagesButton();
+
+            RegistrationDTO regDto = workingset.getRegistrationDTO(registrationUuid).get();
+            try {
+                int messageCount = messageService.countActiveMessagesFor(regDto.registration(), user);
+
+                boolean activeMessages = messageCount > 0;
+                boolean currentUserIsSubmitter = regDto.getSubmitterUserName() != null && regDto.getSubmitterUserName().equals(UserHelper.fromSession().userName());
+                boolean currentUserIsCurator = UserHelper.fromSession().userIsRegistrationCurator();
+                messageButton.setEnabled(false);
+                if(currentUserIsCurator){
+                    if(currentUserIsSubmitter){
+                        messageButton.setDescription("No point sending messages to your self.");
+                    } else {
+                        messageButton.setEnabled(true);
+                        messageButton.setDescription("Open the messages dialog.");
+                    }
+                } else {
+                    messageButton.setDescription("Sorry, only a curator can start a conversation.");
+                }
+                if(activeMessages){
+                    messageButton.setEnabled(true);
+                    messageButton.addStyleName(EditValoTheme.BUTTON_HIGHLITE);
+                    String who = currentUserIsSubmitter ? "curator" : "submitter";
+                    messageButton.setDescription("The " + who + " is looking forward to your reply.");
+
+                }
+            } catch (ExternalServiceException e) {
+                messageButton.setComponentError(new SystemError(e.getMessage(), e));
+            }
+        }
+
     }
 
 
     /**
      * @param referenceID
      */
-    protected void loadWorkingSet(Integer referenceID) {
+    protected void loadWorkingSet(UUID referenceUuid) {
         try {
-            workingset = getWorkingSetService().loadWorkingSetByReferenceID(referenceID);
+            workingset = getWorkingSetService().loadWorkingSetByReferenceUuid(referenceUuid);
         } catch (RegistrationValidationException error) {
             logger.error(error);
             Window errorDialog = new Window("Validation Error");
@@ -214,8 +275,8 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             subContent.addComponent(new Label(error.getMessage()));
             UI.getCurrent().addWindow(errorDialog);
         }
-        if(workingset == null || workingset.getCitationId() == null){
-            Reference citation = getRepo().getReferenceService().find(referenceID);
+        if(workingset == null || workingset.getCitationUuid() == null){
+            Reference citation = getRepo().getReferenceService().find(referenceUuid);
             workingset = new RegistrationWorkingSet(citation);
         }
     }
@@ -228,7 +289,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return;
         }
 
-        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
         popup.withReferenceTypes(RegistrationUIDefaults.PRINTPUB_REFERENCE_TYPES);
         popup.loadInEditor(null);
     }
@@ -239,10 +300,10 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         if(!checkFromOwnView(event)){
             return;
         }
-        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
         popup.withReferenceTypes(RegistrationUIDefaults.PRINTPUB_REFERENCE_TYPES);
         popup.withDeleteButton(true);
-        popup.loadInEditor(event.getEntityId());
+        popup.loadInEditor(event.getEntityUuid());
     }
 
     @EventBusListenerMethod
@@ -270,8 +331,8 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return;
         }
 
-        RegistrationPopupEditor popup = getNavigationManager().showInPopup(RegistrationPopupEditor.class, getView());
-        popup.loadInEditor(event.getEntityId());
+        RegistrationPopupEditor popup = getNavigationManager().showInPopup(RegistrationPopupEditor.class, getView(), null);
+        popup.loadInEditor(event.getEntityUuid());
     }
 
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Edit.class)
@@ -281,13 +342,14 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return;
         }
 
-        TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
+        TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView(), null);
         popup.setParentEditorActionContext(event.getContext());
         popup.withDeleteButton(true);
         configureTaxonNameEditor(popup);
-        popup.loadInEditor(event.getEntityId());
-        if(event.getSourceComponent() != null){
-            popup.setReadOnly(event.getSourceComponent().isReadOnly());
+        popup.loadInEditor(event.getEntityUuid());
+        if(event.hasSource() && event.getSource().isReadOnly()){
+            // avoid resetting readonly to false
+            popup.setReadOnly(true);
         }
 
     }
@@ -301,15 +363,15 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         }
 
         newTaxonNameForRegistration = TaxonNameFactory.NewNameInstance(RegistrationUIDefaults.NOMENCLATURAL_CODE, Rank.SPECIES());
-        newTaxonNameForRegistration.setNomenclaturalReference(getRepo().getReferenceService().find(workingset.getCitationId()));
+        newTaxonNameForRegistration.setNomenclaturalReference(getRepo().getReferenceService().find(workingset.getCitationUuid()));
         EntityChangeEvent nameSaveEvent = getTaxonNameStore().saveBean(newTaxonNameForRegistration, (AbstractView) getView());
-        newTaxonNameForRegistration = getRepo().getNameService().find(nameSaveEvent.getEntityId());
-        TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
+        newTaxonNameForRegistration = getRepo().getNameService().find(nameSaveEvent.getEntityUuid());
+        TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView(), null);
         popup.setParentEditorActionContext(event.getContext());
         popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE,CRUD.DELETE));
         popup.withDeleteButton(true);
         configureTaxonNameEditor(popup);
-        popup.loadInEditor(newTaxonNameForRegistration.getId());
+        popup.loadInEditor(newTaxonNameForRegistration.getUuid());
     }
 
     /**
@@ -319,10 +381,10 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
      *
      * @param popup
      */
-    protected void configureTaxonNameEditor(TaxonNamePopupEditor popup) {
-        popup.enableMode(TaxonNamePopupEditorMode.suppressReplacementAuthorshipData);
-        popup.enableMode(TaxonNamePopupEditorMode.nomenclaturalReferenceSectionEditingOnly);
-        popup.enableMode(TaxonNamePopupEditorMode.requireNomenclaturalReference);
+    protected void configureTaxonNameEditor(TaxonNamePopupEditorView popup) {
+        popup.enableMode(TaxonNamePopupEditorMode.AUTOFILL_AUTHORSHIP_DATA);
+        popup.enableMode(TaxonNamePopupEditorMode.NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY);
+        // popup.enableMode(TaxonNamePopupEditorMode.REQUIRE_NOMENCLATURALREFERENCE);
     }
 
     /**
@@ -342,11 +404,11 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             TransactionStatus txStatus = getRepo().startTransaction();
             if(event.getReason().equals(Reason.SAVE)){
                 if(newTaxonNameForRegistration != null){
-                    int taxonNameId = newTaxonNameForRegistration.getId();
+                    UUID taxonNameUuid = newTaxonNameForRegistration.getUuid();
                     getRepo().getSession().refresh(newTaxonNameForRegistration);
-                    Registration reg = createNewRegistrationForName(taxonNameId);
+                    Registration reg = createNewRegistrationForName(taxonNameUuid);
                     // reload workingset into current session
-                    loadWorkingSet(workingset.getCitationId());
+                    loadWorkingSet(workingset.getCitationUuid());
                     workingset.add(reg);
                 }
                 refreshView(true);
@@ -379,7 +441,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         TaxonName typifiedName = getView().getAddExistingNameCombobox().getValue();
         if(typifiedName != null){
             Registration newRegistrationWithExistingName = createNewRegistrationForName(null);
-            Reference citation = getRepo().getReferenceService().find(workingset.getCitationId());
+            Reference citation = getRepo().getReferenceService().find(workingset.getCitationUuid());
             newRegistrationDTOWithExistingName = new RegistrationDTO(newRegistrationWithExistingName, typifiedName, citation);
             workingset.add(newRegistrationDTOWithExistingName);
             // tell the view to update the workingset
@@ -401,84 +463,80 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         }
 
         if(event.getWorkingSetType() == TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET ){
-            SpecimenTypeDesignationWorkingsetPopupEditor popup = getNavigationManager().showInPopup(SpecimenTypeDesignationWorkingsetPopupEditor.class, getView());
+            SpecimenTypeDesignationWorkingsetPopupEditor popup = getNavigationManager().showInPopup(SpecimenTypeDesignationWorkingsetPopupEditor.class, getView(), null);
             popup.setParentEditorActionContext(event.getContext());
             popup.withDeleteButton(true);
-            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationId(), event.getBaseEntityRef()));
-            if(event.getSourceComponent() != null){
-                // propagate readonly state from source component to popup
-                popup.setReadOnly(event.getSourceComponent().isReadOnly());
+            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationUuid(), event.getBaseEntityRef()));
+            if(event.hasSource()){
+                // propagate readonly state from source button to popup
+                popup.setReadOnly(event.getSource().isReadOnly());
             }
         } else {
-            NameTypeDesignationPopupEditor popup = getNavigationManager().showInPopup(NameTypeDesignationPopupEditor.class, getView());
+            NameTypeDesignationPopupEditor popup = getNavigationManager().showInPopup(NameTypeDesignationPopupEditor.class, getView(), null);
             popup.setParentEditorActionContext(event.getContext());
             popup.withDeleteButton(true);
-            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationId(), event.getBaseEntityRef()));
+            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationUuid(), event.getBaseEntityRef()));
 
             popup.getCitationCombobox().setEnabled(false);
             popup.getTypifiedNamesComboboxSelect().setEnabled(false);
 
-            if(event.getSourceComponent() != null){
-                // propagate readonly state from source component to popup
-                popup.setReadOnly(event.getSourceComponent().isReadOnly());
+            if(event.hasSource()){
+                // propagate readonly state from source button to popup
+                popup.setReadOnly(event.getSource().isReadOnly());
             }
-            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationId()).get();
+            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationUuid()).get();
         }
     }
 
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
     public void onTypeDesignationWorkingsetAdd(TypeDesignationWorkingsetEditorAction event) {
 
-        if(event.getSourceComponent() != null){
+        if(!event.hasSource()){
             return;
         }
 
         if(event.getWorkingSetType() == TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET){
-            SpecimenTypeDesignationWorkingsetPopupEditor popup = getNavigationManager().showInPopup(SpecimenTypeDesignationWorkingsetPopupEditor.class, getView());
+            SpecimenTypeDesignationWorkingsetPopupEditor popup = getNavigationManager().showInPopup(SpecimenTypeDesignationWorkingsetPopupEditor.class, getView(), null);
             popup.setParentEditorActionContext(event.getContext());
             TypeDesignationWorkingsetEditorIdSet identifierSet;
-            Integer typifiedNameId;
+            UUID typifiedNameUuid;
             if(newRegistrationDTOWithExistingName != null){
-                typifiedNameId = newRegistrationDTOWithExistingName.getTypifiedNameRef().getId();
+                typifiedNameUuid = newRegistrationDTOWithExistingName.getTypifiedNameRef().getUuid();
             } else {
-                RegistrationDTO registrationDTO = workingset.getRegistrationDTO(event.getRegistrationId()).get();
+                RegistrationDTO registrationDTO = workingset.getRegistrationDTO(event.getRegistrationUuid()).get();
                 EntityReference typifiedNameRef = registrationDTO.getTypifiedNameRef();
                 if(typifiedNameRef != null){
                     // case for registrations without name, in which case the typifiedName is only defined via the typedesignations
-                    typifiedNameId = typifiedNameRef.getId();
+                    typifiedNameUuid = typifiedNameRef.getUuid();
                 } else {
                     // case of registrations with a name in the nomenclatural act.
-                    typifiedNameId = registrationDTO.getNameRef().getId();
+                    typifiedNameUuid = registrationDTO.getNameRef().getUuid();
                 }
             }
             identifierSet = new TypeDesignationWorkingsetEditorIdSet(
-                    event.getRegistrationId(),
-                    getView().getCitationID(),
-                    typifiedNameId
+                    event.getRegistrationUuid(),
+                    getView().getCitationUuid(),
+                    typifiedNameUuid
                     );
             popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
             popup.loadInEditor(identifierSet);
             popup.withDeleteButton(true);
-            if(event.getSourceComponent() != null){
+            if(event.hasSource()){
                 // propagate readonly state from source component to popup
-                popup.setReadOnly(event.getSourceComponent().isReadOnly());
+                popup.setReadOnly(event.getSource().isReadOnly());
             }
         } else {
-            NameTypeDesignationPopupEditor popup = getNavigationManager().showInPopup(NameTypeDesignationPopupEditor.class, getView());
+            NameTypeDesignationPopupEditor popup = getNavigationManager().showInPopup(NameTypeDesignationPopupEditor.class, getView(), null);
             popup.setParentEditorActionContext(event.getContext());
             popup.withDeleteButton(true);
             popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
-            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationId()).get();
-
+            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationUuid()).get();
             popup.setBeanInstantiator(new BeanInstantiator<NameTypeDesignation>() {
 
                 @Override
                 public NameTypeDesignation createNewBean() {
-                    TaxonName typifiedName = newNameTypeDesignationTarget.getTypifiedName();
-                    if(typifiedName == null){
-                        // this will be the first type designation, so the nomenclatural act must contain a name
-                        typifiedName = newNameTypeDesignationTarget.registration().getName();
-                    }
+
+                    TaxonName typifiedName = getRepo().getNameService().load(event.getTypifiedNameUuid(), Arrays.asList(new String[]{"typeDesignations", "homotypicalGroup"}));
                     NameTypeDesignation nameTypeDesignation  = NameTypeDesignation.NewInstance();
                     nameTypeDesignation.setCitation(newNameTypeDesignationTarget.getCitation());
                     nameTypeDesignation.getTypifiedNames().add(typifiedName);
@@ -488,9 +546,9 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             popup.loadInEditor(null);
             popup.getCitationCombobox().setEnabled(false);
             popup.getTypifiedNamesComboboxSelect().setEnabled(false);
-            if(event.getSourceComponent() != null){
+            if(event.hasSource()){
                 // propagate readonly state from source component to popup
-                popup.setReadOnly(event.getSourceComponent().isReadOnly());
+                popup.setReadOnly(event.getSource().isReadOnly());
             }
         }
     }
@@ -543,24 +601,14 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
 
 
     @EventBusListenerMethod(filter = ShowDetailsEventEntityTypeFilter.RegistrationWorkingSet.class)
-    public void onShowRegistrationWorkingSetMessages(ShowDetailsEvent<?,?> event) {
-        List<String> messages = new ArrayList<>();
-        for(RegistrationDTO dto : workingset.getRegistrationDTOs()){
-            dto.getMessages().forEach(m -> messages.add(dto.getSummary() + ": " + m));
-        }
-        if(event.getProperty().equals("messages")){
-            getView().openDetailsPopup("Messages", messages);
-        }
-    }
-
+    public void onShowDetailsEventForRegistrationWorkingSet(ShowDetailsEvent<RegistrationWorkingSet,?> event) {
 
-    @EventBusListenerMethod(filter = ShowDetailsEventEntityTypeFilter.RegistrationDTO.class)
-    public void onShowRegistrationMessages(ShowDetailsEvent<?,?> event) {
-        RegistrationDTO regDto = regWorkingSetService.loadDtoById((Integer)event.getIdentifier());
-        if(event.getProperty().equals("messages")){
-            if(getView() != null){
-                getView().openDetailsPopup("Messages", regDto.getMessages());
+        if(event.getProperty().equals(RegistrationItem.VALIDATION_PROBLEMS)){
+            List<String> messages = new ArrayList<>();
+            for(RegistrationDTO dto : workingset.getRegistrationDTOs()){
+                dto.getValidationProblems().forEach(m -> messages.add(dto.getSummary() + ": " + m));
             }
+            getView().openDetailsPopup("Validation Problems", messages);
         }
     }
 
@@ -570,12 +618,12 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return;
         }
         if(Reference.class.isAssignableFrom(event.getEntityType())){
-            if(workingset.getCitationId().equals(event.getEntityId())){
+            if(workingset.getCitationUuid().equals(event.getEntityUuid())){
                 refreshView(true);
             }
         } else
         if(Registration.class.isAssignableFrom(event.getEntityType())){
-            if(workingset.getRegistrations().stream().anyMatch(reg -> reg.getId() == event.getEntityId())){
+            if(workingset.getRegistrations().stream().anyMatch(reg -> reg.getUuid() == event.getEntityUuid())){
                 refreshView(true);
             }
         } else
@@ -585,9 +633,9 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
                 Stack<EditorActionContext>context = ((AbstractPopupEditor)event.getSourceView()).getEditorActionContext();
                 EditorActionContext rootContext = context.get(0);
                 if(rootContext.getParentView().equals(getView())){
-                    Registration blockingRegistration = createNewRegistrationForName(event.getEntityId());
+                    Registration blockingRegistration = createNewRegistrationForName(event.getEntityUuid());
                     TypedEntityReference<Registration> regReference = (TypedEntityReference<Registration>)rootContext.getParentEntity();
-                    Registration registration = getRepo().getRegistrationService().load(regReference.getId(), Arrays.asList("$", "blockedBy"));
+                    Registration registration = getRepo().getRegistrationService().load(regReference.getUuid(), REGISTRATION_INIT_STRATEGY);
                     registration.getBlockedBy().add(blockingRegistration);
                     getRepo().getRegistrationService().saveOrUpdate(registration);
                     logger.debug("Blocking registration created");
@@ -597,14 +645,14 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             }
             if(workingset.getRegistrationDTOs().stream().anyMatch(reg ->
                 reg.getTypifiedNameRef() != null
-                && reg.getTypifiedNameRef().getId() == event.getEntityId())){
+                && reg.getTypifiedNameRef().getUuid().equals(event.getEntityUuid()))){
                     refreshView(true);
             }
         } else
         if(TypeDesignationBase.class.isAssignableFrom(event.getEntityType())){
             if(workingset.getRegistrationDTOs().stream().anyMatch(
                     reg -> reg.getTypeDesignations() != null && reg.getTypeDesignations().stream().anyMatch(
-                            td -> td.getId() == event.getEntityId()
+                            td -> td.getUuid() == event.getEntityUuid()
                             )
                         )
                     ){
@@ -613,23 +661,32 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         }
     }
 
-    @EventBusListenerMethod
-    public void onShowDetailsEvent(ShowDetailsEvent<RegistrationDTO, Integer> event) {
+
+    @EventBusListenerMethod(filter = ShowDetailsEventEntityTypeFilter.RegistrationDTO.class)
+    public void onShowDetailsEventForRegistrationDTO(ShowDetailsEvent<RegistrationDTO, UUID> event) {
 
         // FIXME check from own view!!!
         if(getView() == null){
             return;
         }
 
-        Integer registrationId = event.getIdentifier();
+        UUID registrationUuid = event.getIdentifier();
 
-        RegistrationDTO regDto = getWorkingSetService().loadDtoById(registrationId);
-        if(event.getProperty().equals("blockedBy")){
+        RegistrationDTO regDto = getWorkingSetService().loadDtoByUuid(registrationUuid);
+        if(event.getProperty().equals(RegistrationItem.BLOCKED_BY)){
 
-            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationId);
-            getView().setBlockingRegistrations(registrationId, blockingRegs);
+            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationUuid);
+            getView().setBlockingRegistrations(registrationUuid, blockingRegs);
+        } else if(event.getProperty().equals(RegistrationItem.MESSAGES)){
+
+            RegistrationMessagesPopup popup = getNavigationManager().showInPopup(RegistrationMessagesPopup.class, getView(), null);
+            popup.loadMessagesFor(regDto.getUuid());
+
+        } else if(event.getProperty().equals(RegistrationItem.VALIDATION_PROBLEMS)){
+            getView().openDetailsPopup("Validation Problems", regDto.getValidationProblems());
         }
 
+
     }
 
 }
index fbcf96b7471abab294de39c1ba1c1a9e271d593d..082b7d10496bf6c27540562b5fa0c50edfe92dcb 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
@@ -16,6 +17,7 @@ import org.vaadin.viritin.fields.LazyComboBox;
 
 import com.vaadin.ui.Button;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
@@ -79,26 +81,30 @@ public interface RegistrationWorkingsetView extends ApplicationView{
 
     public LazyComboBox<TaxonName> getAddExistingNameCombobox();
 
-    Integer getCitationID();
-
+    /**
+     * @return
+     */
+    UUID getCitationUuid();
 
     /**
      * selecting a type will cause a {@link TypeDesignationWorkingsetEditorAction} to be emitted.
      * On Cancel .. TODO
-     * @param registrationEntityId
+     * @param registrationEntityUuid
      */
-    void chooseNewTypeRegistrationWorkingset(Integer registrationEntityId);
+    void chooseNewTypeRegistrationWorkingset(UUID registrationEntityUuid);
 
     /**
      * @param registrationId
      * @param blockingRegDTOs
      */
-    void setBlockingRegistrations(int registrationId, Set<RegistrationDTO> blockingRegDTOs);
-
-
-
-
+    void setBlockingRegistrations(UUID registrationUuid, Set<RegistrationDTO> blockingRegDTOs);
 
+    /**
+     * Returns the registrationItemMap as unmodifiableMap.
+     *
+     * @return
+     */
+    Map<UUID, RegistrationDetailsItem> getRegistrationItemMap();
 
 
 }
index ec405bca3d1b77ae30c4bb7c16d3ab0609254561..51b9285c7d5abac3703bc0dae4de512ecf418d31 100644 (file)
@@ -8,8 +8,11 @@
 */
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
+import static eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStyles.LABEL_NOWRAP;
+
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -26,6 +29,7 @@ import com.vaadin.navigator.View;
 import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
 import com.vaadin.server.FontAwesome;
 import com.vaadin.server.Page;
+import com.vaadin.shared.ui.label.ContentMode;
 import com.vaadin.spring.annotation.SpringView;
 import com.vaadin.ui.Alignment;
 import com.vaadin.ui.Button;
@@ -40,13 +44,19 @@ import com.vaadin.ui.VerticalLayout;
 import com.vaadin.ui.Window;
 import com.vaadin.ui.themes.ValoTheme;
 
+import eu.etaxonomy.cdm.api.service.dto.EntityReference;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationType;
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSetType;
 import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.RegistrationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItem;
-import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemEditButtonGroup;
-import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemEditButtonGroup.TypeDesignationWorkingSetButton;
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemButtons;
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemNameAndTypeButtons;
+import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemNameAndTypeButtons.TypeDesignationWorkingSetButton;
 import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationItemsPanel;
 import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStateLabel;
 import eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStyles;
@@ -56,12 +66,11 @@ import eu.etaxonomy.cdm.vaadin.event.ShowDetailsEvent;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.TypeDesignationWorkingsetEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.registration.RegistrationWorkingsetAction;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
-import eu.etaxonomy.cdm.vaadin.security.PermissionDebugUtils;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSetType;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.PermissionDebugUtils;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
+import eu.etaxonomy.cdm.vaadin.theme.EditValoTheme;
 import eu.etaxonomy.cdm.vaadin.view.AbstractPageView;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 
@@ -74,19 +83,6 @@ import eu.etaxonomy.vaadin.event.EditorActionType;
 public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWorkingsetPresenter>
     implements RegistrationWorkingsetView, View, AccessRestrictedView {
 
-    private class RegistrationDetailsItem {
-
-        RegistrationItemEditButtonGroup registrationItemEditButtonGroup;
-        CssLayout itemFooter;
-
-        public RegistrationDetailsItem(RegistrationItemEditButtonGroup registrationItemEditButtonGroup, CssLayout itemFooter){
-            this.registrationItemEditButtonGroup = registrationItemEditButtonGroup;
-            this.itemFooter = itemFooter;
-        }
-
-
-    }
-
     /**
      *
      */
@@ -115,7 +111,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     private String headerText = "Registration Workingset Editor";
     private String subheaderText = "";
 
-    private Integer citationID;
+    private UUID citationUuid;
 
     private Button addNewNameRegistrationButton;
 
@@ -129,7 +125,15 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
 
     private Panel registrationListPanel;
 
-    private Map<Integer, RegistrationDetailsItem> registrationItemMap = new HashMap<>();
+    /**
+     * uses the registrationId as key
+     */
+    private Map<UUID, RegistrationDetailsItem> registrationItemMap = new HashMap<>();
+
+    /**
+     * uses the registrationId as key
+     */
+    private Map<UUID, EntityReference> typifiedNamesMap = new HashMap<>();
 
     public RegistrationWorksetViewBean() {
         super();
@@ -153,7 +157,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     @Override
     public void enter(ViewChangeEvent event) {
         if(event.getParameters() != null){
-            this.citationID = Integer.valueOf(event.getParameters());
+            this.citationUuid = UUID.fromString(event.getParameters());
 
             getPresenter().handleViewEntered();
         }
@@ -170,9 +174,6 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
             getLayout().removeComponent(registrationListPanel);
         }
         workingsetHeader = new RegistrationItem(workingset, this);
-        if(UserHelper.fromSession().userIsRegistrationCurator() || UserHelper.fromSession().userIsAdmin()){
-            workingsetHeader.getSubmitterLabel().setVisible(true);
-        }
         addContentComponent(workingsetHeader, null);
 
         registrationListPanel = createRegistrationsList(workingset);
@@ -184,9 +185,9 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     }
 
     @Override
-    public void setBlockingRegistrations(int registrationId, Set<RegistrationDTO> blockingRegDTOs) {
+    public void setBlockingRegistrations(UUID registrationUuid, Set<RegistrationDTO> blockingRegDTOs) {
 
-        RegistrationDetailsItem regItem = registrationItemMap.get(registrationId);
+        RegistrationDetailsItem regItem = registrationItemMap.get(registrationUuid);
 
         boolean blockingRegAdded = false;
         for(Iterator it = regItem.itemFooter.iterator(); it.hasNext(); ){
@@ -240,13 +241,13 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         addNewNameRegistrationButton = new Button("new name");
         addNewNameRegistrationButton.setDescription("A name which is newly published in this publication.");
         addNewNameRegistrationButton.addClickListener(
-                e -> getViewEventBus().publish(this, new TaxonNameEditorAction(EditorActionType.ADD, null, addNewNameRegistrationButton, this)));
+                e -> getViewEventBus().publish(this, new TaxonNameEditorAction(EditorActionType.ADD, null, addNewNameRegistrationButton, null, this)));
 
         addExistingNameButton = new Button("existing name:");
         addExistingNameButton.setDescription("A name which was previously published in a earlier publication.");
         addExistingNameButton.setEnabled(false);
         addExistingNameButton.addClickListener(
-                e -> getViewEventBus().publish(this, new RegistrationWorkingsetAction(citationID, RegistrationWorkingsetAction.Action.start))
+                e -> getViewEventBus().publish(this, new RegistrationWorkingsetAction(citationUuid, RegistrationWorkingsetAction.Action.start))
                 );
 
         existingNameCombobox = new LazyComboBox<TaxonName>(TaxonName.class);
@@ -265,6 +266,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         registrationsGrid.setComponentAlignment(buttonContainer, Alignment.MIDDLE_RIGHT);
 
         Panel namesTypesPanel = new Panel(registrationsGrid);
+        namesTypesPanel.setStyleName(EditValoTheme.PANEL_CONTENT_PADDING_LEFT);
         return namesTypesPanel;
     }
 
@@ -272,26 +274,38 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
 
     protected int putRegistrationListComponent(int row, RegistrationDTO dto) {
 
-        RegistrationItemEditButtonGroup regItemButtonGroup = new RegistrationItemEditButtonGroup(dto);
-        Integer registrationEntityID = dto.getId();
+        EntityReference typifiedNameReference = dto.getTypifiedNameRef();
+        if(typifiedNameReference == null){
+            typifiedNameReference = dto.getNameRef();
+        }
+        typifiedNamesMap.put(dto.getUuid(), typifiedNameReference);
+
+        RegistrationItemNameAndTypeButtons regItemButtonGroup = new RegistrationItemNameAndTypeButtons(dto);
+        UUID registrationEntityUuid = dto.getUuid();
+
+        RegistrationItemButtons regItemButtons = new RegistrationItemButtons();
+
         CssLayout footer = new CssLayout();
         footer.setWidth(100, Unit.PERCENTAGE);
         footer.setStyleName("item-footer");
-        RegistrationDetailsItem regDetailsItem = new RegistrationDetailsItem(regItemButtonGroup, footer);
-        registrationItemMap.put(registrationEntityID, regDetailsItem);
+
+        RegistrationDetailsItem regDetailsItem = new RegistrationDetailsItem(regItemButtonGroup, regItemButtons, footer);
+        registrationItemMap.put(registrationEntityUuid, regDetailsItem);
+
         Stack<EditorActionContext> context = new Stack<EditorActionContext>();
         context.push(new EditorActionContext(
-                    new TypedEntityReference<>(Registration.class, registrationEntityID),
+                    new TypedEntityReference<>(Registration.class, registrationEntityUuid),
                     this)
                     );
 
         if(regItemButtonGroup.getNameButton() != null){
             regItemButtonGroup.getNameButton().getButton().addClickListener(e -> {
-                Integer nameId = regItemButtonGroup.getNameButton().getId();
+                UUID nameuUuid = regItemButtonGroup.getNameButton().getUuid();
                 getViewEventBus().publish(this, new TaxonNameEditorAction(
                     EditorActionType.EDIT,
-                    nameId,
+                    nameuUuid,
                     e.getButton(),
+                    null,
                     this,
                     context
                     )
@@ -302,13 +316,16 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         for(TypeDesignationWorkingSetButton workingsetButton : regItemButtonGroup.getTypeDesignationButtons()){
             workingsetButton.getButton().addClickListener(e -> {
                 TypedEntityReference baseEntityRef = workingsetButton.getBaseEntity();
+                EntityReference typifiedNameRef = typifiedNamesMap.get(registrationEntityUuid);
                 TypeDesignationWorkingSetType workingsetType = workingsetButton.getType();
                 getViewEventBus().publish(this, new TypeDesignationWorkingsetEditorAction(
                         EditorActionType.EDIT,
                         baseEntityRef,
                         workingsetType,
-                        registrationEntityID,
+                        registrationEntityUuid,
+                        typifiedNameRef.getUuid(),
                         e.getButton(),
+                        null,
                         this,
                         context
                         )
@@ -317,51 +334,64 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         }
 
         regItemButtonGroup.getAddTypeDesignationButton().addClickListener(
-                e -> chooseNewTypeRegistrationWorkingset(dto.getId())
+                e -> chooseNewTypeRegistrationWorkingset(dto.getUuid())
                 );
 
 
-        CssLayout buttonGroup = new CssLayout();
-        buttonGroup.setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
-
-        Button blockingRegistrationButton = new Button(FontAwesome.WARNING);
+        Button blockingRegistrationButton = regItemButtons.getBlockingRegistrationButton();
         blockingRegistrationButton.setStyleName(ValoTheme.BUTTON_TINY);
-        if(!dto.isBlocked()){
-            blockingRegistrationButton.setEnabled(false);
-        } else {
-            blockingRegistrationButton.addStyleName(RegistrationItem.STYLE_NAME_BLOCKED);
+        blockingRegistrationButton.setDescription("No blocking registrations");
+        if(dto.isBlocked()){
+            blockingRegistrationButton.setEnabled(true);
+            blockingRegistrationButton.setDescription("This registration is currently blocked by other registrations");
+            blockingRegistrationButton.addStyleName(EditValoTheme.BUTTON_HIGHLITE);
             blockingRegistrationButton.addClickListener(e -> getViewEventBus().publish(
                     this,
-                    new ShowDetailsEvent<RegistrationDTO, Integer>(
+                    new ShowDetailsEvent<RegistrationDTO, UUID>(
                             e,
                             RegistrationDTO.class,
-                            dto.getId(),
-                            "blockedBy"
+                            dto.getUuid(),
+                            RegistrationItem.BLOCKED_BY
                             )
                     ));
         }
-        buttonGroup.addComponent(blockingRegistrationButton);
-
-        Button messageButton = new Button(FontAwesome.COMMENT);
-        messageButton.setStyleName(ValoTheme.BUTTON_TINY); //  + " " + RegistrationStyles.STYLE_FRIENDLY_FOREGROUND);
-        if(dto.getMessages().isEmpty()){
-            messageButton.setEnabled(false);
-        } else {
-            messageButton.addClickListener(e -> getViewEventBus().publish(this,
-                    new ShowDetailsEvent<RegistrationDTO, Integer>(
+
+        Button validationProblemsButton = regItemButtons.getValidationProblemsButton();
+        validationProblemsButton.setStyleName(ValoTheme.BUTTON_TINY); //  + " " + RegistrationStyles.STYLE_FRIENDLY_FOREGROUND);
+
+        if(!dto.getValidationProblems().isEmpty()){
+            validationProblemsButton.setEnabled(true);
+            validationProblemsButton.addClickListener(e -> getViewEventBus().publish(this,
+                    new ShowDetailsEvent<RegistrationDTO, UUID>(
                         e,
                         RegistrationDTO.class,
-                        dto.getId(),
-                        "messages"
+                        dto.getUuid(),
+                        RegistrationItem.VALIDATION_PROBLEMS
                         )
                     )
                 );
         }
-        messageButton.setCaption("<span class=\"" + RegistrationStyles.BUTTON_BADGE +"\"> " + dto.getMessages().size() + "</span>");
-        messageButton.setCaptionAsHtml(true);
-        buttonGroup.addComponent(messageButton);
+        validationProblemsButton.setCaption("<span class=\"" + RegistrationStyles.BUTTON_BADGE +"\"> " + dto.getValidationProblems().size() + "</span>");
+        validationProblemsButton.setCaptionAsHtml(true);
+
+        Button messageButton = regItemButtons.getMessagesButton();
+        messageButton.addClickListener(e -> getViewEventBus().publish(this,
+                    new ShowDetailsEvent<RegistrationDTO, UUID>(
+                        e,
+                        RegistrationDTO.class,
+                        dto.getUuid(),
+                        RegistrationItem.MESSAGES
+                        )
+                    )
+                );
+        messageButton.setStyleName(ValoTheme.BUTTON_TINY);
 
         RegistrationStateLabel stateLabel = new RegistrationStateLabel().update(dto.getStatus());
+        Label submitterLabel = new Label(dto.getSubmitterUserName());
+        submitterLabel.setStyleName(LABEL_NOWRAP + " submitter");
+        submitterLabel.setIcon(FontAwesome.USER);
+        submitterLabel.setContentMode(ContentMode.HTML);
+        CssLayout stateAndSubmitter = new CssLayout(stateLabel, submitterLabel);
 
 
         if(UserHelper.fromSession().userIsRegistrationCurator() || UserHelper.fromSession().userIsAdmin()) {
@@ -370,22 +400,23 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
             editRegistrationButton.setDescription("Edit registration");
             editRegistrationButton.addClickListener(e -> getViewEventBus().publish(this, new RegistrationEditorAction(
                 EditorActionType.EDIT,
-                dto.getId(),
+                dto.getUuid(),
+                e.getButton(),
                 null,
                 this
                 )));
-            buttonGroup.addComponent(editRegistrationButton);
+            regItemButtons.addComponent(editRegistrationButton);
         }
 
-        PermissionDebugUtils.addGainPerEntityPermissionButton(buttonGroup, Registration.class, dto.getId(),
+        PermissionDebugUtils.addGainPerEntityPermissionButton(regItemButtons, Registration.class, dto.getUuid(),
                 EnumSet.of(CRUD.UPDATE), RegistrationStatus.PREPARATION.name());
 
         row++;
-        registrationsGrid.addComponent(stateLabel, COL_INDEX_STATE_LABEL, row);
-        registrationsGrid.setComponentAlignment(stateLabel, Alignment.TOP_LEFT);
+        registrationsGrid.addComponent(stateAndSubmitter, COL_INDEX_STATE_LABEL, row);
+        // registrationsGrid.setComponentAlignment(stateLabel, Alignment.TOP_LEFT);
         registrationsGrid.addComponent(regItemButtonGroup, COL_INDEX_REG_ITEM, row);
-        registrationsGrid.addComponent(buttonGroup, COL_INDEX_BUTTON_GROUP, row);
-        registrationsGrid.setComponentAlignment(buttonGroup, Alignment.TOP_LEFT);
+        registrationsGrid.addComponent(regItemButtons, COL_INDEX_BUTTON_GROUP, row);
+        registrationsGrid.setComponentAlignment(regItemButtons, Alignment.TOP_LEFT);
 
         row++;
         registrationsGrid.addComponent(footer, 0, row, COL_INDEX_BUTTON_GROUP, row);
@@ -399,17 +430,16 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
      *
      */
     @Override
-    public void chooseNewTypeRegistrationWorkingset(Integer registrationEntityId) {
-
+    public void chooseNewTypeRegistrationWorkingset(UUID registrationEntityUuid){
         Window typeDesignationTypeCooser = new Window();
         typeDesignationTypeCooser.setModal(true);
         typeDesignationTypeCooser.setResizable(false);
         typeDesignationTypeCooser.setCaption("Add new type designation");
         Label label = new Label("Please select kind of type designation to be created.");
         Button newSpecimenTypeDesignationButton = new Button("Specimen type designation",
-                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET, registrationEntityId, typeDesignationTypeCooser));
+                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET, registrationEntityUuid, typeDesignationTypeCooser));
         Button newNameTypeDesignationButton = new Button("Name type designation",
-                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.NAME_TYPE_DESIGNATION_WORKINGSET, registrationEntityId, typeDesignationTypeCooser));
+                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.NAME_TYPE_DESIGNATION_WORKINGSET, registrationEntityUuid, typeDesignationTypeCooser));
 
         VerticalLayout layout = new VerticalLayout(label, newSpecimenTypeDesignationButton, newNameTypeDesignationButton);
         layout.setMargin(true);
@@ -424,12 +454,15 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
      * @param button
      *
      */
-    protected void addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType newWorkingsetType, Integer registrationEntityId, Window typeDesignationTypeCooser) {
+    protected void addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType newWorkingsetType, UUID registrationEntityUuid, Window typeDesignationTypeCooser) {
         UI.getCurrent().removeWindow(typeDesignationTypeCooser);
+        EntityReference typifiedNameRef = typifiedNamesMap.get(registrationEntityUuid);
         getViewEventBus().publish(this, new TypeDesignationWorkingsetEditorAction(
                 EditorActionType.ADD,
                 newWorkingsetType,
-                registrationEntityId,
+                registrationEntityUuid,
+                typifiedNameRef.getUuid(),
+                null,
                 null,
                 this
                 ));
@@ -545,8 +578,13 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
      * @return the citationID
      */
     @Override
-    public Integer getCitationID() {
-        return citationID;
+    public UUID getCitationUuid() {
+        return citationUuid;
+    }
+
+    @Override
+    public Map<UUID, RegistrationDetailsItem> getRegistrationItemMap(){
+        return Collections.unmodifiableMap(registrationItemMap);
     }
 
 
index 3f3a30644aec29a4b9fc39b6300b76247eeecd12..3e165780827431ee3014216f47e413443b96d656 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.EnumSet;
+import java.util.UUID;
 
 import org.vaadin.spring.events.EventScope;
 import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -20,6 +21,7 @@ import com.vaadin.spring.annotation.SpringComponent;
 import com.vaadin.spring.annotation.ViewScope;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
@@ -88,11 +90,11 @@ public class StartRegistrationPresenter extends AbstractEditorPresenter<Registra
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
     public void onReferenceEditorActionAdd(ReferenceEditorAction event) {
 
-        if(getView() == null || getView().getNewPublicationButton() != event.getSourceComponent()){
+        if(getView() == null || getView().getNewPublicationButton() != event.getSource()){
             return;
         }
 
-        newReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
+        newReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView(), null);
         EnumSet<ReferenceType> refTypes = RegistrationUIDefaults.PRINTPUB_REFERENCE_TYPES.clone();
         refTypes.remove(ReferenceType.Section);
         newReferencePopup.withReferenceTypes(refTypes);
@@ -104,7 +106,7 @@ public class StartRegistrationPresenter extends AbstractEditorPresenter<Registra
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Remove.class)
     public void onReferenceEditorActionRemove(ReferenceEditorAction event) {
 
-        if(getView().getRemoveNewPublicationButton() != event.getSourceComponent()){
+        if(getView().getRemoveNewPublicationButton() != event.getSource()){
             return;
         }
         DeleteResult result = getRepo().getReferenceService().delete(newReference);
@@ -153,28 +155,29 @@ public class StartRegistrationPresenter extends AbstractEditorPresenter<Registra
         }
     }
 
+    @SuppressWarnings("null")
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
     public void onRegistrationEditorActionAdd(RegistrationEditorAction event) {
 
-        if(getView().getContinueButton() != event.getSourceComponent()){
+        if(getView().getContinueButton() != event.getSource()){
             return;
         }
 
-        Integer referenceId = null;
+        UUID referenceUuid = null;
         LazyComboBox<Reference> referenceCombobox = getView().getReferenceCombobox();
         referenceCombobox.commit();
         if(newReference != null){
-            referenceId = newReference.getId();
+            referenceUuid = newReference.getUuid();
        // } else if(referenceCombobox.getValue() != null) {
-        } else if ( event.getEntityId() != null) { // HACKED, see view implementation
-            referenceId = event.getEntityId();
+        } else if ( event.getEntityUuid() != null) { // HACKED, see view implementation
+            referenceUuid = event.getEntityUuid();
         }
-        if(referenceId == null){
+        if(referenceUuid == null){
             getView().getContinueButton().setComponentError(new UserError("Can't continue. No Reference is chosen."));
             getView().getContinueButton().setEnabled(false);
         }
         registrationInProgress = true;
-        viewEventBus.publish(EventScope.UI, this, new NavigationEvent(RegistrationWorksetViewBean.NAME, Integer.toString(referenceId)));
+        viewEventBus.publish(EventScope.UI, this, new NavigationEvent(RegistrationWorksetViewBean.NAME, referenceUuid.toString()));
 
     }
 
index 2081cd6c213abb197b5735589dd0195147312489..0e69742a9c17391004e4c9da3b8f45f6345e7dcb 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.Collection;
+import java.util.UUID;
 
 import org.springframework.security.core.GrantedAuthority;
 import org.vaadin.viritin.fields.LazyComboBox;
@@ -27,7 +28,7 @@ import com.vaadin.ui.themes.ValoTheme;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
 import eu.etaxonomy.cdm.vaadin.event.RegistrationEditorAction;
-import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
 import eu.etaxonomy.cdm.vaadin.view.AbstractPageView;
 import eu.etaxonomy.vaadin.event.EditorActionType;
 
@@ -89,7 +90,7 @@ public class StartRegistrationViewBean extends AbstractPageView<StartRegistratio
 
         newPublicationButton = new Button("New");
         newPublicationButton.addClickListener( e -> getViewEventBus().publish(this,
-                new ReferenceEditorAction(EditorActionType.ADD, newPublicationButton, this)
+                new ReferenceEditorAction(EditorActionType.ADD, newPublicationButton, null, this)
                 ));
         newPublicationButton.setCaption("New");
         newPublicationButton.setWidth(ELEMENT_WIDTH);
@@ -101,7 +102,7 @@ public class StartRegistrationViewBean extends AbstractPageView<StartRegistratio
         removeNewPublicationButton.setStyleName(ValoTheme.BUTTON_DANGER);
         removeNewPublicationButton.setWidth(ELEMENT_WIDTH);
         removeNewPublicationButton.addClickListener( e -> getViewEventBus().publish(this,
-                new ReferenceEditorAction(EditorActionType.REMOVE, removeNewPublicationButton, this)
+                new ReferenceEditorAction(EditorActionType.REMOVE, removeNewPublicationButton, referenceCombobox, this)
                 ));
 
         removeNewPublicationButton.setVisible(false);
@@ -128,16 +129,17 @@ public class StartRegistrationViewBean extends AbstractPageView<StartRegistratio
         continueButton.setEnabled(false);
         continueButton.addClickListener(e -> {
 
-            Integer refId = null;
+            UUID refUuid = null;
             referenceCombobox.commit();
             if(referenceCombobox.getValue() != null){
-                refId = referenceCombobox.getValue().getId();
+                refUuid = referenceCombobox.getValue().getUuid();
             }
             getViewEventBus().publish(this,
                 new RegistrationEditorAction(EditorActionType.ADD,
                         // passing the refId is hack, bit for some reason the presenter is always referring to the wrong view
-                        refId,
+                        refUuid,
                         continueButton,
+                        null,
                         StartRegistrationViewBean.this)
                 );
               }
index 6768a020eb7a5ec904c753a478da2c145165a4fa..46f4cf12027934ce8b532f94eca9ca8092d66fdb 100644 (file)
@@ -21,7 +21,7 @@ import com.vaadin.ui.Button;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.CustomField;
 import com.vaadin.ui.Field;
-import com.vaadin.ui.Layout;
+import com.vaadin.ui.HasComponents;
 
 /**
  * TODO implement height methods for full component size support
@@ -35,10 +35,27 @@ import com.vaadin.ui.Layout;
 @SuppressWarnings("serial")
 public abstract class CompositeCustomField<T> extends CustomField<T> implements NestedFieldGroup {
 
+    protected static final String READ_ONLY_CAPTION_SUFFIX = " (read only)";
+
     private List<Component> styledComponents = new ArrayList<>();
 
     private List<Component> sizedComponents = new ArrayList<>();
 
+    private CommitHandler commitHandler = new CommitHandler() {
+
+        @Override
+        public void preCommit(CommitEvent commitEvent) throws CommitException {
+            // commit the nested bean(s) first
+            if(getFieldGroup() != null){
+                getFieldGroup().commit();
+            }
+        }
+
+        @Override
+        public void postCommit(CommitEvent commitEvent) throws CommitException {
+            // noting to do
+        }};
+
     protected List<Component> getStyledComponents() {
         if(styledComponents == null){
             styledComponents = new ArrayList<>();
@@ -188,46 +205,43 @@ public abstract class CompositeCustomField<T> extends CustomField<T> implements
 
     @Override
     public void registerParentFieldGroup(FieldGroup parent) {
-        parent.addCommitHandler(new CommitHandler() {
-
-            @Override
-            public void preCommit(CommitEvent commitEvent) throws CommitException {
-                // commit the nested bean(s) first
-                if(getFieldGroup() != null){
-                    getFieldGroup().commit();
-                }
-            }
+        parent.addCommitHandler(commitHandler);
+    }
 
-            @Override
-            public void postCommit(CommitEvent commitEvent) throws CommitException {
-                // noting to do
-            }}
-       );
+    @Override
+    public void unregisterParentFieldGroup(FieldGroup parent) {
+        parent.removeCommitHandler(commitHandler);
     }
 
     /**
-     * {@inheritDoc}
+     * @param readOnly
      */
-    @Override
-    public void setReadOnly(boolean readOnly) {
-        super.setReadOnly(readOnly);
-        // setDeepReadOnly(readOnly, getContent());
+    protected void setDeepReadOnly(boolean readOnly, Component component, Collection<Component> ignore) {
+
+        if(ignore != null && ignore.contains(component)){
+            return;
+        }
+
+        applyReadOnlyState(component, readOnly);
+        if(HasComponents.class.isAssignableFrom(component.getClass())){
+            for(Component nestedComponent : ((HasComponents)component)){
+                setDeepReadOnly(readOnly, nestedComponent, ignore);
+            }
+        }
     }
 
     /**
+     * Sets the readonly state for the component but treats Buttons differently.
+     * Buttons are also set to disabled to make them inactive.
+
      * @param readOnly
+     * @param component
      */
-    protected void setDeepReadOnly(boolean readOnly, Component component) {
-
+    protected void applyReadOnlyState(Component component, boolean readOnly) {
         component.setReadOnly(readOnly);
         if(Button.class.isAssignableFrom(component.getClass())){
             component.setEnabled(!readOnly);
         }
-        if(Layout.class.isAssignableFrom(component.getClass())){
-            for(Component nestedComponent : ((Layout)component)){
-                setDeepReadOnly(readOnly, nestedComponent);
-            }
-        }
     }
 
     @Override
@@ -236,4 +250,12 @@ public abstract class CompositeCustomField<T> extends CustomField<T> implements
                 ( getValue() != null ? getValue() : "null");
     }
 
+    protected void updateCaptionReadonlyNotice(boolean readOnly) {
+        if(readOnly){
+            setCaption(getCaption() + READ_ONLY_CAPTION_SUFFIX);
+        } else {
+            setCaption(getCaption().replace(READ_ONLY_CAPTION_SUFFIX, ""));
+        }
+    }
+
 }
diff --git a/src/main/java/eu/etaxonomy/vaadin/component/NameRelationField.java b/src/main/java/eu/etaxonomy/vaadin/component/NameRelationField.java
new file mode 100644 (file)
index 0000000..e2d436c
--- /dev/null
@@ -0,0 +1,215 @@
+/**
+* Copyright (C) 2018 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.vaadin.component;
+
+import com.vaadin.data.fieldgroup.BeanFieldGroup;
+import com.vaadin.data.fieldgroup.FieldGroup;
+import com.vaadin.server.FontAwesome;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.themes.ValoTheme;
+
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
+import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
+import eu.etaxonomy.cdm.vaadin.model.name.NameRelationshipDTO;
+
+
+/**
+ * @author a.kohlbecker
+ * @since May 3, 2018
+ *
+ */
+public class NameRelationField extends CompositeCustomField<NameRelationshipDTO> {
+
+    /**
+     *
+     */
+    public static final String PRIMARY_STYLE = "v-name-relation-field";
+
+    private static final long serialVersionUID = -7080885013120044655L;
+
+    private CssLayout compositeWrapper = new CssLayout();
+
+    private CssLayout toolBar= new CssLayout();
+
+    private Button removeButton = new Button(FontAwesome.REMOVE);
+
+    private Button newButton = new Button(FontAwesome.PLUS);
+
+    private BeanFieldGroup<NameRelationshipDTO> fieldGroup = new BeanFieldGroup<>(NameRelationshipDTO.class);
+
+    ToOneRelatedEntityCombobox<TaxonName> validatedNameComboBox;
+
+    ToOneRelatedEntityCombobox<Reference> citatonComboBox;
+
+    TextFieldNFix citationMicroReferenceField = new TextFieldNFix();
+
+    TextFieldNFix ruleConsideredField = new TextFieldNFix();
+
+    private Direction direction;
+
+    private NameRelationshipType type;
+
+    private GridLayout grid;
+
+
+    /**
+     * @param string
+     */
+    public NameRelationField(String caption, Direction direction, NameRelationshipType type) {
+        this.direction = direction;
+        this.type = type;
+
+        setCaption(caption);
+        setPrimaryStyleName(PRIMARY_STYLE);
+
+        validatedNameComboBox = new ToOneRelatedEntityCombobox<TaxonName>("Validated name", TaxonName.class);
+        citatonComboBox = new ToOneRelatedEntityCombobox<Reference>("Reference", Reference.class);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void addDefaultStyles() {
+        // TODO Auto-generated method stub
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public FieldGroup getFieldGroup() {
+        return fieldGroup;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Component initContent() {
+
+        newButton.addClickListener(e -> {
+            setValue(new NameRelationshipDTO(direction, type));
+            updateToolBarButtonStates();
+            });
+        removeButton.addClickListener(e -> {
+                setValue(null);
+                updateToolBarButtonStates();
+            });
+        validatedNameComboBox.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<TaxonName>(validatedNameComboBox));
+        citatonComboBox.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(citatonComboBox));
+
+        grid = new GridLayout(2, 3);
+
+        grid.addComponent(validatedNameComboBox, 0, 0, 1, 0);
+
+        validatedNameComboBox.setCaption("Validated name");
+        citatonComboBox.setCaption("Reference");
+        citationMicroReferenceField.setCaption("Reference detail");
+        ruleConsideredField.setCaption("Rule considered");
+
+        grid.addComponent(citatonComboBox, 0, 1, 0, 1);
+        grid.addComponent(citationMicroReferenceField, 1, 1, 1, 1);
+        grid.addComponent(ruleConsideredField, 0, 2, 1, 2);
+
+        validatedNameComboBox.setWidth(100, Unit.PERCENTAGE);
+        ruleConsideredField.setWidth(100, Unit.PERCENTAGE);
+        citatonComboBox.setWidth(100, Unit.PERCENTAGE);
+
+
+        grid.setColumnExpandRatio(0, 7);
+        grid.setWidth(100, Unit.PERCENTAGE);
+
+        toolBar.setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP + " toolbar");
+        toolBar.addComponents(newButton, removeButton);
+
+        compositeWrapper.setStyleName("margin-wrapper");
+        compositeWrapper.addComponents(toolBar);
+
+        addSizedComponents(compositeWrapper);
+        addStyledComponents(validatedNameComboBox, citationMicroReferenceField, citatonComboBox, ruleConsideredField, newButton, removeButton);
+
+        return compositeWrapper;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Class<NameRelationshipDTO> getType() {
+        return NameRelationshipDTO.class;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void setInternalValue(NameRelationshipDTO newValue) {
+
+        NameRelationshipDTO oldValue = getValue();
+
+        super.setInternalValue(newValue);
+
+
+        newValue = HibernateProxyHelper.deproxy(newValue);
+        if(newValue != null) {
+            compositeWrapper.addComponent(grid);
+            getFieldGroup().bind(validatedNameComboBox, "otherName");
+            getFieldGroup().bind(citationMicroReferenceField, "citationMicroReference");
+            getFieldGroup().bind(citatonComboBox, "citation");
+            getFieldGroup().bind(ruleConsideredField, "ruleConsidered");
+
+            fieldGroup.setItemDataSource(newValue);
+        } else {
+            if(oldValue != null){
+                compositeWrapper.removeComponent(grid);
+                getFieldGroup().unbind(validatedNameComboBox);
+                getFieldGroup().unbind(citationMicroReferenceField);
+                getFieldGroup().unbind(citatonComboBox);
+                getFieldGroup().unbind(ruleConsideredField);
+
+                fieldGroup.setItemDataSource(newValue);
+            }
+        }
+
+        updateToolBarButtonStates();
+
+    }
+
+
+   private void updateToolBarButtonStates(){
+       boolean hasValue = getValue() != null;
+       removeButton.setEnabled(hasValue);
+       newButton.setEnabled(!hasValue);
+   }
+
+    /**
+     * @return the validatedNameComboBox
+     */
+    public ToOneRelatedEntityCombobox<TaxonName> getValidatedNameComboBox() {
+        return validatedNameComboBox;
+    }
+
+    /**
+     * @return the citatonComboBox
+     */
+    public ToOneRelatedEntityCombobox<Reference> getCitatonComboBox() {
+        return citatonComboBox;
+    }
+
+}
diff --git a/src/main/java/eu/etaxonomy/vaadin/component/NameRelationsListEditor.java b/src/main/java/eu/etaxonomy/vaadin/component/NameRelationsListEditor.java
new file mode 100644 (file)
index 0000000..63b058f
--- /dev/null
@@ -0,0 +1,84 @@
+/**
+* Copyright (C) 2018 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.vaadin.component;
+
+import org.vaadin.viritin.fields.CaptionGenerator;
+import org.vaadin.viritin.fields.LazyComboBox.FilterableCountProvider;
+import org.vaadin.viritin.fields.LazyComboBox.FilterablePagingProvider;
+
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.vaadin.model.name.NameRelationshipDTO;
+import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
+
+/**
+ * @author a.kohlbecker
+ * @since May 3, 2018
+ *
+ */
+public class NameRelationsListEditor extends ToManyRelatedEntitiesListSelect<NameRelationshipDTO, NameRelationField> {
+
+    private static final long serialVersionUID = 6295557881702890211L;
+
+    private ReloadableLazyComboBoxInstantiator<TaxonName> nameSelectInstantiator;
+
+    private ReloadableLazyComboBoxInstantiator<Reference> referenceSelectInstantiator;
+
+    /**
+     * @param itemType
+     * @param caption
+     */
+    public NameRelationsListEditor(String caption) {
+        super(NameRelationshipDTO.class, null, caption);
+        this.fieldType = NameRelationField.class;
+        // addEmptyRowOnInitContent is false in this class since adding row is only possible after setting the PagingProviders
+        addEmptyRowOnInitContent = false;
+        nameSelectInstantiator = new ReloadableLazyComboBoxInstantiator<TaxonName>(TaxonName.class);
+        referenceSelectInstantiator = new ReloadableLazyComboBoxInstantiator<Reference>(Reference.class);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+//    @Override
+//    protected NameRelationField newFieldInstance(NameRelationshipDTO val) throws InstantiationException, IllegalAccessException {
+//
+//        NameRelationField field = new NameRelationField(nameSelectInstantiator, referenceSelectInstantiator, val);
+//        field.setWidth(100, Unit.PERCENTAGE);
+//        return field;
+//    }
+
+    public void setTaxonNamePagingProviders(FilterablePagingProvider<TaxonName> filterablePagingProvider, FilterableCountProvider filterableCountProvider, int pageLength,
+            CachingPresenter cachingPresenter){
+        nameSelectInstantiator.setPagingProviders(filterablePagingProvider, filterableCountProvider, pageLength, cachingPresenter);
+        setInternalValue(null);
+    }
+
+    /**
+     * @param cdmTitleCacheCaptionGenerator
+     */
+    public void setTaxonNameCaptionGenerator(CaptionGenerator<TaxonName> captionGenerator) {
+        nameSelectInstantiator.setCaptionGenerator(captionGenerator);
+    }
+
+    public void setReferencePagingProviders(FilterablePagingProvider<Reference> filterablePagingProvider, FilterableCountProvider filterableCountProvider, int pageLength,
+            CachingPresenter cachingPresenter){
+        referenceSelectInstantiator.setPagingProviders(filterablePagingProvider, filterableCountProvider, pageLength, cachingPresenter);
+        setInternalValue(null);
+    }
+
+    /**
+     * @param cdmTitleCacheCaptionGenerator
+     */
+    public void setReferenceCaptionGenerator(CaptionGenerator<Reference> captionGenerator) {
+        referenceSelectInstantiator.setCaptionGenerator(captionGenerator);
+    }
+
+
+}
index 05bed93f3e7a3304876603c0e0013860a89671a0..b05851d9482d96e54abf48dbcfaba8cf67538c13 100644 (file)
@@ -26,4 +26,9 @@ public interface NestedFieldGroup {
 
     public abstract void registerParentFieldGroup(FieldGroup parent);
 
+    /**
+     * @param parent
+     */
+    public abstract void unregisterParentFieldGroup(FieldGroup parent);
+
 }
diff --git a/src/main/java/eu/etaxonomy/vaadin/component/ReloadableLazyComboBoxInstantiator.java b/src/main/java/eu/etaxonomy/vaadin/component/ReloadableLazyComboBoxInstantiator.java
new file mode 100644 (file)
index 0000000..22ca5e8
--- /dev/null
@@ -0,0 +1,76 @@
+/**
+* Copyright (C) 2018 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.vaadin.component;
+
+import org.vaadin.viritin.fields.CaptionGenerator;
+import org.vaadin.viritin.fields.LazyComboBox.FilterableCountProvider;
+import org.vaadin.viritin.fields.LazyComboBox.FilterablePagingProvider;
+
+import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
+import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
+
+/**
+ * @author a.kohlbecker
+ * @since May 3, 2018
+ *
+ */
+public class ReloadableLazyComboBoxInstantiator<V extends Object> {
+
+    private FilterablePagingProvider<V> filterablePagingProvider = null;
+    private FilterableCountProvider filterableCountProvider = null;
+    private Integer pageLength = null;
+
+    private CaptionGenerator<V> captionGenerator;
+
+    private CachingPresenter cachingPresenter;
+    private Class<V> itemType;
+
+    public ReloadableLazyComboBoxInstantiator(Class<V> itemType){
+        this.itemType = itemType;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected ReloadableLazyComboBox<V> newInstance(V val) throws InstantiationException, IllegalAccessException {
+
+
+        ReloadableLazyComboBox<V> field = new ReloadableLazyComboBox<V>(itemType);
+        // FIXME using the ToOneRelatedEntityReloader created a dependency to the cdm packages, this should be relaxed!!!
+        field.addValueChangeListener(new ToOneRelatedEntityReloader(field, cachingPresenter));
+
+        if(filterablePagingProvider == null || filterableCountProvider == null ||  pageLength == null) {
+            throw new RuntimeException("The filterablePagingProvider, filterableCountProvider and pageLength must be set, use setPagingProviders().");
+        }
+        field.loadFrom(filterablePagingProvider, filterableCountProvider, pageLength);
+        if(captionGenerator != null){
+            field.setCaptionGenerator(captionGenerator);
+        }
+        field.setValue(val);
+        return field;
+    }
+
+    public void setPagingProviders(FilterablePagingProvider<V> filterablePagingProvider, FilterableCountProvider filterableCountProvider, int pageLength,
+            CachingPresenter cachingPresenter){
+        this.filterablePagingProvider = filterablePagingProvider;
+        this.filterableCountProvider = filterableCountProvider;
+        this.pageLength = pageLength;
+        this.cachingPresenter = cachingPresenter;
+    }
+
+    /**
+     * @param cdmTitleCacheCaptionGenerator
+     */
+    public void setCaptionGenerator(CaptionGenerator<V> captionGenerator) {
+        this.captionGenerator = captionGenerator;
+    }
+
+
+
+}
index 3285c8ae1d91ae353f5c519da84eac5eaee96962..5db1af621bbc776c45edcb4a58a7b5c0aeb75e64 100644 (file)
@@ -98,6 +98,12 @@ public class SwitchableTextField extends CompositeCustomField<String> {
         textField.setEnabled(unlockSwitch.getValue());
     }
 
+    public void unbindFrom(FieldGroup fieldGroup){
+        fieldGroup.unbind(textField);
+        fieldGroup.unbind(unlockSwitch);
+        textField.setEnabled(false);
+    }
+
     /**
      * {@inheritDoc}
      */
index 2874fe234903689893e384b58fbafe06e12ca113..6e809b5993ee80d768ba9e66814e8ccd44a00f18 100644 (file)
@@ -13,7 +13,6 @@ import org.vaadin.viritin.fields.LazyComboBox;
 import org.vaadin.viritin.fields.LazyComboBox.FilterableCountProvider;
 import org.vaadin.viritin.fields.LazyComboBox.FilterablePagingProvider;
 
-import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
 import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
 
 /**
@@ -27,13 +26,7 @@ public class ToManyRelatedEntitiesComboboxSelect<V extends Object> extends ToMan
 
     private static final long serialVersionUID = -4496067980953939548L;
 
-    private FilterablePagingProvider<V> filterablePagingProvider = null;
-    private FilterableCountProvider filterableCountProvider = null;
-    private Integer pageLength = null;
-
-    private CaptionGenerator<V> captionGenerator;
-
-    private CachingPresenter cachingPresenter;
+    private ReloadableLazyComboBoxInstantiator<V> fieldInstantiator;
 
     /**
      * @param itemType
@@ -47,6 +40,7 @@ public class ToManyRelatedEntitiesComboboxSelect<V extends Object> extends ToMan
         this.fieldType = (Class<ReloadableLazyComboBox<V>>) field.getClass();
         // addEmptyRowOnInitContent is false in this class since adding row is only possible after setting the PagingProviders
         addEmptyRowOnInitContent = false;
+        fieldInstantiator = new ReloadableLazyComboBoxInstantiator<V>(itemType);
     }
 
     /**
@@ -56,28 +50,14 @@ public class ToManyRelatedEntitiesComboboxSelect<V extends Object> extends ToMan
     protected ReloadableLazyComboBox<V> newFieldInstance(V val) throws InstantiationException, IllegalAccessException {
 
         // TODO use the setEntityFieldInstantiator(EntityFieldInstantiator) instead to inject as instantiator?
-        ReloadableLazyComboBox<V> field = new ReloadableLazyComboBox<V>(itemType);
-        // FIXME using the ToOneRelatedEntityReloader created a dependency to the cdm packages, this should be relaxed!!!
-        field.addValueChangeListener(new ToOneRelatedEntityReloader(field, cachingPresenter));
-
-        if(filterablePagingProvider == null || filterableCountProvider == null ||  pageLength == null) {
-            throw new RuntimeException("The filterablePagingProvider, filterableCountProvider and pageLength must be set, use setPagingProviders().");
-        }
-        field.loadFrom(filterablePagingProvider, filterableCountProvider, pageLength);
-        if(captionGenerator != null){
-            field.setCaptionGenerator(captionGenerator);
-        }
-        field.setValue(val);
+        ReloadableLazyComboBox<V> field = fieldInstantiator.newInstance(val);
         field.setWidth(100, Unit.PERCENTAGE);
         return field;
     }
 
     public void setPagingProviders(FilterablePagingProvider<V> filterablePagingProvider, FilterableCountProvider filterableCountProvider, int pageLength,
             CachingPresenter cachingPresenter){
-        this.filterablePagingProvider = filterablePagingProvider;
-        this.filterableCountProvider = filterableCountProvider;
-        this.pageLength = pageLength;
-        this.cachingPresenter = cachingPresenter;
+        fieldInstantiator.setPagingProviders(filterablePagingProvider, filterableCountProvider, pageLength, cachingPresenter);
         setInternalValue(null);
     }
 
@@ -85,7 +65,7 @@ public class ToManyRelatedEntitiesComboboxSelect<V extends Object> extends ToMan
      * @param cdmTitleCacheCaptionGenerator
      */
     public void setCaptionGenerator(CaptionGenerator<V> captionGenerator) {
-        this.captionGenerator = captionGenerator;
+        fieldInstantiator.setCaptionGenerator(captionGenerator);
     }
 
 }
index 2bcc2bdede23f69f053e4e1b7a4dae66e0e308fc..e323de712dbfbbf44e55869f26dc3c7583961099 100644 (file)
@@ -139,9 +139,9 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
         // TODO remove from nested fields
         updateValue();
         updateButtonStates();
-
     }
 
+
     /**
      * @param field
      * @return
@@ -184,7 +184,7 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
         List<V> beanList = getValue();
         beanList.clear();
         beanList.addAll(nestedValues);
-        setInternalValue(beanList, false);
+        setInternalValue(beanList);
     }
 
     /**
@@ -216,12 +216,6 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
     @Override
     protected void setInternalValue(List<V> newValue) {
 
-        setInternalValue(newValue, true);
-
-    }
-
-    protected void setInternalValue(List<V> newValue, boolean doUpdateFields) {
-
         super.setInternalValue(newValue);
 
         if(valueInitiallyWasNull == null){
@@ -231,12 +225,14 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
         if(newValue != null){
             // newValue is already converted, need to use the original value from the data source
             boolean isListType = List.class.isAssignableFrom(getPropertyDataSource().getValue().getClass());
+            // if(valueInitiallyWasNull && isOrderedCollection != isListType){
             if(valueInitiallyWasNull && isOrderedCollection != isListType){
                 // need to reset the grid in this case, so that the button groups are created correctly
-                grid.setRows(1);
-                grid.removeAllComponents();
+                clearRows();
             }
             isOrderedCollection = isListType;
+        } else {
+            clearRows();
         }
 
         if(!creatingFields){
@@ -244,6 +240,11 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
         }
     }
 
+    private void clearRows() {
+        grid.removeAllComponents();
+        grid.setRows(1);
+    }
+
     private void createFieldsForData(){
 
         creatingFields = true;
@@ -306,6 +307,7 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
             F field = newFieldInstance(val);
             field.addValueChangeListener(e -> {
                 updateValue();
+                fireValueChange(true);
             });
             Property ds = getPropertyDataSource();
             if(ds != null){
@@ -407,8 +409,9 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
             if(withEditButton){
                 addButtonIndex++;
                 // edit
-                ((Button)buttonGroup.getComponent(0)).setDescription(field.getValue() == null ? "New" : "Edit");
-                buttonGroup.getComponent(0).setEnabled(field.getValue() == null
+                Button editCreateButton = ((Button)buttonGroup.getComponent(0));
+                editCreateButton.setDescription(field.getValue() == null ? "New" : "Edit");
+                editCreateButton.setEnabled(field.getValue() == null
                         || field.getValue() != null && testEditButtonPermission(field.getValue()));
             }
             // add
@@ -546,12 +549,12 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
             }
         }
         //
+         */
         // calling super.commit() is useless if operating on a transient property!!
         super.commit();
-        if(getValue().isEmpty() && valueInitiallyWasNull){
-            setPropertyDataSource(null);
-        }
-         */
+//        if(getValue().isEmpty() && valueInitiallyWasNull){
+//            setPropertyDataSource(null);
+//        }
     }
 
     /**
@@ -623,7 +626,7 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
     @Override
     public void setReadOnly(boolean readOnly) {
         super.setReadOnly(readOnly);
-        setDeepReadOnly(readOnly, getContent());
+        setDeepReadOnly(readOnly, getContent(), null);
         updateButtonStates();
     }
 
@@ -655,5 +658,4 @@ public class ToManyRelatedEntitiesListSelect<V extends Object, F extends Abstrac
         this.editActionListener = editActionListener;
     }
 
-
 }
index c14a794ac58cf6d7b1a4d39227f1b28b7b356655..d991cea5c6df509c01ac909b066aab7a66cb2858 100644 (file)
@@ -199,7 +199,7 @@ public class ToOneRelatedEntityCombobox<V extends Object> extends CompositeCusto
     @Override
     public void setReadOnly(boolean readOnly) {
         super.setReadOnly(readOnly);
-        setDeepReadOnly(readOnly, getContent());
+        setDeepReadOnly(readOnly, getContent(), null);
     }
 
 
index 2a1de017cb636e313381cac6a1d5bc0de0886911..255c1a489f185d364fc56b17daf71181f75606a5 100644 (file)
@@ -13,8 +13,7 @@ import java.util.EnumSet;
 import com.vaadin.ui.AbstractField;
 
 /**
- * An Event
- * which represents the request to start an editor to enable the
+ * An Event which represents the request to start an editor to enable the
  * user to perform the <code>action</code> transported with this event.
  *
  * @author a.kohlbecker
index 9c8fa0f15525a4dafb421491dfc6d4e9ffbfbea1..f126558d0e09eaa369a6e504dcff22d13a7d8f72 100644 (file)
@@ -15,12 +15,12 @@ package eu.etaxonomy.vaadin.event;
     myComboboxSelect.setEditActionListener(e -> {
 
             Object fieldValue = e.getSource().getValue();
-            Integer beanId = null;
+            UUID beanUuid = null;
             if(fieldValue != null){
-                beanId = ((CdmBase)fieldValue).getId();
+                beanUuid = ((CdmBase)fieldValue).getUUid();
 
             }
-            getViewEventBus().publish(this, new SomeEditorAction(e.getAction(), beanId, e.getSource(), this));
+            getViewEventBus().publish(this, new SomeEditorAction(e.getAction(), beanUuid, e.getSource(), this));
         });
   }
  *</pre>
diff --git a/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmDTOEditorPresenter.java b/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmDTOEditorPresenter.java
new file mode 100644 (file)
index 0000000..841d42b
--- /dev/null
@@ -0,0 +1,33 @@
+/**
+* Copyright (C) 2017 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.vaadin.mvp;
+
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.vaadin.model.CdmEntityDecoraterDTO;
+
+/**
+ * Provides generic save operations of modified cdm entities.
+ *
+ * @author a.kohlbecker
+ * @since Apr 5, 2017
+ *
+ */
+public abstract class AbstractCdmDTOEditorPresenter<DTO extends CdmEntityDecoraterDTO<CDM>, CDM extends CdmBase, V extends ApplicationView<?>> extends CdmEditorPresenterBase<DTO, CDM, V> {
+
+    private static final long serialVersionUID = -6315824180341694825L;
+
+
+    @Override
+    protected CDM cdmEntity(DTO dto) {
+        return dto.cdmEntity();
+    }
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmDTOPopupEditor.java b/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmDTOPopupEditor.java
new file mode 100644 (file)
index 0000000..dfb4a46
--- /dev/null
@@ -0,0 +1,45 @@
+/**
+* Copyright (C) 2017 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.vaadin.mvp;
+
+import java.util.EnumSet;
+
+import com.vaadin.ui.Layout;
+
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
+import eu.etaxonomy.cdm.vaadin.model.CdmEntityDecoraterDTO;
+import eu.etaxonomy.cdm.vaadin.view.PerEntityAuthorityGrantingEditor;
+
+/**
+ * @author a.kohlbecker
+ * @since May 5, 2017
+ *
+ */
+public abstract class AbstractCdmDTOPopupEditor<DTO extends CdmEntityDecoraterDTO<CDM>, CDM extends CdmBase, P extends CdmEditorPresenterBase<DTO, CDM, ? extends ApplicationView>>
+    extends AbstractPopupEditor<DTO, P> implements PerEntityAuthorityGrantingEditor {
+
+    /**
+     * @param layout
+     * @param dtoType
+     */
+    public AbstractCdmDTOPopupEditor(Layout layout, Class<DTO> dtoType) {
+        super(layout, dtoType);
+    }
+
+    private static final long serialVersionUID = -5025937489746256070L;
+
+    @Override
+    public void grantToCurrentUser(EnumSet<CRUD> crud){
+        getPresenter().setGrantsForCurrentUser(crud);
+    }
+
+
+
+}
index 21c4019b481d25b5e93ed8dd9d5883f7af677da4..f40819c5bc67961b46bdf3dd8d9f3a54e9e42395 100644 (file)
@@ -8,26 +8,7 @@
 */
 package eu.etaxonomy.vaadin.mvp;
 
-import java.util.Collection;
-import java.util.EnumSet;
-import java.util.HashSet;
-
-import org.apache.log4j.Logger;
-import org.hibernate.HibernateException;
-
-import eu.etaxonomy.cdm.api.service.IService;
-import eu.etaxonomy.cdm.cache.CdmTransientEntityCacher;
-import eu.etaxonomy.cdm.debug.PersistentContextAnalyzer;
-import eu.etaxonomy.cdm.model.ICdmCacher;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
-import eu.etaxonomy.cdm.service.CdmStore;
-import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
-import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
-import eu.etaxonomy.vaadin.mvp.event.EditorPreSaveEvent;
-import eu.etaxonomy.vaadin.mvp.event.EditorSaveEvent;
 
 /**
  * Provides generic save operations of modified cdm entities.
@@ -36,225 +17,18 @@ import eu.etaxonomy.vaadin.mvp.event.EditorSaveEvent;
  * @since Apr 5, 2017
  *
  */
-public abstract class AbstractCdmEditorPresenter<DTO extends CdmBase, V extends ApplicationView<?>> extends AbstractEditorPresenter<DTO, V>
-    implements CachingPresenter {
-
-    private static final long serialVersionUID = 2218185546277084261L;
-
-    private static final Logger logger = Logger.getLogger(AbstractCdmEditorPresenter.class);
+public abstract class AbstractCdmEditorPresenter<CDM extends CdmBase, V extends ApplicationView<?>> extends CdmEditorPresenterBase<CDM, CDM, V> {
 
-    /**
-     * if not null, this CRUD set is to be used to create a CdmAuthoritiy for the base entity which will be
-     * granted to the current use as long this grant is not assigned yet.
-     */
-    protected EnumSet<CRUD> crud = null;
-
-
-    private ICdmCacher cache;
-
-    private java.util.Collection<CdmBase> rootEntities = new HashSet<>();
-
-    public AbstractCdmEditorPresenter() {
-        super();
-        logger.trace(this._toString() + " constructor");
-    }
-
-    CdmStore<DTO, IService<DTO>> store ;
-
-    protected CdmAuthority newAuthorityCreated;
-
-    protected CdmStore<DTO, IService<DTO>> getStore() {
-        if(store == null){
-            store = new CdmStore<>(getRepo(), getService());
-        }
-        return store;
-    }
+    private static final long serialVersionUID = -6315824180341694825L;
 
     @Override
-    protected DTO loadBeanById(Object identifier) {
-
-        DTO cdmEntitiy;
-        if(identifier != null) {
-            Integer integerID = (Integer)identifier;
-            // CdmAuthority is needed before the bean is loaded into the session.
-            // otherwise adding the authority to the user would cause a flush
-            guaranteePerEntityCRUDPermissions(integerID);
-            cdmEntitiy = loadCdmEntityById(integerID);
-        } else {
-            cdmEntitiy = loadCdmEntityById(null);
-            if(cdmEntitiy != null){
-                guaranteePerEntityCRUDPermissions(cdmEntitiy);
-            }
-        }
-
-
-        cache = new CdmTransientEntityCacher(this);
-        // need to use load but put see #7214
-        cdmEntitiy = cache.load(cdmEntitiy);
-        addRootEntity(cdmEntitiy);
-
+    protected CDM createDTODecorator(CDM cdmEntitiy) {
         return cdmEntitiy;
     }
 
-
-    /**
-     * @param identifier
-     * @return
-     */
-    protected abstract DTO loadCdmEntityById(Integer identifier);
-
-    /**
-     * Grant per entity CdmAuthority to the current user <b>for the bean which is not yet loaded</b>
-     * into the editor. The <code>CRUD</code> to be granted are stored in the <code>crud</code> field.
-     */
-    protected abstract void guaranteePerEntityCRUDPermissions(Integer identifier);
-
-    /**
-     * Grant per entity CdmAuthority to the current user for the bean which is loaded
-     * into the editor. The <code>CRUD</code> to be granted are stored in the <code>crud</code> field.
-     */
-     protected abstract void guaranteePerEntityCRUDPermissions(DTO bean);
-
-    /**
-     * @return
-     */
-    protected abstract IService<DTO> getService();
-
-    @SuppressWarnings("unchecked")
-    @Override
-    // @EventBusListenerMethod // already annotated at super class
-    public void onEditorPreSaveEvent(EditorPreSaveEvent preSaveEvent){
-
-        if(!isFromOwnView(preSaveEvent)){
-            return;
-        }
-        super.onEditorPreSaveEvent(preSaveEvent);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    // @EventBusListenerMethod // already annotated at super class
-    public void onEditorSaveEvent(EditorSaveEvent<DTO> saveEvent){
-
-        if(!isFromOwnView(saveEvent)){
-            return;
-        }
-
-        // the bean is now updated with the changes made by the user
-        DTO bean = saveEvent.getBean();
-
-        if(logger.isTraceEnabled()){
-            PersistentContextAnalyzer pca = new PersistentContextAnalyzer(bean);
-            pca.printEntityGraph(System.err);
-            pca.printCopyEntities(System.err);
-        }
-        bean = handleTransientProperties(bean);
-
-        if(logger.isTraceEnabled()){
-            PersistentContextAnalyzer pca = new PersistentContextAnalyzer(bean);
-            pca.printEntityGraph(System.err);
-            pca.printCopyEntities(System.err);
-        }
-        try {
-            EntityChangeEvent changeEvent = getStore().saveBean(bean, (AbstractView) getView());
-
-            if(changeEvent != null){
-                viewEventBus.publish(this, changeEvent);
-            }
-        } catch (HibernateException e){
-            if(newAuthorityCreated != null){
-                UserHelper.fromSession().removeAuthorityForCurrentUser(newAuthorityCreated);
-            }
-            throw e;
-        }
-    }
-
-    /**
-     * EditorPresenters for beans with transient properties should overwrite this method to
-     * update the beanItem with the changes made to the transient properties.
-     * <p>
-     * This is necessary because Vaadin MethodProperties are readonly when no setter is
-     * available. This can be the case with transient properties. Automatic updating
-     * of the property during the fieldGroup commit does not work in this case.
-     *
-     * @deprecated editors should operate on DTOs instead, remove this method if unused.
-     */
-    @Deprecated
-    protected DTO handleTransientProperties(DTO bean) {
-        // no need to handle transient properties in the generic case
-        return bean;
-    }
-
-//    @Override
-//    protected DTO prepareAsFieldGroupDataSource(DTO bean){
-//        DTO mergedBean = getStore().mergedBean(bean);
-//        // DTO mergedBean = bean;
-//        return mergedBean;
-//    }
-
-    /**
-     * If the bean is contained in the session it is being updated by
-     * doing an evict and merge. The fieldGroup is updated with the merged bean.
-     *
-     * @param bean
-     *
-     * @return The bean merged to the session or original bean in case a merge was not necessary.
-     */
-    private DTO mergedBean(DTO bean) {
-        DTO mergedBean = getStore().mergedBean(bean);
-        ((AbstractPopupEditor<DTO, AbstractCdmEditorPresenter<DTO, V>>)getView()).updateItemDataSource(mergedBean);
-        return mergedBean;
-
-    }
-
     @Override
-    protected
-    final void saveBean(DTO bean){
-        // blank implementation, since this is not needed in this or any sub class
-        // see onEditorSaveEvent() instead
-    }
-
-    @Override
-    protected void deleteBean(DTO bean){
-        EntityChangeEvent changeEvent = getStore().deleteBean(bean, (AbstractView) getView());
-        if(changeEvent != null){
-            viewEventBus.publish(this, changeEvent);
-        }
-
+    protected CDM cdmEntity(CDM dto) {
+        return dto;
     }
 
-    /**
-     * @param crud
-     */
-    public void setGrantsForCurrentUser(EnumSet<CRUD> crud) {
-        this.crud = crud;
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ICdmCacher getCache() {
-        return cache;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addRootEntity(CdmBase entity) {
-        rootEntities.add(entity);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public Collection<CdmBase> getRootEntities() {
-        return rootEntities;
-    }
-
-
-}
+}
\ No newline at end of file
index 89e598a6cc63d15c26c72e80b309643403bb6dfa..4c882e68c9b93ba43cb1b53bef31d6dd69d34ecd 100644 (file)
@@ -8,18 +8,9 @@
 */
 package eu.etaxonomy.vaadin.mvp;
 
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.EnumSet;
-import java.util.List;
 
-import com.vaadin.server.FontAwesome;
-import com.vaadin.shared.ui.MarginInfo;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Component;
 import com.vaadin.ui.Layout;
-import com.vaadin.ui.Layout.MarginHandler;
-import com.vaadin.ui.themes.ValoTheme;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
@@ -30,85 +21,24 @@ import eu.etaxonomy.cdm.vaadin.view.PerEntityAuthorityGrantingEditor;
  * @since May 5, 2017
  *
  */
-public abstract class AbstractCdmPopupEditor<DTO extends CdmBase, P extends AbstractCdmEditorPresenter<DTO, ? extends ApplicationView>>
-    extends AbstractPopupEditor<DTO, P> implements PerEntityAuthorityGrantingEditor {
-
-    private static final long serialVersionUID = -5025937489746256070L;
-
-    private boolean isAdvancedMode = false;
-
-    private List<Component> advancedModeComponents = new ArrayList<>();
-
-    private Button advancedModeButton;
+public abstract class AbstractCdmPopupEditor<CDM extends CdmBase, P extends CdmEditorPresenterBase<CDM, CDM, ? extends ApplicationView>>
+    extends AbstractPopupEditor<CDM, P> implements PerEntityAuthorityGrantingEditor {
 
     /**
-     * The supplied layout will be set to full size, to avoid problems with
-     * automatic resizing of the inner content.
-     *
-     *
      * @param layout
      * @param dtoType
      */
-    public AbstractCdmPopupEditor(Layout layout, Class<DTO> dtoType) {
+    public AbstractCdmPopupEditor(Layout layout, Class<CDM> dtoType) {
         super(layout, dtoType);
-        if(MarginHandler.class.isAssignableFrom(getFieldLayout().getClass())){
-            ((MarginHandler)getFieldLayout()).setMargin(new MarginInfo(false, true, true, true));
-        }
-    }
-
-    /**
-     * @return the isAdvancedMode
-     */
-    public boolean isAdvancedMode() {
-        return isAdvancedMode;
-    }
-
-    /**
-     * @param isAdvancedMode the isAdvancedMode to set
-     */
-    public void setAdvancedMode(boolean isAdvancedMode) {
-        this.isAdvancedMode = isAdvancedMode;
-        advancedModeComponents.forEach(c -> c.setVisible(isAdvancedMode));
-    }
-
-    public void setAdvancedModeEnabled(boolean activate){
-        if(activate && advancedModeButton == null){
-            advancedModeButton = new Button(FontAwesome.WRENCH); // FontAwesome.FLASK
-            advancedModeButton.setIconAlternateText("Advanced mode");
-            advancedModeButton.addStyleName(ValoTheme.BUTTON_TINY);
-            toolBarButtonGroupAdd(advancedModeButton);
-            advancedModeButton.addClickListener(e -> {
-                setAdvancedMode(!isAdvancedMode);
-                }
-            );
-
-        } else if(advancedModeButton != null) {
-            toolBarButtonGroupRemove(advancedModeButton);
-            advancedModeButton = null;
-        }
-    }
-
-    public void registerAdvancedModeComponents(Component ... c){
-        advancedModeComponents.addAll(Arrays.asList(c));
     }
 
+    private static final long serialVersionUID = -5025937489746256070L;
 
     @Override
     public void grantToCurrentUser(EnumSet<CRUD> crud){
         getPresenter().setGrantsForCurrentUser(crud);
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setReadOnly(boolean readOnly) {
-        super.setReadOnly(readOnly);
-        getFieldLayout().iterator().forEachRemaining(c -> c.setReadOnly(readOnly));
-    }
-
-
-
 
 
 }
index 1d02e7c247349f67175d2674e7f16974300fb041..d3afa4efc2e21478601163f80bf93031c2d8d2ff 100644 (file)
@@ -18,6 +18,11 @@ import eu.etaxonomy.vaadin.mvp.event.EditorSaveEvent;
 import eu.etaxonomy.vaadin.mvp.event.EditorViewEvent;
 
 /**
+ * Presenters of this type are usually be used in conjunction with a  {@link AbstractPopupEditor}.
+ * The presenter automatically handles save and delete operations. The methods {@link #saveBean(Object)} and
+ * {@link AbstractEditorPresenter#deleteBean(Object)} are executed internally in turn of an
+ * {@link EditorSaveEvent} or {@link EditorDeleteEvent} which are send by the {@link AbstractPopupEditor#save()}
+ * or {@link AbstractPopupEditor#delete()} method.
  *
  * @author a.kohlbecker
  * @since Apr 5, 2017
@@ -41,6 +46,16 @@ public abstract class AbstractEditorPresenter<DTO extends Object, V extends Appl
      */
     protected abstract DTO loadBeanById(Object identifier);
 
+    /**
+     * Set ui elements to readonly or disabled to adapt the editor to
+     * the permissions that are given to the current user etc.
+     *
+     * @param beanToEdit
+     */
+    protected void adaptToUserPermission(DTO beanToEdit) {
+
+    }
+
     /**
      * @param beanInstantiator the beanInstantiator to set
      */
index 144ada7f53e1e99549f89439d393ce26cf2622c5..0080c9b52d882a2a4d63c2344c3c818fa4c8006a 100644 (file)
@@ -8,7 +8,12 @@
 */
 package eu.etaxonomy.vaadin.mvp;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.Stack;
 
 import org.apache.log4j.Logger;
@@ -25,6 +30,7 @@ import com.vaadin.server.ErrorMessage.ErrorLevel;
 import com.vaadin.server.FontAwesome;
 import com.vaadin.server.UserError;
 import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.ui.AbstractComponentContainer;
 import com.vaadin.ui.AbstractField;
 import com.vaadin.ui.AbstractLayout;
 import com.vaadin.ui.AbstractOrderedLayout;
@@ -38,7 +44,9 @@ import com.vaadin.ui.GridLayout;
 import com.vaadin.ui.GridLayout.OutOfBoundsException;
 import com.vaadin.ui.GridLayout.OverlapsException;
 import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
 import com.vaadin.ui.Layout;
+import com.vaadin.ui.Layout.MarginHandler;
 import com.vaadin.ui.Notification;
 import com.vaadin.ui.Notification.Type;
 import com.vaadin.ui.PopupDateField;
@@ -89,6 +97,10 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
 
     private CssLayout toolBarButtonGroup = new CssLayout();
 
+    private Label statusMessageLabel = new Label();
+
+    Set<String> statusMessages = new HashSet<>();
+
     private GridLayout _gridLayoutCache;
 
     private boolean isBeanLoaded;
@@ -97,6 +109,12 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
 
     private boolean isContextUpdated;
 
+    private boolean isAdvancedMode = false;
+
+    private List<Component> advancedModeComponents = new ArrayList<>();
+
+    private Button advancedModeButton;
+
     public AbstractPopupEditor(Layout layout, Class<DTO> dtoType) {
 
         mainLayout = new VerticalLayout();
@@ -104,6 +122,7 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         // popup window may have problems with automatic resizing of its
         // content.
         mainLayout.setSizeFull();
+
         setCompositionRoot(mainLayout);
 
         fieldGroup = new BeanFieldGroup<>(dtoType);
@@ -121,6 +140,9 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         if(fieldLayout instanceof AbstractOrderedLayout){
             ((AbstractOrderedLayout)fieldLayout).setSpacing(true);
         }
+        if(MarginHandler.class.isAssignableFrom(fieldLayout.getClass())){
+            ((MarginHandler)fieldLayout).setMargin(new MarginInfo(false, true, true, true));
+        }
 
         buttonLayout = new HorizontalLayout();
         buttonLayout.setStyleName(ValoTheme.WINDOW_BOTTOM_TOOLBAR);
@@ -131,10 +153,10 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         save.setStyleName(ValoTheme.BUTTON_PRIMARY);
         save.addClickListener(e -> save());
 
-        cancel = new Button("Cancel", FontAwesome.TRASH);
+        cancel = new Button("Cancel", FontAwesome.REMOVE);
         cancel.addClickListener(e -> cancel());
 
-        delete = new Button("Delete", FontAwesome.REMOVE);
+        delete = new Button("Delete", FontAwesome.TRASH);
         delete.setStyleName(ValoTheme.BUTTON_DANGER);
         delete.addClickListener(e -> delete());
         delete.setVisible(false);
@@ -146,7 +168,10 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         buttonLayout.setComponentAlignment(save, Alignment.TOP_RIGHT);
         buttonLayout.setComponentAlignment(cancel, Alignment.TOP_RIGHT);
 
-        mainLayout.addComponents(toolBar, fieldLayout, buttonLayout);
+        statusMessageLabel.setWidthUndefined();
+
+        mainLayout.addComponents(toolBar, fieldLayout, statusMessageLabel, buttonLayout);
+        mainLayout.setComponentAlignment(statusMessageLabel, Alignment.BOTTOM_RIGHT);
         mainLayout.setComponentAlignment(toolBar, Alignment.TOP_RIGHT);
 
         updateToolBarVisibility();
@@ -180,6 +205,20 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         save.setVisible(!readOnly);
         delete.setVisible(!readOnly);
         cancel.setCaption(readOnly ? "Close" : "Cancel");
+        recursiveReadonly(readOnly, (AbstractComponentContainer)getFieldLayout());
+    }
+
+    /**
+     * @param readOnly
+     * @param layout
+     */
+    protected void recursiveReadonly(boolean readOnly, AbstractComponentContainer layout) {
+        for(Component c : layout){
+            c.setReadOnly(readOnly);
+            if(c instanceof AbstractComponentContainer){
+                recursiveReadonly(readOnly, (AbstractComponentContainer)c);
+            }
+        }
     }
 
     /**
@@ -240,6 +279,41 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         toolBar.setVisible(true);
     }
 
+    /**
+     * @return the isAdvancedMode
+     */
+    public boolean isAdvancedMode() {
+        return isAdvancedMode;
+    }
+
+    /**
+     * @param isAdvancedMode the isAdvancedMode to set
+     */
+    public void setAdvancedMode(boolean isAdvancedMode) {
+        this.isAdvancedMode = isAdvancedMode;
+        advancedModeComponents.forEach(c -> c.setVisible(isAdvancedMode));
+    }
+
+    public void setAdvancedModeEnabled(boolean activate){
+        if(activate && advancedModeButton == null){
+            advancedModeButton = new Button(FontAwesome.WRENCH); // FontAwesome.FLASK
+            advancedModeButton.setIconAlternateText("Advanced mode");
+            advancedModeButton.addStyleName(ValoTheme.BUTTON_TINY);
+            toolBarButtonGroupAdd(advancedModeButton);
+            advancedModeButton.addClickListener(e -> {
+                setAdvancedMode(!isAdvancedMode);
+                }
+            );
+
+        } else if(advancedModeButton != null) {
+            toolBarButtonGroupRemove(advancedModeButton);
+            advancedModeButton = null;
+        }
+    }
+
+    public void registerAdvancedModeComponents(Component ... c){
+        advancedModeComponents.addAll(Arrays.asList(c));
+    }
 
 
     // ------------------------ event handler ------------------------ //
@@ -532,6 +606,9 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         gridLayout().addComponent(component, column1, row1, column2, row2);
     }
 
+    public void setSaveButtonEnabled(boolean enabled){
+        save.setEnabled(enabled);
+    }
 
     public void withDeleteButton(boolean withDelete){
 
@@ -545,6 +622,30 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         delete.setVisible(withDelete);
     }
 
+    public boolean addStatusMessage(String message){
+        boolean returnVal = statusMessages.add(message);
+        updateStatusLabel();
+        return returnVal;
+    }
+
+    public boolean removeStatusMessage(String message){
+        boolean returnVal = statusMessages.remove(message);
+        updateStatusLabel();
+        return returnVal;
+    }
+
+    /**
+     *
+     */
+    private void updateStatusLabel() {
+        String text = "";
+        for(String s : statusMessages){
+            text += s + " ";
+        }
+        statusMessageLabel.setValue(text);
+        statusMessageLabel.setVisible(!text.isEmpty());
+        statusMessageLabel.addStyleName(ValoTheme.LABEL_COLORED);
+    }
 
     // ------------------------ data binding ------------------------ //
 
@@ -560,6 +661,7 @@ public abstract class AbstractPopupEditor<DTO extends Object, P extends Abstract
         DTO beanToEdit = getPresenter().loadBeanById(identifier);
         fieldGroup.setItemDataSource(beanToEdit);
         afterItemDataSourceSet();
+        getPresenter().adaptToUserPermission(beanToEdit);
         isBeanLoaded = true;
     }
 
index 5931888ca1598dc5779af3181c64fd40d2b64d83..fc9178fb712aa76410e7f887a5c4fa322954fd04 100644 (file)
@@ -28,14 +28,52 @@ public abstract class AbstractPopupView<P extends AbstractPresenter> extends Abs
         return false;
     }
 
+    @Override
+    public boolean isClosable(){
+        return false;
+    }
+
     /**
      * {@inheritDoc}
      */
     @Override
-    public int getWindowPixelWidth() {
+    public int getWindowWidth() {
         return -1;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Unit getWindowWidthUnit() {
+        return Unit.PIXELS;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     *  <p>
+     *  <b>NOTE:</b> setting 100% as default height. If the height
+     *  would be undefined the window, will fit the size of
+     *  the content and will sometimes exceed the height of the
+     *  main window and will not get a scroll bar in this situation.
+     *  see #6843
+     *  </p>
+     */
+    @Override
+    public int getWindowHeight() {
+        return 100;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Unit getWindowHeightUnit() {
+        return Unit.PERCENTAGE;
+    }
+
+
     /**
      * {@inheritDoc}
      */
index 1affa63904a65128a166eb2723ec52f611051465..331b707512f3d948b21d0a1ac808cbecf7605b25 100644 (file)
@@ -11,7 +11,7 @@ import org.vaadin.spring.events.EventBus;
 
 import com.vaadin.ui.CustomComponent;
 
-import eu.etaxonomy.cdm.vaadin.security.ReleasableResourcesView;
+import eu.etaxonomy.cdm.vaadin.permission.ReleasableResourcesView;
 
 /**
  * AbstractView is the base class of all MVP views. It takes care of finding
diff --git a/src/main/java/eu/etaxonomy/vaadin/mvp/CdmEditorPresenterBase.java b/src/main/java/eu/etaxonomy/vaadin/mvp/CdmEditorPresenterBase.java
new file mode 100644 (file)
index 0000000..54bf555
--- /dev/null
@@ -0,0 +1,305 @@
+/**
+* Copyright (C) 2017 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.vaadin.mvp;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.hibernate.HibernateException;
+
+import eu.etaxonomy.cdm.api.service.IService;
+import eu.etaxonomy.cdm.cache.CdmTransientEntityCacher;
+import eu.etaxonomy.cdm.debug.PersistentContextAnalyzer;
+import eu.etaxonomy.cdm.model.ICdmCacher;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
+import eu.etaxonomy.cdm.service.CdmStore;
+import eu.etaxonomy.cdm.vaadin.event.EntityChangeEvent;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
+import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
+import eu.etaxonomy.vaadin.mvp.event.EditorPreSaveEvent;
+import eu.etaxonomy.vaadin.mvp.event.EditorSaveEvent;
+
+/**
+ * Provides generic save operations of modified cdm entities.
+ *
+ * @author a.kohlbecker
+ * @since Apr 5, 2017
+ *
+ */
+public abstract class CdmEditorPresenterBase<DTO, CDM extends CdmBase, V extends ApplicationView<?>> extends AbstractEditorPresenter<DTO, V>
+    implements CachingPresenter {
+
+    private static final long serialVersionUID = 2218185546277084261L;
+
+    private static final Logger logger = Logger.getLogger(CdmEditorPresenterBase.class);
+
+    /**
+     * if not null, this CRUD set is to be used to create a CdmAuthoritiy for the base entity which will be
+     * granted to the current use as long this grant is not assigned yet.
+     */
+    protected EnumSet<CRUD> crud = null;
+
+
+    private ICdmCacher cache;
+
+    private java.util.Collection<CdmBase> rootEntities = new HashSet<>();
+
+    public CdmEditorPresenterBase() {
+        super();
+        logger.trace(this._toString() + " constructor");
+    }
+
+    CdmStore<CDM, IService<CDM>> store ;
+
+    protected CdmAuthority newAuthorityCreated;
+
+    protected CdmStore<CDM, IService<CDM>> getStore() {
+        if(store == null){
+            store = new CdmStore<>(getRepo(), getService());
+        }
+        return store;
+    }
+
+    @Override
+    protected DTO loadBeanById(Object identifier) {
+
+        CDM cdmEntitiy;
+        if(identifier != null) {
+            UUID uuidIdentifier = (UUID)identifier;
+            // CdmAuthority is needed before the bean is loaded into the session.
+            // otherwise adding the authority to the user would cause a flush
+            cdmEntitiy = loadCdmEntity(uuidIdentifier);
+            guaranteePerEntityCRUDPermissions(cdmEntitiy);
+        } else {
+            cdmEntitiy = loadCdmEntity(null);
+            if(cdmEntitiy != null){
+                guaranteePerEntityCRUDPermissions(cdmEntitiy);
+            }
+        }
+        cache = new CdmTransientEntityCacher(this);
+        // need to use load but put see #7214
+        cdmEntitiy = cache.load(cdmEntitiy);
+        addRootEntity(cdmEntitiy);
+
+        DTO dto = createDTODecorator(cdmEntitiy);
+
+        return dto;
+    }
+
+    /**
+     * @param cdmEntitiy
+     * @return
+     */
+    protected abstract DTO createDTODecorator(CDM cdmEntitiy);
+
+    /**
+     * @param cdmEntitiy
+     */
+    @Override
+    protected void adaptToUserPermission(DTO dto) {
+
+        CDM cdmEntitiy = cdmEntity(dto);
+
+        UserHelper userHelper = UserHelper.fromSession();
+        boolean canDelte = userHelper.userHasPermission(cdmEntitiy, CRUD.DELETE);
+        boolean canEdit = userHelper.userHasPermission(cdmEntitiy, CRUD.UPDATE);
+
+        User user = userHelper.user();
+
+        if(AbstractCdmPopupEditor.class.isAssignableFrom(getView().getClass())){
+            AbstractCdmPopupEditor popupView = ((AbstractCdmPopupEditor)getView());
+
+            if(!canEdit){
+                popupView.setReadOnly(true); // never reset true to false here!
+                logger.debug("setting editor to readonly");
+            }
+            if(!canDelte){
+                popupView.withDeleteButton(false);
+                logger.debug("removing delete button");
+            }
+        }
+
+    }
+
+    /**
+     * @param dto
+     * @return
+     */
+    protected abstract CDM cdmEntity(DTO dto);
+
+    /**
+     * @param identifier
+     * @return
+     */
+    protected abstract CDM loadCdmEntity(UUID uuid);
+
+    /**
+     * Grant per entity CdmAuthority to the current user <b>for the bean which is not yet loaded</b>
+     * into the editor. The <code>CRUD</code> to be granted are stored in the <code>crud</code> field.
+     */
+    protected abstract void guaranteePerEntityCRUDPermissions(UUID identifier);
+
+    /**
+     * Grant per entity CdmAuthority to the current user for the bean which is loaded
+     * into the editor. The <code>CRUD</code> to be granted are stored in the <code>crud</code> field.
+     */
+     protected abstract void guaranteePerEntityCRUDPermissions(CDM bean);
+
+    /**
+     * @return
+     */
+    protected abstract IService<CDM> getService();
+
+    @SuppressWarnings("unchecked")
+    @Override
+    // @EventBusListenerMethod // already annotated at super class
+    public void onEditorPreSaveEvent(EditorPreSaveEvent preSaveEvent){
+
+        if(!isFromOwnView(preSaveEvent)){
+            return;
+        }
+        super.onEditorPreSaveEvent(preSaveEvent);
+    }
+
+    @Override
+    // @EventBusListenerMethod // already annotated at super class
+    public void onEditorSaveEvent(EditorSaveEvent<DTO> saveEvent){
+
+        if(!isFromOwnView(saveEvent)){
+            return;
+        }
+
+        // the bean is now updated with the changes made by the user
+        DTO dto = saveEvent.getBean();
+        CDM cdmEntity = cdmEntity(dto);
+
+        if(logger.isTraceEnabled()){
+            PersistentContextAnalyzer pca = new PersistentContextAnalyzer(cdmEntity);
+            pca.printEntityGraph(System.err);
+            pca.printCopyEntities(System.err);
+        }
+
+        if(logger.isTraceEnabled()){
+            PersistentContextAnalyzer pca = new PersistentContextAnalyzer(cdmEntity);
+            pca.printEntityGraph(System.err);
+            pca.printCopyEntities(System.err);
+        }
+        EntityChangeEvent<?> changeEvent = null;
+        try {
+            dto = preSaveBean(dto);
+            changeEvent = getStore().saveBean(cdmEntity, (AbstractView<?>) getView());
+
+            if(changeEvent != null){
+                viewEventBus.publish(this, changeEvent);
+            }
+        } catch (HibernateException e){
+            if(newAuthorityCreated != null){
+                UserHelper.fromSession().removeAuthorityForCurrentUser(newAuthorityCreated);
+            }
+            throw e;
+        } finally {
+            postSaveBean(changeEvent);
+        }
+    }
+
+    /**
+     * This method is intended to be used for the following purposes:
+     * <ol>
+     *   <li>
+     *   EditorPresenters for beans with transient properties can overwrite this method to
+     *   update the beanItem with the changes made to the transient properties.
+     *   This can be necessary because Vaadin MethodProperties are readonly when no setter is
+     *   available. This can be the case with transient properties. Automatic updating
+     *   of the property during the fieldGroup commit does not work in this case.
+     *   Presenters, however, should <b>operate on DTOs instead, which can implement the missing setter</b>.</li>
+     *
+     *   <li>When modifying a bi-directional relation between two instances the user would
+     *   need to have GrantedAuthorities for both sides of the relationship. This, however is not
+     *   always possible. As a temporary solution the user can be granted the missing authority just
+     *   for the time of saving the new relationship. You may also want to implement
+     *   {@link #postSaveBean(EntityChangeEvent)} in this case.
+     *   See {@link https://dev.e-taxonomy.eu/redmine/issues/7390 #7390}
+     *   </li>
+     * </ol>
+     *
+     */
+    protected DTO preSaveBean(DTO bean) {
+        // blank implementation, to be implemented by sub classes if needed
+        return bean;
+    }
+
+    @Override
+    protected
+    final void saveBean(DTO bean){
+        // blank implementation, since this is not needed in this or any sub class
+        // see onEditorSaveEvent() instead
+    }
+
+    /**
+     * Called after saving the DTO to the persistent storage.
+     * This method is called in any case even if the save operation failed.
+     * See {@link  #postSaveBean(EntityChangeEvent)}.
+     *
+     * @param changeEvent may be null in case of errors during the save operation
+     */
+    protected void postSaveBean(EntityChangeEvent changeEvent) {
+        // blank implementation, to be implemented by sub classes if needed
+    }
+
+    @Override
+    protected void deleteBean(DTO bean){
+        CDM cdmEntity = cdmEntity(bean);
+        EntityChangeEvent changeEvent = getStore().deleteBean(cdmEntity, (AbstractView) getView());
+        if(changeEvent != null){
+            viewEventBus.publish(this, changeEvent);
+        }
+
+    }
+
+    /**
+     * @param crud
+     */
+    public void setGrantsForCurrentUser(EnumSet<CRUD> crud) {
+        this.crud = crud;
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ICdmCacher getCache() {
+        return cache;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addRootEntity(CdmBase entity) {
+        rootEntities.add(entity);
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Collection<CdmBase> getRootEntities() {
+        return rootEntities;
+    }
+
+
+}
index a041f6c93552149eee0e7a405e4dccb37ab4ca2c..842f070e7d2640176ec3f0a4bef83b92f513dc49 100644 (file)
@@ -3,6 +3,7 @@ package eu.etaxonomy.vaadin.ui.navigation;
 import java.util.List;
 
 import com.vaadin.navigator.View;
+import com.vaadin.ui.Field;
 
 import eu.etaxonomy.vaadin.mvp.AbstractEditorPresenter;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
@@ -18,9 +19,11 @@ public interface NavigationManager {
         *         Type of the popup to open
         * @param parentView
         *         The view from where the request to open the popup is being triggered
+        * @param targetField
+        *         The field which will needs to be updated after the popup view has been closed. Can be <code>null</code>.
         * @return
         */
-       <T extends PopupView> T showInPopup(Class<T> popupType, ApplicationView parentView);
+       <T extends PopupView> T showInPopup(Class<T> popupType, ApplicationView parentView, Field<?> targetField);
 
        public List<AbstractEditorPresenter<?,?>> getPopupEditorPresenters();
 
@@ -33,4 +36,6 @@ public interface NavigationManager {
         * @return
         */
        public List<String> getCurrentViewParameters();
+
+    Field<?> targetFieldOf(ApplicationView parentView, PopupView popupView);
 }
index eccf4cde98bc3160677acb8d83f7cb554fb49317..d28690c37f553c0f9177eadc6e15426acc7e4263 100644 (file)
@@ -1,11 +1,7 @@
 package eu.etaxonomy.vaadin.ui.navigation;
 
 import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Stack;
 
 import org.apache.commons.lang3.StringUtils;
@@ -18,17 +14,17 @@ import org.vaadin.spring.events.annotation.EventBusListenerMethod;
 
 import com.vaadin.navigator.ViewChangeListener;
 import com.vaadin.navigator.ViewDisplay;
-import com.vaadin.server.Sizeable.Unit;
 import com.vaadin.spring.annotation.SpringView;
 import com.vaadin.spring.annotation.UIScope;
 import com.vaadin.spring.navigator.SpringNavigator;
 import com.vaadin.spring.navigator.SpringViewProvider;
+import com.vaadin.ui.Field;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.Window;
 
 import eu.etaxonomy.cdm.vaadin.event.AbstractEditorAction.EditorActionContext;
-import eu.etaxonomy.cdm.vaadin.security.PermissionDebugUtils;
-import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.permission.PermissionDebugUtils;
+import eu.etaxonomy.cdm.vaadin.permission.UserHelper;
 import eu.etaxonomy.vaadin.mvp.AbstractEditorPresenter;
 import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
@@ -88,7 +84,7 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
     @Autowired(required=false)
     private PermissionDebugUtils permissionDebugUtils;
 
-       private Map<PopupView, Window> popupMap;
+       private PopupViewRegistration popupViewRegistration;
 
        private String defaultViewName = null;
 
@@ -111,11 +107,10 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
 
 
        public NavigationManagerBean() {
-           popupMap = new HashMap<>();
+           popupViewRegistration = new PopupViewRegistration();
        }
 
-       private Collection<PopupView> popupViews = new HashSet<>();
-
+//     private Collection<PopupView> popupViews = new HashSet<>();
 //     @Lazy
 //    @Autowired(required=false)
 //    private void popUpViews(Collection<PopupView> popupViews){
@@ -148,6 +143,7 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
                } else {
                        super.navigateTo(navigationState);
                }
+               popupViewRegistration.removeOrphan();
        }
 
        @Override
@@ -157,6 +153,7 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
            }
                super.navigateTo(navigationState);
                //eventBus.publishEvent(new NavigationEvent(navigationState));
+               popupViewRegistration.removeOrphan();
        }
 
        @EventBusListenerMethod
@@ -165,7 +162,7 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
        }
 
        @Override
-       public <T extends PopupView> T showInPopup(Class<T> popupType, ApplicationView parentView) {
+       public <T extends PopupView> T showInPopup(Class<T> popupType, ApplicationView parentView, Field<?> targetField) {
 
            PopupView popupView =  findPopupView(popupType);
 
@@ -177,7 +174,6 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
                }
            }
 
-
                Window window = new Window();
                window.setCaption(popupView.getWindowCaption());
                window.center();
@@ -186,36 +182,36 @@ public class NavigationManagerBean extends SpringNavigator implements Navigation
                //window.setModal(popupView.isModal());
                window.setModal(true);
                window.setCaptionAsHtml(popupView.isWindowCaptionAsHtml());
-               window.setWidth(popupView.getWindowPixelWidth(), Unit.PIXELS);
-               // setting 100% as default height. If the height
-               // would be undefined the window, will fit the size of
-               // the content and will sometimes exceed the height of the
-               // main window and will not get a scroll bar in this situation.
-               // see #6843
-               window.setHeight("100%");
+               window.setWidth(popupView.getWindowWidth(), popupView.getWindowWidthUnit());
+               window.setHeight(popupView.getWindowHeight(), popupView.getWindowHeightUnit());
                window.setContent(popupView.asComponent());
                // TODO need to disallow pressing the close [x] button:
                // since window.addCloseListener(e -> popupView.cancel()); will
                // cause sending cancel events even if save has been clicked
-               window.setClosable(false);
+               window.setClosable(popupView.isClosable());
                UI.getCurrent().addWindow(window);
                popupView.viewEntered();
                popupView.focusFirst();
                uiEventBus.publish(this, new PopEditorOpenedEvent(this, popupView));
 
-               popupMap.put(popupView, window);
+               popupViewRegistration.put(window, parentView, popupView, targetField);
 
                return (T) popupView;
        }
 
+       @Override
+    public Field<?> targetFieldOf(ApplicationView parentView, PopupView popupView){
+           return popupViewRegistration.get(parentView, popupView);
+       }
+
     @EventBusListenerMethod
        protected void onDoneWithTheEditor(DoneWithPopupEvent e) {
 
                PopupView popup = e.getPopup();
-        Window window = popupMap.get(popup);
+        Window window = popupViewRegistration.getWindow(popup);
                if (window != null) {
                        window.close();
-                       popupMap.remove(popup);
+                       popupViewRegistration.remove(popup);
                }
                if(AbstractPopupEditor.class.isAssignableFrom(popup.getClass())){
                    ((AbstractPopupEditor)popup).presenter().unsubscribeFromEventBuses();
diff --git a/src/main/java/eu/etaxonomy/vaadin/ui/navigation/PopupViewRegistration.java b/src/main/java/eu/etaxonomy/vaadin/ui/navigation/PopupViewRegistration.java
new file mode 100644 (file)
index 0000000..eda8b04
--- /dev/null
@@ -0,0 +1,85 @@
+/**
+* Copyright (C) 2018 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.vaadin.ui.navigation;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.vaadin.ui.Field;
+import com.vaadin.ui.Window;
+
+import eu.etaxonomy.vaadin.mvp.ApplicationView;
+import eu.etaxonomy.vaadin.ui.view.PopupView;
+
+/**
+ * @author a.kohlbecker
+ * @since May 16, 2018
+ *
+ */
+public class PopupViewRegistration {
+
+    private Map<PopupView, Window> popupWindowMap = new HashMap<>();
+
+    private Map<ApplicationView<?>, Map<PopupView, Field<?>>> popupViewFieldMap = new HashMap<>();
+
+    /**
+     * @param view
+     * @param popup
+     * @param field can be <code>null</code>
+     * @return the previous Field associated with the popup that has been opened in the view
+     */
+    public Field<?> put(Window window, ApplicationView parentView, PopupView popup, Field<?> field){
+
+        popupWindowMap.put(popup, window);
+
+
+        if(!popupViewFieldMap.containsKey(parentView)){
+            popupViewFieldMap.put(parentView, new HashMap<>());
+        }
+        Map<PopupView, Field<?>> popupFieldMap = popupViewFieldMap.get(parentView);
+        return popupFieldMap.put(popup, field);
+    }
+
+    public Field<?> get(ApplicationView view, PopupView popup){
+        if(!popupViewFieldMap.containsKey(view)){
+            popupViewFieldMap.get(view).get(popup);
+        }
+        return null;
+    }
+
+    /**
+     * @param popup
+     */
+    public void remove(PopupView popup) {
+
+        popupWindowMap.remove(popup);
+
+        for(Map<PopupView, Field<?>> popupFieldMap : popupViewFieldMap.values()){
+            if(popupFieldMap.containsKey(popup)){
+                popupFieldMap.remove(popup);
+            }
+        }
+    }
+
+    /**
+     * @param popup
+     * @return
+     */
+    public Window getWindow(PopupView popup) {
+        return popupWindowMap.get(popup);
+    }
+
+    /**
+     *
+     */
+    public void removeOrphan() {
+        // unimplemented, only needed in case of memory leaks due to lost popups
+    }
+
+}
index b9d41e88887f30f3393af69bc766aec93f56a295..5bc32604067db8da19447864bf1cef7dd47cc9ef 100644 (file)
@@ -1,9 +1,8 @@
 package eu.etaxonomy.vaadin.ui.view;
 
-import com.vaadin.ui.Window;
+import com.vaadin.server.Sizeable.Unit;
 
 import eu.etaxonomy.vaadin.ui.CanCastComponent;
-import eu.etaxonomy.vaadin.ui.navigation.NavigationManagerBean;
 
 /**
  * This interface defines the api used by the {@link NavigationManagerBean} to
@@ -15,23 +14,43 @@ import eu.etaxonomy.vaadin.ui.navigation.NavigationManagerBean;
  */
 public interface PopupView extends CanCastComponent {
 
-    String getWindowCaption();
-
     boolean isResizable();
 
     /**
+     * Whether to show an activepopupView close button in the popup window header.
+     */
+    boolean isClosable();
+
+    boolean isModal();
+
+    /**
+     * The initial width of the window. A value of <code>-1</code>
+     * means undefined.
+     *
      * @return a positive number to define the initial with of the windows.
      * A negative number implies <b>unspecified size</b> (terminal is free
      * to set the size).
      */
-    int getWindowPixelWidth();
+    int getWindowWidth();
 
-    boolean isModal();
+
+    Unit getWindowWidthUnit();
+
+    int getWindowHeight();
 
     /**
      * The initial width of the window. A value of <code>-1</code>
      * means undefined.
      *
+     * @return a positive number to define the initial with of the windows.
+     * A negative number implies <b>unspecified size</b> (terminal is free
+     * to set the size).
+     */
+    Unit getWindowHeightUnit();
+
+    String getWindowCaption();
+
+    /**
      * @return
      */
     boolean isWindowCaptionAsHtml();
index 58771462a26d2797c1b013330afbba27a7ad993e..bd0fee41eefac0cf92f6de7dc0f89890f4526b30 100644 (file)
@@ -27,5 +27,8 @@ DistributionToolbar_LOGIN=Login
 DistributionToolbar_LOGOUT=Logout
 DistributionToolbar_SAVE=Save
 DistributionToolbar_STATUS=Status
+DistributionToolbar_HELP=Help
+HelpWindow_RESOURCE=help_en.html
+HibernateExceptionHandler_PERMISSION_DENIED=You have no permission to do that!
 SettingsDialogWindowBase_CANCEL=Cancel
 SettingsDialogWindowBase_OK=OK
index 717f5c6d3e939426f7563edb6cefd78d9e3a9d54..c8936bc710484ff28adbd686d44b62b53fc1acbc 100644 (file)
@@ -27,5 +27,8 @@ DistributionToolbar_LOGIN=Anmelden
 DistributionToolbar_LOGOUT=Abmelden
 DistributionToolbar_SAVE=Speichern
 DistributionToolbar_STATUS=Status
+DistributionToolbar_HELP=Hilfe
+HelpWindow_RESOURCE=help_de.html
+HibernateExceptionHandler_PERMISSION_DENIED=Sie haben keine ausreichenden Berechtigungen, um diesen Vorgang auszuführen!
 SettingsDialogWindowBase_CANCEL=Abbrechen
 SettingsDialogWindowBase_OK=OK
diff --git a/src/main/resources/eu/etaxonomy/cdm/vaadin/component/distributionStatus/help_de.html b/src/main/resources/eu/etaxonomy/cdm/vaadin/component/distributionStatus/help_de.html
new file mode 100644 (file)
index 0000000..dd6a1a4
--- /dev/null
@@ -0,0 +1,34 @@
+
+<h2>Schaltflächen</h2>
+
+<h3>Gebiete und Taxa</h3>
+<p>Öffnet einen Dialog zur Auswahl der zu bearbeitenden Klassifikation und zu Verfügung stehenden Gebiete.</p>
+
+<h3>Status</h3>
+<p>Öffnet einen Dialog zur Festlegung der zur Auswahl stehenden Verbreitungsstatus-Angaben und ermöglicht das Festlegen der Anzeige von Abkürzungen statt vollen Bezeichnungen</p>
+
+<h3>Taxon Details</h3>
+<p>Öffnet eine nicht editierbare Auflistung aller an ein in der Tabelle ausgewähltes Taxon angehängten Factual Data.</p>
+
+<h3>Hilfe</h3>
+<p>Öffnet das Hilfe-Fenster</p>
+
+<h3>Abmelden</h3>
+<p>Beendet die Session und führt zurück zum Login-Dialog.</p>
+
+<h2>Tabelle</h2>
+<h3>Aufbau</h3>
+<ul>
+    <li>Jede Zeile repräsentiert ein Taxon. Die Liste der angezeigten Taxa kann Ã¼ber die Schaltfläche <b>Gebiete und Taxa</b> angepasst werden.</li>
+    <li>Ein Taxon kann durch einen Klick auf dessen Namen in der Spalte "Taxon" selektiert werden.</li>
+    <li>Die Spalten "Taxon" und "Rang" sind nicht editierbar und geben Auskunft Ã¼ber den Namen und den Rang der Taxa.</li>
+    <li>Alle weiteren Spalten repräsentieren jeweils ein Verbreitungsgebiet. Die zu Verfügung stehenden Gebiete können Ã¼ber die Schaltfläche <b>Gebiete und Taxa</b> festgelegt werden.</li>   
+    <li>Ãœber den kleinen Pfeil am rechten oberen Rand der Tabelle können einzelne Spalten ein und ausgeblendet werden.</li>
+</ul>
+
+<h3>Verbreitungsstatus bearbeiten</h3>
+<ul>
+    <li>Um den Verbreitungsstatus für ein Taxon in einem bestimmten Gebiet zu bearbeiten, klicken Sie auf die Zelle in der Zeile des Taxons und der Spalte des Gebiets.</li>
+    <li>Es erscheint ein Popup-Fenster, in dem Sie einen Status durch einen Klick auswählen können. Der neue Status wird dann direkt gespeichert und das Popup-Fenster schließt sich.</i>
+    <li>Die im Popup-Fenster zu Verfügung stehenden Verbreitungsstatus können Ã¼ber die Schaltfläche <b>Status</b> festgelegt werden.</li> 
+</ul>
\ No newline at end of file
diff --git a/src/main/resources/eu/etaxonomy/cdm/vaadin/component/distributionStatus/help_en.html b/src/main/resources/eu/etaxonomy/cdm/vaadin/component/distributionStatus/help_en.html
new file mode 100644 (file)
index 0000000..f9f567a
--- /dev/null
@@ -0,0 +1,34 @@
+
+<h2>Buttons</h2>
+
+<h3>Areas and Taxa</h3>
+<p>Opens a dialog to choose the classification and areas to edit the distribution status for.</p>
+
+<h3>Status</h3>
+<p>Opens a dialog to configure the available list of distribution status and the use of abbreviated labels.</p>
+
+<h3>Taxon Details</h3>
+<p>Opens a read-only list of all factual data related to a selected taxon.</p>
+
+<h3>Help</h3>
+<p>Opens the help-window.</p>
+
+<h3>Logout</h3>
+<p>Ends the Session and redirects to the login-dialog.</p>
+
+<h2>Table</h2>
+<h3>Structure</h3>
+<ul>
+    <li>Each Row represents a taxon. The list of shown taxa can be configured by clicking the button <b>Areas and Taxa</b>.</li>
+    <li>A taxon can be selected by clicking its name in the column "Taxon".</li>
+    <li>The columns "Taxon" and "Rank" are read-only and are showing the name and rank of each taxon.</li>
+    <li>Each of the other columns represents a distribution area. The available areas can be set by clicking the button <b>Areas and Taxa</b>.</li>   
+    <li>Columns can be hidden and shown by clicking the small arrow at the upper right corner of the table.</li>
+</ul>
+
+<h3>Edit Distribution Status</h3>
+<ul>
+    <li>To edit the distribution status for a taxon in  a specific area, click on the cell in teh row of the taxon and the column of the area.</li>
+    <li>A popup-window shows up in which you can choose a distribution status by clicking on it. The new status is saved immediately and the popup-window is closed automatically.</i>
+    <li>The available distribution status to choose from in the popup-window can be configured by clicking the button <b>Status</b>.</li> 
+</ul>
\ No newline at end of file
index 85a05f861a979a27dc13bf0778b36e925bc763d7..1d94c78cc909366c6827ba284d70f8715989c965 100644 (file)
@@ -95,6 +95,17 @@ body .edit-valo { // increasing specifity to allow overriding the valo default f
     }
   }
   
+  // ------------ NameRelationField ------------ //
+  .v-name-relation-field {
+      .toolbar {
+            float: right;
+            height: $v-unit-size;
+      }
+      .margin-wrapper {
+          @include composite-field-wrapper;
+      }
+  }
+  
   // ------------ v-person-field ------------ //
   .v-person-field {
     position: relative;
index 1d04f8319e79e129e3fa338eebf2e612b826d0bd..c11e652a8943c859fe5338002535db15da1ab143 100644 (file)
@@ -119,6 +119,12 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
        line-height: 50px;
      }
    }
+   
+   .v-button-center-h {
+    // requires width to be defined 
+    display: block;
+    margin: 0 auto;
+   }
 
    .v-label .caption {
        font-size: $v-font-size--small;
@@ -168,6 +174,17 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
           }
       }
     }
+    
+    // ==== styles in eu.etaxonomy.cdm.vaadin.theme.EditValoTheme ==== // 
+    
+    // style for buttons highlighted as being active
+    .v-button-highlite {
+        color: $v-focus-color;
+    }
+    
+    .v-panel-padding-left .v-panel-content {
+        padding-left: round($v-unit-size / 4);
+    }
 
     // ===== workflow ==== // 
     
@@ -176,9 +193,6 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
                 .v-gridlayout-slot {
                     border-bottom: valo-border($border: $v-border, $color: $v-background-color, $strength: 1.4);
                 }
-                .v-panel-content {
-                    padding-left: round($v-unit-size / 4);
-                }
             }
          .v-gridlayout-registration-list-item {
             padding: 0 round($v-unit-size / 4);
@@ -242,13 +256,6 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
         }
     }
     
-    
-   // --------------------------------------------------- //
-   // style for blocked by buttons
-   
-    .v-button-blocked {
-        color: $v-focus-color;
-    }
    
    // --------------------------------------------------- //
 
@@ -267,16 +274,17 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
     }
 
     // --------------------------------------------------- //
-    
+    .v-caption-submitter {
+            margin-right: round($v-unit-size / 8);
+    }
+        
     .registration-list-item {
         border-bottom: valo-border($border: $v-border, $color: $v-background-color, $strength: 0.7);
         padding-top: 4px; // avoid button group to overlap with border
         .v-label-registration-state {
             margin-right: round($v-unit-size / 4);
         }            
-        .v-caption-submitter {
-            margin-right: round($v-unit-size / 8);
-        }
+        
     }
 
    .registration-workflow-item {
@@ -348,22 +356,25 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
         }
     }
 
-    // ----------------------------------------------- //
+    // =============================================== //
+    .registration-status {
+        display: block;
+    }
     
    // status colors --------------------------------- //
-    .status-REJECTED {
+    .registration-status-REJECTED {
         color: $status-rejected-color;
     }
-    .status-CURATION {
+    .registration-status-CURATION {
         color: $status-curation-color;
     }
-    .status-PREPARATION {
+    .registration-status-PREPARATION {
         color: $status-preparation-color;
     }
-    .status-PUBLISHED {
+    .registration-status-PUBLISHED {
         color: $status-published-color;
     }
-    .status-READY {
+    .registration-status-READY {
         color: $status-ready-color;
     }
 
@@ -452,5 +463,14 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
         }
     }
 
+    // ---------- ---------- //
 
+    .v-slot-message-item {
+        .date-time {
+            font-weight: lighter;
+        }
+        .user-name {
+            font-weight: bold;
+        }
+    }
 }
index 395c5fdf137014a9e3e84a0bee8bf154cdd02f06..39a0bdcaa7a6911cadc740356ad068893585f531 100644 (file)
@@ -10,13 +10,13 @@ package eu.etaxonomy.cdm;
 
 import org.hibernate.SessionFactory;
 import org.junit.runner.RunWith;
+import org.unitils.AlternativeUnitilsJUnit4TestClassRunner;
 import org.unitils.database.annotations.Transactional;
 import org.unitils.database.util.TransactionMode;
 import org.unitils.spring.annotation.SpringApplicationContext;
 import org.unitils.spring.annotation.SpringBeanByType;
 
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
-import unitils.AlternativeUnitilsJUnit4TestClassRunner;
 
 /**
  * Base test class for pure service layer tests.
index bcc5303845cce8edfbf0b1c55a42c7b5e8298828..f7cd7a3921dcdbcdf959abbb55d298edcc0d92fe 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.service;
 import java.io.FileNotFoundException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.UUID;
 
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -26,6 +27,7 @@ import org.unitils.spring.annotation.SpringBeanByType;
 
 import eu.etaxonomy.cdm.CdmVaadinIntegrationTest;
 import eu.etaxonomy.cdm.api.application.CdmRepository;
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
 import eu.etaxonomy.cdm.api.utility.DerivedUnitConversionException;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
@@ -43,7 +45,6 @@ import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 import eu.etaxonomy.cdm.vaadin.model.registration.KindOfUnitTerms;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
 import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
@@ -69,11 +70,13 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
        // Logger.getLogger("org.dbunit").setLevel(Level.DEBUG);
     }
 
-    int registrationId = 5000;
+    UUID registrationUuid = UUID.fromString("c8bb4e70-ca85-43c3-ae81-c90a2b41a93f"); // 5000;
 
-    private Integer publicationId = 5000;
+    private UUID publicationUuid = UUID.fromString("45804c65-7df9-42fd-b43a-818a8958c264"); // 5000;
 
-    private Integer typifiedNameId = 5000;
+    private UUID typifiedNameUuid = UUID.fromString("47d9263e-b32a-42af-98ea-5528f154384f"); //  5000;
+
+    UUID fieldUnitUuid = UUID.fromString("22be718a-6f21-4b74-aae3-bb7d7d659e1c"); // 5001
 
     private final String[] includeTableNames_create = new String[]{"TAXONNAME", "REFERENCE", "AGENTBASE", "HOMOTYPICALGROUP", "REGISTRATION",
             "HIBERNATE_SEQUENCES"};
@@ -99,13 +102,13 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 //                "REPRESENTATION", "REPRESENTATION_AUD", "HIBERNATE_SEQUENCES"},
 //                "RegistrationTerms");
 
-       SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.create(registrationId, publicationId, typifiedNameId);
+       SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.create(registrationUuid, publicationUuid, typifiedNameUuid);
 
        Assert.assertNotNull(workingset.getOwner());
        Assert.assertEquals(Registration.class, workingset.getOwner().getClass());
 
        workingset.getFieldUnit().setFieldNotes("FieldNotes");
-       int baseEntityID = workingset.getFieldUnit().getId();
+       // int baseEntityID = workingset.getFieldUnit().getId();
        workingset.getFieldUnit().setFieldNumber("FieldNumber");
        workingset.getFieldUnit().getGatheringEvent().setLocality(LanguageString.NewInstance("Somewhere", Language.ENGLISH()));
 
@@ -124,9 +127,9 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
        printDataSetWithNull(System.err, new String[]{"TYPEDESIGNATIONBASE", "SPECIMENOROBSERVATIONBASE"});
 
-       TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, baseEntity.getId(), baseEntity.getTitleCache());
+       TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, baseEntity.getUuid(), baseEntity.getTitleCache());
 
-       workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+       workingset = service.load(registrationUuid, baseEntityRef);
 
        Assert.assertNotNull(specimenTypeDesignationDTO.asSpecimenTypeDesignation().getTypeSpecimen());
        Assert.assertEquals(MediaSpecimen.class, specimenTypeDesignationDTO.asSpecimenTypeDesignation().getTypeSpecimen().getClass());
@@ -143,7 +146,7 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
        service.save(workingset);
 
-       workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+       workingset = service.load(registrationUuid, baseEntityRef);
        Assert.assertTrue(workingset.getSpecimenTypeDesignationDTOs().size() == 2);
 
 
@@ -174,8 +177,8 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
     public void test03_deleteTypeDesignationTest() {
 
         // FieldUnit" ID="5001
-        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, 5001, "Somewhere, FieldNumber.");
-        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, fieldUnitUuid, "Somewhere, FieldNumber.");
+        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.load(registrationUuid, baseEntityRef);
         Assert.assertTrue(workingset.getSpecimenTypeDesignationDTOs().size() == 2);
 
         SpecimenTypeDesignationDTO deleteDTO = null;
@@ -191,7 +194,7 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
         // printDataSetWithNull(System.err, includeTableNames_delete);
 
-        workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+        workingset = service.load(registrationUuid, baseEntityRef);
         Registration reg = workingset.getOwner();
         Assert.assertEquals(1, workingset.getSpecimenTypeDesignationDTOs().size());
         reg = workingset.getOwner();
@@ -204,9 +207,9 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
 //        printDataSetWithNull(System.err, includeTableNames_delete);
 
-        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, 5001, null);
+        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, fieldUnitUuid, null);
 
-        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.load(registrationUuid, baseEntityRef);
         Assert.assertNotNull(workingset.getOwner());
         Assert.assertEquals(2, workingset.getSpecimenTypeDesignationDTOs().size());
         service.delete(workingset, true);
@@ -241,19 +244,19 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
         Team team = Team.NewTitledInstance("Novis, Braidwood & Kilroy", "Novis, Braidwood & Kilroy");
         Reference nomRef = ReferenceFactory.newArticle();
+        nomRef.setUuid(publicationUuid);
         nomRef = cdmRepository.getReferenceService().save(nomRef);
-        publicationId = nomRef.getId();
 
         nomRef.setAuthorship(team);
         nomRef.setTitle("P.M. Novis, J. Braidwood & C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64");
         TaxonName name = TaxonName.NewInstance(NomenclaturalCode.ICNAFP, Rank.SPECIES(), "Planothidium", null,  "victori", null, null, nomRef, "11-45", null);
+        name.setUuid(typifiedNameUuid);
         name = cdmRepository.getNameService().save(name);
-        typifiedNameId = name.getId();
 
         Registration reg = Registration.NewInstance();
         reg.setName(name);
+        reg.setUuid(registrationUuid);
         reg = cdmRepository.getRegistrationService().save(reg);
-        registrationId = reg.getId();
 
 
         //printDataSetWithNull(System.err, includeTableNames_create);
index 4e71903a7e6903f19630501b8994625638e53253..8ce6c2936e3a6bb0e65de9b4dd114ca88856c996 100644 (file)
@@ -23,7 +23,7 @@ import elemental.json.JsonArray;
 
 /**
  * @author cmathew
- * @date 8 Apr 2015
+ * @since 8 Apr 2015
  *
  */
 @StyleSheet({"css/d3.ctree.css"})
index 74f36728a1376340f8c964c8d71611969796d628..980a583d4a6178d1454b1585d5e622ab74360fe3 100644 (file)
@@ -12,7 +12,7 @@ import com.vaadin.shared.ui.JavaScriptComponentState;
 
 /**
  * @author cmathew
- * @date 8 Apr 2015
+ * @since 8 Apr 2015
  *
  */
 public class D3CTreeState extends JavaScriptComponentState {
index ed3c33ebad2e7fa7534b99b5eb8e9c0e06a0a6c0..1a02de7e08016127fc25271e7be858a143613147 100644 (file)
@@ -16,6 +16,8 @@ import java.util.Set;
 import org.junit.Assert;
 import org.junit.Test;
 
+import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
+import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.Registration;
@@ -27,8 +29,6 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationDTO;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationValidationException;
 
 /**
  * @author a.kohlbecker
@@ -59,7 +59,7 @@ public class RegistrationWorkingSetTest {
         dtos.add(new RegistrationDTO(reg2));
 
         RegistrationWorkingSet ws = new RegistrationWorkingSet(dtos);
-        Assert.assertEquals(article.getId(), ws.getCitationId().intValue());
+        Assert.assertEquals(article.getUuid(), ws.getCitationUuid());
         Assert.assertEquals(2, ws.getRegistrations().size());
     }
 
@@ -96,7 +96,7 @@ public class RegistrationWorkingSetTest {
         dtos.add(new RegistrationDTO(reg2));
 
         RegistrationWorkingSet ws = new RegistrationWorkingSet(dtos);
-        Assert.assertEquals(article.getId(), ws.getCitationId().intValue());
+        Assert.assertEquals(article.getUuid(), ws.getCitationUuid());
         Assert.assertEquals(2, ws.getRegistrations().size());
     }
 
index 29f1d34ceefb3b931593156c29144da160693cc8..d3416a6bc20cc087de42b0e3a2bad0f45702b8f7 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.vaadin.view.AuthenticationPresenter;
 
 /**
  * @author cmathew
- * @date 28 Apr 2015
+ * @since 28 Apr 2015
  *
  */
 public class AuthenticationPresenterTest extends CdmVaadinBaseTest {
index 6c1743ab50870ad3c8e589e4c11903c78621112c..93f18a9e313d9bc004faa12988b9f36d34e1c36d 100644 (file)
@@ -33,7 +33,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 9 Apr 2015
+ * @since 9 Apr 2015
  *
  */
 @DataSets({
index e9eeaa55f5a337eaa8052dff6d784bd4ad7c2464..7236edeaa9dc572f18f8922b89ddd0ff81e232ca 100644 (file)
@@ -33,7 +33,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 13 Apr 2015
+ * @since 13 Apr 2015
  *
  */
 @DataSets({
index 357456d903749d70b76a5cbdb9317c96739f1bc8..0d09109599d28916f24a07bb1aa1cfc642aea0ad 100644 (file)
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
 
 /**
  * @author cmathew
- * @date 2 Apr 2015
+ * @since 2 Apr 2015
  *
  */
 @DataSets({
index ed4a4a99ae155c8f4125dfe68e1dc6c85b2d7904..08becbd155807d1efd2eb6a2bf4aa62cf08cf0ac 100644 (file)
@@ -33,7 +33,7 @@ import eu.etaxonomy.cdm.vaadin.container.LeafNodeTaxonContainer;
 
 /**
  * @author cmathew
- * @date 10 Mar 2015
+ * @since 10 Mar 2015
  */
 @DataSets({
     @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class),
@@ -51,7 +51,6 @@ public class StatusPresenterTest extends CdmVaadinBaseTest {
     }
 
     @Test
-    @Ignore
     public void testLoadTaxa() throws SQLException {
 
         LeafNodeTaxonContainer container = sp.loadTaxa(11);
@@ -75,7 +74,6 @@ public class StatusPresenterTest extends CdmVaadinBaseTest {
     }
 
     @Test
-    @Ignore
     public void testSynonyms() throws SQLException {
 
         LeafNodeTaxonContainer container = sp.loadTaxa(11);
index 3032303ef1a7738fa502e1e1042d4fe92a4b9266..a924a6aca943d80fc5cf8cbeeed4da31b2c564f9 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.vaadin.jscomponent.D3CTree;
 
 /**
  * @author cmathew
- * @date 8 Apr 2015
+ * @since 8 Apr 2015
  *
  */
 @Theme("edit")
index dc25ffcf30cd1250360e7037f9d35c4ff7136b10..9bbbed1365f10c45839fadea90ca53fb21a82c45 100644 (file)
@@ -24,6 +24,11 @@ import org.junit.Before;
 import org.junit.Test;
 
 import eu.etaxonomy.cdm.CdmVaadinIntegrationTest;
+import eu.etaxonomy.cdm.api.service.dto.EntityReference;
+import eu.etaxonomy.cdm.api.service.dto.TypedEntityReference;
+import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager;
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.TypeDesignationWorkingSet;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
@@ -38,10 +43,6 @@ import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
-import eu.etaxonomy.cdm.vaadin.model.EntityReference;
-import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
-import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSet;
-import eu.etaxonomy.cdm.vaadin.view.registration.RegistrationValidationException;
 
 /**
  * @author a.kohlbecker
diff --git a/src/test/java/unitils/AlternativeUnitilsJUnit4TestClassRunner.java b/src/test/java/unitils/AlternativeUnitilsJUnit4TestClassRunner.java
deleted file mode 100644 (file)
index 1c6b287..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
-* Copyright (C) 2017 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 unitils;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.junit.internal.runners.InitializationError;
-import org.junit.runner.notification.RunNotifier;
-import org.unitils.UnitilsJUnit4TestClassRunner;
-
-/**
- * A runner which enables all vaadin UIs for the tests
- *
- * @author a.kohlbecker
- * @since Nov 23, 2017
- *
- */
-public class AlternativeUnitilsJUnit4TestClassRunner extends UnitilsJUnit4TestClassRunner {
-
-    /**
-     * @param testClass
-     * @throws InitializationError
-     */
-    public AlternativeUnitilsJUnit4TestClassRunner(Class<?> testClass) throws InitializationError {
-        super(testClass);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void run(RunNotifier notifier) {
-
-        loadSystemPropertiesFrom("spring-environment.mock.properties");
-        super.run(notifier);
-    }
-
-    /**
-     * @param propFile
-     */
-    protected void loadSystemPropertiesFrom(String propFile) {
-        InputStream inStream = this.getClass().getClassLoader().getResourceAsStream(propFile);
-        //Properties props = new Properties();
-        try {
-            // props.load(inStream);
-            System.getProperties().load(inStream);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-
-
-}
diff --git a/src/test/resources/dbscripts/001-cdm.h2.sql b/src/test/resources/dbscripts/001-cdm.h2.sql
deleted file mode 100644 (file)
index 407adcc..0000000
+++ /dev/null
@@ -1,6654 +0,0 @@
-SET CLUSTER '';\r
-SET DEFAULT_TABLE_TYPE 0;\r
-SET WRITE_DELAY 500;\r
-SET DEFAULT_LOCK_TIMEOUT 2000;\r
-SET CACHE_SIZE 16384;\r
-\r
-CREATE USER IF NOT EXISTS EDIT PASSWORD '' ADMIN;\r
-CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_10A55F0A_EE57_42DB_8046_6240A60AD0EC START WITH 4 BELONGS_TO_TABLE;\r
-\r
-\r
-CREATE CACHED TABLE PUBLIC.ADDRESS(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LOCALITY VARCHAR(255),\r
-    LOCATION_ERRORRADIUS INTEGER,\r
-    LOCATION_LATITUDE DOUBLE,\r
-    LOCATION_LONGITUDE DOUBLE,\r
-    POBOX VARCHAR(255),\r
-    POSTCODE VARCHAR(255),\r
-    REGION VARCHAR(255),\r
-    STREET VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    COUNTRY_ID INTEGER,\r
-    LOCATION_REFERENCESYSTEM_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ADDRESS;\r
-CREATE CACHED TABLE PUBLIC.ADDRESS_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LOCALITY VARCHAR(255),\r
-    LOCATION_ERRORRADIUS INTEGER,\r
-    LOCATION_LATITUDE DOUBLE,\r
-    LOCATION_LONGITUDE DOUBLE,\r
-    POBOX VARCHAR(255),\r
-    POSTCODE VARCHAR(255),\r
-    REGION VARCHAR(255),\r
-    STREET VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    COUNTRY_ID INTEGER,\r
-    LOCATION_REFERENCESYSTEM_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ADDRESS_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-       PROTECTEDCOLLECTORTITLECACHE BOOLEAN NOT NULL,\r
-       COLLECTORTITLE VARCHAR(255),\r
-       PROTECTEDNOMENCLATURALTITLECACHE BOOLEAN,\r
-    NOMENCLATURALTITLE VARCHAR(255),\r
-    CODE VARCHAR(255),\r
-    NAME VARCHAR(255),\r
-    FIRSTNAME VARCHAR(255),\r
-       INITIALS VARCHAR(50),\r
-    LASTNAME VARCHAR(255),\r
-    LIFESPAN_END VARCHAR(255),\r
-    LIFESPAN_FREETEXT VARCHAR(255),\r
-    LIFESPAN_START VARCHAR(255),\r
-    PREFIX VARCHAR(255),\r
-    SUFFIX VARCHAR(255),\r
-       HASMOREMEMBERS BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ISPARTOF_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE;\r
-CREATE INDEX PUBLIC.AGENTTITLECACHEINDEX ON PUBLIC.AGENTBASE(TITLECACHE);\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    PROTECTEDCOLLECTORTITLECACHE BOOLEAN NOT NULL,\r
-       COLLECTORTITLE VARCHAR(255),\r
-    NOMENCLATURALTITLE VARCHAR(255),\r
-    PROTECTEDNOMENCLATURALTITLECACHE BOOLEAN,\r
-    FIRSTNAME VARCHAR(255),\r
-    INITIALS VARCHAR(50),\r
-       LASTNAME VARCHAR(255),\r
-    LIFESPAN_END VARCHAR(255),\r
-    LIFESPAN_FREETEXT VARCHAR(255),\r
-    LIFESPAN_START VARCHAR(255),\r
-    PREFIX VARCHAR(255),\r
-    SUFFIX VARCHAR(255),\r
-    CODE VARCHAR(255),\r
-    NAME VARCHAR(255), \r
-       HASMOREMEMBERS BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       ISPARTOF_ID INTEGER,\r
-\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_ADDRESS(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_ADDRESSES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_ADDRESS;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_ADDRESS_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_ADDRESSES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_ADDRESS_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_AGENTBASE(\r
-    TEAM_ID INTEGER NOT NULL,\r
-    TEAMMEMBERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_AGENTBASE;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TEAM_ID INTEGER NOT NULL,\r
-    TEAMMEMBERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_AGENTBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_ANNOTATION(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CREDIT(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE(\r
-    INSTITUTION_ID INTEGER NOT NULL,\r
-    TYPES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_DEFINEDTERMBASE;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    INSTITUTION_ID INTEGER NOT NULL,\r
-    TYPES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_DEFINEDTERMBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_EXTENSION(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_MARKER(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_MEDIA(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_MEDIA;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_MEDIA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_MEDIA_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_RIGHTSINFO(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_EMAILADDRESSES_ELEMENT VARCHAR(255)\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_EMAILADDRESSES_ELEMENT VARCHAR(255) NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_FAXNUMBERS_ELEMENT VARCHAR(255)\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_FAXNUMBERS_ELEMENT VARCHAR(255) NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_PHONENUMBERS_ELEMENT VARCHAR(255)\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_PHONENUMBERS_ELEMENT VARCHAR(255) NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS_AUD;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_URLS(\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_URLS_ELEMENT VARCHAR(255)\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_URLS;\r
-CREATE CACHED TABLE PUBLIC.AGENTBASE_CONTACT_URLS_AUD(\r
-    REV INTEGER NOT NULL,\r
-    AGENTBASE_ID INTEGER NOT NULL,\r
-    CONTACT_URLS_ELEMENT VARCHAR(255) NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_CONTACT_URLS_AUD;\r
-\r
-CREATE TABLE AMPLIFICATION (\r
-     ID INTEGER NOT NULL,\r
-     CREATED TIMESTAMP,\r
-     UUID VARCHAR(36),\r
-     UPDATED TIMESTAMP,\r
-     DESCRIPTION VARCHAR(255),\r
-     TIMEPERIOD_END VARCHAR(255),\r
-     TIMEPERIOD_FREETEXT VARCHAR(255),\r
-     TIMEPERIOD_START VARCHAR(255),\r
-     ELECTROPHORESISVOLTAGE DOUBLE,\r
-     GELCONCENTRATION DOUBLE,\r
-     GELRUNNINGTIME DOUBLE,\r
-     LADDERUSED VARCHAR(255),\r
-        LABELCACHE VARCHAR(255),\r
-     CREATEDBY_ID INTEGER,\r
-     UPDATEDBY_ID INTEGER,\r
-     ACTOR_ID INTEGER,\r
-     FORWARDPRIMER_ID INTEGER,\r
-     DNAMARKER_ID INTEGER,\r
-     PURIFICATION_ID INTEGER,\r
-     INSTITUTION_ID INTEGER,\r
-        REVERSEPRIMER_ID INTEGER,\r
-     PRIMARY KEY (ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATION_AUD (\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    ELECTROPHORESISVOLTAGE DOUBLE,\r
-    GELCONCENTRATION DOUBLE,\r
-    GELRUNNINGTIME DOUBLE,\r
-    LADDERUSED VARCHAR(255),\r
-    LABELCACHE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    FORWARDPRIMER_ID INTEGER,\r
-    DNAMARKER_ID INTEGER,\r
-    PURIFICATION_ID INTEGER,\r
-    INSTITUTION_ID INTEGER,\r
-       REVERSEPRIMER_ID INTEGER,\r
-    PRIMARY KEY (ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATION_ANNOTATION (\r
-    AMPLIFICATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (AMPLIFICATION_ID, ANNOTATIONS_ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATION_ANNOTATION_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    AMPLIFICATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE AMPLIFICATION_MARKER (\r
-    AMPLIFICATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (AMPLIFICATION_ID, MARKERS_ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATION_MARKER_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    AMPLIFICATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-);\r
-\r
-CREATE TABLE AMPLIFICATIONRESULT (\r
-     ID INTEGER NOT NULL,\r
-     CREATED TIMESTAMP,\r
-     UUID VARCHAR(36),\r
-     UPDATED TIMESTAMP,\r
-     SUCCESSTEXT VARCHAR(255),\r
-     SUCCESSFUL BOOLEAN,\r
-     CREATEDBY_ID INTEGER,\r
-     UPDATEDBY_ID INTEGER,\r
-     CLONING_ID INTEGER,\r
-     DNASAMPLE_ID INTEGER,\r
-        AMPLIFICATION_ID INTEGER,\r
-        GELPHOTO_ID INTEGER,\r
-     PRIMARY KEY (ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATIONRESULT_AUD (\r
-     ID INTEGER NOT NULL,\r
-        REV INTEGER NOT NULL,\r
-     REVTYPE TINYINT,\r
-     CREATED TIMESTAMP,\r
-     UUID VARCHAR(36),\r
-     UPDATED TIMESTAMP,\r
-     SUCCESSTEXT VARCHAR(255),\r
-     SUCCESSFUL BOOLEAN,\r
-     CREATEDBY_ID INTEGER,\r
-     UPDATEDBY_ID INTEGER,\r
-     CLONING_ID INTEGER,\r
-     DNASAMPLE_ID INTEGER,\r
-     AMPLIFICATION_ID INTEGER,\r
-        GELPHOTO_ID INTEGER,\r
-     PRIMARY KEY (ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATIONRESULT_ANNOTATION (\r
-    AMPLIFICATIONRESULT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (AMPLIFICATIONRESULT_ID, ANNOTATIONS_ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATIONRESULT_ANNOTATION_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    AMPLIFICATIONRESULT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE AMPLIFICATIONRESULT_MARKER (\r
-    AMPLIFICATIONRESULT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (AMPLIFICATIONRESULT_ID, MARKERS_ID)\r
-);\r
-\r
-CREATE TABLE AMPLIFICATIONRESULT_MARKER_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    AMPLIFICATIONRESULT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-);\r
-\r
-\r
-CREATE CACHED TABLE PUBLIC.ANNOTATION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    LINKBACKURI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    ANNOTATIONTYPE_ID INTEGER,\r
-    COMMENTATOR_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.ANNOTATION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    LINKBACKURI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    ANNOTATIONTYPE_ID INTEGER,\r
-    COMMENTATOR_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.ANNOTATION_ANNOTATION(\r
-    ANNOTATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANNOTATION_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.ANNOTATION_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    ANNOTATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANNOTATION_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.ANNOTATION_MARKER(\r
-    ANNOTATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANNOTATION_MARKER;\r
-CREATE CACHED TABLE PUBLIC.ANNOTATION_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    ANNOTATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANNOTATION_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.AUDITEVENT(\r
-    REVISIONNUMBER INTEGER DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_10A55F0A_EE57_42DB_8046_6240A60AD0EC) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_10A55F0A_EE57_42DB_8046_6240A60AD0EC,\r
-    DATE TIMESTAMP,\r
-    TIMESTAMP BIGINT,\r
-    UUID VARCHAR(255)\r
-);\r
--- 3 +/- SELECT COUNT(*) FROM PUBLIC.AUDITEVENT;\r
-CREATE CACHED TABLE PUBLIC.CDM_VIEW(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    DESCRIPTION VARCHAR(255),\r
-    NAME VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    REFERENCE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CDM_VIEW;\r
-CREATE CACHED TABLE PUBLIC.CDM_VIEW_CDM_VIEW(\r
-    CDM_VIEW_ID INTEGER NOT NULL,\r
-    SUPERVIEWS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CDM_VIEW_CDM_VIEW;\r
-CREATE CACHED TABLE PUBLIC.CDMMETADATA(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    PROPERTYNAME VARCHAR(20),\r
-    VALUE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER\r
-);\r
--- 3 +/- SELECT COUNT(*) FROM PUBLIC.CDMMETADATA;\r
-CREATE CACHED TABLE PUBLIC.CDMPREFERENCE(\r
-    KEY_SUBJECT VARCHAR(100),\r
-    KEY_PREDICATE VARCHAR(100),\r
-    VALUE VARCHAR(1023),\r
-       ALLOWOVERRIDE BOOLEAN NOT NULL\r
-);\r
--- 3 +/- SELECT COUNT(*) FROM PUBLIC.CDMPREFERENCE;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    MICROREFERENCE VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    NAME_ID INTEGER,\r
-    REFERENCE_ID INTEGER,\r
-    ROOTNODE_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    MICROREFERENCE VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    NAME_ID INTEGER,\r
-    REFERENCE_ID INTEGER,\r
-    ROOTNODE_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_ANNOTATION(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_CREDIT(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_CREDIT_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-       DESCRIPTION_ID INTEGER NOT NULL,\r
-       DESCRIPTION_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    GEOSCOPES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    GEOSCOPES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_MARKER(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_MARKER;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO(\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CLASSIFICATION_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_RIGHTSINFO_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.COLLECTION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    CODE VARCHAR(255),\r
-    CODESTANDARD VARCHAR(255),\r
-    NAME VARCHAR(255),\r
-    TOWNORLOCATION VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    INSTITUTE_ID INTEGER,\r
-    SUPERCOLLECTION_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION;\r
-CREATE INDEX PUBLIC.COLLECTIONTITLECACHEINDEX ON PUBLIC.COLLECTION(TITLECACHE);\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    CODE VARCHAR(255),\r
-    CODESTANDARD VARCHAR(255),\r
-    NAME VARCHAR(255),\r
-    TOWNORLOCATION VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    INSTITUTE_ID INTEGER,\r
-    SUPERCOLLECTION_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_ANNOTATION(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_CREDIT(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_EXTENSION(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_MARKER(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_MARKER;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_MEDIA(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_MEDIA;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_MEDIA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_MEDIA_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_RIGHTSINFO(\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.COLLECTION_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COLLECTION_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.CREDIT(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    ABBREVIATEDTEXT VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    AGENT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CREDIT;\r
-CREATE CACHED TABLE PUBLIC.CREDIT_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    ABBREVIATEDTEXT VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    AGENT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.CREDIT_ANNOTATION(\r
-    CREDIT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CREDIT_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.CREDIT_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CREDIT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CREDIT_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.CREDIT_MARKER(\r
-    CREDIT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CREDIT_MARKER;\r
-CREATE CACHED TABLE PUBLIC.CREDIT_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    CREDIT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.CREDIT_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TERMTYPE VARCHAR(4),\r
-    IDINVOCABULARY VARCHAR(255),\r
-       SYMBOL VARCHAR(30),\r
-       INVERSESYMBOL VARCHAR(30),\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    URI CLOB,\r
-    ISO639_1 VARCHAR(2),\r
-    RANKCLASS VARCHAR(4) NOT NULL,\r
-    ISTECHNICAL BOOLEAN,\r
-    ABSENCETERM BOOLEAN NOT NULL,\r
-    ORDERINDEX INTEGER,\r
-    SYMMETRICAL BOOLEAN,\r
-    TRANSITIVE BOOLEAN,\r
-    DEFAULTCOLOR VARCHAR(255),\r
-    SUPPORTSCATEGORICALDATA BOOLEAN,\r
-    SUPPORTSCOMMONTAXONNAME BOOLEAN,\r
-    SUPPORTSDISTRIBUTION BOOLEAN,\r
-    SUPPORTSINDIVIDUALASSOCIATION BOOLEAN,\r
-    SUPPORTSQUANTITATIVEDATA BOOLEAN,\r
-    SUPPORTSTAXONINTERACTION BOOLEAN,\r
-    SUPPORTSTEXTDATA BOOLEAN,\r
-    POINTAPPROXIMATION_ERRORRADIUS INTEGER,\r
-    POINTAPPROXIMATION_LATITUDE DOUBLE,\r
-    POINTAPPROXIMATION_LONGITUDE DOUBLE,\r
-    VALIDPERIOD_END VARCHAR(255),\r
-    VALIDPERIOD_FREETEXT VARCHAR(255),\r
-    VALIDPERIOD_START VARCHAR(255),\r
-    ISO3166_A2 VARCHAR(2),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    KINDOF_ID INTEGER,\r
-    PARTOF_ID INTEGER,\r
-    VOCABULARY_ID INTEGER,\r
-    LEVEL_ID INTEGER,\r
-    POINTAPPROXIMATION_REFERENCESYSTEM_ID INTEGER,\r
-    SHAPE_ID INTEGER,\r
-    TYPE_ID INTEGER,\r
-       STRUCTURE_ID INTEGER,\r
-       PROPERTY_ID INTEGER,\r
-);\r
--- 2084 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TERMTYPE VARCHAR(4),\r
-    IDINVOCABULARY VARCHAR(255),\r
-       SYMBOL VARCHAR(30),\r
-       INVERSESYMBOL VARCHAR(30),\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    URI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    KINDOF_ID INTEGER,\r
-    PARTOF_ID INTEGER,\r
-    VOCABULARY_ID INTEGER,\r
-    ORDERINDEX INTEGER,\r
-    ISO639_1 VARCHAR(2),\r
-    RANKCLASS VARCHAR(4) NOT NULL,\r
-    SUPPORTSCATEGORICALDATA BOOLEAN,\r
-    SUPPORTSCOMMONTAXONNAME BOOLEAN,\r
-    SUPPORTSDISTRIBUTION BOOLEAN,\r
-    SUPPORTSINDIVIDUALASSOCIATION BOOLEAN,\r
-    SUPPORTSQUANTITATIVEDATA BOOLEAN,\r
-    SUPPORTSTAXONINTERACTION BOOLEAN,\r
-    SUPPORTSTEXTDATA BOOLEAN,\r
-    SYMMETRICAL BOOLEAN,\r
-    TRANSITIVE BOOLEAN,\r
-    ISTECHNICAL BOOLEAN,\r
-    ABSENCETERM BOOLEAN NOT NULL,\r
-    DEFAULTCOLOR VARCHAR(255),\r
-    POINTAPPROXIMATION_ERRORRADIUS INTEGER,\r
-    POINTAPPROXIMATION_LATITUDE DOUBLE,\r
-    POINTAPPROXIMATION_LONGITUDE DOUBLE,\r
-    VALIDPERIOD_END VARCHAR(255),\r
-    VALIDPERIOD_FREETEXT VARCHAR(255),\r
-    VALIDPERIOD_START VARCHAR(255),\r
-    ISO3166_A2 VARCHAR(2),\r
-       LEVEL_ID INTEGER,\r
-    POINTAPPROXIMATION_REFERENCESYSTEM_ID INTEGER,\r
-    SHAPE_ID INTEGER,\r
-    TYPE_ID INTEGER,\r
-    STRUCTURE_ID INTEGER,\r
-       PROPERTY_ID INTEGER,\r
-);\r
--- 2084 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT(\r
-    COUNTRY_ID INTEGER NOT NULL,\r
-    CONTINENTS_ID INTEGER NOT NULL\r
-);\r
--- 242 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_CONTINENT;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    COUNTRY_ID INTEGER NOT NULL,\r
-    CONTINENTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 242 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_CONTINENT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_CREDIT(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD;\r
-                                                                                                     \r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MARKER(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT(\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    RECOMMENDEDMEASUREMENTUNITS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    RECOMMENDEDMEASUREMENTUNITS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MEDIA(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_MEDIA;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MEDIA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_MEDIA_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION(\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    RECOMMENDEDMODIFIERENUMERATION_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    RECOMMENDEDMODIFIERENUMERATION_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 2084 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_REPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 2084 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_REPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO(\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DEFINEDTERMBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE(\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    RECOMMENDEDSTATISTICALMEASURES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    RECOMMENDEDSTATISTICALMEASURES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION(\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    SUPPORTEDCATEGORICALENUMERATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURE_ID INTEGER NOT NULL,\r
-    SUPPORTEDCATEGORICALENUMERATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY(\r
-    NAMEDAREA_ID INTEGER NOT NULL,\r
-    COUNTRIES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_COUNTRY;\r
-CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY_AUD(\r
-    REV INTEGER NOT NULL,\r
-    NAMEDAREA_ID INTEGER NOT NULL,\r
-    COUNTRIES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_COUNTRY_AUD;\r
-CREATE CACHED TABLE PUBLIC.DERIVATIONEVENT(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    INSTITUTION_ID INTEGER,\r
-       TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DERIVATIONEVENT;\r
-CREATE CACHED TABLE PUBLIC.DERIVATIONEVENT_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    INSTITUTION_ID INTEGER,\r
-       TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DERIVATIONEVENT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION(\r
-    DERIVATIONEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DERIVATIONEVENT_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DERIVATIONEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DERIVATIONEVENT_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DERIVATIONEVENT_MARKER(\r
-    DERIVATIONEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DERIVATIONEVENT_MARKER;\r
-CREATE CACHED TABLE PUBLIC.DERIVATIONEVENT_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DERIVATIONEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DERIVATIONEVENT_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    IMAGEGALLERY BOOLEAN NOT NULL,\r
-       ISDEFAULT BOOLEAN NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    SPECIMEN_ID INTEGER,\r
-    TAXON_ID INTEGER,\r
-    TAXONNAME_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    IMAGEGALLERY BOOLEAN,\r
-       ISDEFAULT BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    SPECIMEN_ID INTEGER,\r
-    TAXON_ID INTEGER,\r
-    TAXONNAME_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_CREDIT(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_FEATURE(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    DESCRIPTIVESYSTEM_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_FEATURE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_FEATURE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    DESCRIPTIVESYSTEM_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_FEATURE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE(\r
-    TAXONDESCRIPTION_ID INTEGER NOT NULL,\r
-    GEOSCOPES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_GEOSCOPE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONDESCRIPTION_ID INTEGER NOT NULL,\r
-    GEOSCOPES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_GEOSCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_MARKER(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    DESCRIPTIONSOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_REFERENCE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    DESCRIPTIONSOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_REFERENCE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO(\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SCOPE(\r
-    TAXONDESCRIPTION_ID INTEGER NOT NULL,\r
-    SCOPES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SCOPE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONDESCRIPTION_ID INTEGER NOT NULL,\r
-    SCOPES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    NAME VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    ORDERRELEVANT BOOLEAN,\r
---  MINIMUM DOUBLE,\r
---     MAXIMUM DOUBLE,\r
---     AVERAGE DOUBLE,\r
---     TYPCALLOWERBOUNDARY DOUBLE,\r
---     TYPCALHIGHERBOUNDARY DOUBLE,\r
---     VARIANCE DOUBLE,\r
---     STANDARDDEVIATION DOUBLE,\r
---     SINGLEVALUE DOUBLE,\r
---     SAMPLESIZE INTEGER,\r
-       UNKNOWNDATA BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    FEATURE_ID INTEGER,\r
-    INDESCRIPTION_ID INTEGER,\r
-    AREA_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    STATUS_ID INTEGER,\r
-    ASSOCIATEDSPECIMENOROBSERVATION_ID INTEGER,\r
-    UNIT_ID INTEGER,\r
-    TAXON2_ID INTEGER,\r
-    FORMAT_ID INTEGER,\r
-       \r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    NAME VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
---  MINIMUM DOUBLE,\r
---     MAXIMUM DOUBLE,\r
---     AVERAGE DOUBLE,\r
---     TYPCALLOWERBOUNDARY DOUBLE,\r
---     TYPCALHIGHERBOUNDARY DOUBLE,\r
---     VARIANCE DOUBLE,\r
---     STANDARDDEVIATION DOUBLE,\r
---     SINGLEVALUE DOUBLE,\r
---     SAMPLESIZE INTEGER,\r
-    ORDERRELEVANT BOOLEAN,\r
-    UNKNOWNDATA BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    FEATURE_ID INTEGER,\r
-    INDESCRIPTION_ID INTEGER,\r
-    AREA_ID INTEGER,\r
-    STATUS_ID INTEGER,\r
-    TAXON2_ID INTEGER,\r
-    UNIT_ID INTEGER,\r
-    FORMAT_ID INTEGER,\r
-    ASSOCIATEDSPECIMENOROBSERVATION_ID INTEGER,\r
-    LANGUAGE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION(\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING(\r
-    TEXTDATA_ID INTEGER NOT NULL,\r
-    MULTILANGUAGETEXT_ID INTEGER NOT NULL,\r
-    MULTILANGUAGETEXT_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TEXTDATA_ID INTEGER NOT NULL,\r
-    MULTILANGUAGETEXT_ID INTEGER NOT NULL,\r
-    MULTILANGUAGETEXT_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER(\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA(\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER(\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MODIFIERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MODIFIERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT(\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE(\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    PREFERREDFLAG BOOLEAN NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    IDENTIFIEDUNIT_ID INTEGER,\r
-    MODIFIER_ID INTEGER,\r
-    TAXON_ID INTEGER,\r
-       TAXONNAME_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    PREFERREDFLAG BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    IDENTIFIEDUNIT_ID INTEGER,\r
-    MODIFIER_ID INTEGER,\r
-    TAXON_ID INTEGER,\r
-       TAXONNAME_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_AUD;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION(\r
-    DETERMINATIONEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DETERMINATIONEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_MARKER(\r
-    DETERMINATIONEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_MARKER;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DETERMINATIONEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE(\r
-    DETERMINATIONEVENT_ID INTEGER NOT NULL,\r
-    SETOFREFERENCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_REFERENCE;\r
-CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    DETERMINATIONEVENT_ID INTEGER NOT NULL,\r
-    SETOFREFERENCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
-\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD;\r
-CREATE CACHED TABLE PUBLIC.DNAQUALITY(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36) NOT NULL,\r
-    UPDATED TIMESTAMP,\r
-    PURIFICATIONMETHOD VARCHAR(255),\r
-    RATIOOFABSORBANCE260_230 DOUBLE,\r
-    RATIOOFABSORBANCE260_280 DOUBLE,\r
-    QUALITYCHECKDATE TIMESTAMP,\r
-    CONCENTRATION DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CONCENTRATIONUNIT_ID INTEGER,\r
-    QUALITYTERM_ID INTEGER,\r
-    TYPEDPURIFICATIONMETHOD_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY;\r
-CREATE CACHED TABLE PUBLIC.DNAQUALITY_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36) NOT NULL,\r
-    UPDATED TIMESTAMP,\r
-    PURIFICATIONMETHOD VARCHAR(255),\r
-    RATIOOFABSORBANCE260_230 DOUBLE,\r
-    RATIOOFABSORBANCE260_280 DOUBLE,\r
-    QUALITYCHECKDATE TIMESTAMP,\r
-    CONCENTRATION DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CONCENTRATIONUNIT_ID INTEGER,\r
-    QUALITYTERM_ID INTEGER,\r
-    TYPEDPURIFICATIONMETHOD_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.ENTITYVALIDATION(\r
-    ID INTEGER NOT NULL,\r
-    UUID VARCHAR(36),\r
-    CREATED TIMESTAMP,\r
-    VALIDATEDENTITYID INTEGER,\r
-    VALIDATEDENTITYUUID VARCHAR(36),\r
-    VALIDATEDENTITYCLASS VARCHAR(255),\r
-    VALIDATIONCOUNT INTEGER,\r
-    UPDATED TIMESTAMP,\r
-    USERFRIENDLYDESCRIPTION VARCHAR(255),\r
-    USERFRIENDLYTYPENAME VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CRUDEVENTTYPE VARCHAR(24),\r
-    STATUS VARCHAR(16)\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYVALIDATION;\r
-\r
-CREATE CACHED TABLE PUBLIC.ENTITYCONSTRAINTVIOLATION(\r
-    ID INTEGER NOT NULL,\r
-    UUID VARCHAR(36),\r
-    CREATED TIMESTAMP,\r
-    PROPERTYPATH VARCHAR(255),\r
-    USERFRIENDLYFIELDNAME VARCHAR(255),\r
-    INVALIDVALUE VARCHAR(255),\r
-    SEVERITY VARCHAR(24),\r
-    MESSAGE VARCHAR(255),\r
-    VALIDATOR VARCHAR(255),\r
-    VALIDATIONGROUP VARCHAR(63),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ENTITYVALIDATION_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYCONSTRAINTVIOLATION;\r
-\r
-CREATE CACHED TABLE PUBLIC.EXTENSION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    VALUE CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.EXTENSION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    VALUE CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURENODE(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SORTINDEX INTEGER,\r
-    TREEINDEX VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    FEATURE_ID INTEGER,\r
-    FEATURETREE_ID INTEGER,\r
-    PARENT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURENODE;\r
-CREATE CACHED TABLE PUBLIC.FEATURENODE_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SORTINDEX INTEGER,\r
-    TREEINDEX VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    FEATURE_ID INTEGER,\r
-    FEATURETREE_ID INTEGER,\r
-    PARENT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURENODE_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF(\r
-    FEATURENODE_ID INTEGER NOT NULL,\r
-    INAPPLICABLEIF_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF;\r
-CREATE CACHED TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURENODE_ID INTEGER NOT NULL,\r
-    INAPPLICABLEIF_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE(\r
-    FEATURENODE_ID INTEGER NOT NULL,\r
-    ONLYAPPLICABLEIF_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE;\r
-CREATE CACHED TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURENODE_ID INTEGER NOT NULL,\r
-    ONLYAPPLICABLEIF_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ROOT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ROOT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_ANNOTATION(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_CREDIT(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_EXTENSION(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_MARKER(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_REPRESENTATION(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_REPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_REPRESENTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_REPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_RIGHTSINFO(\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.FEATURETREE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    FEATURETREE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    ABSOLUTEELEVATION INTEGER,\r
-    ABSOLUTEELEVATIONMAX INTEGER,\r
-    ABSOLUTEELEVATIONTEXT VARCHAR(30),\r
-    COLLECTINGMETHOD VARCHAR(255),\r
-    DISTANCETOGROUND DOUBLE,\r
-    DISTANCETOGROUNDMAX DOUBLE,\r
-    DISTANCETOGROUNDTEXT VARCHAR(30),\r
-    DISTANCETOWATERSURFACE DOUBLE,\r
-    DISTANCETOWATERSURFACEMAX DOUBLE,\r
-    DISTANCETOWATERSURFACETEXT VARCHAR(30),\r
-    EXACTLOCATION_ERRORRADIUS INTEGER,\r
-    EXACTLOCATION_LATITUDE DOUBLE,\r
-    EXACTLOCATION_LONGITUDE DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    COUNTRY_ID INTEGER,\r
-    EXACTLOCATION_REFERENCESYSTEM_ID INTEGER,\r
-    LOCALITY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    ABSOLUTEELEVATION INTEGER,\r
-    ABSOLUTEELEVATIONMAX INTEGER,\r
-    ABSOLUTEELEVATIONTEXT VARCHAR(30),\r
-    COLLECTINGMETHOD VARCHAR(255),\r
-    DISTANCETOGROUND DOUBLE,\r
-    DISTANCETOGROUNDMAX DOUBLE,\r
-    DISTANCETOGROUNDTEXT VARCHAR(30),\r
-    DISTANCETOWATERSURFACE DOUBLE,\r
-    DISTANCETOWATERSURFACEMAX DOUBLE,\r
-    DISTANCETOWATERSURFACETEXT VARCHAR(30),\r
-    EXACTLOCATION_ERRORRADIUS INTEGER,\r
-    EXACTLOCATION_LATITUDE DOUBLE,\r
-    EXACTLOCATION_LONGITUDE DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    COUNTRY_ID INTEGER,\r
-    EXACTLOCATION_REFERENCESYSTEM_ID INTEGER,\r
-    LOCALITY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_AUD;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_ANNOTATION(\r
-    GATHERINGEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    GATHERINGEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE(\r
-    GATHERINGEVENT_ID INTEGER NOT NULL,\r
-    COLLECTINGAREAS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    GATHERINGEVENT_ID INTEGER NOT NULL,\r
-    COLLECTINGAREAS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_MARKER(\r
-    GATHERINGEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_MARKER;\r
-CREATE CACHED TABLE PUBLIC.GATHERINGEVENT_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    GATHERINGEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GATHERINGEVENT_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.GRANTEDAUTHORITYIMPL(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    AUTHORITY VARCHAR(255) NOT NULL,\r
-    CREATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.GRANTEDAUTHORITYIMPL;\r
-CREATE CACHED TABLE PUBLIC.HOMOTYPICALGROUP(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HOMOTYPICALGROUP;\r
-CREATE CACHED TABLE PUBLIC.HOMOTYPICALGROUP_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HOMOTYPICALGROUP_AUD;\r
-CREATE CACHED TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION(\r
-    HOMOTYPICALGROUP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HOMOTYPICALGROUP_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    HOMOTYPICALGROUP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HOMOTYPICALGROUP_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.HOMOTYPICALGROUP_MARKER(\r
-    HOMOTYPICALGROUP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HOMOTYPICALGROUP_MARKER;\r
-CREATE CACHED TABLE PUBLIC.HOMOTYPICALGROUP_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    HOMOTYPICALGROUP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HOMOTYPICALGROUP_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.HYBRIDRELATIONSHIP(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    DOUBTFUL BOOLEAN NOT NULL,\r
-    RULECONSIDERED VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    RELATEDFROM_ID INTEGER,\r
-    RELATEDTO_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HYBRIDRELATIONSHIP;\r
-CREATE CACHED TABLE PUBLIC.HYBRIDRELATIONSHIP_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    DOUBTFUL BOOLEAN,\r
-    RULECONSIDERED VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    RELATEDFROM_ID INTEGER,\r
-    RELATEDTO_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HYBRIDRELATIONSHIP_AUD;\r
-CREATE CACHED TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION(\r
-    HYBRIDRELATIONSHIP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    HYBRIDRELATIONSHIP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER(\r
-    HYBRIDRELATIONSHIP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HYBRIDRELATIONSHIP_MARKER;\r
-CREATE CACHED TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    HYBRIDRELATIONSHIP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.HYBRIDRELATIONSHIP_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING(\r
-    INDIVIDUALSASSOCIATION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.IDENTIFIER(\r
-    ID INTEGER NOT NULL,\r
-    UUID VARCHAR(36),\r
-    CREATED TIMESTAMP,\r
-    UPDATED TIMESTAMP,\r
-    IDENTIFIER VARCHAR(800),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       TYPE_ID INTEGER  \r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.IDENTIFIER_AUD(\r
-       ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    UUID VARCHAR(36),\r
-    CREATED TIMESTAMP,\r
-    UPDATED TIMESTAMP,\r
-    IDENTIFIER VARCHAR(800),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       TYPE_ID INTEGER  \r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.IDENTIFIER_ANNOTATION(\r
-    IDENTIFIER_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.IDENTIFIER_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    IDENTIFIER_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.IDENTIFIER_MARKER(\r
-    IDENTIFIER_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_MARKER;\r
-CREATE CACHED TABLE PUBLIC.IDENTIFIER_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    IDENTIFIER_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.INTEXTREFERENCE(\r
-    ID INTEGER NOT NULL,\r
-    UUID VARCHAR(36),\r
-    CREATED TIMESTAMP,\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       STARTPOS INT,\r
-       ENDPOS INT,\r
-       AGENT_ID INT,\r
-       ANNOTATION_ID INT,\r
-       LANGUAGESTRING_ID INT,\r
-       MEDIA_ID INT,\r
-       OCCURRENCE_ID INT,\r
-       REFERENCE_ID INT,\r
-       TAXON_ID INT,\r
-       TAXONNAME_ID INT,\r
-       KEY_ID INT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.INTEXTREFERENCE;\r
-CREATE CACHED TABLE PUBLIC.INTEXTREFERENCE_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    UUID VARCHAR(36),\r
-    CREATED TIMESTAMP,\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       STARTPOS INT,\r
-       ENDPOS INT,\r
-       AGENT_ID INT,\r
-       ANNOTATION_ID INT,\r
-       LANGUAGESTRING_ID INT,\r
-       MEDIA_ID INT,\r
-       OCCURRENCE_ID INT,\r
-       REFERENCE_ID INT,\r
-       TAXON_ID INT,\r
-       TAXONNAME_ID INT,\r
-       KEY_ID INT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.INTEXTREFERENCE_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    INDIVIDUALSASSOCIATION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.INSTITUTIONALMEMBERSHIP(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DEPARTMENT VARCHAR(255),\r
-    PERIOD_END VARCHAR(255),\r
-    PERIOD_FREETEXT VARCHAR(255),\r
-    PERIOD_START VARCHAR(255),\r
-    ROLE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    INSTITUTE_ID INTEGER,\r
-    PERSON_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.INSTITUTIONALMEMBERSHIP;\r
-CREATE CACHED TABLE PUBLIC.INSTITUTIONALMEMBERSHIP_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DEPARTMENT VARCHAR(255),\r
-    PERIOD_END VARCHAR(255),\r
-    PERIOD_FREETEXT VARCHAR(255),\r
-    PERIOD_START VARCHAR(255),\r
-    ROLE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    INSTITUTE_ID INTEGER,\r
-    PERSON_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.INSTITUTIONALMEMBERSHIP_AUD;\r
-CREATE CACHED TABLE PUBLIC.KEYSTATEMENT(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.KEYSTATEMENT;\r
-CREATE CACHED TABLE PUBLIC.KEYSTATEMENT_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.KEYSTATEMENT_AUD;\r
-CREATE CACHED TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING(\r
-    KEYSTATEMENT_ID INTEGER NOT NULL,\r
-    LABEL_ID INTEGER NOT NULL,\r
-    LABEL_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.KEYSTATEMENT_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    KEYSTATEMENT_ID INTEGER NOT NULL,\r
-    LABEL_ID INTEGER NOT NULL,\r
-    LABEL_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.KEYSTATEMENT_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.LSIDAUTHORITY(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    AUTHORITY VARCHAR(255),\r
-    AUTHORITYWSDL CLOB,\r
-    PORT INTEGER NOT NULL,\r
-    SERVER VARCHAR(255),\r
-    URL VARCHAR(255),\r
-    CREATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LSIDAUTHORITY;\r
-CREATE CACHED TABLE PUBLIC.LSIDAUTHORITY_NAMESPACES(\r
-    LSIDAUTHORITY_ID INTEGER NOT NULL,\r
-    NAMESPACES_ELEMENT VARCHAR(255),\r
-    NAMESPACES_MAPKEY VARCHAR(255) NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LSIDAUTHORITY_NAMESPACES;\r
-CREATE CACHED TABLE PUBLIC.LANGUAGESTRING(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.LANGUAGESTRING_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.LANGUAGESTRING_ANNOTATION(\r
-    LANGUAGESTRING_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LANGUAGESTRING_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.LANGUAGESTRING_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    LANGUAGESTRING_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LANGUAGESTRING_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.LANGUAGESTRING_MARKER(\r
-    LANGUAGESTRING_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LANGUAGESTRING_MARKER;\r
-CREATE CACHED TABLE PUBLIC.LANGUAGESTRING_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    LANGUAGESTRING_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LANGUAGESTRING_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.LOCUS(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    NAME VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LOCUS;\r
-CREATE CACHED TABLE PUBLIC.LOCUS_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    NAME VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.LOCUS_AUD;\r
-CREATE CACHED TABLE PUBLIC.MARKER(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    FLAG BOOLEAN NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    MARKERTYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MARKER;\r
-CREATE CACHED TABLE PUBLIC.MARKER_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    FLAG BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    MARKERTYPE_ID INTEGER\r
-);\r
-\r
-CREATE TABLE MATERIALORMETHODEVENT (\r
-    ID INTEGER NOT NULL,\r
-    DTYPE VARCHAR(255),\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    MATERIALMETHODTEXT VARCHAR(255),\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-       STRAIN VARCHAR(255),\r
-    TEMPERATURE DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    DEFINEDMATERIALORMETHOD_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    FORWARDPRIMER_ID INTEGER,\r
-    REVERSEPRIMER_ID INTEGER,\r
-    MEDIUM_ID INTEGER,\r
-    PRIMARY KEY (ID)\r
-);\r
-\r
-CREATE TABLE MATERIALORMETHODEVENT_AUD (\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-       DTYPE VARCHAR(255),\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    MATERIALMETHODTEXT VARCHAR(255),\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-       STRAIN VARCHAR(255),\r
-    TEMPERATURE DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    DEFINEDMATERIALORMETHOD_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    FORWARDPRIMER_ID INTEGER,\r
-    REVERSEPRIMER_ID INTEGER,\r
-    MEDIUM_ID INTEGER\r
-);\r
-\r
-CREATE TABLE MATERIALORMETHODEVENT_ANNOTATION (\r
-    MATERIALORMETHODEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (MATERIALORMETHODEVENT_ID, ANNOTATIONS_ID)\r
-);\r
-\r
-CREATE TABLE MATERIALORMETHODEVENT_ANNOTATION_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    MATERIALORMETHODEVENT_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-);\r
-\r
-CREATE TABLE MATERIALORMETHODEVENT_MARKER (\r
-    MATERIALORMETHODEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (MATERIALORMETHODEVENT_ID, MARKERS_ID)\r
-);\r
-\r
-CREATE TABLE MATERIALORMETHODEVENT_MARKER_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    MATERIALORMETHODEVENT_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-);\r
-\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    MEDIACREATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ARTIST_ID INTEGER,\r
-    CITATION_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_COVEREDTAXON(\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    COVEREDTAXA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_COVEREDTAXON;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_COVEREDTAXON_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    COVEREDTAXA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_COVEREDTAXON_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_NAMEDAREA(\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    GEOGRAPHICALSCOPE_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_NAMEDAREA;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_NAMEDAREA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    GEOGRAPHICALSCOPE_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_NAMEDAREA_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_SCOPE(\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    SCOPERESTRICTIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_SCOPE;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_SCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    SCOPERESTRICTIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_SCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_TAXONSCOPE(\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    TAXONOMICSCOPE_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_TAXONSCOPE;\r
-CREATE CACHED TABLE PUBLIC.MEDIAKEY_TAXONSCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    TAXONOMICSCOPE_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAKEY_TAXONSCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIAREPRESENTATION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    MIMETYPE VARCHAR(255),\r
-    SUFFIX VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    MEDIA_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAREPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.MEDIAREPRESENTATIONPART(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SIZE INTEGER,\r
-    URI CLOB,\r
-    DURATION INTEGER,\r
-    HEIGHT INTEGER,\r
-    WIDTH INTEGER,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    REPRESENTATION_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAREPRESENTATIONPART;\r
-CREATE CACHED TABLE PUBLIC.MEDIAREPRESENTATIONPART_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SIZE INTEGER,\r
-    URI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    REPRESENTATION_ID INTEGER,\r
-    DURATION INTEGER,\r
-    HEIGHT INTEGER,\r
-    WIDTH INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAREPRESENTATIONPART_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIAREPRESENTATION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    MIMETYPE VARCHAR(255),\r
-    SUFFIX VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    MEDIA_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAREPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REPRESENTATION_ID INTEGER NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    MEDIACREATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ARTIST_ID INTEGER,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    CITATION_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_ANNOTATION(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_CREDIT(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_DESCRIPTION(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_DESCRIPTION;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_DESCRIPTION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_DESCRIPTION_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_EXTENSION(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_LANGUAGESTRING(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    TITLE_ID INTEGER NOT NULL,\r
-    TITLE_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    TITLE_ID INTEGER NOT NULL,\r
-    TITLE_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_MARKER(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_MARKER;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_REPRESENTATION(\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    KEYREPRESENTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_REPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_REPRESENTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIAKEY_ID INTEGER NOT NULL,\r
-    KEYREPRESENTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_REPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_RIGHTSINFO(\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_SEQUENCE(\r
-    PHYLOGENETICTREE_ID INTEGER NOT NULL,\r
-    USEDSEQUENCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_SEQUENCE;\r
-CREATE CACHED TABLE PUBLIC.MEDIA_SEQUENCE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    PHYLOGENETICTREE_ID INTEGER NOT NULL,\r
-    USEDSEQUENCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_SEQUENCE_AUD;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON(\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    COVEREDTAXA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_COVEREDTAXON;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    COVEREDTAXA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_COVEREDTAXON_AUD;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA(\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    GEOGRAPHICALSCOPE_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_NAMEDAREA;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    GEOGRAPHICALSCOPE_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_NAMEDAREA_AUD;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_SCOPE(\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    SCOPERESTRICTIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_SCOPE;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_SCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    SCOPERESTRICTIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_SCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE(\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    TAXONOMICSCOPE_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_TAXON;\r
-CREATE CACHED TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    MULTIACCESSKEY_ID INTEGER NOT NULL,\r
-    TAXONOMICSCOPE_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.MULTIACCESSKEY_TAXONSCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.NAMERELATIONSHIP(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    DOUBTFUL BOOLEAN NOT NULL,\r
-    RULECONSIDERED VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    RELATEDFROM_ID INTEGER,\r
-    RELATEDTO_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NAMERELATIONSHIP;\r
-CREATE CACHED TABLE PUBLIC.NAMERELATIONSHIP_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    DOUBTFUL BOOLEAN,\r
-    RULECONSIDERED VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    RELATEDFROM_ID INTEGER,\r
-    RELATEDTO_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NAMERELATIONSHIP_AUD;\r
-CREATE CACHED TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION(\r
-    NAMERELATIONSHIP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NAMERELATIONSHIP_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    NAMERELATIONSHIP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NAMERELATIONSHIP_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.NAMERELATIONSHIP_MARKER(\r
-    NAMERELATIONSHIP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NAMERELATIONSHIP_MARKER;\r
-CREATE CACHED TABLE PUBLIC.NAMERELATIONSHIP_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    NAMERELATIONSHIP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NAMERELATIONSHIP_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.NOMENCLATURALSTATUS(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    RULECONSIDERED VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NOMENCLATURALSTATUS;\r
-CREATE CACHED TABLE PUBLIC.NOMENCLATURALSTATUS_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    RULECONSIDERED VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NOMENCLATURALSTATUS_AUD;\r
-CREATE CACHED TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION(\r
-    NOMENCLATURALSTATUS_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NOMENCLATURALSTATUS_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    NOMENCLATURALSTATUS_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NOMENCLATURALSTATUS_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER(\r
-    NOMENCLATURALSTATUS_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NOMENCLATURALSTATUS_MARKER;\r
-CREATE CACHED TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    NOMENCLATURALSTATUS_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.ORIGINALSOURCEBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SOURCETYPE VARCHAR(4) NOT NULL,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    IDINSOURCE VARCHAR(255),\r
-    IDNAMESPACE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    NAMEUSEDINSOURCE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.ORIGINALSOURCEBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       SOURCETYPE VARCHAR(4) NOT NULL,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    IDINSOURCE VARCHAR(255),\r
-    IDNAMESPACE VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    NAMEUSEDINSOURCE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION(\r
-    ORIGINALSOURCEBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ORIGINALSOURCEBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    ORIGINALSOURCEBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ORIGINALSOURCEBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER(\r
-    ORIGINALSOURCEBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ORIGINALSOURCEBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    ORIGINALSOURCEBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.ORIGINALSOURCEBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.PERMISSIONGROUP(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    NAME VARCHAR(255) NOT NULL,\r
-    CREATEDBY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.PERMISSIONGROUP;\r
-CREATE CACHED TABLE PUBLIC.PERMISSIONGROUP_GRANTEDAUTHORITYIMPL(\r
-    GROUP_ID INTEGER NOT NULL,\r
-    GRANTEDAUTHORITIES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.PERMISSIONGROUP_GRANTEDAUTHORITYIMPL;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    STARTNUMBER INTEGER,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ROOT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEYNODE(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    NODENUMBER INTEGER,\r
-    SORTINDEX INTEGER,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    FEATURE_ID INTEGER,\r
-    KEY_ID INTEGER,\r
-    OTHERNODE_ID INTEGER,\r
-    PARENT_ID INTEGER,\r
-    QUESTION_ID INTEGER,\r
-    STATEMENT_ID INTEGER,\r
-    SUBKEY_ID INTEGER,\r
-    TAXON_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEYNODE;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEYNODE_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    NODENUMBER INTEGER,\r
-    SORTINDEX INTEGER,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    FEATURE_ID INTEGER,\r
-    KEY_ID INTEGER,\r
-    OTHERNODE_ID INTEGER,\r
-    PARENT_ID INTEGER,\r
-    QUESTION_ID INTEGER,\r
-    STATEMENT_ID INTEGER,\r
-    SUBKEY_ID INTEGER,\r
-    TAXON_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEYNODE_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING(\r
-    POLYTOMOUSKEYNODE_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEYNODE_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    STARTNUMBER INTEGER,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ROOT_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_CREDIT(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_MARKER(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_MARKER;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    GEOGRAPHICALSCOPE_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_NAMEDAREA;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    GEOGRAPHICALSCOPE_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_NAMEDAREA_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_SCOPE(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    SCOPERESTRICTIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_SCOPE;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_SCOPE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    SCOPERESTRICTIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_SCOPE_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_TAXON(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    TAXON_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_TAXON;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE(\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    COVEREDTAXA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_TAXONBASE;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    COVEREDTAXA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_TAXONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_TAXON_AUD(\r
-    REV INTEGER NOT NULL,\r
-    POLYTOMOUSKEY_ID INTEGER NOT NULL,\r
-    TAXON_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_TAXON_AUD;\r
-\r
-CREATE TABLE PRIMER (\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LABEL VARCHAR(255),\r
-       SEQUENCE_LENGTH INTEGER,\r
-       SEQUENCE_STRING CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    DNAMARKER_ID INTEGER,\r
-       PUBLISHEDIN_ID INTEGER,\r
-       PRIMARY KEY (ID)\r
-);\r
-CREATE TABLE PRIMER_AUD (\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LABEL VARCHAR(255),\r
-    SEQUENCE_LENGTH INTEGER,\r
-    SEQUENCE_STRING CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       DNAMARKER_ID INTEGER,\r
-       PUBLISHEDIN_ID INTEGER,\r
-);\r
-\r
-CREATE TABLE PRIMER_ANNOTATION (\r
-    PRIMER_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (PRIMER_ID, ANNOTATIONS_ID)\r
-);\r
-CREATE TABLE PRIMER_ANNOTATION_AUD (\r
-    PRIMER_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE PRIMER_MARKER (\r
-    PRIMER_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (PRIMER_ID, MARKERS_ID)\r
-);\r
-CREATE TABLE PRIMER_MARKER_AUD (\r
-    PRIMER_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
-\r
-\r
-CREATE CACHED TABLE PUBLIC.REFERENCE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(800),\r
-    DATEPUBLISHED_END VARCHAR(255),\r
-    DATEPUBLISHED_FREETEXT VARCHAR(255),\r
-    DATEPUBLISHED_START VARCHAR(255),\r
-    EDITION VARCHAR(255),\r
-    EDITOR VARCHAR(255),\r
-    ISBN VARCHAR(255),\r
-    ISSN VARCHAR(255),\r
-    DOI VARCHAR(255),\r
-    NOMENCLATURALLYRELEVANT BOOLEAN NOT NULL,\r
-    ORGANIZATION VARCHAR(255),\r
-    PAGES VARCHAR(255),\r
-    PARSINGPROBLEM INTEGER NOT NULL,\r
-    PLACEPUBLISHED VARCHAR(255),\r
-    PROBLEMENDS INTEGER NOT NULL,\r
-    PROBLEMSTARTS INTEGER NOT NULL,\r
-    PUBLISHER VARCHAR(255),\r
-    REFERENCEABSTRACT CLOB,\r
-    SERIESPART VARCHAR(255),\r
-    TITLE CLOB,\r
-    ABBREVTITLE VARCHAR(255),\r
-    ABBREVTITLECACHE CLOB,\r
-    PROTECTEDABBREVTITLECACHE BOOLEAN,\r
-    REFTYPE VARCHAR(4),\r
-    URI CLOB,\r
-    VOLUME VARCHAR(255),\r
-       ACCESSED TIMESTAMP,\r
-       LASTRETRIEVED TIMESTAMP,\r
-       EXTERNALID VARCHAR(255),\r
-       EXTERNALLINK CLOB,\r
-       AUTHORITYTYPE  VARCHAR(10) NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    AUTHORSHIP_ID INTEGER,\r
-    INREFERENCE_ID INTEGER,\r
-    INSTITUTION_ID INTEGER,\r
-    SCHOOL_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE;\r
-CREATE INDEX PUBLIC.REFERENCETITLECACHEINDEX ON PUBLIC.REFERENCE(TITLECACHE);\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(800),\r
-    DATEPUBLISHED_END VARCHAR(255),\r
-    DATEPUBLISHED_FREETEXT VARCHAR(255),\r
-    DATEPUBLISHED_START VARCHAR(255),\r
-    EDITION VARCHAR(255),\r
-    EDITOR VARCHAR(255),\r
-    ISBN VARCHAR(255),\r
-    ISSN VARCHAR(255),\r
-    DOI VARCHAR(255),\r
-    NOMENCLATURALLYRELEVANT BOOLEAN,\r
-    ORGANIZATION VARCHAR(255),\r
-    PAGES VARCHAR(255),\r
-    PARSINGPROBLEM INTEGER,\r
-    PLACEPUBLISHED VARCHAR(255),\r
-    PROBLEMENDS INTEGER,\r
-    PROBLEMSTARTS INTEGER,\r
-    PUBLISHER VARCHAR(255),\r
-    REFERENCEABSTRACT CLOB,\r
-    SERIESPART VARCHAR(255),\r
-    TITLE CLOB,\r
-    ABBREVTITLE VARCHAR(255),\r
-    ABBREVTITLECACHE CLOB,\r
-    PROTECTEDABBREVTITLECACHE BOOLEAN,\r
-    REFTYPE  VARCHAR(4),\r
-    URI CLOB,\r
-    VOLUME VARCHAR(255),\r
-    ACCESSED TIMESTAMP,\r
-       LASTRETRIEVED TIMESTAMP,\r
-       EXTERNALID VARCHAR(255),\r
-       EXTERNALLINK CLOB,\r
-       AUTHORITYTYPE  VARCHAR(10) NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    AUTHORSHIP_ID INTEGER,\r
-    INREFERENCE_ID INTEGER,\r
-    INSTITUTION_ID INTEGER,\r
-    SCHOOL_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_ANNOTATION(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_CREDIT(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_EXTENSION(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_MARKER(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_MEDIA(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_MEDIA;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_MEDIA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    MEDIA_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_MEDIA_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_RIGHTSINFO(\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.REFERENCE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REFERENCE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       IDENTIFIER VARCHAR(255),\r
-       REGISTRATIONDATE TIMESTAMP,\r
-       SPECIFICIDENTIFIER VARCHAR(255),\r
-       STATUS VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       INSTITUTION_ID INTEGER,\r
-       NAME_ID INTEGER,\r
-       SUBMITTER_ID INTEGER\r
-);\r
--- 2175 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       IDENTIFIER VARCHAR(255),\r
-       REGISTRATIONDATE TIMESTAMP,\r
-       SPECIFICIDENTIFIER VARCHAR(255),\r
-       STATUS VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       INSTITUTION_ID INTEGER,\r
-       NAME_ID INTEGER,\r
-       SUBMITTER_ID INTEGER\r
-);\r
--- 2175 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_ANNOTATION(\r
-    REGISTRATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REGISTRATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_MARKER(\r
-    REGISTRATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_MARKER;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REGISTRATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_REGISTRATION(\r
-    REGISTRATION_ID INTEGER NOT NULL,\r
-    BLOCKEDBY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_REGISTRATION;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_REGISTRATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REGISTRATION_ID INTEGER NOT NULL,\r
-    BLOCKEDBY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_REGISTRATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_TYPEDESIGNATIONBASE(\r
-    REGISTRATIONS_ID INTEGER NOT NULL,\r
-    TYPEDESIGNATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_TYPEDESIGNATIONBASE;\r
-CREATE CACHED TABLE PUBLIC.REGISTRATION_TYPEDESIGNATIONBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REGISTRATIONS_ID INTEGER NOT NULL,\r
-    TYPEDESIGNATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REGISTRATION_TYPEDESIGNATIONBASE_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION(\r
-    TERM_ID INTEGER NOT NULL,\r
-    INVERSEREPRESENTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 54 +/- SELECT COUNT(*) FROM PUBLIC.TERMBASE_INVERSEREPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERM_ID INTEGER NOT NULL,\r
-    INVERSEREPRESENTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 54 +/- SELECT COUNT(*) FROM PUBLIC.TERMBASE_INVERSEREPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REPRESENTATION(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    ABBREVIATEDLABEL VARCHAR(255),\r
-    LABEL VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER\r
-);\r
--- 2175 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.REPRESENTATION_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    ABBREVIATEDLABEL VARCHAR(255),\r
-    LABEL VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER\r
-);\r
--- 2175 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REPRESENTATION_ANNOTATION(\r
-    REPRESENTATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.REPRESENTATION_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REPRESENTATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.REPRESENTATION_MARKER(\r
-    REPRESENTATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION_MARKER;\r
-CREATE CACHED TABLE PUBLIC.REPRESENTATION_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    REPRESENTATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.REPRESENTATION_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.RIGHTSINFO(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    ABBREVIATEDTEXT VARCHAR(255),\r
-    URI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    AGENT_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.RIGHTSINFO_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TEXT CLOB,\r
-    ABBREVIATEDTEXT VARCHAR(255),\r
-    URI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LANGUAGE_ID INTEGER,\r
-    AGENT_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.RIGHTSINFO_ANNOTATION(\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.RIGHTSINFO_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.RIGHTSINFO_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.RIGHTSINFO_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.RIGHTSINFO_MARKER(\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.RIGHTSINFO_MARKER;\r
-CREATE CACHED TABLE PUBLIC.RIGHTSINFO_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
-\r
-CREATE TABLE SEQUENCE (\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    BARCODESEQUENCEPART_LENGTH INTEGER,\r
-    BARCODESEQUENCEPART_STRING CLOB,\r
-    BOLDPROCESSID VARCHAR(255),\r
-    CONSENSUSSEQUENCE_LENGTH INTEGER,\r
-    CONSENSUSSEQUENCE_STRING CLOB,\r
-    GENETICACCESSIONNUMBER VARCHAR(255),\r
-    HAPLOTYPE VARCHAR(255),\r
-    ISBARCODE BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CONTIGFILE_ID INTEGER,\r
-    DNASAMPLE_ID INTEGER,\r
-    DNAMARKER_ID INTEGER,\r
-    PRIMARY KEY (ID)\r
-);\r
-CREATE TABLE SEQUENCE_AUD (\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    BARCODESEQUENCEPART_LENGTH INTEGER,\r
-    BARCODESEQUENCEPART_STRING CLOB,\r
-    BOLDPROCESSID VARCHAR(255),\r
-    CONSENSUSSEQUENCE_LENGTH INTEGER,\r
-    CONSENSUSSEQUENCE_STRING CLOB,\r
-    GENETICACCESSIONNUMBER VARCHAR(255),\r
-    HAPLOTYPE VARCHAR(255),\r
-    ISBARCODE BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CONTIGFILE_ID INTEGER,\r
-    DNASAMPLE_ID INTEGER,\r
-    DNAMARKER_ID INTEGER\r
-);\r
-\r
-CREATE TABLE SEQUENCE_ANNOTATION (\r
-    SEQUENCE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (SEQUENCE_ID, ANNOTATIONS_ID)\r
-);\r
-CREATE TABLE SEQUENCE_ANNOTATION_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    SEQUENCE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE SEQUENCE_MARKER (\r
-    SEQUENCE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (SEQUENCE_ID, MARKERS_ID)\r
-);\r
-CREATE TABLE SEQUENCE_MARKER_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    SEQUENCE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
-CREATE TABLE SEQUENCE_REFERENCE (\r
-    SEQUENCE_ID INTEGER NOT NULL,\r
-    CITATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (SEQUENCE_ID, CITATIONS_ID)\r
-);\r
-CREATE TABLE SEQUENCE_REFERENCE_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    SEQUENCE_ID INTEGER NOT NULL,\r
-    CITATIONS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE SINGLEREADALIGNMENT (\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       EDITEDSEQUENCE CLOB,\r
-       SHIFTS CLOB,\r
-    REVERSECOMPLEMENT BIT,\r
-       FIRSTSEQPOSITION INTEGER,\r
-       LEFTCUTPOSITION INTEGER,\r
-       RIGHTCUTPOSITION INTEGER,\r
-       CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CONSENSUSALIGNMENT_ID INTEGER NULL,\r
-    SINGLEREAD_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (ID)\r
-);\r
-\r
-CREATE TABLE SINGLEREADALIGNMENT_AUD (\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       EDITEDSEQUENCE CLOB,\r
-       SHIFTS CLOB,\r
-    REVERSECOMPLEMENT BIT,\r
-       FIRSTSEQPOSITION INTEGER,\r
-       LEFTCUTPOSITION INTEGER,\r
-       RIGHTCUTPOSITION INTEGER,\r
-       CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CONSENSUSALIGNMENT_ID INTEGER NULL,\r
-    SINGLEREAD_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE SINGLEREAD (\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    DIRECTION VARCHAR(3),\r
-    SEQUENCE_LENGTH INTEGER,\r
-    SEQUENCE_STRING CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    AMPLIFICATIONRESULT_ID INTEGER,\r
-    MATERIALORMETHOD_ID INTEGER,\r
-    PHEROGRAM_ID INTEGER,\r
-    PRIMER_ID INTEGER,\r
-    PRIMARY KEY (ID)\r
-);\r
-CREATE TABLE SINGLEREAD_AUD (\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    DESCRIPTION VARCHAR(255),\r
-    TIMEPERIOD_END VARCHAR(255),\r
-    TIMEPERIOD_FREETEXT VARCHAR(255),\r
-    TIMEPERIOD_START VARCHAR(255),\r
-    DIRECTION VARCHAR(3),\r
-    SEQUENCE_LENGTH INTEGER,\r
-    SEQUENCE_STRING CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    ACTOR_ID INTEGER,\r
-    AMPLIFICATIONRESULT_ID INTEGER,\r
-    MATERIALORMETHOD_ID INTEGER,\r
-    PHEROGRAM_ID INTEGER,\r
-    PRIMER_ID INTEGER\r
-);\r
-\r
-CREATE TABLE SINGLEREAD_ANNOTATION (\r
-    SINGLEREAD_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (SINGLEREAD_ID, ANNOTATIONS_ID)\r
-);\r
-CREATE TABLE SINGLEREAD_ANNOTATION_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    SINGLEREAD_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE TABLE SINGLEREAD_MARKER (\r
-    SINGLEREAD_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    PRIMARY KEY (SINGLEREAD_ID, MARKERS_ID)\r
-);\r
-\r
-CREATE TABLE SINGLEREAD_MARKER_AUD (\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    SINGLEREAD_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
-\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    RECORDBASIS  VARCHAR(4) NOT NULL,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    PROTECTEDIDENTITYCACHE BOOLEAN,\r
-    IDENTITYCACHE VARCHAR(255),\r
-    PUBLISH BOOLEAN,\r
-    INDIVIDUALCOUNT INTEGER,\r
-       PREFERREDSTABLEURI CLOB,\r
-    ACCESSIONNUMBER VARCHAR(255),\r
-    BARCODE VARCHAR(255),\r
-    CATALOGNUMBER VARCHAR(255),\r
-    COLLECTORSNUMBER VARCHAR(255),\r
-    EXSICCATUM VARCHAR(255),\r
-    ORIGINALLABELINFO CLOB,\r
-    FIELDNOTES VARCHAR(255),\r
-    FIELDNUMBER VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LIFESTAGE_ID INTEGER,\r
-    SEX_ID INTEGER,\r
-    KINDOFUNIT_ID INTEGER,\r
-    COLLECTION_ID INTEGER,\r
-    DERIVEDFROM_ID INTEGER,\r
-    STOREDUNDER_ID INTEGER,\r
-    PRESERVATION_ID INTEGER,\r
-    GATHERINGEVENT_ID INTEGER,\r
-    PRIMARYCOLLECTOR_ID INTEGER,\r
-    MEDIASPECIMEN_ID INTEGER,\r
-    DNAQUALITY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE;\r
-CREATE INDEX PUBLIC.SPECIMENOROBSERVATIONBASETITLECACHEINDEX ON PUBLIC.SPECIMENOROBSERVATIONBASE(TITLECACHE);\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    RECORDBASIS  VARCHAR(4) NOT NULL,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    PROTECTEDIDENTITYCACHE BOOLEAN NULL,\r
-    IDENTITYCACHE VARCHAR(255),\r
-       PUBLISH BOOLEAN,\r
-    INDIVIDUALCOUNT INTEGER,\r
-    PREFERREDSTABLEURI CLOB,\r
-    ACCESSIONNUMBER VARCHAR(255),\r
-    BARCODE VARCHAR(255),\r
-    CATALOGNUMBER VARCHAR(255),\r
-    COLLECTORSNUMBER VARCHAR(255),\r
-    EXSICCATUM VARCHAR(255),\r
-    ORIGINALLABELINFO CLOB,\r
-    FIELDNOTES VARCHAR(255),\r
-    FIELDNUMBER VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    LIFESTAGE_ID INTEGER,\r
-    SEX_ID INTEGER,\r
-    KINDOFUNIT_ID INTEGER,\r
-    COLLECTION_ID INTEGER,\r
-    DERIVEDFROM_ID INTEGER,\r
-    STOREDUNDER_ID INTEGER,\r
-    PRESERVATION_ID INTEGER,\r
-    GATHERINGEVENT_ID INTEGER,\r
-    PRIMARYCOLLECTOR_ID INTEGER,\r
-    MEDIASPECIMEN_ID INTEGER,\r
-    DNAQUALITY_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT(\r
-    ORIGINALS_ID INTEGER NOT NULL,\r
-    DERIVATIONEVENTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    ORIGINALS_ID INTEGER NOT NULL,\r
-    DERIVATIONEVENTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    DEFINITION_ID INTEGER NOT NULL,\r
-    DEFINITION_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    DEFINITION_ID INTEGER NOT NULL,\r
-    DEFINITION_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO(\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD;\r
-\r
-CREATE CACHED TABLE PUBLIC.STATEDATA(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       CATEGORICALDATA_ID INTEGER,\r
-    STATE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATEDATA;\r
-CREATE CACHED TABLE PUBLIC.STATEDATA_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       CATEGORICALDATA_ID INTEGER,\r
-    STATE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATEDATA_AUD;\r
-CREATE CACHED TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE(\r
-    STATEDATA_ID INTEGER NOT NULL,\r
-    MODIFIERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATEDATA_DEFINEDTERMBASE;\r
-CREATE CACHED TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    STATEDATA_ID INTEGER NOT NULL,\r
-    MODIFIERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATEDATA_DEFINEDTERMBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.STATEDATA_LANGUAGESTRING(\r
-    STATEDATA_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATEDATA_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.STATEDATA_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    STATEDATA_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_ID INTEGER NOT NULL,\r
-    MODIFYINGTEXT_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATEDATA_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.STATISTICALMEASUREMENTVALUE(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    VALUE DOUBLE NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       QUANTITATIVEDATA_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATISTICALMEASUREMENTVALUE;\r
-CREATE CACHED TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    VALUE DOUBLE,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-       QUANTITATIVEDATA_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATISTICALMEASUREMENTVALUE_AUD;\r
-CREATE CACHED TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE(\r
-    STATISTICALMEASUREMENTVALUE_ID INTEGER NOT NULL,\r
-    MODIFIERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE;\r
-CREATE CACHED TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    STATISTICALMEASUREMENTVALUE_ID INTEGER NOT NULL,\r
-    MODIFIERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-       SECMICROREFERENCE VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    APPENDEDPHRASE VARCHAR(255),\r
-    DOUBTFUL BOOLEAN NOT NULL,\r
-    PUBLISH BOOLEAN,\r
-    USENAMECACHE BOOLEAN NOT NULL,\r
-    EXCLUDED BOOLEAN,\r
-    TAXONSTATUSUNKNOWN BOOLEAN,\r
-    UNPLACED BOOLEAN,\r
-       PARTIAL BOOLEAN NOT NULL,\r
-    PROPARTE BOOLEAN NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    NAME_ID INTEGER,\r
-    SEC_ID INTEGER,\r
-       ACCEPTEDTAXON_ID INTEGER,\r
-       TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE;\r
-CREATE INDEX PUBLIC.TAXONBASETITLECACHEINDEX ON PUBLIC.TAXONBASE(TITLECACHE);\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    APPENDEDPHRASE VARCHAR(255),\r
-       SECMICROREFERENCE VARCHAR(255),\r
-    DOUBTFUL BOOLEAN,\r
-    PUBLISH BOOLEAN,\r
-       PARTIAL BOOLEAN NOT NULL,\r
-    PROPARTE BOOLEAN NOT NULL,\r
-    USENAMECACHE BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    NAME_ID INTEGER,\r
-    SEC_ID INTEGER,\r
-    EXCLUDED BOOLEAN,\r
-    TAXONSTATUSUNKNOWN BOOLEAN,\r
-    UNPLACED BOOLEAN,\r
-       ACCEPTEDTAXON_ID INTEGER,\r
-       TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_ANNOTATION(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_CREDIT(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_EXTENSION(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_MARKER(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_RIGHTSINFO(\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.TAXONBASE_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONBASE_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING(\r
-    TAXONINTERACTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONINTERACTION_LANGUAGESTRING;\r
-CREATE CACHED TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONINTERACTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_ID INTEGER NOT NULL,\r
-    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONINTERACTION_LANGUAGESTRING_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       NAMETYPE VARCHAR(255),\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    APPENDEDPHRASE VARCHAR(255),\r
-    FULLTITLECACHE VARCHAR(330),\r
-    NOMENCLATURALMICROREFERENCE VARCHAR(255),\r
-    PARSINGPROBLEM INTEGER NOT NULL,\r
-    PROBLEMENDS INTEGER NOT NULL,\r
-    PROBLEMSTARTS INTEGER NOT NULL,\r
-    PROTECTEDFULLTITLECACHE BOOLEAN NOT NULL,\r
-    AUTHORSHIPCACHE VARCHAR(255),\r
-    BINOMHYBRID BOOLEAN,\r
-    GENUSORUNINOMIAL VARCHAR(255),\r
-    HYBRIDFORMULA BOOLEAN,\r
-    INFRAGENERICEPITHET VARCHAR(255),\r
-    INFRASPECIFICEPITHET VARCHAR(255),\r
-    MONOMHYBRID BOOLEAN,\r
-    NAMECACHE VARCHAR(255),\r
-    PROTECTEDAUTHORSHIPCACHE BOOLEAN,\r
-    PROTECTEDNAMECACHE BOOLEAN,\r
-    SPECIFICEPITHET VARCHAR(255),\r
-    TRINOMHYBRID BOOLEAN,\r
-    NAMEAPPROBATION VARCHAR(255),\r
-    SUBGENUSAUTHORSHIP VARCHAR(255),\r
-    ANAMORPHIC BOOLEAN,\r
-    CULTIVARNAME VARCHAR(255),\r
-    ACRONYM VARCHAR(255),\r
-    BREED VARCHAR(255),\r
-    ORIGINALPUBLICATIONYEAR INTEGER,\r
-    PUBLICATIONYEAR INTEGER,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    HOMOTYPICALGROUP_ID INTEGER,\r
-    NOMENCLATURALREFERENCE_ID INTEGER,\r
-    RANK_ID INTEGER,\r
-    BASIONYMAUTHORSHIP_ID INTEGER,\r
-    COMBINATIONAUTHORSHIP_ID INTEGER,\r
-    EXBASIONYMAUTHORSHIP_ID INTEGER,\r
-    EXCOMBINATIONAUTHORSHIP_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME;\r
-CREATE INDEX PUBLIC.TAXONNAMEBASETITLECACHEINDEX ON PUBLIC.TAXONNAME(TITLECACHE);\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-       UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    NAMETYPE VARCHAR(255),\r
-       LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    APPENDEDPHRASE VARCHAR(255),\r
-    FULLTITLECACHE VARCHAR(330),\r
-    NOMENCLATURALMICROREFERENCE VARCHAR(255),\r
-    PARSINGPROBLEM INTEGER,\r
-    PROBLEMENDS INTEGER,\r
-    PROBLEMSTARTS INTEGER,\r
-    PROTECTEDFULLTITLECACHE BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    HOMOTYPICALGROUP_ID INTEGER,\r
-    NOMENCLATURALREFERENCE_ID INTEGER,\r
-    RANK_ID INTEGER,\r
-    ACRONYM VARCHAR(255),\r
-    AUTHORSHIPCACHE VARCHAR(255),\r
-    BINOMHYBRID BOOLEAN,\r
-    GENUSORUNINOMIAL VARCHAR(255),\r
-    HYBRIDFORMULA BOOLEAN,\r
-    INFRAGENERICEPITHET VARCHAR(255),\r
-    INFRASPECIFICEPITHET VARCHAR(255),\r
-    MONOMHYBRID BOOLEAN,\r
-    NAMECACHE VARCHAR(255),\r
-    PROTECTEDAUTHORSHIPCACHE BOOLEAN,\r
-    PROTECTEDNAMECACHE BOOLEAN,\r
-    SPECIFICEPITHET VARCHAR(255),\r
-    TRINOMHYBRID BOOLEAN,\r
-    BASIONYMAUTHORSHIP_ID INTEGER,\r
-    COMBINATIONAUTHORSHIP_ID INTEGER,\r
-    EXBASIONYMAUTHORSHIP_ID INTEGER,\r
-    EXCOMBINATIONAUTHORSHIP_ID INTEGER,\r
-    ANAMORPHIC BOOLEAN,\r
-    CULTIVARNAME VARCHAR(255),\r
-    BREED VARCHAR(255),\r
-    ORIGINALPUBLICATIONYEAR INTEGER,\r
-    PUBLICATIONYEAR INTEGER,\r
-    NAMEAPPROBATION VARCHAR(255),\r
-    SUBGENUSAUTHORSHIP VARCHAR(255)\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_ANNOTATION(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_CREDIT(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_EXTENSION(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_IDENTIFIER(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_MARKER(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    STATUS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_NOMENCLATURALSTATUS;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    STATUS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_NOMENCLATURALSTATUS_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_RIGHTSINFO(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE(\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    TYPEDESIGNATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE;\r
-CREATE CACHED TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNAME_ID INTEGER NOT NULL,\r
-    TYPEDESIGNATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SORTINDEX INTEGER,\r
-    TREEINDEX VARCHAR(255),\r
-    COUNTCHILDREN INTEGER NOT NULL,\r
-    MICROREFERENCEFORPARENTCHILDRELATION VARCHAR(255),\r
-       EXCLUDED BOOLEAN,\r
-       UNPLACED BOOLEAN,\r
-       CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CLASSIFICATION_ID INTEGER,\r
-    PARENT_ID INTEGER,\r
-    REFERENCEFORPARENTCHILDRELATION_ID INTEGER,\r
-    SYNONYMTOBEUSED_ID INTEGER,\r
-    TAXON_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION(\r
-       ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    AGENT_ID INTEGER,\r
-       TAXONNODE_ID INTEGER,\r
-       TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_AUD(\r
-       ID INTEGER NOT NULL,\r
-       REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-       CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    AGENT_ID INTEGER,\r
-       TAXONNODE_ID INTEGER,\r
-       TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION(\r
-    TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER(\r
-    TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    SORTINDEX INTEGER,\r
-    TREEINDEX VARCHAR(255),\r
-    COUNTCHILDREN INTEGER,\r
-    MICROREFERENCEFORPARENTCHILDRELATION VARCHAR(255),\r
-       EXCLUDED BOOLEAN,\r
-       UNPLACED BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CLASSIFICATION_ID INTEGER,\r
-    PARENT_ID INTEGER,\r
-    REFERENCEFORPARENTCHILDRELATION_ID INTEGER,\r
-    SYNONYMTOBEUSED_ID INTEGER,\r
-    TAXON_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_ANNOTATION(\r
-    TAXONNODE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNODE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_EXCLUDEDNOTE(\r
-    TAXONNODE_ID INTEGER NOT NULL,\r
-    EXCLUDEDNOTE_ID INTEGER NOT NULL,\r
-       EXCLUDEDNOTE_MAPKEY_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_EXCLUDEDNOTE;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_EXCLUDEDNOTE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNODE_ID INTEGER NOT NULL,\r
-    EXCLUDEDNOTE_ID INTEGER NOT NULL,\r
-       EXCLUDEDNOTE_MAPKEY_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_EXCLUDEDNOTE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_MARKER(\r
-    TAXONNODE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TAXONNODE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONNODE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONRELATIONSHIP(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    DOUBTFUL BOOLEAN NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    RELATEDFROM_ID INTEGER,\r
-    RELATEDTO_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONRELATIONSHIP;\r
-CREATE CACHED TABLE PUBLIC.TAXONRELATIONSHIP_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    DOUBTFUL BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    RELATEDFROM_ID INTEGER,\r
-    RELATEDTO_ID INTEGER,\r
-    TYPE_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONRELATIONSHIP_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION(\r
-    TAXONRELATIONSHIP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONRELATIONSHIP_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONRELATIONSHIP_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONRELATIONSHIP_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TAXONRELATIONSHIP_MARKER(\r
-    TAXONRELATIONSHIP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONRELATIONSHIP_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TAXONRELATIONSHIP_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TAXONRELATIONSHIP_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONRELATIONSHIP_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TERMTYPE VARCHAR(4),\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN NOT NULL,\r
-    TITLECACHE VARCHAR(255),\r
-    URI CLOB,\r
-    TERMSOURCEURI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 37 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    TERMTYPE VARCHAR(4),\r
-    LSID_AUTHORITY VARCHAR(255),\r
-    LSID_LSID VARCHAR(255),\r
-    LSID_NAMESPACE VARCHAR(255),\r
-    LSID_OBJECT VARCHAR(255),\r
-    LSID_REVISION VARCHAR(255),\r
-    PROTECTEDTITLECACHE BOOLEAN,\r
-    TITLECACHE VARCHAR(255),\r
-    URI CLOB,\r
-    TERMSOURCEURI CLOB,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER\r
-);\r
--- 37 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_ANNOTATION(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_CREDIT(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_CREDIT;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_CREDIT_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    CREDITS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_CREDIT_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_EXTENSION(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_EXTENSION;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    EXTENSIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_EXTENSION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    IDENTIFIERS_ID INTEGER NOT NULL,\r
-    SORTINDEX INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_MARKER(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    SOURCES_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 37 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_REPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 37 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_REPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO(\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_RIGHTSINFO;\r
-CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TERMVOCABULARY_ID INTEGER NOT NULL,\r
-    RIGHTS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_RIGHTSINFO_AUD;\r
-CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    NOTDESIGNATED BOOLEAN NOT NULL,\r
-    CONSERVEDTYPE BOOLEAN,\r
-    REJECTEDTYPE BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    TYPESTATUS_ID INTEGER,\r
-    TYPENAME_ID INTEGER,\r
-    TYPESPECIMEN_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TYPEDESIGNATIONBASE;\r
-CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CITATIONMICROREFERENCE VARCHAR(255),\r
-    ORIGINALNAMESTRING VARCHAR(255),\r
-    NOTDESIGNATED BOOLEAN,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    CITATION_ID INTEGER,\r
-    TYPESTATUS_ID INTEGER,\r
-    CONSERVEDTYPE BOOLEAN,\r
-    REJECTEDTYPE BOOLEAN,\r
-    TYPENAME_ID INTEGER,\r
-    TYPESPECIMEN_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TYPEDESIGNATIONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION(\r
-    TYPEDESIGNATIONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TYPEDESIGNATIONBASE_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER(\r
-    TYPEDESIGNATIONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TYPEDESIGNATIONBASE_MARKER;\r
-CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    TYPEDESIGNATIONBASE_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.TYPEDESIGNATIONBASE_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.USERACCOUNT(\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    ACCOUNTNONEXPIRED BOOLEAN NOT NULL,\r
-    ACCOUNTNONLOCKED BOOLEAN NOT NULL,\r
-    CREDENTIALSNONEXPIRED BOOLEAN NOT NULL,\r
-    EMAILADDRESS VARCHAR(255),\r
-    ENABLED BOOLEAN NOT NULL,\r
-    PASSWORD VARCHAR(255),\r
-    USERNAME VARCHAR(255) NOT NULL,\r
-    CREATEDBY_ID INTEGER,\r
-    PERSON_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.USERACCOUNT;\r
-CREATE CACHED TABLE PUBLIC.USERACCOUNT_AUD(\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    ACCOUNTNONEXPIRED BOOLEAN,\r
-    ACCOUNTNONLOCKED BOOLEAN,\r
-    CREDENTIALSNONEXPIRED BOOLEAN,\r
-    EMAILADDRESS VARCHAR(255),\r
-    ENABLED BOOLEAN,\r
-    USERNAME VARCHAR(255),\r
-    CREATEDBY_ID INTEGER,\r
-    PERSON_ID INTEGER\r
-);\r
--- 1 +/- SELECT COUNT(*) FROM PUBLIC.USERACCOUNT_AUD;\r
-CREATE CACHED TABLE PUBLIC.USERACCOUNT_GRANTEDAUTHORITYIMPL(\r
-    USER_ID INTEGER NOT NULL,\r
-    GRANTEDAUTHORITIES_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.USERACCOUNT_GRANTEDAUTHORITYIMPL;\r
-CREATE CACHED TABLE PUBLIC.USERACCOUNT_PERMISSIONGROUP(\r
-    MEMBERS_ID INTEGER NOT NULL,\r
-    GROUPS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.USERACCOUNT_PERMISSIONGROUP;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    DESCRIPTIVESYSTEM_ID INTEGER,\r
-       MAXRANK_ID INTEGER,\r
-       MINRANK_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_AUD(\r
-    DTYPE VARCHAR(31) NOT NULL,\r
-    ID INTEGER NOT NULL,\r
-    REV INTEGER NOT NULL,\r
-    REVTYPE TINYINT,\r
-    CREATED TIMESTAMP,\r
-    UUID VARCHAR(36),\r
-    UPDATED TIMESTAMP,\r
-    CREATEDBY_ID INTEGER,\r
-    UPDATEDBY_ID INTEGER,\r
-    DESCRIPTIVESYSTEM_ID INTEGER,\r
-       MAXRANK_ID INTEGER,\r
-       MINRANK_ID INTEGER\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_AUD;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_ANNOTATION(\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_ANNOTATION;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_ANNOTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    ANNOTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_ANNOTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE(\r
-    WORKINGSETS_ID INTEGER NOT NULL,\r
-    DESCRIPTIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_DESCRIPTIONBASE;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    WORKINGSETS_ID INTEGER NOT NULL,\r
-    DESCRIPTIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_DESCRIPTIONBASE_AUD;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_MARKER(\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_MARKER;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_MARKER_AUD(\r
-    REV INTEGER NOT NULL,\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    MARKERS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_MARKER_AUD;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_NAMEDAREA(\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    GEOFILTER_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_NAMEDAREA;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_NAMEDAREA_AUD(\r
-    REV INTEGER NOT NULL,\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    GEOFILTER_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_NAMEDAREA_AUD;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_REPRESENTATION(\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_REPRESENTATION;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_REPRESENTATION_AUD(\r
-    REV INTEGER NOT NULL,\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    REPRESENTATIONS_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_REPRESENTATION_AUD;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_TAXONNODE(\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    TAXONSUBTREEFILTER_ID INTEGER NOT NULL\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_TAXONNODE;\r
-CREATE CACHED TABLE PUBLIC.WORKINGSET_TAXONNODE_AUD(\r
-    REV INTEGER NOT NULL,\r
-    WORKINGSET_ID INTEGER NOT NULL,\r
-    TAXONSUBTREEFILTER_ID INTEGER NOT NULL,\r
-    REVTYPE TINYINT\r
-);\r
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.WORKINGSET_TAXONNODE_AUD;\r
-CREATE CACHED TABLE PUBLIC.HIBERNATE_SEQUENCES(\r
-    SEQUENCE_NAME VARCHAR(255) NOT NULL,\r
-    NEXT_VAL BIGINT\r
-);\r
--- 8 +/- SELECT COUNT(*) FROM PUBLIC.HIBERNATE_SEQUENCES;\r
-ALTER TABLE PUBLIC.TAXONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF6B PRIMARY KEY(TAXONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7E7 PRIMARY KEY(REV, DESCRIPTIONELEMENTBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFD6F PRIMARY KEY(REV, HOMOTYPICALGROUP_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBCD PRIMARY KEY(REV, TYPEDESIGNATIONBASE_ID, ANNOTATIONS_ID);\r
-----ALTER TABLE PUBLIC.SEQUENCE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7E6 PRIMARY KEY(SEQUENCE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX340 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX346 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX341 PRIMARY KEY(POLYTOMOUSKEY_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBCB PRIMARY KEY(REV, WORKINGSET_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBC2 PRIMARY KEY(TAXONBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX33F PRIMARY KEY(REV, GATHERINGEVENT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7D7 PRIMARY KEY(TAXONNAME_ID, STATUS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBAC PRIMARY KEY(COUNTRY_ID, CONTINENTS_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBB0 PRIMARY KEY(DETERMINATIONEVENT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX33C PRIMARY KEY(REV, TAXONNAME_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFD PRIMARY KEY(DEFINEDTERMBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX185 PRIMARY KEY(TAXONBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX36E PRIMARY KEY(TERMVOCABULARY_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFE PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIA_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX15A PRIMARY KEY(MEDIA_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC76 PRIMARY KEY(REV, HYBRIDRELATIONSHIP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC81 PRIMARY KEY(NAMERELATIONSHIP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD97 PRIMARY KEY(REV, POLYTOMOUSKEY_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD9A PRIMARY KEY(MEDIA_ID, DESCRIPTION_MAPKEY_ID);\r
-----ALTER TABLE PUBLIC.SEQUENCE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD9D PRIMARY KEY(REV, SEQUENCE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX371 PRIMARY KEY(TERMVOCABULARY_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBA5 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.CREDIT_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBE3 PRIMARY KEY(REV, CREDIT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7FE PRIMARY KEY(TAXONRELATIONSHIP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5A4 PRIMARY KEY(REV, MULTIACCESSKEY_ID, GEOGRAPHICALSCOPE_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5A2 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.ANNOTATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBE6 PRIMARY KEY(REV, ANNOTATION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX909E PRIMARY KEY(TAXONINTERACTION_ID, DESCRIPTION_MAPKEY_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2CE PRIMARY KEY(REV, SEQUENCE_ID, CHROMATOGRAMS_ID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBE0 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBA2 PRIMARY KEY(REV, FEATURE_ID, RECOMMENDEDMEASUREMENTUNITS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF36 PRIMARY KEY(REV, LANGUAGESTRING_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX301 PRIMARY KEY(REV, RIGHTS_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF43 PRIMARY KEY(REV, REFERENCE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7A3 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.TAXONNODE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF49 PRIMARY KEY(REV, TAXONNODE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF1F PRIMARY KEY(REPRESENTATION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.HIBERNATE_SEQUENCES ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX59A PRIMARY KEY(SEQUENCE_NAME);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX30E PRIMARY KEY(TERMVOCABULARY_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9D7 PRIMARY KEY(REV, TERMVOCABULARY_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX557 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX550 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.FEATURETREE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9E6 PRIMARY KEY(REV, FEATURETREE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9E5 PRIMARY KEY(POLYTOMOUSKEY_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX314 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX599 PRIMARY KEY(INSTITUTION_ID, TYPES_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXECE PRIMARY KEY(REV, TAXONNAME_ID, STATUS_ID);\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX32A PRIMARY KEY(STATISTICALMEASUREMENTVALUE_ID, MODIFIERS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEEB PRIMARY KEY(REV, TYPEDESIGNATIONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9E0 PRIMARY KEY(REV, SEQUENCE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7C6 PRIMARY KEY(MULTIACCESSKEY_ID, TAXONOMICSCOPE_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2C1 PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2BE PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2B2 PRIMARY KEY(POLYTOMOUSKEY_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2B4 PRIMARY KEY(POLYTOMOUSKEY_ID, COVEREDTAXA_ID);\r
-ALTER TABLE PUBLIC.TAXONNODE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXED7 PRIMARY KEY(TAXONNODE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIAKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF33 PRIMARY KEY(MEDIAKEY_ID, GEOGRAPHICALSCOPE_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7B1 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXED2 PRIMARY KEY(TAXONNAME_ID, TYPEDESIGNATIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2CD PRIMARY KEY(REV, FEATURE_ID, RECOMMENDEDSTATISTICALMEASURES_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXECC PRIMARY KEY(HYBRIDRELATIONSHIP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2E2 PRIMARY KEY(TERMVOCABULARY_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF5F5 PRIMARY KEY(REV, TAXONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2F2 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX360 PRIMARY KEY(REV, DESCRIPTIONELEMENTBASE_ID, MODIFYINGTEXT_ID, MODIFYINGTEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2C5 PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX154 PRIMARY KEY(REV, POLYTOMOUSKEY_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD48 PRIMARY KEY(COLLECTION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB599 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC24 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.REFERENCE_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC22 PRIMARY KEY(REFERENCE_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC10 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX718 PRIMARY KEY(REV, REPRESENTATION_ID, ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC29 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCA PRIMARY KEY(REV, DEFINEDTERMBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCB PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCC PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.FEATURETREE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCE PRIMARY KEY(REV, FEATURETREE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.COLLECTION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCF PRIMARY KEY(COLLECTION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDA PRIMARY KEY(REV, COLLECTION_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD3 PRIMARY KEY(REV, DESCRIPTIONELEMENTBASE_ID, MODIFIERS_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD4B PRIMARY KEY(ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX726 PRIMARY KEY(SEQUENCE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD63 PRIMARY KEY(REV, STATEDATA_ID, MODIFYINGTEXT_ID, MODIFYINGTEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC4D PRIMARY KEY(TERMVOCABULARY_ID, ANNOTATIONS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX550F PRIMARY KEY(REV, SEQUENCE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX69EA PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC0F PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIA_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC47 PRIMARY KEY(REV, MEDIA_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD56 PRIMARY KEY(REV, TAXONNAME_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX818 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD80 PRIMARY KEY(POLYTOMOUSKEY_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD2A PRIMARY KEY(REV, TAXONNAME_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX71C PRIMARY KEY(REFERENCE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.TAXONNAME_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD2F PRIMARY KEY(REV, TAXONNAME_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX729 PRIMARY KEY(KEYSTATEMENT_ID, LABEL_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD96 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD2 PRIMARY KEY(REV, TAXONINTERACTION_ID, DESCRIPTION_ID, DESCRIPTION_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF0 PRIMARY KEY(FEATURETREE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD4 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF2 PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF3 PRIMARY KEY(REV, COLLECTION_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEC PRIMARY KEY(CLASSIFICATION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXED PRIMARY KEY(DESCRIPTIONBASE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.COLLECTION_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEE PRIMARY KEY(COLLECTION_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFA PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFB PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX14B PRIMARY KEY(RIGHTS_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF9 PRIMARY KEY(FEATURETREE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX368 PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF5 PRIMARY KEY(CLASSIFICATION_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF4 PRIMARY KEY(REV, COUNTRY_ID, CONTINENTS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF7 PRIMARY KEY(CLASSIFICATION_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.MEDIAKEY_COVEREDTAXON_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF6 PRIMARY KEY(REV, MEDIAKEY_ID, COVEREDTAXA_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD5 PRIMARY KEY(REV, NAMERELATIONSHIP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFF PRIMARY KEY(REV, ORIGINALSOURCEBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF1 PRIMARY KEY(AGENTBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE8 PRIMARY KEY(AGENTBASE_ID, MARKERS_ID);\r
---ALTER TABLE PUBLIC.CLASSIFICATION_TAXONNODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD7 PRIMARY KEY(CLASSIFICATION_ID, ROOTNODES_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD6 PRIMARY KEY(REV, DETERMINATIONEVENT_ID, SETOFREFERENCES_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD9 PRIMARY KEY(DERIVATIONEVENT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFDC7 PRIMARY KEY(TAXONNAME_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE2 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.FEATURETREE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE0 PRIMARY KEY(FEATURETREE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.COLLECTION_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDD PRIMARY KEY(COLLECTION_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE5 PRIMARY KEY(DESCRIPTIONBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDB PRIMARY KEY(FEATURE_ID, SUPPORTEDCATEGORICALENUMERATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX65C7 PRIMARY KEY(REV, MEDIAKEY_ID, KEYREPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDF PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEB PRIMARY KEY(POLYTOMOUSKEY_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE7 PRIMARY KEY(REV, AGENTBASE_ID, CONTACT_FAXNUMBERS_ELEMENT);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE3 PRIMARY KEY(REV, POLYTOMOUSKEY_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE9 PRIMARY KEY(DESCRIPTIONELEMENTBASE_ID, MODIFYINGTEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDE PRIMARY KEY(REV, CLASSIFICATION_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX542 PRIMARY KEY(LANGUAGESTRING_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDC PRIMARY KEY(CLASSIFICATION_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF0C PRIMARY KEY(LANGUAGESTRING_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAE9 PRIMARY KEY(DESCRIPTIONELEMENTBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8DC PRIMARY KEY(TYPEDESIGNATIONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.USERACCOUNT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC4F0 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAE5 PRIMARY KEY(DEFINEDTERMBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX43D PRIMARY KEY(GATHERINGEVENT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.LOCUS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX453 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX91D PRIMARY KEY(REV, TAXONBASE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.COLLECTION_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAD9 PRIMARY KEY(REV, COLLECTION_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.FEATURETREE_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX444 PRIMARY KEY(FEATURETREE_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8B0 PRIMARY KEY(REV, MULTIACCESSKEY_ID, COVEREDTAXA_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX63FF PRIMARY KEY(GATHERINGEVENT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8BD PRIMARY KEY(REV, WORKINGSET_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX43B PRIMARY KEY(REV, ORIGINALSOURCEBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX509 PRIMARY KEY(TEXTDATA_ID, MULTILANGUAGETEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.MEDIA_SEQUENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX448 PRIMARY KEY(PHYLOGENETICTREE_ID, USEDSEQUENCES_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6887 PRIMARY KEY(REV, ORIGINALS_ID, DERIVATIONEVENTS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFF4 PRIMARY KEY(TAXONBASE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX952 PRIMARY KEY(REV, MEDIA_ID, DESCRIPTION_ID, DESCRIPTION_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX56B6 PRIMARY KEY(TAXONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFFF PRIMARY KEY(REV, TERMVOCABULARY_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA47 PRIMARY KEY(ORIGINALSOURCEBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX969 PRIMARY KEY(MEDIA_ID, TITLE_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA53 PRIMARY KEY(WORKINGSETS_ID, DESCRIPTIONS_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX514 PRIMARY KEY(REV, SEQUENCE_ID, CITATIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX906 PRIMARY KEY(FEATURETREE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX901 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX909 PRIMARY KEY(REV, MEDIA_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA1D PRIMARY KEY(TAXONNAME_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX919 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.LSIDAUTHORITY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA44 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_FEATURE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX435 PRIMARY KEY(DESCRIPTIONBASE_ID, DESCRIPTIVESYSTEM_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA5F PRIMARY KEY(HOMOTYPICALGROUP_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8B6 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2E PRIMARY KEY(MEDIA_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX17 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX19 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX11 PRIMARY KEY(INDIVIDUALSASSOCIATION_ID, DESCRIPTION_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2F PRIMARY KEY(REV, NOMENCLATURALSTATUS_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX439 PRIMARY KEY(REV, MEDIA_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX15 PRIMARY KEY(REV, DEFINEDTERMBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX45D PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX16 PRIMARY KEY(MEDIA_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1B PRIMARY KEY(POLYTOMOUSKEY_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1D PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1C PRIMARY KEY(FEATURE_ID, RECOMMENDEDMEASUREMENTUNITS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX14 PRIMARY KEY(FEATURE_ID, RECOMMENDEDMODIFIERENUMERATION_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF5F PRIMARY KEY(REV, DERIVATIONEVENT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX13 PRIMARY KEY(REV, MEDIA_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2B PRIMARY KEY(DEFINEDTERMBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNODE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8CB PRIMARY KEY(REV, TAXONNODE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAFB PRIMARY KEY(TAXONBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXON_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2B4E PRIMARY KEY(REV, POLYTOMOUSKEY_ID, TAXON_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2A PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX28 PRIMARY KEY(AGENTBASE_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX29 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAF1 PRIMARY KEY(REV, TERMVOCABULARY_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX20 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX21 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX26 PRIMARY KEY(REV, NOMENCLATURALSTATUS_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX24 PRIMARY KEY(REV, FEATURETREE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX25 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX30 PRIMARY KEY(REV, GATHERINGEVENT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2C PRIMARY KEY(DEFINEDTERMBASE_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.CDM_VIEW_CDM_VIEW ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX23 PRIMARY KEY(CDM_VIEW_ID, SUPERVIEWS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX953 PRIMARY KEY(ANNOTATION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX282 PRIMARY KEY(HYBRIDRELATIONSHIP_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA65 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE64 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE65 PRIMARY KEY(REV, FEATURETREE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX23A PRIMARY KEY(ORIGINALS_ID, DERIVATIONEVENTS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX239 PRIMARY KEY(REV, CLASSIFICATION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFF0 PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX244 PRIMARY KEY(REV, REFERENCE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX247 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE5B PRIMARY KEY(REV, POLYTOMOUSKEY_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX242 PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX988 PRIMARY KEY(TAXONRELATIONSHIP_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFD0 PRIMARY KEY(REV, DESCRIPTIONELEMENTBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX25D PRIMARY KEY(MEDIA_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFD6 PRIMARY KEY(DESCRIPTIONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX984 PRIMARY KEY(COLLECTION_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFD2 PRIMARY KEY(REV, RIGHTS_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.USERACCOUNT_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX225 PRIMARY KEY(USER_ID, GRANTEDAUTHORITIES_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC3CB PRIMARY KEY(TERMVOCABULARY_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURENODE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9FE PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX56B PRIMARY KEY(DERIVATIONEVENT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX56A PRIMARY KEY(REV, TAXONNAME_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.MEDIA_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX564 PRIMARY KEY(REV, MEDIA_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX560 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBF7 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.REFERENCE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX599C PRIMARY KEY(REFERENCE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE92 PRIMARY KEY(REFERENCE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB49 PRIMARY KEY(REV, TERMVOCABULARY_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE70 PRIMARY KEY(REV, STATISTICALMEASUREMENTVALUE_ID, MODIFIERS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE8A PRIMARY KEY(REV, AGENTBASE_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE8B PRIMARY KEY(REPRESENTATION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE8C PRIMARY KEY(REV, DESCRIPTIONELEMENTBASE_ID, MEDIA_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.STATEDATA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX60B PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX656 PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, DEFINITION_ID, DEFINITION_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB36 PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE3C PRIMARY KEY(REV, TAXONBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC81E PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.TAXONNAME_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX98E PRIMARY KEY(TAXONNAME_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA85 PRIMARY KEY(FEATURENODE_ID, ONLYAPPLICABLEIF_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB92 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB5D PRIMARY KEY(NOMENCLATURALSTATUS_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA82 PRIMARY KEY(REV, DESCRIPTIONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA70 PRIMARY KEY(TAXONDESCRIPTION_ID, GEOSCOPES_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB59 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5FC PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB5A PRIMARY KEY(REV, POLYTOMOUSKEY_ID, COVEREDTAXA_ID);\r
-ALTER TABLE PUBLIC.TAXONNODE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB62 PRIMARY KEY(TAXONNODE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5F7 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.TAXONNAME_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5F6 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA5E PRIMARY KEY(REV, POLYTOMOUSKEYNODE_ID, MODIFYINGTEXT_ID, MODIFYINGTEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX94C PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFA8 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA5C PRIMARY KEY(DESCRIPTIONBASE_ID, DESCRIPTIONSOURCES_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB86 PRIMARY KEY(DESCRIPTIONBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFDE PRIMARY KEY(REV, MULTIACCESSKEY_ID, SCOPERESTRICTIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB77 PRIMARY KEY(POLYTOMOUSKEY_ID, TAXON_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFDC PRIMARY KEY(REV, REFERENCE_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX60C PRIMARY KEY(DEFINEDTERMBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2864 PRIMARY KEY(REV, STATEDATA_ID, MODIFIERS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA9D PRIMARY KEY(REV, SEQUENCE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_SEQUENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFE4 PRIMARY KEY(REV, PHYLOGENETICTREE_ID, USEDSEQUENCES_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEC9 PRIMARY KEY(WORKINGSET_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4F7 PRIMARY KEY(TYPEDESIGNATIONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFB3 PRIMARY KEY(REV, HYBRIDRELATIONSHIP_ID, ANNOTATIONS_ID);\r
---ALTER TABLE PUBLIC.CLASSIFICATION_TAXONNODE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX286 PRIMARY KEY(REV, CLASSIFICATION_ID, ROOTNODES_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB9F PRIMARY KEY(FEATURETREE_ID, EXTENSIONS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9EB PRIMARY KEY(SEQUENCE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5DE PRIMARY KEY(RIGHTS_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA96 PRIMARY KEY(TERM_ID, INVERSEREPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA7B PRIMARY KEY(REV, MEDIA_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA7D PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEB6 PRIMARY KEY(TAXONNAME_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC34 PRIMARY KEY(REV, NAMERELATIONSHIP_ID, ANNOTATIONS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX88C PRIMARY KEY(SEQUENCE_ID, EXTENSIONS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX807 PRIMARY KEY(SEQUENCE_ID, CHROMATOGRAMS_ID);\r
-ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDAF PRIMARY KEY(REV, WORKINGSETS_ID, DESCRIPTIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA9 PRIMARY KEY(REV, POLYTOMOUSKEY_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5A PRIMARY KEY(REV, DEFINEDTERMBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6D PRIMARY KEY(REV, LANGUAGESTRING_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA8 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX53 PRIMARY KEY(REV, INSTITUTION_ID, TYPES_ID);\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1D0 PRIMARY KEY(REV, KEYSTATEMENT_ID, LABEL_ID, LABEL_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.CREDIT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5488765 PRIMARY KEY(REV, CREDIT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX58 PRIMARY KEY(REV, TAXONDESCRIPTION_ID, SCOPES_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX56 PRIMARY KEY(REV, FEATURE_ID, SUPPORTEDCATEGORICALENUMERATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBD PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA2 PRIMARY KEY(DESCRIPTIONELEMENTBASE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA7 PRIMARY KEY(REV, DESCRIPTIONBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6E PRIMARY KEY(REV, COLLECTION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX55 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX71 PRIMARY KEY(REV, TAXONDESCRIPTION_ID, GEOSCOPES_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_FEATURE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3D PRIMARY KEY(REV, DESCRIPTIONBASE_ID, DESCRIPTIVESYSTEM_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5A24 PRIMARY KEY(POLYTOMOUSKEY_ID, GEOGRAPHICALSCOPE_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3C PRIMARY KEY(POLYTOMOUSKEYNODE_ID, MODIFYINGTEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.MEDIA_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6B PRIMARY KEY(MEDIA_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6A PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6634534 PRIMARY KEY(REV, DEFINEDTERMBASE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX68 PRIMARY KEY(DESCRIPTIONELEMENTBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX65 PRIMARY KEY(DESCRIPTIONBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6F PRIMARY KEY(REV, DESCRIPTIONBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX69 PRIMARY KEY(DEFINEDTERMBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX72 PRIMARY KEY(REV, DERIVATIONEVENT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDC8 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.TAXONNAME_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX88B PRIMARY KEY(TAXONNAME_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX64 PRIMARY KEY(REV, TERMVOCABULARY_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCA5 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1E1 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX557C PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.MEDIAKEY_SCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3AA PRIMARY KEY(MEDIAKEY_ID, SCOPERESTRICTIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA4 PRIMARY KEY(REV, DESCRIPTIONBASE_ID, DESCRIPTIONSOURCES_ID);\r
-ALTER TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3AC PRIMARY KEY(STATEDATA_ID, MODIFIERS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD PRIMARY KEY(AGENTBASE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.CDMMETADATA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX87 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX86 PRIMARY KEY(DETERMINATIONEVENT_ID, SETOFREFERENCES_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8E PRIMARY KEY(SEQUENCE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX88 PRIMARY KEY(REV, REFERENCE_ID, MARKERS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8C PRIMARY KEY(REV, SEQUENCE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_SCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8B PRIMARY KEY(REV, POLYTOMOUSKEY_ID, SCOPERESTRICTIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8A PRIMARY KEY(REFERENCE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX87CF PRIMARY KEY(MEDIA_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8F PRIMARY KEY(REV, CLASSIFICATION_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX95 PRIMARY KEY(REV, AGENTBASE_ID, CONTACT_PHONENUMBERS_ELEMENT);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA5 PRIMARY KEY(REV, FEATURE_ID, RECOMMENDEDMODIFIERENUMERATION_ID);\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA6 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.TAXONNAME_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX698 PRIMARY KEY(REV, TAXONNAME_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3A PRIMARY KEY(REV, DEFINEDTERMBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX60 PRIMARY KEY(REV, COLLECTION_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA1 PRIMARY KEY(REV, TEXTDATA_ID, MULTILANGUAGETEXT_ID, MULTILANGUAGETEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX63 PRIMARY KEY(DESCRIPTIONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5D PRIMARY KEY(DESCRIPTIONELEMENTBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCA4 PRIMARY KEY(TAXONNAME_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_URLS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5C PRIMARY KEY(REV, AGENTBASE_ID, CONTACT_URLS_ELEMENT);\r
-ALTER TABLE PUBLIC.TAXONBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6B24 PRIMARY KEY(REV, TAXONBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5F PRIMARY KEY(REV, DEFINEDTERMBASE_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX61 PRIMARY KEY(REV, TAXONBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1DF PRIMARY KEY(TERMVOCABULARY_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX69E PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX850 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.MEDIAKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3AB PRIMARY KEY(MEDIAKEY_ID, TAXONOMICSCOPE_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX83E PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDDD PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3F PRIMARY KEY(REV, FEATURENODE_ID, ONLYAPPLICABLEIF_ID);\r
-ALTER TABLE PUBLIC.MEDIAKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAA PRIMARY KEY(MEDIAKEY_ID, COVEREDTAXA_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX96 PRIMARY KEY(REV, NAMEDAREA_ID, COUNTRIES_ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCAA PRIMARY KEY(MULTIACCESSKEY_ID, COVEREDTAXA_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC9 PRIMARY KEY(REV, WORKINGSET_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAF PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.COLLECTION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAD PRIMARY KEY(REV, COLLECTION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC8 PRIMARY KEY(REV, DETERMINATIONEVENT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3DF PRIMARY KEY(REV, SEQUENCE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.USERACCOUNT_PERMISSIONGROUP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAB PRIMARY KEY(MEMBERS_ID, GROUPS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4A PRIMARY KEY(REV, TAXONBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCC2 PRIMARY KEY(MULTIACCESSKEY_ID, GEOGRAPHICALSCOPE_ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX879 PRIMARY KEY(NOMENCLATURALSTATUS_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC7 PRIMARY KEY(REV, GATHERINGEVENT_ID, COLLECTINGAREAS_ID);\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAC PRIMARY KEY(FEATURENODE_ID, INAPPLICABLEIF_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB9 PRIMARY KEY(REV, AGENTBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC0 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB5 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBF PRIMARY KEY(REV, CLASSIFICATION_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX86A PRIMARY KEY(REV, TERMVOCABULARY_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3DC PRIMARY KEY(REV, REPRESENTATION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBE PRIMARY KEY(AGENTBASE_ID, CONTACT_ADDRESSES_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB8 PRIMARY KEY(REV, AGENTBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBC PRIMARY KEY(HOMOTYPICALGROUP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX48 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.COLLECTION_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBB PRIMARY KEY(COLLECTION_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB3 PRIMARY KEY(REV, FEATURENODE_ID, INAPPLICABLEIF_ID);\r
-ALTER TABLE PUBLIC.PERMISSIONGROUP_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB1 PRIMARY KEY(GROUP_ID, GRANTEDAUTHORITIES_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB6 PRIMARY KEY(FEATURE_ID, RECOMMENDEDSTATISTICALMEASURES_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_SCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB7 PRIMARY KEY(POLYTOMOUSKEY_ID, SCOPERESTRICTIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB4 PRIMARY KEY(REV, AGENTBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBA PRIMARY KEY(REV, AGENTBASE_ID, CONTACT_EMAILADDRESSES_ELEMENT);\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC6A35D PRIMARY KEY(STATEDATA_ID, MODIFYINGTEXT_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4F PRIMARY KEY(REV, MEDIA_ID, TITLE_ID, TITLE_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.CDM_VIEW ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC5 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIAKEY_NAMEDAREA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDBEE PRIMARY KEY(REV, MEDIAKEY_ID, GEOGRAPHICALSCOPE_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3EB PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MEDIAKEY_TAXONSCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE05 PRIMARY KEY(REV, MEDIAKEY_ID, TAXONOMICSCOPE_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3CC PRIMARY KEY(REV, TAXONRELATIONSHIP_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4D PRIMARY KEY(REV, ANNOTATION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX36 PRIMARY KEY(REV, DEFINEDTERMBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX35 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE02 PRIMARY KEY(REV, FEATURETREE_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDBE PRIMARY KEY(NAMEDAREA_ID, COUNTRIES_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX31 PRIMARY KEY(DESCRIPTIONELEMENTBASE_ID, MODIFIERS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX32 PRIMARY KEY(REV, FEATURETREE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX33 PRIMARY KEY(REV, DESCRIPTIONBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX34 PRIMARY KEY(REV, COLLECTION_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX37 PRIMARY KEY(REV, TAXONRELATIONSHIP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4E PRIMARY KEY(REFERENCE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX43 PRIMARY KEY(REV, CLASSIFICATION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3E8 PRIMARY KEY(WORKINGSET_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3D9 PRIMARY KEY(REV, POLYTOMOUSKEY_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC4 PRIMARY KEY(COLLECTION_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.MEDIA_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX46 PRIMARY KEY(MEDIAKEY_ID, KEYREPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3E PRIMARY KEY(REV, DETERMINATIONEVENT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX45 PRIMARY KEY(REV, HOMOTYPICALGROUP_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3E3 PRIMARY KEY(REV, TAXONNAME_ID, TYPEDESIGNATIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEDIA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX52 PRIMARY KEY(REV, DEFINEDTERMBASE_ID, MEDIA_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX44 PRIMARY KEY(AGENTBASE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX50 PRIMARY KEY(DEFINEDTERMBASE_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC3 PRIMARY KEY(REV, INDIVIDUALSASSOCIATION_ID, DESCRIPTION_ID, DESCRIPTION_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC2 PRIMARY KEY(REV, FEATURETREE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX871 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCC8 PRIMARY KEY(GATHERINGEVENT_ID, COLLECTINGAREAS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC1 PRIMARY KEY(REV, REFERENCE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX51 PRIMARY KEY(REV, TERM_ID, INVERSEREPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ADDRESS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCE45 PRIMARY KEY(REV, AGENTBASE_ID, CONTACT_ADDRESSES_ID);\r
-ALTER TABLE PUBLIC.PERMISSIONGROUP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE26 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX93 PRIMARY KEY(FEATURETREE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.AUDITEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8A37655 PRIMARY KEY(REVISIONNUMBER);\r
-ALTER TABLE PUBLIC.TAXONNODE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX66E PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9E PRIMARY KEY(DETERMINATIONEVENT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX82 PRIMARY KEY(REV, CLASSIFICATION_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7A125 PRIMARY KEY(AGENTBASE_ID, SOURCES_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7F PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX63456AE PRIMARY KEY(REV, AGENTBASE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX83 PRIMARY KEY(DEFINEDTERMBASE_ID, REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX98 PRIMARY KEY(CLASSIFICATION_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX53456AE PRIMARY KEY(AGENTBASE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCE5 PRIMARY KEY(ORIGINALSOURCEBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX880 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.AGENTBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX43456AE PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX33456AE PRIMARY KEY(TEAM_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7E PRIMARY KEY(REV, DESCRIPTIONBASE_ID, SOURCES_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB3456AE PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9F PRIMARY KEY(REV, DESCRIPTIONBASE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX84 PRIMARY KEY(CLASSIFICATION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX87A PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.AGENTBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF PRIMARY KEY(REV, AGENTBASE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6E1 PRIMARY KEY(NAMERELATIONSHIP_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.CREDIT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1 PRIMARY KEY(CREDIT_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3A0 PRIMARY KEY(TAXONDESCRIPTION_ID, SCOPES_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX99 PRIMARY KEY(WORKINGSET_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA3456AE PRIMARY KEY(ANNOTATION_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6EF PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9A PRIMARY KEY(REV, SPECIMENOROBSERVATIONBASE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.LOCUS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX80 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX93456AE PRIMARY KEY(REV, TEAM_ID, TEAMMEMBERS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9D PRIMARY KEY(REV, MULTIACCESSKEY_ID, TAXONOMICSCOPE_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCFF PRIMARY KEY(REV, TERMVOCABULARY_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX85 PRIMARY KEY(REV, REFERENCE_ID, EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX81 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7C PRIMARY KEY(MULTIACCESSKEY_ID, SCOPERESTRICTIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX92 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.COLLECTION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX90 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.LSIDAUTHORITY_NAMESPACES ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX77 PRIMARY KEY(LSIDAUTHORITY_ID, NAMESPACES_MAPKEY);\r
-ALTER TABLE PUBLIC.REFERENCE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX81E PRIMARY KEY(REFERENCE_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7B PRIMARY KEY(REV, DESCRIPTIONELEMENTBASE_ID, SOURCES_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_REFERENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX762 PRIMARY KEY(SEQUENCE_ID, CITATIONS_ID);\r
-ALTER TABLE PUBLIC.KEYSTATEMENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7A PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION_MARKER_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX91 PRIMARY KEY(REV, REPRESENTATION_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.MEDIAKEY_SCOPE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX40F PRIMARY KEY(REV, MEDIAKEY_ID, SCOPERESTRICTIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7D PRIMARY KEY(ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX97 PRIMARY KEY(SEQUENCE_ID, RIGHTS_ID);\r
-ALTER TABLE PUBLIC.ADDRESS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2 PRIMARY KEY(ID, REV);\r
-ALTER TABLE PUBLIC.REFERENCE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX804 PRIMARY KEY(REV, REFERENCE_ID, ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX668 PRIMARY KEY(REV, POLYTOMOUSKEY_ID, GEOGRAPHICALSCOPE_ID);\r
-ALTER TABLE PUBLIC.CREDIT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6E4 PRIMARY KEY(CREDIT_ID, MARKERS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX79 PRIMARY KEY(SPECIMENOROBSERVATIONBASE_ID, DEFINITION_MAPKEY_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX94 PRIMARY KEY(REV, AGENTBASE_ID, CREDITS_ID, SORTINDEX);\r
-ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX76 PRIMARY KEY(ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7A39 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX45D7 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.MEDIA_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX87CF2 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3406 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF1E UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9696 UNIQUE(TITLE_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9EB9 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCE56 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX71C0 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF1F6 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB51 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6E1E UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8AD UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX56B9 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE98 UNIQUE(MODIFYINGTEXT_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF0C6 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA1D5 UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXE04 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXC03 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXF21 UNIQUE(CREDITS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXX977 UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXC0FE UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXBC2C UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXF07 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXAFBA UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXX2F29 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXX9013 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.MEDIA_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXX15AD UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXXDC0 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXXXX3EB1 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9EF UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7B13 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.LOCUS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX453E UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX94CF UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2BE4 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDBF UNIQUE(SUPPORTEDCATEGORICALENUMERATIONS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5422 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB36B UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD488 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX98E1 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4E7 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX50A UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFEB UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.REPRESENTATION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE8BF UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE8E UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEBD UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFDB UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1B0 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA86 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX871F UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.COLLECTION_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC46 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX831 UNIQUE(REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBE03 UNIQUE(UUID);\r
---ALTER TABLE PUBLIC.SEQUENCE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7E63 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX65C UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD9A9 UNIQUE(DESCRIPTION_ID);\r
-ALTER TABLE PUBLIC.CDM_VIEW ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC5D UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC61 UNIQUE(MODIFYINGTEXT_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEC3 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.PERMISSIONGROUP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE261 UNIQUE(UUID, NAME);\r
-ALTER TABLE PUBLIC.CREDIT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1E UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX29C UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX76F UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7FE3 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX56B67 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX99E UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX986 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5DC UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB869 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF70 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.TAXONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX185F UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1E18 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.REFERENCE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX599CB UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX69E7 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8DCF UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2C5B UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB5D0 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX4F7D UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6EF3 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX79F UNIQUE(DEFINITION_ID);\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX214 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.CDMMETADATA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX87C UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9E5E UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8797 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8188 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TAXONNODE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXED73 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX341F UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX63F UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAE96 UNIQUE(MARKERS_ID);\r
---ALTER TABLE PUBLIC.CLASSIFICATION_TAXONNODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD7D UNIQUE(ROOTNODES_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2820 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.ANNOTATION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAE UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF52 UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEB60 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE56 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX819 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.CDM_VIEW_CDM_VIEW ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX230 UNIQUE(SUPERVIEWS_ID);\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX988B UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC819 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAE52 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX60CA UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDD7 UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBF7D UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2E26 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX40 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.CREDIT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6E4D UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX36E6 UNIQUE(SOURCES_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7263 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.MEDIA_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX6B2 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBCF UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX909ED UNIQUE(DESCRIPTION_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX934 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX447 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8E8 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX1DFF UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBE5 UNIQUE(CONTACT_ADDRESSES_ID);\r
-ALTER TABLE PUBLIC.REFERENCE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX81E7 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX242C UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX59 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX160 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX69EA1 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2B1 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7D6 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.FEATURETREE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF96 UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC3CBC UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX35B UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TAXONBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFF44 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBBE UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX919B UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2A9 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TAXONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXF6BE UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8B66 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.ANNOTATION_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX953D UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCA49 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFD69 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX43DC UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXECC2 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC247 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX688 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX75 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA961 UNIQUE(INVERSEREPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.USERACCOUNT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC4F06 UNIQUE(UUID, USERNAME);\r
-ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE6 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.REFERENCE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE924 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX145 UNIQUE(RECOMMENDEDMODIFIERENUMERATION_ID);\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBB00 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX88BA UNIQUE(CREDITS_ID);\r
---ALTER TABLE PUBLIC.SEQUENCE_MEDIA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX8079 UNIQUE(CHROMATOGRAMS_ID);\r
-ALTER TABLE PUBLIC.LSIDAUTHORITY ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA443 UNIQUE(UUID, AUTHORITY);\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX69B UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC103 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3463 UNIQUE(UUID, AUTHORITY);\r
---ALTER TABLE PUBLIC.SEQUENCE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX88C2 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2B2B UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD9E UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA656 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.MEDIA_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX25D4 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXEC95 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX729C UNIQUE(LABEL_ID);\r
-ALTER TABLE PUBLIC.SEQUENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7F1 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX371A UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.TAXONNODE_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB625 UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX444F UNIQUE(REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXFDC73 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX83EE UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5575 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX63FFD UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5605 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.AGENTBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD8 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5DEB UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX30E3 UNIQUE(REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX984E UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA47C UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX845 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3C3 UNIQUE(MODIFYINGTEXT_ID);\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5FCB UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB592 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.WORKINGSET_REPRESENTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3E88 UNIQUE(REPRESENTATIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX9063 UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.KEYSTATEMENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7A0 UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA5F1 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX11A UNIQUE(DESCRIPTION_ID);\r
-ALTER TABLE PUBLIC.MEDIA_SEQUENCE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX448E UNIQUE(USEDSEQUENCES_ID);\r
-ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCA5E UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC4D7 UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.FEATURETREE_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB9F0 UNIQUE(EXTENSIONS_ID);\r
-ALTER TABLE PUBLIC.COLLECTION_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCFB UNIQUE(ANNOTATIONS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXED4 UNIQUE(CREDITS_ID);\r
-ALTER TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX7D78 UNIQUE(STATUS_ID);\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX5094 UNIQUE(MULTILANGUAGETEXT_ID);\r
-ALTER TABLE PUBLIC.RIGHTSINFO_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX14BB UNIQUE(MARKERS_ID);\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD4BB UNIQUE(UUID);\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXD80E UNIQUE(SOURCES_ID);\r
-ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX2EC UNIQUE(RIGHTS_ID);\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_ANNOTATION ADD CONSTRAINT PUBLIC.FK8400DFA537998500 FOREIGN KEY(LANGUAGESTRING_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT ADD CONSTRAINT PUBLIC.FKE9D17767D0BDAE9B FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_SEQUENCE_AUD ADD CONSTRAINT PUBLIC.FK3C7BD9CD34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK4CB48B3D9C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.FK6AE876AB52FCC4B FOREIGN KEY(FEATURENODE_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKF810044F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK36EEE73234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FKAB2ADBA334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS_AUD ADD CONSTRAINT PUBLIC.FKDDD347F534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK886D90B734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKCFAA93163B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE767134AF0E81 FOREIGN KEY(INDESCRIPTION_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK365E4F3C3B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_CREDIT ADD CONSTRAINT PUBLIC.FK29BCD8B28C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_MARKER ADD CONSTRAINT PUBLIC.FK862BAEA7258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKF98828E834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK41ED09731E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_CREDIT ADD CONSTRAINT PUBLIC.FKC1F78FF4C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A664FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.FKB05CF9284FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA32728C750E27 FOREIGN KEY(LIFESTAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_EXTENSION ADD CONSTRAINT PUBLIC.FK8E1E5676927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MARKER ADD CONSTRAINT PUBLIC.FK89261453C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FK8AC9DCAE4CB0F315 FOREIGN KEY(TYPENAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK65CF621B9C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_MARKER ADD CONSTRAINT PUBLIC.FKD21E7935C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK4B22838834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C67F90DF03 FOREIGN KEY(EXBASIONYMAUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER ADD CONSTRAINT PUBLIC.FKB3FFDC7C777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_EXTENSION ADD CONSTRAINT PUBLIC.FK7BE66D41927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK99ABA37B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK6A2601A9C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_EXTENSION ADD CONSTRAINT PUBLIC.FKA8814EB2258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.FK9033CE7455F241D4 FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.FK1F5A74893FF8E7B2 FOREIGN KEY(GEOGRAPHICALSCOPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_CREDIT ADD CONSTRAINT PUBLIC.FKC1F78FF432D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEDIA_AUD ADD CONSTRAINT PUBLIC.FKDD9AE8FC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.FKF3D3D74334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK4D73278044E9E6D4 FOREIGN KEY(TYPEDESIGNATIONBASE_ID) REFERENCES PUBLIC.TYPEDESIGNATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_ANNOTATION ADD CONSTRAINT PUBLIC.FK9E7794688C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKAE4A67A734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK8E50DD02C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.FK1FFEC88B7029BD9F FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK5574E12EF135C42B FOREIGN KEY(POLYTOMOUSKEYNODE_ID) REFERENCES PUBLIC.POLYTOMOUSKEYNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK351E786C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK92D2427034869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.EXTENSION ADD CONSTRAINT PUBLIC.FK52EF3C1FAD392BD3 FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775AC73A7584 FOREIGN KEY(KEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK839208C489D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK5574E12E9682414B FOREIGN KEY(MODIFYINGTEXT_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKE40621B434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE ADD CONSTRAINT PUBLIC.FK8FB1ED8355A53F64 FOREIGN KEY(SETOFREFERENCES_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK409B7FE334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.FK78CA97194FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.FK5E5108328482454 FOREIGN KEY(RELATEDTO_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.FK1FFEC88BBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP ADD CONSTRAINT PUBLIC.FK7DECCC184FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_MARKER ADD CONSTRAINT PUBLIC.FK560063EC47E8AE60 FOREIGN KEY(REPRESENTATION_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.FK46C7FC44FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION ADD CONSTRAINT PUBLIC.FKDB1100068D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_EXTENSION ADD CONSTRAINT PUBLIC.FKAD1E6D3447C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKC753F137C6D55834 FOREIGN KEY(MULTILANGUAGETEXT_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE ADD CONSTRAINT PUBLIC.FK544ADBE1D0374392 FOREIGN KEY(PUBLISHEDIN_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKC753F137C086B46F FOREIGN KEY(TEXTDATA_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK8F39D56034869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_MARKER_AUD ADD CONSTRAINT PUBLIC.FK160230F834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKF41ADEEB53DD72E3 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_AUD ADD CONSTRAINT PUBLIC.FKE090C39D34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_MARKER_AUD ADD CONSTRAINT PUBLIC.FK89C7394C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.FK86E8953734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.LSIDAUTHORITY_NAMESPACES ADD CONSTRAINT PUBLIC.FKB04948F64FFCFD94 FOREIGN KEY(LSIDAUTHORITY_ID) REFERENCES PUBLIC.LSIDAUTHORITY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.FK9033CE744FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK69D9A11A7C34B6D6 FOREIGN KEY(COLLECTINGAREAS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_FEATURE ADD CONSTRAINT PUBLIC.FK58ACF564F1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK97F0C88934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKE86DE57D34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT ADD CONSTRAINT PUBLIC.FK4950A17284A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CREDIT ADD CONSTRAINT PUBLIC.FK2636742286EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_MARKER_AUD ADD CONSTRAINT PUBLIC.FK3F51048634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION ADD CONSTRAINT PUBLIC.FK371091E147E8AE60 FOREIGN KEY(REPRESENTATION_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_AUD ADD CONSTRAINT PUBLIC.FKDABF305434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK9754F464C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER ADD CONSTRAINT PUBLIC.FK97D36661777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FK38B45E734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FK69FBDD37777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_CREDIT ADD CONSTRAINT PUBLIC.FKADC940089D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKDC75C70F3A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK1306FAAF34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_MARKER_AUD ADD CONSTRAINT PUBLIC.FKC6FB487334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.FK6F1286F33DA462D5 FOREIGN KEY(ACTOR_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_ANNOTATION ADD CONSTRAINT PUBLIC.FK8400DFA51E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION ADD CONSTRAINT PUBLIC.FKAAC8AFE6B31C4747 FOREIGN KEY(REPRESENTATIONS_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK70BB5FD8DA0C376A FOREIGN KEY(LABEL_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK4FDFF8D134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_SCOPE ADD CONSTRAINT PUBLIC.FKBFFEE8F0546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION ADD CONSTRAINT PUBLIC.FKA408B63A258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(FEATURENODE_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKE644349534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK9AABDB5434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(SPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_AUD ADD CONSTRAINT PUBLIC.FKDA6A700C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272C8505DB FOREIGN KEY(PRESERVATION_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO ADD CONSTRAINT PUBLIC.FKDB1266D2C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.FK78CA9719F7976FC5 FOREIGN KEY(AGENT_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_MARKER_AUD ADD CONSTRAINT PUBLIC.FK6AEAB69934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK579A1DC028459272 FOREIGN KEY(DESCRIPTION_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKB212F49034869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.FK6F1286F34FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKCA7F794A3B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK510B2ACBF1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_MARKER ADD CONSTRAINT PUBLIC.FKD21E7935777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT ADD CONSTRAINT PUBLIC.FKB3F13C2AAC1B820 FOREIGN KEY(PERSON_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B403E17F4 FOREIGN KEY(INSTITUTION_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FK68FA835534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_ANNOTATION ADD CONSTRAINT PUBLIC.FKA020DAAAC2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ANNOTATION ADD CONSTRAINT PUBLIC.FK76D2071C258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76715E9914B8 FOREIGN KEY(STATUS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.EXTENSION ADD CONSTRAINT PUBLIC.FK52EF3C1F4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FKECAB4AC934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_SEQUENCE ADD CONSTRAINT PUBLIC.FK61D09FCF29B4761 FOREIGN KEY(USEDSEQUENCES_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE ADD CONSTRAINT PUBLIC.FKED8F3A5489D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKF746D2768C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART ADD CONSTRAINT PUBLIC.FK67A455444FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.FK5E51083BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK839208C43A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.CLASSIFICATION_TAXONNODE ADD CONSTRAINT PUBLIC.FKB0BD86D318929176 FOREIGN KEY(ROOTNODES_ID) REFERENCES PUBLIC.TAXONNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5FDC9A94FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_CREDIT ADD CONSTRAINT PUBLIC.FK29BCD8B232D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY ADD CONSTRAINT PUBLIC.FKA9E6B1384FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK7B5CDEB934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.FKE03B82923B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FKEFA0D10B4AAB411A FOREIGN KEY(DERIVATIONEVENT_ID) REFERENCES PUBLIC.DERIVATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKFB680C813A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_AUD ADD CONSTRAINT PUBLIC.FK6A6D682B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER ADD CONSTRAINT PUBLIC.FK2F5128E8D2CB1D4 FOREIGN KEY(NOMENCLATURALSTATUS_ID) REFERENCES PUBLIC.NOMENCLATURALSTATUS(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK13BD64E847C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK44D5F7D886EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_ANNOTATION ADD CONSTRAINT PUBLIC.FKFC824E31E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT ADD CONSTRAINT PUBLIC.FK45F60AFBE8CE10AA FOREIGN KEY(COUNTRY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_MARKER_AUD ADD CONSTRAINT PUBLIC.FKD640BBBD34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKD1D59CDC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FK76DDD01BF95F225A FOREIGN KEY(GATHERINGEVENT_ID) REFERENCES PUBLIC.GATHERINGEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_REFERENCE ADD CONSTRAINT PUBLIC.FK6944904DD57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.PERMISSIONGROUP ADD CONSTRAINT PUBLIC.FK629941D04FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK7AE0176334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK65CF621BC13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.FK91E56DF7E8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT ADD CONSTRAINT PUBLIC.FK7125B9F04FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.FK426BC033DA462D5 FOREIGN KEY(ACTOR_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FKB5AE7AB734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.FK1ED033D42687715A FOREIGN KEY(COUNTRY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2BAEC3B8B8 FOREIGN KEY(SCHOOL_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK579A1DC086C86FE0 FOREIGN KEY(TAXONINTERACTION_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.FK1C727CFF89D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER ADD CONSTRAINT PUBLIC.FK97E0D105E0960EC4 FOREIGN KEY(MODIFIERS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_ANNOTATION ADD CONSTRAINT PUBLIC.FKD8A9A9A21E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_EXTENSION ADD CONSTRAINT PUBLIC.FKC28EE7E68C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK4AD9EDFE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.FK91E56DF7BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.FKF078ABEBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_COVEREDTAXON_AUD ADD CONSTRAINT PUBLIC.FK857187B134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK3296F9AF34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_MEDIA ADD CONSTRAINT PUBLIC.FKBBEF5B0C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.FKC00C3966815C7E9 FOREIGN KEY(MEDIAKEY_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A4382686A FOREIGN KEY(STATEMENT_ID) REFERENCES PUBLIC.KEYSTATEMENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART ADD CONSTRAINT PUBLIC.FK67A45544E3818E37 FOREIGN KEY(REPRESENTATION_ID) REFERENCES PUBLIC.MEDIAREPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT_PERMISSIONGROUP ADD CONSTRAINT PUBLIC.FK812DE753887E3D12 FOREIGN KEY(MEMBERS_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK771279A934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FE7692740 FOREIGN KEY(COMMENTATOR_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.FKE412C816777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_MEDIA ADD CONSTRAINT PUBLIC.FK7320E703EB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_ANNOTATION ADD CONSTRAINT PUBLIC.FKEA970F701E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE ADD CONSTRAINT PUBLIC.FK4D34EDADE9E535F9 FOREIGN KEY(TEAMMEMBERS_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKD3BAB2F634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK34187F0D34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FKF3AD3201F1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_ANNOTATION ADD CONSTRAINT PUBLIC.FKE8DA4C354CF694E0 FOREIGN KEY(CREDIT_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.FKD5D2B32D927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.FK1DB2497378D1BD FOREIGN KEY(MODIFIER_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.FKE03B8292927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FK69FBDD372BD180D9 FOREIGN KEY(TAXONRELATIONSHIP_ID) REFERENCES PUBLIC.TAXONRELATIONSHIP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_MARKER ADD CONSTRAINT PUBLIC.FKB739BBA2C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK4CF70A6C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT ADD CONSTRAINT PUBLIC.FKE9D17767F3BB39BD FOREIGN KEY(RECOMMENDEDMEASUREMENTUNITS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKCA7F794A3A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK626B785084A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION ADD CONSTRAINT PUBLIC.FK1966BDB1C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_CREDIT_AUD ADD CONSTRAINT PUBLIC.FKD9895D8334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FE8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FKCEF24485777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK88BF955134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKCB4FE9BE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.FK560BA7926615E90D FOREIGN KEY(STATUS_ID) REFERENCES PUBLIC.NOMENCLATURALSTATUS(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKB2C4367334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_MARKER ADD CONSTRAINT PUBLIC.FKF0CA00FBEB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS_AUD ADD CONSTRAINT PUBLIC.FK88A308E634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK208142711E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.FK5E5108316CDFF85 FOREIGN KEY(RELATEDFROM_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_ANNOTATION ADD CONSTRAINT PUBLIC.FKCBBA8CBDBBD2C869 FOREIGN KEY(WORKINGSET_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_MARKER ADD CONSTRAINT PUBLIC.FK9CB22CC8777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK20025CB734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C662AD57A2 FOREIGN KEY(EXCOMBINATIONAUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK921A01F0C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5C75EC02BEBA58D FOREIGN KEY(DESCRIPTION_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION ADD CONSTRAINT PUBLIC.FKDB110006BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CREDIT ADD CONSTRAINT PUBLIC.FK78FF2B1232D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER ADD CONSTRAINT PUBLIC.FK97D36661BFEAE500 FOREIGN KEY(HOMOTYPICALGROUP_ID) REFERENCES PUBLIC.HOMOTYPICALGROUP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.FKC00C3966DE9A3E39 FOREIGN KEY(TAXONOMICSCOPE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_AUD ADD CONSTRAINT PUBLIC.FKF3803C234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK921A01F0C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.FKF078ABE16B9CA77 FOREIGN KEY(INSTITUTE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK70BB5FD89C782795 FOREIGN KEY(LABEL_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA024FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_EXTENSION ADD CONSTRAINT PUBLIC.FKDEFCDC0B8D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK5522034734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP ADD CONSTRAINT PUBLIC.FK3C8E1FF94FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES_AUD ADD CONSTRAINT PUBLIC.FKCAF7E75F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_PHONENUMBERS ADD CONSTRAINT PUBLIC.FKC171CC2486EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY ADD CONSTRAINT PUBLIC.FK487AA692BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE ADD CONSTRAINT PUBLIC.FK3ADD7CD5D86445CE FOREIGN KEY(TAXONDESCRIPTION_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CD4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_MARKER ADD CONSTRAINT PUBLIC.FK59778AB3777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FK76DDD01B1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP ADD CONSTRAINT PUBLIC.FK3C8E1FF916B9CA77 FOREIGN KEY(INSTITUTE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_MARKER_AUD ADD CONSTRAINT PUBLIC.FK2331098134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_MARKER ADD CONSTRAINT PUBLIC.FK6BEDC7EE8D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_AUD ADD CONSTRAINT PUBLIC.FKA6ED3B6334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.FK5C4751026BE0BFDA FOREIGN KEY(DETERMINATIONEVENT_ID) REFERENCES PUBLIC.DETERMINATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE_AUD ADD CONSTRAINT PUBLIC.FK63A5382634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKBFB16C4D34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK107321E2E0960EC4 FOREIGN KEY(MODIFIERS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK8C145C434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE7671E8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.FK46C7FC4AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.FK6AE876AB57FA94D4 FOREIGN KEY(ONLYAPPLICABLEIF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER ADD CONSTRAINT PUBLIC.FK97E0D1053B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.FK4CEED9F84220AFEB FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE ADD CONSTRAINT PUBLIC.FK6FF15DFCD0BDAE9B FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKCDB0237B3A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP_AUD ADD CONSTRAINT PUBLIC.FK847A94A34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FKB914A10B44E9E6D4 FOREIGN KEY(TYPEDESIGNATIONBASE_ID) REFERENCES PUBLIC.TYPEDESIGNATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FK1E160FB934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD ADD CONSTRAINT PUBLIC.FKBB04522D34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_ANNOTATION ADD CONSTRAINT PUBLIC.FKC99DFE3F994CCE20 FOREIGN KEY(ANNOTATION_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK23F76ADE89D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKC753F137ACF5F60B FOREIGN KEY(MULTILANGUAGETEXT_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK20814271B029DDA0 FOREIGN KEY(ORIGINALSOURCEBASE_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A6624AF3F70 FOREIGN KEY(LEVEL_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_MARKER ADD CONSTRAINT PUBLIC.FKF0CA00FB777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_RIGHTSINFO ADD CONSTRAINT PUBLIC.FKF9BDEE98C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.FK91E56DF7F7976FC5 FOREIGN KEY(AGENT_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_MARKER ADD CONSTRAINT PUBLIC.FK8DA633B037998500 FOREIGN KEY(LANGUAGESTRING_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_MARKER ADD CONSTRAINT PUBLIC.FK39E3C1F3777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_CREDIT ADD CONSTRAINT PUBLIC.FK5BC6DEAD32D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK2FEEB6B8C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO ADD CONSTRAINT PUBLIC.FKDB1266D2C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FKD522D38334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE ADD CONSTRAINT PUBLIC.FK544ADBE12DBE1F1F FOREIGN KEY(LOCUS_ID) REFERENCES PUBLIC.LOCUS(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK2FEEB6B83A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SCOPE ADD CONSTRAINT PUBLIC.FKB9257C42951A5D40 FOREIGN KEY(SCOPES_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK1B1ABB6634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK1DF60C5C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.FK9033CE749DD57A93 FOREIGN KEY(RELATEDFROM_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKB482C5E686EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A6647AF954C FOREIGN KEY(VOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_EXTENSION ADD CONSTRAINT PUBLIC.FKF961257B9C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK8F1F9C44C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION ADD CONSTRAINT PUBLIC.FKA408B63AB31C4747 FOREIGN KEY(REPRESENTATIONS_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY ADD CONSTRAINT PUBLIC.FKA9E6B138BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKA074CFC234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.FK6F1286F3C15704E FOREIGN KEY(COUNTRY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_REPRESENTATION ADD CONSTRAINT PUBLIC.FK8C458F847C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LOCUS ADD CONSTRAINT PUBLIC.FK462F1BE4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_MARKER ADD CONSTRAINT PUBLIC.FK6BEDC7EE777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MARKER ADD CONSTRAINT PUBLIC.FK88F1805AD64DC020 FOREIGN KEY(MARKERTYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CREDIT ADD CONSTRAINT PUBLIC.FK78FF2B12C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7B4555A9A FOREIGN KEY(MULTIACCESSKEY_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION ADD CONSTRAINT PUBLIC.FK7A0351D6BFEAE500 FOREIGN KEY(HOMOTYPICALGROUP_ID) REFERENCES PUBLIC.HOMOTYPICALGROUP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK93FFD2AD8E7BF9AB FOREIGN KEY(STATEDATA_ID) REFERENCES PUBLIC.STATEDATA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE_AUD ADD CONSTRAINT PUBLIC.FK3C062DCD34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK505F2E5DAEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE ADD CONSTRAINT PUBLIC.FK544ADBE14FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_URLS ADD CONSTRAINT PUBLIC.FK9A9643EC86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE ADD CONSTRAINT PUBLIC.FK4CF19F94BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.PERMISSIONGROUP_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.FK5311437CA0971A3 FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.PERMISSIONGROUP(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.CLASSIFICATION_TAXONNODE ADD CONSTRAINT PUBLIC.FKB0BD86D384A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKF746D2763A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02F8991B9D FOREIGN KEY(RELATEDTO_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK8E50DD0247C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_MARKER ADD CONSTRAINT PUBLIC.FK5CDB747E9C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK71381DCC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK289591F734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE_AUD ADD CONSTRAINT PUBLIC.FKBB24070634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FK2D26AB8834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK1E28140E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_EXTENSION ADD CONSTRAINT PUBLIC.FKF68FEBDE927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_MEDIA ADD CONSTRAINT PUBLIC.FK8E5D91E6D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK42D7AF908C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCCCC05993E FOREIGN KEY(SYNONYMTOBEUSED_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK4CB48B3D32D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.FK82C86DAC2BD180D9 FOREIGN KEY(TAXONRELATIONSHIP_ID) REFERENCES PUBLIC.TAXONRELATIONSHIP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY ADD CONSTRAINT PUBLIC.FKCAF4393CE5C0F9E FOREIGN KEY(NAMEDAREA_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ANNOTATION ADD CONSTRAINT PUBLIC.FKC978FD2884A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT ADD CONSTRAINT PUBLIC.FK522D90C73B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION ADD CONSTRAINT PUBLIC.FKAE34C1D8927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK93FFD2ADF05D08D4 FOREIGN KEY(MODIFYINGTEXT_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKB6734E3934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION ADD CONSTRAINT PUBLIC.FK397EF986C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK579A1DC02BEBA58D FOREIGN KEY(DESCRIPTION_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXON ADD CONSTRAINT PUBLIC.FK8DA4E8E3DE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK1093B7C134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_MARKER_AUD ADD CONSTRAINT PUBLIC.FK77D9D37E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT_AUD ADD CONSTRAINT PUBLIC.FKF5DE434C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_AUD ADD CONSTRAINT PUBLIC.FK5CA2CB9734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.FK4CEED9F847C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FK8AC9DCAEBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION ADD CONSTRAINT PUBLIC.FK1966BDB14FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK6E6F45734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE ADD CONSTRAINT PUBLIC.FK6FF15DFCC9CD5B57 FOREIGN KEY(RECOMMENDEDSTATISTICALMEASURES_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT_PERMISSIONGROUP ADD CONSTRAINT PUBLIC.FK812DE753DA9DCB5F FOREIGN KEY(GROUPS_ID) REFERENCES PUBLIC.PERMISSIONGROUP(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK4616A015D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK353DB784C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK686C42B7E0960EC4 FOREIGN KEY(MODIFIERS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCC4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKA4B9E0A434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION ADD CONSTRAINT PUBLIC.FKDB1100064FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FK5D248B8434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKD58E791834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_CONTINENT ADD CONSTRAINT PUBLIC.FK45F60AFB3927C853 FOREIGN KEY(CONTINENTS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_REPRESENTATION ADD CONSTRAINT PUBLIC.FK1B8712C8BE59D760 FOREIGN KEY(MEDIAKEY_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272DADF76EA FOREIGN KEY(PRIMARYCOLLECTOR_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_ANNOTATION ADD CONSTRAINT PUBLIC.FK9E7794681E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.FK76253F8A34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76714220AFEB FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2BBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA_AUD ADD CONSTRAINT PUBLIC.FK750A135034869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FK731CC81FBBD2C869 FOREIGN KEY(WORKINGSETS_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_MARKER_AUD ADD CONSTRAINT PUBLIC.FK3DA7BE4434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_AUD ADD CONSTRAINT PUBLIC.FKBB16686134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02F11BD77B FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_AUD ADD CONSTRAINT PUBLIC.FK5533906A34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON_AUD ADD CONSTRAINT PUBLIC.FK582B38BE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.FK426BC038524B89D FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK2EBEFB1C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B74FED214 FOREIGN KEY(SEC_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.FK3D22B278D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FDF299D00 FOREIGN KEY(ANNOTATIONTYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK365D5D6386EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK41ED09739C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK8F2D512A3A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5FDC9A9BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FKC0D6BBB5C7DF530C FOREIGN KEY(TYPEDESIGNATIONS_ID) REFERENCES PUBLIC.TYPEDESIGNATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A808998FB FOREIGN KEY(PARENT_ID) REFERENCES PUBLIC.POLYTOMOUSKEYNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74F4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C6B14B73EF FOREIGN KEY(COMBINATIONAUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER_AUD ADD CONSTRAINT PUBLIC.FKCD68D66734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE7671BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP ADD CONSTRAINT PUBLIC.FK3C8E1FF9BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.FK567F2DD334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.FK78CA9719E8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272F95F225A FOREIGN KEY(GATHERINGEVENT_ID) REFERENCES PUBLIC.GATHERINGEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY_AUD ADD CONSTRAINT PUBLIC.FKD5996FE434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKDC75C70FF1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_MARKER ADD CONSTRAINT PUBLIC.FK7B49CF26777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_AUD ADD CONSTRAINT PUBLIC.FKE4252DE934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY ADD CONSTRAINT PUBLIC.FKCAF43931603B036 FOREIGN KEY(COUNTRIES_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.FK9033CE74AF4F9F62 FOREIGN KEY(RELATEDTO_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A9D3C2E93 FOREIGN KEY(QUESTION_ID) REFERENCES PUBLIC.KEYSTATEMENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_FEATURE_AUD ADD CONSTRAINT PUBLIC.FKA4D7D13534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION ADD CONSTRAINT PUBLIC.FK278CF8B689D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_EXTENSION ADD CONSTRAINT PUBLIC.FKDB62D164927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76716D0D7A56 FOREIGN KEY(FORMAT_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_MARKER_AUD ADD CONSTRAINT PUBLIC.FK880A761134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.FK7604C566258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.FK9033CE74BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.FK1DB24974FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_MARKER ADD CONSTRAINT PUBLIC.FKB17EAF4A994CCE20 FOREIGN KEY(ANNOTATION_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FKF5A1106934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_EXTENSION ADD CONSTRAINT PUBLIC.FK715D672684A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.CLASSIFICATION_TAXONNODE_AUD ADD CONSTRAINT PUBLIC.FK7654132434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MARKER ADD CONSTRAINT PUBLIC.FK88F1805ABC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_CREDIT ADD CONSTRAINT PUBLIC.FK7536062447C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_ANNOTATION ADD CONSTRAINT PUBLIC.FK5D8B8DA1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION ADD CONSTRAINT PUBLIC.FKE6E91F838D2CB1D4 FOREIGN KEY(NOMENCLATURALSTATUS_ID) REFERENCES PUBLIC.NOMENCLATURALSTATUS(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.FK31E7D4023FF8E7B2 FOREIGN KEY(GEOGRAPHICALSCOPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK40EA81F534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE ADD CONSTRAINT PUBLIC.FK2DCE0290BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.FKA737EECE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FKE13FAD3534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.FK5E51083AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_EMAILADDRESSES ADD CONSTRAINT PUBLIC.FK4BD2B08E86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.FKCC7A356DB64A7B29 FOREIGN KEY(MULTIACCESSKEY_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_NAMEDAREA_AUD ADD CONSTRAINT PUBLIC.FK922630D334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_AUD ADD CONSTRAINT PUBLIC.FK743F44D434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA ADD CONSTRAINT PUBLIC.FK21F700763B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_MARKER ADD CONSTRAINT PUBLIC.FK560063EC777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_GEOSCOPE ADD CONSTRAINT PUBLIC.FK3ADD7CD586D04E74 FOREIGN KEY(GEOSCOPES_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_REPRESENTATION ADD CONSTRAINT PUBLIC.FKA003835BBBD2C869 FOREIGN KEY(WORKINGSET_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCC39DB2DFB FOREIGN KEY(PARENT_ID) REFERENCES PUBLIC.TAXONNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_CREDIT_AUD ADD CONSTRAINT PUBLIC.FKDB32A3C534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A6688206484 FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FKCEF2448559832240 FOREIGN KEY(HYBRIDRELATIONSHIP_ID) REFERENCES PUBLIC.HYBRIDRELATIONSHIP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_REPRESENTATION ADD CONSTRAINT PUBLIC.FK8C458F8B31C4747 FOREIGN KEY(REPRESENTATIONS_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_MARKER ADD CONSTRAINT PUBLIC.FK1B037D4189D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT ADD CONSTRAINT PUBLIC.FK4950A17232D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK6665C77D9A161BED FOREIGN KEY(TYPES_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_AUD ADD CONSTRAINT PUBLIC.FK29CC662734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FK8AC9DCAE9E3ED08 FOREIGN KEY(TYPESTATUS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKA0CE054134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_REPRESENTATION ADD CONSTRAINT PUBLIC.FKA003835BB31C4747 FOREIGN KEY(REPRESENTATIONS_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK323A45EC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_MARKER ADD CONSTRAINT PUBLIC.FKB3FFDC7CB029DDA0 FOREIGN KEY(ORIGINALSOURCEBASE_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK23F76ADEC13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FKE203E1A934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FKB914A10B777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B8492378F FOREIGN KEY(NAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONINTERACTION_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FK9E016B9134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_MARKER ADD CONSTRAINT PUBLIC.FK9CB22CC8BBD2C869 FOREIGN KEY(WORKINGSET_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_MEDIA ADD CONSTRAINT PUBLIC.FKE8FC5D9B86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK81DC081534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.FKFD724D851857F6C2 FOREIGN KEY(GRANTEDAUTHORITIES_ID) REFERENCES PUBLIC.GRANTEDAUTHORITYIMPL(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_MARKER ADD CONSTRAINT PUBLIC.FK8DA633B0777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.FK160DF9F734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C73B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK44D5F7D81E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_MARKER ADD CONSTRAINT PUBLIC.FK39E3C1F38C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXON_AUD ADD CONSTRAINT PUBLIC.FKED9BED3434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FKB74F03F76BE0BFDA FOREIGN KEY(DETERMINATIONEVENT_ID) REFERENCES PUBLIC.DETERMINATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK2059F21B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK6132140CF1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT_AUD ADD CONSTRAINT PUBLIC.FKB1E3D03734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK7EE5E5DD1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MARKER ADD CONSTRAINT PUBLIC.FK88F1805A4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_REPRESENTATION ADD CONSTRAINT PUBLIC.FK1B8712C88F6CABE6 FOREIGN KEY(KEYREPRESENTATIONS_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_MARKER_AUD ADD CONSTRAINT PUBLIC.FK68CE281B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_MEDIA ADD CONSTRAINT PUBLIC.FKBBEF5B08D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION ADD CONSTRAINT PUBLIC.FKE6E91F831E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT_AUD ADD CONSTRAINT PUBLIC.FK2C1599B834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_MEDIA ADD CONSTRAINT PUBLIC.FK8E5D91E666ACA7EC FOREIGN KEY(CHROMATOGRAMS_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK1CB715E83B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.FK7C978EB334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD ADD CONSTRAINT PUBLIC.FK780D5C7F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKFB680C819C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FKB1A62C9134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.FK78CA9719BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK8318CB8134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5C75EC028459272 FOREIGN KEY(DESCRIPTION_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART ADD CONSTRAINT PUBLIC.FK67A45544BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D011128E63B FOREIGN KEY(INAPPLICABLEIF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK25A8D88B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION ADD CONSTRAINT PUBLIC.FK2170B25CD0BDAE9B FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8ED0FAE734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_CREDIT ADD CONSTRAINT PUBLIC.FK7536062432D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.FK6F1286F3F55AFD89 FOREIGN KEY(EXACTLOCATION_REFERENCESYSTEM_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FKF3AD32011E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_MARKER ADD CONSTRAINT PUBLIC.FK10CC6840777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE ADD CONSTRAINT PUBLIC.FK1205D356A830578 FOREIGN KEY(ISPARTOF_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION_AUD ADD CONSTRAINT PUBLIC.FK6817D93234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION ADD CONSTRAINT PUBLIC.FK9C4724ED4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_MARKER ADD CONSTRAINT PUBLIC.FK855CEF65777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY ADD CONSTRAINT PUBLIC.FKA9E6B138576595C3 FOREIGN KEY(ROOT_ID) REFERENCES PUBLIC.POLYTOMOUSKEYNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FKD482FE2134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.FK1ABD49E07C3D0017 FOREIGN KEY(COVEREDTAXA_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKCDB0237BD57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKA197815C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE ADD CONSTRAINT PUBLIC.FK2DCE02904C428112 FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76714FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION ADD CONSTRAINT PUBLIC.FK371091E11E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.FK5E51083AF619DE3 FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A6636C6F6F6 FOREIGN KEY(POINTAPPROXIMATION_REFERENCESYSTEM_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.FK34EB896DB4555A9A FOREIGN KEY(MULTIACCESSKEY_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_SCOPE ADD CONSTRAINT PUBLIC.FKBFFEE8F0BE59D760 FOREIGN KEY(MEDIAKEY_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A4220AFEB FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT ADD CONSTRAINT PUBLIC.FK522D90C79682414B FOREIGN KEY(MODIFYINGTEXT_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_AUD ADD CONSTRAINT PUBLIC.FK9C2BA24534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKECA3515C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.FK1FFEC88BAEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.FKE412C8164AAB411A FOREIGN KEY(DERIVATIONEVENT_ID) REFERENCES PUBLIC.DERIVATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK1CB715E8777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKB7C811D234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKDCC094D63A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK10E2B9D334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEDIA ADD CONSTRAINT PUBLIC.FK6FC908ABC2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK28ED409934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK74E1B58B8D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD ADD CONSTRAINT PUBLIC.FK6255A1D434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_AUD ADD CONSTRAINT PUBLIC.FK7456581E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE ADD CONSTRAINT PUBLIC.FK1205D356BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS_AUD ADD CONSTRAINT PUBLIC.FK9215BC6334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.EXTENSION ADD CONSTRAINT PUBLIC.FK52EF3C1FBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76716561D9B1 FOREIGN KEY(ASSOCIATEDSPECIMENOROBSERVATION_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_MARKER_AUD ADD CONSTRAINT PUBLIC.FKC6BD229234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_EXTENSION ADD CONSTRAINT PUBLIC.FKF961257B927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKB482C5E63A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKAEF84EBF34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK589B6C81E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_EXTENSION ADD CONSTRAINT PUBLIC.FKDB62D164C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK86E8E9AB34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.FK3D22B278777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CDM_VIEW_CDM_VIEW ADD CONSTRAINT PUBLIC.FK230A885FC00D1213 FOREIGN KEY(CDM_VIEW_ID) REFERENCES PUBLIC.CDM_VIEW(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK7EE5E5DD3B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK1A6BB5A034869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK3F514B0086EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK4D7327801E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76719108D9B FOREIGN KEY(TAXON2_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_CREDIT ADD CONSTRAINT PUBLIC.FK5BC6DEAD8D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK626B7850C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_AUD ADD CONSTRAINT PUBLIC.FK628F58E234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_ANNOTATION ADD CONSTRAINT PUBLIC.FK27CB1E97C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_FAXNUMBERS ADD CONSTRAINT PUBLIC.FK52E1AD9586EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK6A3D3D434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FKF128E10534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT ADD CONSTRAINT PUBLIC.FK7125B9F0BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK353DB784A1CA19B1 FOREIGN KEY(TITLE_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA_AUD ADD CONSTRAINT PUBLIC.FK4CB735DA34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FK731CC81F33B8A841 FOREIGN KEY(DESCRIPTIONS_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_MARKER ADD CONSTRAINT PUBLIC.FK5C475102777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_AUD ADD CONSTRAINT PUBLIC.FK355BE36534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FKA981956134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE76711C3C3FF7 FOREIGN KEY(AREA_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_REFERENCE ADD CONSTRAINT PUBLIC.FK6944904D1DDDC219 FOREIGN KEY(CITATIONS_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.FK1FFEC88B4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_AUD ADD CONSTRAINT PUBLIC.FK37041CEC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKDCC094D6C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FKEFA0D10B1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION ADD CONSTRAINT PUBLIC.FK368283E128459272 FOREIGN KEY(DESCRIPTION_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_ANNOTATION ADD CONSTRAINT PUBLIC.FKE8DA4C351E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK222D46ED34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ADD CONSTRAINT PUBLIC.FK20132036BD59A1AD FOREIGN KEY(DERIVATIONEVENTS_ID) REFERENCES PUBLIC.DERIVATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INSTITUTIONALMEMBERSHIP ADD CONSTRAINT PUBLIC.FK3C8E1FF9AAC1B820 FOREIGN KEY(PERSON_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_RIGHTSINFO ADD CONSTRAINT PUBLIC.FKF9BDEE98EB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_SCOPE_AUD ADD CONSTRAINT PUBLIC.FK63AD1EC134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_ANNOTATION ADD CONSTRAINT PUBLIC.FKEA970F70EB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKAFDA5E4834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION ADD CONSTRAINT PUBLIC.FK98592F33473FB677 FOREIGN KEY(INVERSEREPRESENTATIONS_ID) REFERENCES PUBLIC.REPRESENTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_MARKER ADD CONSTRAINT PUBLIC.FKB739BBA2777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FK8AC9DCAEAEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE ADD CONSTRAINT PUBLIC.FK4CF19F944FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.FK82C86DAC1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.FK426BC034FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_EXTENSION ADD CONSTRAINT PUBLIC.FKF68FEBDEEB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_AUD ADD CONSTRAINT PUBLIC.FK867830934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION ADD CONSTRAINT PUBLIC.FKA72FB5AE5255EAFD FOREIGN KEY(RECOMMENDEDMODIFIERENUMERATION_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775ABC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_AUD ADD CONSTRAINT PUBLIC.FKA0DE16D334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SCOPE_AUD ADD CONSTRAINT PUBLIC.FK75D5B91334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.FKFEBA3D0834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER_AUD ADD CONSTRAINT PUBLIC.FK2982F45634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_AUD ADD CONSTRAINT PUBLIC.FKA0252EE834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE_AUD ADD CONSTRAINT PUBLIC.FKC42E1E2534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXONBASE ADD CONSTRAINT PUBLIC.FKED8F3A547C3D0017 FOREIGN KEY(COVEREDTAXA_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK11AE594734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK15FE775234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.FK6F1286F3BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SCOPE ADD CONSTRAINT PUBLIC.FKB9257C42D86445CE FOREIGN KEY(TAXONDESCRIPTION_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_ANNOTATION ADD CONSTRAINT PUBLIC.FKA020DAAA1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK42D7AF90C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_ANNOTATION ADD CONSTRAINT PUBLIC.FKCBBA8CBD1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.FK4CEED9F84FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_CREDIT ADD CONSTRAINT PUBLIC.FK2CFBC93732D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCC84A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_AUD ADD CONSTRAINT PUBLIC.FKEB11BAD734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.FK1ED033D44FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP ADD CONSTRAINT PUBLIC.FK7DECCC18BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK9C979F3C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_AUD ADD CONSTRAINT PUBLIC.FK8F0FFF7C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK91B37B363A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA32727CC340C5 FOREIGN KEY(STOREDUNDER_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A1C0483C4 FOREIGN KEY(SUBKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER ADD CONSTRAINT PUBLIC.FK2F5128E777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK107321E28E7BF9AB FOREIGN KEY(STATEDATA_ID) REFERENCES PUBLIC.STATEDATA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_AUD ADD CONSTRAINT PUBLIC.FK25AD4BC934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B91BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK8F1F9C44258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.FK2C7E7DFA1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD ADD CONSTRAINT PUBLIC.FK3544378734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD ADD CONSTRAINT PUBLIC.FK6C06031834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKCFAA93168028C309 FOREIGN KEY(DEFINITION_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LSIDAUTHORITY ADD CONSTRAINT PUBLIC.FK759DB8814FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK3F514B00C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272156CF96 FOREIGN KEY(DERIVEDFROM_ID) REFERENCES PUBLIC.DERIVATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKE11D334F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKC025854234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK2BC1DD2E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION ADD CONSTRAINT PUBLIC.FK278CF8B61E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FK681B370B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.FK6A57909334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.FK2E38AC8B1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.FK1ED033D4132A2FE8 FOREIGN KEY(LOCATION_REFERENCESYSTEM_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MARKER ADD CONSTRAINT PUBLIC.FK89261453777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BB682A4E4B FOREIGN KEY(STATE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION ADD CONSTRAINT PUBLIC.FK368283E1C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDA935185 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CDMMETADATA ADD CONSTRAINT PUBLIC.FK6EA78F7B4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_MARKER ADD CONSTRAINT PUBLIC.FKB17EAF4A777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LOCUS ADD CONSTRAINT PUBLIC.FK462F1BEBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FK1578E1FE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_MARKER_AUD ADD CONSTRAINT PUBLIC.FKCBAEA7D634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MARKER_AUD ADD CONSTRAINT PUBLIC.FKB951F12B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_MARKER ADD CONSTRAINT PUBLIC.FK395842D777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE ADD CONSTRAINT PUBLIC.FK2DCE02904FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMBASE_INVERSEREPRESENTATION ADD CONSTRAINT PUBLIC.FK98592F33ECEEF4AF FOREIGN KEY(TERM_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK6A2601A9F1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION ADD CONSTRAINT PUBLIC.FK9C4724EDE8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02E71EF6CE FOREIGN KEY(RELATEDFROM_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.FK91E56DF74FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK505F2E5D966B96B2 FOREIGN KEY(NAMEUSEDINSOURCE_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK629EC1D134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FK21B88BAC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.FK1C727CFF3FF8E7B2 FOREIGN KEY(GEOGRAPHICALSCOPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT ADD CONSTRAINT PUBLIC.FK6F1286F38B455EC6 FOREIGN KEY(LOCALITY_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.FKF078ABECEB38EFF FOREIGN KEY(SUPERCOLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION ADD CONSTRAINT PUBLIC.FKAE34C1D889D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.FK426BC03BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_MARKER ADD CONSTRAINT PUBLIC.FK1B037D41777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION ADD CONSTRAINT PUBLIC.FK397EF986927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKCFAA9316CD55E0D6 FOREIGN KEY(DEFINITION_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY ADD CONSTRAINT PUBLIC.FK487AA6924FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_CREDIT ADD CONSTRAINT PUBLIC.FKE0A317BA32D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C6617E62B3 FOREIGN KEY(NOMENCLATURALREFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK9754F4643B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_DESCRIPTION ADD CONSTRAINT PUBLIC.FK368283E12BEBA58D FOREIGN KEY(DESCRIPTION_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_AUD ADD CONSTRAINT PUBLIC.FKD6D4298F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A66D040DBF0 FOREIGN KEY(PARTOF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK4616A015C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_AUD ADD CONSTRAINT PUBLIC.FKF70B2B9534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK1CA8129234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_AUD ADD CONSTRAINT PUBLIC.FK93036FC134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_ANNOTATION ADD CONSTRAINT PUBLIC.FK1010BA6D1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION ADD CONSTRAINT PUBLIC.FK7A0351D61E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FK8AC9DCAE4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEDIA ADD CONSTRAINT PUBLIC.FK6FC908ABC0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FKC0D6BBB58C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE ADD CONSTRAINT PUBLIC.FK1205D3564FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_TAXONSCOPE_AUD ADD CONSTRAINT PUBLIC.FK311443734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MEDIA ADD CONSTRAINT PUBLIC.FK21F70076C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK7CFED28E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C64FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE_AUD ADD CONSTRAINT PUBLIC.FKF083E4BE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_ANNOTATION ADD CONSTRAINT PUBLIC.FK1010BA6DD57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK1AD225DC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CREDIT ADD CONSTRAINT PUBLIC.FK2636742232D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.FK1F5A7489B4555A9A FOREIGN KEY(MULTIACCESSKEY_ID) REFERENCES PUBLIC.WORKINGSET(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.FK46C7FC4BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK365E4F3C1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BBBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK589B6C8C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT PUBLIC.FK3F5356FC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK48AC64334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB50751EC5 FOREIGN KEY(CONTACT_ADDRESSES_ID) REFERENCES PUBLIC.ADDRESS(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKACE71ECB34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_AUD ADD CONSTRAINT PUBLIC.FK3EC034434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCC381381B5 FOREIGN KEY(REFERENCEFORPARENTCHILDRELATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.FK4CEED9F8E0AD2C59 FOREIGN KEY(PARENT_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK3D1256F934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK7E3A1D8632D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_MARKER ADD CONSTRAINT PUBLIC.FK7B49CF26F95F225A FOREIGN KEY(GATHERINGEVENT_ID) REFERENCES PUBLIC.GATHERINGEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.FK34EB896D7C3D0017 FOREIGN KEY(COVEREDTAXA_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_ANNOTATION ADD CONSTRAINT PUBLIC.FK5D8B8DA47C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK3281DB8734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FKF3C1293434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE ADD CONSTRAINT PUBLIC.FKC330D6395C601E49 FOREIGN KEY(DESCRIPTIONSOURCES_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE ADD CONSTRAINT PUBLIC.FK544ADBE1BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.FKFD724D855EA5DD89 FOREIGN KEY(USER_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE_AUD ADD CONSTRAINT PUBLIC.FK243C037F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_NOMENCLATURALSTATUS ADD CONSTRAINT PUBLIC.FK560BA7928C85CF94 FOREIGN KEY(TAXONNAME_ID) REFERENCES PUBLIC.TAXONNAME(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.FKB3BBB1EB34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK252BC84834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5FDC9A9E8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD ADD CONSTRAINT PUBLIC.FKA4A8430734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_EXTENSION ADD CONSTRAINT PUBLIC.FKA8814EB2927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_MARKER_AUD ADD CONSTRAINT PUBLIC.FK68A9270434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE_AUD ADD CONSTRAINT PUBLIC.FK511FBF4834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A66CC0240B6 FOREIGN KEY(SHAPE_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C6BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_MARKER ADD CONSTRAINT PUBLIC.FK862BAEA7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_AUD ADD CONSTRAINT PUBLIC.FK39F4313234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK79E7827E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_MARKER ADD CONSTRAINT PUBLIC.FK855CEF6547C496CB FOREIGN KEY(FEATURETREE_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION ADD CONSTRAINT PUBLIC.FKDB11000677E2F09E FOREIGN KEY(NAME_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION ADD CONSTRAINT PUBLIC.FK1966BDB1BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.FK1DB24974B251DAD FOREIGN KEY(IDENTIFIEDUNIT_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.FK1DB24973DA462D5 FOREIGN KEY(ACTOR_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_REPRESENTATION ADD CONSTRAINT PUBLIC.FKAAC8AFE6C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP ADD CONSTRAINT PUBLIC.FK5E510834FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_ADDRESS_AUD ADD CONSTRAINT PUBLIC.FK3D28383C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK8F98B2B734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_EXTENSION ADD CONSTRAINT PUBLIC.FK7BE66D41D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE ADD CONSTRAINT PUBLIC.FK4CF19F94B7892921 FOREIGN KEY(ROOT_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK5574E12EF05D08D4 FOREIGN KEY(MODIFYINGTEXT_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B9123DB7F04 FOREIGN KEY(DESCRIPTIVESYSTEM_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BB4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD ADD CONSTRAINT PUBLIC.FKA8A87CFE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK8F2D512A258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8619495F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FKE3E463967B4CB560 FOREIGN KEY(NAMERELATIONSHIP_ID) REFERENCES PUBLIC.NAMERELATIONSHIP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK4168503534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD ADD CONSTRAINT PUBLIC.FKB8D7025234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKF41ADEEB3B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.FK1ED033D4BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FKB74F03F71E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775ADE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.FK18E5CF9E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_EXTENSION ADD CONSTRAINT PUBLIC.FK8E1E567686EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE ADD CONSTRAINT PUBLIC.FK4D34EDAD1C0E9907 FOREIGN KEY(TEAM_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK505F2E5DBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK7FE7C0F334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK1DEB578634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C6BFEAE500 FOREIGN KEY(HOMOTYPICALGROUP_ID) REFERENCES PUBLIC.HOMOTYPICALGROUP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_CONTACT_URLS_AUD ADD CONSTRAINT PUBLIC.FK1CE69BBD34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_ANNOTATION ADD CONSTRAINT PUBLIC.FKFC824E38D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK48A31E0734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FKFEB732FA34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION ADD CONSTRAINT PUBLIC.FK9C4724EDBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_SCOPE ADD CONSTRAINT PUBLIC.FK8D97986D89D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE_MARKER ADD CONSTRAINT PUBLIC.FK5CDB747E777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE ADD CONSTRAINT PUBLIC.FK860775A4FEE4393 FOREIGN KEY(OTHERNODE_ID) REFERENCES PUBLIC.POLYTOMOUSKEYNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK7170185734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FK8DC9C9934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.FK7604C56632D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272E17C9A6B FOREIGN KEY(SEX_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FK294D143E34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.USERACCOUNT ADD CONSTRAINT PUBLIC.FKB3F13C24FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK7A38D54734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C62B4FEDD6 FOREIGN KEY(BASIONYMAUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME ADD CONSTRAINT PUBLIC.FKB4870C6D7BE55A0 FOREIGN KEY(RANK_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK7E3A1D863B8A5ABA FOREIGN KEY(SPECIMENOROBSERVATIONBASE_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ADDRESS_AUD ADD CONSTRAINT PUBLIC.FK115657A534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TYPEDESIGNATIONBASE ADD CONSTRAINT PUBLIC.FK8AC9DCAE94DB044A FOREIGN KEY(TYPESPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_SCOPE_AUD ADD CONSTRAINT PUBLIC.FK4E37C7BE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.PERMISSIONGROUP_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.FK53114371857F6C2 FOREIGN KEY(GRANTEDAUTHORITIES_ID) REFERENCES PUBLIC.GRANTEDAUTHORITYIMPL(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK365D5D63777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK6132140C777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SEQUENCE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKAF40E44934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_EXTENSION ADD CONSTRAINT PUBLIC.FKDEFCDC0B927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49BBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK6665C77D8D9AB196 FOREIGN KEY(INSTITUTION_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATION_AUD ADD CONSTRAINT PUBLIC.FK67AAAB0234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP ADD CONSTRAINT PUBLIC.FK9033CE74AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CDM_VIEW ADD CONSTRAINT PUBLIC.FKC5DE8EF84FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.AGENTBASE_MEDIA ADD CONSTRAINT PUBLIC.FKE8FC5D9BC2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_MEDIA ADD CONSTRAINT PUBLIC.FK7320E703C2C29593 FOREIGN KEY(MEDIA_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCCBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK41E6A4A734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CDM_VIEW ADD CONSTRAINT PUBLIC.FKC5DE8EF88D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ANNOTATION ADD CONSTRAINT PUBLIC.FK76D2071C1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.FK1DB2497BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_REFERENCE ADD CONSTRAINT PUBLIC.FKC330D639F1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_ANNOTATION ADD CONSTRAINT PUBLIC.FKD8A9A9A2927D8399 FOREIGN KEY(TAXONNODE_ID) REFERENCES PUBLIC.TAXONNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ANNOTATION_ANNOTATION ADD CONSTRAINT PUBLIC.FKC99DFE3F1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK686C42B75C9F4F2B FOREIGN KEY(STATISTICALMEASUREMENTVALUE_ID) REFERENCES PUBLIC.STATISTICALMEASUREMENTVALUE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKD3E8B7F18D0FB4DA FOREIGN KEY(REFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK91B37B3684A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_MARKER_AUD ADD CONSTRAINT PUBLIC.FKA508E2B634869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNAME_EXTENSION ADD CONSTRAINT PUBLIC.FKC28EE7E6927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.FK31E7D402BE59D760 FOREIGN KEY(MEDIAKEY_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK353DB784A0A6EDCE FOREIGN KEY(TITLE_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_RIGHTSINFO ADD CONSTRAINT PUBLIC.FK74E1B58BC13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTSINFO(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK505F2E5D4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION ADD CONSTRAINT PUBLIC.FKD5D2B32DF1DDBFAB FOREIGN KEY(DESCRIPTIONBASE_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_EXTENSION ADD CONSTRAINT PUBLIC.FKAD1E6D34927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFYINGTEXT ADD CONSTRAINT PUBLIC.FK522D90C7F05D08D4 FOREIGN KEY(MODIFYINGTEXT_ID) REFERENCES PUBLIC.LANGUAGESTRING(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CREDIT_MARKER ADD CONSTRAINT PUBLIC.FK10CC68404CF694E0 FOREIGN KEY(CREDIT_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HYBRIDRELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.FK2C7E7DFA59832240 FOREIGN KEY(HYBRIDRELATIONSHIP_ID) REFERENCES PUBLIC.HYBRIDRELATIONSHIP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA_SEQUENCE ADD CONSTRAINT PUBLIC.FK61D09FC3282B64 FOREIGN KEY(PHYLOGENETICTREE_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LOCUS_AUD ADD CONSTRAINT PUBLIC.FK5224108F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK13BD64E83A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK9662E5AE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE767110A80E07 FOREIGN KEY(UNIT_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK37DEC57E3A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE ADD CONSTRAINT PUBLIC.FK8FB1ED836BE0BFDA FOREIGN KEY(DETERMINATIONEVENT_ID) REFERENCES PUBLIC.DETERMINATIONEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CDM_VIEW_CDM_VIEW ADD CONSTRAINT PUBLIC.FK230A885F7208BB38 FOREIGN KEY(SUPERVIEWS_ID) REFERENCES PUBLIC.CDM_VIEW(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART_AUD ADD CONSTRAINT PUBLIC.FKA75C411534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK69D9A11AF95F225A FOREIGN KEY(GATHERINGEVENT_ID) REFERENCES PUBLIC.GATHERINGEVENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION ADD CONSTRAINT PUBLIC.FKA72FB5AED0BDAE9B FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DETERMINATIONEVENT ADD CONSTRAINT PUBLIC.FK1DB2497AEC8CCAA FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIAKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.FK1ABD49E0BE59D760 FOREIGN KEY(MEDIAKEY_ID) REFERENCES PUBLIC.MEDIA(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_FEATURE ADD CONSTRAINT PUBLIC.FK58ACF5649AE62C6 FOREIGN KEY(DESCRIPTIVESYSTEM_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5C75EC084FF3EDF FOREIGN KEY(INDIVIDUALSASSOCIATION_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE ADD CONSTRAINT PUBLIC.FK924F5BCCDE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.FK46C7FC4C2445443 FOREIGN KEY(ARTIST_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK37DEC57EEB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FK69D81BCC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
---ALTER TABLE PUBLIC.SEQUENCE_CREDIT ADD CONSTRAINT PUBLIC.FK2CFBC937D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONNODE_MARKER ADD CONSTRAINT PUBLIC.FK395842D927D8399 FOREIGN KEY(TAXONNODE_ID) REFERENCES PUBLIC.TAXONNODE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_EXTENSION ADD CONSTRAINT PUBLIC.FK715D6726927DE9DF FOREIGN KEY(EXTENSIONS_ID) REFERENCES PUBLIC.EXTENSION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.FKF078ABE4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA32724FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_MARKER ADD CONSTRAINT PUBLIC.FK59778AB384A3CE1B FOREIGN KEY(CLASSIFICATION_ID) REFERENCES PUBLIC.CLASSIFICATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A663B0DA0EF FOREIGN KEY(KINDOF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEYNODE_LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FKE0D0C7FF34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.CLASSIFICATION_ANNOTATION ADD CONSTRAINT PUBLIC.FKC978FD281E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO ADD CONSTRAINT PUBLIC.FK91E56DF7E6D2886A FOREIGN KEY(TYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK510B2ACB32D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_TAXON ADD CONSTRAINT PUBLIC.FK8DA4E8E389D97CB FOREIGN KEY(POLYTOMOUSKEY_ID) REFERENCES PUBLIC.POLYTOMOUSKEY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_SCOPE ADD CONSTRAINT PUBLIC.FK8D97986D546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.COLLECTION_CREDIT ADD CONSTRAINT PUBLIC.FKE0A317BAEB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKD3E8B7F13A6735D9 FOREIGN KEY(SOURCES_ID) REFERENCES PUBLIC.ORIGINALSOURCEBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.LANGUAGESTRING_AUD ADD CONSTRAINT PUBLIC.FK896AFAFA34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ADD CONSTRAINT PUBLIC.FK2013203654C216AA FOREIGN KEY(ORIGINALS_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK70BB5FD8AAA67049 FOREIGN KEY(KEYSTATEMENT_ID) REFERENCES PUBLIC.KEYSTATEMENT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272EB62BE9A FOREIGN KEY(COLLECTION_ID) REFERENCES PUBLIC.COLLECTION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FKE3E46396777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.FK4CEED9F8BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2BAD54327F FOREIGN KEY(INREFERENCE_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.MULTIACCESSKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.FKCC7A356DDE9A3E39 FOREIGN KEY(TAXONOMICSCOPE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE_AUD ADD CONSTRAINT PUBLIC.FK8959CE7034869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B914FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD ADD CONSTRAINT PUBLIC.FK1FFC43A934869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_AUD ADD CONSTRAINT PUBLIC.FKFB2DB8DC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKA898D9FB34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.NAMERELATIONSHIP_ANNOTATION ADD CONSTRAINT PUBLIC.FK2E38AC8B7B4CB560 FOREIGN KEY(NAMERELATIONSHIP_ID) REFERENCES PUBLIC.NAMERELATIONSHIP(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION ADD CONSTRAINT PUBLIC.FK2170B25C5AF2C74 FOREIGN KEY(SUPPORTEDCATEGORICALENUMERATIONS_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_MARKER_AUD ADD CONSTRAINT PUBLIC.FK92DD5BDD34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.POLYTOMOUSKEY_CREDIT ADD CONSTRAINT PUBLIC.FKADC940032D1B9F FOREIGN KEY(CREDITS_ID) REFERENCES PUBLIC.CREDIT(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.RIGHTSINFO_ANNOTATION ADD CONSTRAINT PUBLIC.FK27CB1E971E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER_AUD ADD CONSTRAINT PUBLIC.FK19337BB234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.TAXONRELATIONSHIP_MARKER_AUD ADD CONSTRAINT PUBLIC.FK21F8978834869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;\r
-ALTER TABLE PUBLIC.STATEDATA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK93FFD2AD9682414B FOREIGN KEY(MODIFYINGTEXT_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;\r
-ALTER TABLE PUBLIC.DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK2E340A66BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;\r
index e0e39c79f0808960b1c15394b85a158fd20b10c9..65af58648902bccebb9a4251492dc031508ea1f2 100644 (file)
Binary files a/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-ui-registration-with_auditing_info.xml and b/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-ui-registration-with_auditing_info.xml differ
diff --git a/src/test/resources/eu/etaxonomy/cdm/database/schema/dataset.dtd b/src/test/resources/eu/etaxonomy/cdm/database/schema/dataset.dtd
deleted file mode 100644 (file)
index 67da9e7..0000000
+++ /dev/null
@@ -1,3742 +0,0 @@
-<!ELEMENT dataset (
-    ADDRESS*,
-    ADDRESS_AUD*,
-    AGENTBASE*,
-    AGENTBASE_AGENTBASE*,
-    AGENTBASE_AGENTBASE_AUD*,
-    AGENTBASE_ANNOTATION*,
-    AGENTBASE_ANNOTATION_AUD*,
-    AGENTBASE_AUD*,
-    AGENTBASE_DEFINEDTERMBASE*,
-    AGENTBASE_DEFINEDTERMBASE_AUD*,
-    AGENTBASE_EXTENSION*,
-    AGENTBASE_EXTENSION_AUD*,
-    AGENTBASE_MARKER*,
-    AGENTBASE_MARKER_AUD*,
-    AGENTBASE_MEDIA*,
-    AGENTBASE_MEDIA_AUD*,
-    AGENTBASE_ORIGINALSOURCE*,
-    AGENTBASE_ORIGINALSOURCE_AUD*,
-    AGENTBASE_RIGHTSINFO*,
-    AGENTBASE_RIGHTSINFO_AUD*,
-    ANNOTATION*,
-    ANNOTATION_ANNOTATION*,
-    ANNOTATION_ANNOTATION_AUD*,
-    ANNOTATION_AUD*,
-    ANNOTATION_MARKER*,
-    ANNOTATION_MARKER_AUD*,
-    AUDITEVENT*,
-    CDM_VIEW*,
-    CDM_VIEW_CDM_VIEW*,
-    CDMPREFERENCE*,
-    COLLECTION*,
-    COLLECTION_ANNOTATION*,
-    COLLECTION_ANNOTATION_AUD*,
-    COLLECTION_AUD*,
-    COLLECTION_EXTENSION*,
-    COLLECTION_EXTENSION_AUD*,
-    COLLECTION_MARKER*,
-    COLLECTION_MARKER_AUD*,
-    COLLECTION_MEDIA*,
-    COLLECTION_MEDIA_AUD*,
-    COLLECTION_ORIGINALSOURCE*,
-    COLLECTION_ORIGINALSOURCE_AUD*,
-    COLLECTION_RIGHTSINFO*,
-    COLLECTION_RIGHTSINFO_AUD*,
-    CONTACT*,
-    CONTACT_AUD*,
-    DB_VERSION*,
-    DEFINEDTERMBASE*,
-    DEFINEDTERMBASE_AUD*,
-    DEFINEDTERMBASE_CONTINENT*,
-    DEFINEDTERMBASE_CONTINENT_AUD*,
-    DEFINEDTERMBASE_MEDIA*,
-    DEFINEDTERMBASE_MEDIA_AUD*,
-    DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION*,
-    DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD*,
-    DEFINEDTERMBASE_REPRESENTATION*,
-    DEFINEDTERMBASE_REPRESENTATION_AUD*,
-    DEFINEDTERMBASE_STATISTICALMEASURE*,
-    DEFINEDTERMBASE_STATISTICALMEASURE_AUD*,
-    DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION*,
-    DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD*,
-    DEFINEDTERMBASE_COUNTRY*,
-    DEFINEDTERMBASE_COUNTRY_AUD*,
-    DERIVATIONEVENT*,
-    DERIVATIONEVENT_ANNOTATION*,
-    DERIVATIONEVENT_ANNOTATION_AUD*,
-    DERIVATIONEVENT_AUD*,
-    DERIVATIONEVENT_MARKER*,
-    DERIVATIONEVENT_MARKER_AUD*,
-    DESCRIPTIONBASE*,
-    DESCRIPTIONBASE_ANNOTATION*,
-    DESCRIPTIONBASE_ANNOTATION_AUD*,
-    DESCRIPTIONBASE_AUD*,
-    DESCRIPTIONBASE_EXTENSION*,
-    DESCRIPTIONBASE_EXTENSION_AUD*,
-    DESCRIPTIONBASE_GEOSCOPE*,
-    DESCRIPTIONBASE_GEOSCOPE_AUD*,
-    DESCRIPTIONBASE_MARKER*,
-    DESCRIPTIONBASE_MARKER_AUD*,
-    DESCRIPTIONBASE_ORIGINALSOURCE*,
-    DESCRIPTIONBASE_ORIGINALSOURCE_AUD*,
-    DESCRIPTIONBASE_REFERENCE*,
-    DESCRIPTIONBASE_REFERENCE_AUD*,
-    DESCRIPTIONBASE_RIGHTSINFO*,
-    DESCRIPTIONBASE_RIGHTSINFO_AUD*,
-    DESCRIPTIONBASE_SCOPE*,
-    DESCRIPTIONBASE_SCOPE_AUD*,
-    DESCRIPTIONELEMENTBASE*,
-    DESCRIPTIONELEMENTBASE_ANNOTATION*,
-    DESCRIPTIONELEMENTBASE_ANNOTATION_AUD*,
-    DESCRIPTIONELEMENTBASE_AUD*,
-    DESCRIPTIONELEMENTBASE_LANGUAGESTRING*,
-    DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD*,
-    DESCRIPTIONELEMENTBASE_MARKER*,
-    DESCRIPTIONELEMENTBASE_MARKER_AUD*,
-    DESCRIPTIONELEMENTBASE_MEDIA*,
-    DESCRIPTIONELEMENTBASE_MEDIA_AUD*,
-    DESCRIPTIONELEMENTBASE_MODIFIER*,
-    DESCRIPTIONELEMENTBASE_MODIFIER_AUD*,
-    DESCRIPTIONELEMENTBASE_MODIFYINGTEXT*,
-    DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD*,
-    DETERMINATIONEVENT*,
-    DETERMINATIONEVENT_ANNOTATION*,
-    DETERMINATIONEVENT_ANNOTATION_AUD*,
-    DETERMINATIONEVENT_AUD*,
-    DETERMINATIONEVENT_MARKER*,
-    DETERMINATIONEVENT_MARKER_AUD*,
-    DETERMINATIONEVENT_REFERENCE*,
-    DETERMINATIONEVENT_REFERENCE_AUD*,
-    EXTENSION*,
-    EXTENSION_AUD*,
-    FEATURENODE*,
-    FEATURENODE_AUD*,
-    FEATURETREE*,
-    FEATURETREE_AUD*,
-    FEATURETREE_REPRESENTATION*,
-    FEATURETREE_REPRESENTATION_AUD*,
-    GATHERINGEVENT*,
-    GATHERINGEVENT_ANNOTATION*,
-    GATHERINGEVENT_ANNOTATION_AUD*,
-    GATHERINGEVENT_AUD*,
-    GATHERINGEVENT_DEFINEDTERMBASE*,
-    GATHERINGEVENT_DEFINEDTERMBASE_AUD*,
-    GATHERINGEVENT_MARKER*,
-    GATHERINGEVENT_MARKER_AUD*,
-    GRANTEDAUTHORITYIMPL*,
-    HIBERNATE_SEQUENCES*,
-    HOMOTYPICALGROUP*,
-    HOMOTYPICALGROUP_ANNOTATION*,
-    HOMOTYPICALGROUP_ANNOTATION_AUD*,
-    HOMOTYPICALGROUP_AUD*,
-    HOMOTYPICALGROUP_MARKER*,
-    HOMOTYPICALGROUP_MARKER_AUD*,
-    HYBRIDRELATIONSHIP*,
-    HYBRIDRELATIONSHIP_ANNOTATION*,
-    HYBRIDRELATIONSHIP_ANNOTATION_AUD*,
-    HYBRIDRELATIONSHIP_AUD*,
-    HYBRIDRELATIONSHIP_MARKER*,
-    HYBRIDRELATIONSHIP_MARKER_AUD*,
-    MEDIAKEY_TAXONSCOPE*,
-    MEDIAKEY_TAXONSCOPE_AUD*,
-    INDIVIDUALSASSOCIATION_LANGUAGESTRING*,
-    INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD*,
-    INSTITUTIONALMEMBERSHIP*,
-    INSTITUTIONALMEMBERSHIP_AUD*,
-    LANGUAGESTRING*,
-    LANGUAGESTRING_ANNOTATION*,
-    LANGUAGESTRING_ANNOTATION_AUD*,
-    LANGUAGESTRING_AUD*,
-    LANGUAGESTRING_MARKER*,
-    LANGUAGESTRING_MARKER_AUD*,
-    MARKER*,
-    MARKER_AUD*,
-    MEDIA*,
-    MEDIAREPRESENTATION*,
-    MEDIAREPRESENTATIONPART*,
-    MEDIAREPRESENTATIONPART_AUD*,
-    MEDIAREPRESENTATION_AUD*,
-    MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD*,
-    MEDIA_ANNOTATION*,
-    MEDIA_ANNOTATION_AUD*,
-    MEDIA_AUD*,
-    MEDIA_DEFINEDTERMBASE*,
-    MEDIA_DEFINEDTERMBASE_AUD*,
-    MEDIA_DESCRIPTION*,
-    MEDIA_DESCRIPTION_AUD*,
-    MEDIA_LANGUAGESTRING*,
-    MEDIA_LANGUAGESTRING_AUD*,
-    MEDIA_MARKER*,
-    MEDIA_MARKER_AUD*,
-    MEDIA_RIGHTSINFO*,
-    MEDIA_RIGHTSINFO_AUD*,
-    MEDIA_SEQUENCE*,
-    MEDIA_SEQUENCE_AUD*,
-    MEDIAKEY_COVEREDTAXON*,
-    MEDIAKEY_COVEREDTAXON_AUD*,
-    NAMERELATIONSHIP*,
-    NAMERELATIONSHIP_ANNOTATION*,
-    NAMERELATIONSHIP_ANNOTATION_AUD*,
-    NAMERELATIONSHIP_AUD*,
-    NAMERELATIONSHIP_MARKER*,
-    NAMERELATIONSHIP_MARKER_AUD*,
-    NOMENCLATURALSTATUS*,
-    NOMENCLATURALSTATUS_ANNOTATION*,
-    NOMENCLATURALSTATUS_ANNOTATION_AUD*,
-    NOMENCLATURALSTATUS_AUD*,
-    NOMENCLATURALSTATUS_MARKER*,
-    NOMENCLATURALSTATUS_MARKER_AUD*,
-    ORIGINALSOURCE*,
-    ORIGINALSOURCE_ANNOTATION*,
-    ORIGINALSOURCE_ANNOTATION_AUD*,
-    ORIGINALSOURCE_AUD*,
-    ORIGINALSOURCE_MARKER*,
-    ORIGINALSOURCE_MARKER_AUD*,
-    PERMISSIONGROUP*,
-    PERMISSIONGROUP_GRANTEDAUTHORITYIMPL*,
-    PERSON_KEYWORD*,
-    PERSON_KEYWORD_AUD*,
-    REFERENCE*,
-    REFERENCE_ANNOTATION*,
-    REFERENCE_ANNOTATION_AUD*,
-    REFERENCE_AUD*,
-    REFERENCE_EXTENSION*,
-    REFERENCE_EXTENSION_AUD*,
-    REFERENCE_MARKER*,
-    REFERENCE_MARKER_AUD*,
-    REFERENCE_MEDIA*,
-    REFERENCE_MEDIA_AUD*,
-    REFERENCE_ORIGINALSOURCE*,
-    REFERENCE_ORIGINALSOURCE_AUD*,
-    REFERENCE_RIGHTSINFO*,
-    REFERENCE_RIGHTSINFO_AUD*,
-    TERMBASE_INVERSEREPRESENTATION*,
-    TERMBASE_INVERSEREPRESENTATION_AUD*,
-    REPRESENTATION*,
-    REPRESENTATION_ANNOTATION*,
-    REPRESENTATION_ANNOTATION_AUD*,
-    REPRESENTATION_AUD*,
-    REPRESENTATION_MARKER*,
-    REPRESENTATION_MARKER_AUD*,
-    RIGHTSINFO*,
-    RIGHTSINFO_ANNOTATION*,
-    RIGHTSINFO_ANNOTATION_AUD*,
-    RIGHTSINFO_AUD*,
-    RIGHTSINFO_MARKER*,
-    RIGHTSINFO_MARKER_AUD*,
-    SEQUENCE*,
-    SEQUENCE_ANNOTATION*,
-    SEQUENCE_ANNOTATION_AUD*,
-    SEQUENCE_AUD*,
-    SEQUENCE_EXTENSION*,
-    SEQUENCE_EXTENSION_AUD*,
-    SEQUENCE_MARKER*,
-    SEQUENCE_MARKER_AUD*,
-    SEQUENCE_MEDIA*,
-    SEQUENCE_MEDIA_AUD*,
-    SEQUENCE_ORIGINALSOURCE*,
-    SEQUENCE_ORIGINALSOURCE_AUD*,
-    SEQUENCE_REFERENCE*,
-    SEQUENCE_REFERENCE_AUD*,
-    SEQUENCE_RIGHTSINFO*,
-    SEQUENCE_RIGHTSINFO_AUD*,
-    SPECIMENOROBSERVATIONBASE*,
-    SPECIMENOROBSERVATIONBASE_ANNOTATION*,
-    SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD*,
-    SPECIMENOROBSERVATIONBASE_AUD*,
-    SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT*,
-    SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD*,
-    SPECIMENOROBSERVATIONBASE_EXTENSION*,
-    SPECIMENOROBSERVATIONBASE_EXTENSION_AUD*,
-    SPECIMENOROBSERVATIONBASE_LANGUAGESTRING*,
-    SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD*,
-    SPECIMENOROBSERVATIONBASE_MARKER*,
-    SPECIMENOROBSERVATIONBASE_MARKER_AUD*,
-    SPECIMENOROBSERVATIONBASE_MEDIA*,
-    SPECIMENOROBSERVATIONBASE_MEDIA_AUD*,
-    SPECIMENOROBSERVATIONBASE_ORIGINALSOURCE*,
-    SPECIMENOROBSERVATIONBASE_ORIGINALSOURCE_AUD*,
-    SPECIMENOROBSERVATIONBASE_RIGHTSINFO*,
-    SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD*,
-    STATEDATA*,
-    STATEDATA_AUD*,
-    STATEDATA_DEFINEDTERMBASE*,
-    STATEDATA_DEFINEDTERMBASE_AUD*,
-    STATEDATA_LANGUAGESTRING*,
-    STATEDATA_LANGUAGESTRING_AUD*,
-    STATISTICALMEASUREMENTVALUE*,
-    STATISTICALMEASUREMENTVALUE_AUD*,
-    STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE*,
-    STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD*,
-    TAXONBASE*,
-    TAXONBASE_ANNOTATION*,
-    TAXONBASE_ANNOTATION_AUD*,
-    TAXONBASE_AUD*,
-    TAXONBASE_EXTENSION*,
-    TAXONBASE_EXTENSION_AUD*,
-    TAXONBASE_MARKER*,
-    TAXONBASE_MARKER_AUD*,
-    TAXONBASE_ORIGINALSOURCE*,
-    TAXONBASE_ORIGINALSOURCE_AUD*,
-    TAXONBASE_RIGHTSINFO*,
-    TAXONBASE_RIGHTSINFO_AUD*,
-    TAXONINTERACTION_LANGUAGESTRING*,
-    TAXONINTERACTION_LANGUAGESTRING_AUD*,
-    TAXONNAME*,
-    TAXONNAME_ANNOTATION*,
-    TAXONNAME_ANNOTATION_AUD*,
-    TAXONNAME_AUD*,
-    TAXONNAME_EXTENSION*,
-    TAXONNAME_EXTENSION_AUD*,
-    TAXONNAME_HYBRIDRELATIONSHIP*,
-    TAXONNAME_HYBRIDRELATIONSHIP_AUD*,
-    TAXONNAME_MARKER*,
-    TAXONNAME_MARKER_AUD*,
-    TAXONNAME_NOMENCLATURALSTATUS*,
-    TAXONNAME_NOMENCLATURALSTATUS_AUD*,
-    TAXONNAME_ORIGINALSOURCE*,
-    TAXONNAME_ORIGINALSOURCE_AUD*,
-    TAXONNAME_RIGHTSINFO*,
-    TAXONNAME_RIGHTSINFO_AUD*,
-    TAXONNAME_TYPEDESIGNATIONBASE*,
-    TAXONNAME_TYPEDESIGNATIONBASE_AUD*,
-    TAXONNODE*,
-    TAXONNODE_ANNOTATION*,
-    TAXONNODE_ANNOTATION_AUD*,
-    TAXONNODE_EXCLUDEDNOTE*,
-    TAXONNODE_EXCLUDEDNOTE_AUD*,
-    TAXONNODE_MARKER*,
-    TAXONNODE_MARKER_AUD*,
-    TAXONRELATIONSHIP*,
-    TAXONRELATIONSHIP_ANNOTATION*,
-    TAXONRELATIONSHIP_ANNOTATION_AUD*,
-    TAXONRELATIONSHIP_AUD*,
-    TAXONRELATIONSHIP_MARKER*,
-    TAXONRELATIONSHIP_MARKER_AUD*,
-    TERMVOCABULARY*,
-    TERMVOCABULARY_AUD*,
-    TERMVOCABULARY_REPRESENTATION*,
-    TERMVOCABULARY_REPRESENTATION_AUD*,
-    TYPEDESIGNATIONBASE*,
-    TYPEDESIGNATIONBASE_ANNOTATION*,
-    TYPEDESIGNATIONBASE_ANNOTATION_AUD*,
-    TYPEDESIGNATIONBASE_AUD*,
-    TYPEDESIGNATIONBASE_MARKER*,
-    TYPEDESIGNATIONBASE_MARKER_AUD*,
-    USER*,
-    USER_GRANTEDAUTHORITYIMPL*,
-    USER_PERMISSIONGROUP*)>
-
-<!ELEMENT ADDRESS EMPTY>
-<!ATTLIST ADDRESS
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LOCALITY CDATA #IMPLIED
-    LOCATION_ERRORRADIUS CDATA #IMPLIED
-    LOCATION_LATITUDE CDATA #IMPLIED
-    LOCATION_LONGITUDE CDATA #IMPLIED
-    POBOX CDATA #IMPLIED
-    POSTCODE CDATA #IMPLIED
-    REGION CDATA #IMPLIED
-    STREET CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CONTACT_ID CDATA #IMPLIED
-    COUNTRY_ID CDATA #IMPLIED
-    LOCATION_REFERENCESYSTEM_ID CDATA #IMPLIED
->
-
-<!ELEMENT ADDRESS_AUD EMPTY>
-<!ATTLIST ADDRESS_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LOCALITY CDATA #IMPLIED
-    LOCATION_ERRORRADIUS CDATA #IMPLIED
-    LOCATION_LATITUDE CDATA #IMPLIED
-    LOCATION_LONGITUDE CDATA #IMPLIED
-    POBOX CDATA #IMPLIED
-    POSTCODE CDATA #IMPLIED
-    REGION CDATA #IMPLIED
-    STREET CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CONTACT_ID CDATA #IMPLIED
-    COUNTRY_ID CDATA #IMPLIED
-    LOCATION_REFERENCESYSTEM_ID CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE EMPTY>
-<!ATTLIST AGENTBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    CODE CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    NOMENCLATURALTITLE CDATA #IMPLIED
-    FIRSTNAME CDATA #IMPLIED
-    INITIALS CDATA #IMPLIED
-    LASTNAME CDATA #IMPLIED
-    LIFESPAN_END CDATA #IMPLIED
-    LIFESPAN_START CDATA #IMPLIED
-    PREFIX CDATA #IMPLIED
-    SUFFIX CDATA #IMPLIED
-    PROTECTEDNOMENCLATURALTITLECACHE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CONTACT_ID CDATA #IMPLIED
-    ISPARTOF_ID CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_AGENTBASE EMPTY>
-<!ATTLIST AGENTBASE_AGENTBASE
-    TEAM_ID CDATA #IMPLIED
-    TEAMMEMBERS_ID CDATA #IMPLIED
-    SORTINDEX CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_AGENTBASE_AUD EMPTY>
-<!ATTLIST AGENTBASE_AGENTBASE_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    TEAMMEMBERS_ID CDATA #REQUIRED
-    SORTINDEX CDATA #IMPLIED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_ANNOTATION EMPTY>
-<!ATTLIST AGENTBASE_ANNOTATION
-    AGENTBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_ANNOTATION_AUD EMPTY>
-<!ATTLIST AGENTBASE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_AUD EMPTY>
-<!ATTLIST AGENTBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    NOMENCLATURALTITLE CDATA #IMPLIED
-    PROTECTEDNOMENCLATURALTITLECACHE CDATA #IMPLIED
-    FIRSTNAME CDATA #IMPLIED
-    INITIALS CDATA #IMPLIED
-    LASTNAME CDATA #IMPLIED
-    LIFESPAN_END CDATA #IMPLIED
-    LIFESPAN_START CDATA #IMPLIED
-    PREFIX CDATA #IMPLIED
-    SUFFIX CDATA #IMPLIED
-    CONTACT_ID CDATA #IMPLIED
-    CODE CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    ISPARTOF_ID CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_DEFINEDTERMBASE EMPTY>
-<!ATTLIST AGENTBASE_DEFINEDTERMBASE
-    AGENTBASE_ID CDATA #REQUIRED
-    TYPES_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_DEFINEDTERMBASE_AUD EMPTY>
-<!ATTLIST AGENTBASE_DEFINEDTERMBASE_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    TYPES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_EXTENSION EMPTY>
-<!ATTLIST AGENTBASE_EXTENSION
-    AGENTBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_EXTENSION_AUD EMPTY>
-<!ATTLIST AGENTBASE_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_MARKER EMPTY>
-<!ATTLIST AGENTBASE_MARKER
-    AGENTBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_MARKER_AUD EMPTY>
-<!ATTLIST AGENTBASE_MARKER_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_MEDIA EMPTY>
-<!ATTLIST AGENTBASE_MEDIA
-    AGENTBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_MEDIA_AUD EMPTY>
-<!ATTLIST AGENTBASE_MEDIA_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_ORIGINALSOURCE EMPTY>
-<!ATTLIST AGENTBASE_ORIGINALSOURCE
-    AGENTBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST AGENTBASE_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AGENTBASE_RIGHTSINFO EMPTY>
-<!ATTLIST AGENTBASE_RIGHTSINFO
-    AGENTBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT AGENTBASE_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST AGENTBASE_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    AGENTBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT ANNOTATION EMPTY>
-<!ATTLIST ANNOTATION
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    LINKBACKURI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
-    ANNOTATIONTYPE_ID CDATA #IMPLIED
-    COMMENTATOR_ID CDATA #IMPLIED
->
-
-<!ELEMENT ANNOTATION_ANNOTATION EMPTY>
-<!ATTLIST ANNOTATION_ANNOTATION
-    ANNOTATION_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT ANNOTATION_ANNOTATION_AUD EMPTY>
-<!ATTLIST ANNOTATION_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    ANNOTATION_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT ANNOTATION_AUD EMPTY>
-<!ATTLIST ANNOTATION_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    LINKBACKURI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
-    ANNOTATIONTYPE_ID CDATA #IMPLIED
-    COMMENTATOR_ID CDATA #IMPLIED
->
-
-<!ELEMENT ANNOTATION_MARKER EMPTY>
-<!ATTLIST ANNOTATION_MARKER
-    ANNOTATION_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT ANNOTATION_MARKER_AUD EMPTY>
-<!ATTLIST ANNOTATION_MARKER_AUD
-    REV CDATA #REQUIRED
-    ANNOTATION_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT AUDITEVENT EMPTY>
-<!ATTLIST AUDITEVENT
-    REVISIONNUMBER CDATA #REQUIRED
-    TIMESTAMP CDATA #IMPLIED
-    UUID CDATA #IMPLIED
->
-
-<!ELEMENT CDM_VIEW EMPTY>
-<!ATTLIST CDM_VIEW
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    REFERENCE_ID CDATA #IMPLIED
->
-
-<!ELEMENT CDM_VIEW_CDM_VIEW EMPTY>
-<!ATTLIST CDM_VIEW_CDM_VIEW
-    CDM_VIEW_ID CDATA #REQUIRED
-    SUPERVIEWS_ID CDATA #REQUIRED
->
-
-<!ELEMENT CDMPREFERENCE EMPTY>
-<!ATTLIST CDMPREFERENCE
-    KEY_SUBJECT CDATA #REQUIRED
-    KEY_PREDICATE CDATA #REQUIRED
-    VALUE CDATA #IMPLIED
-    ALLOWOVERRIDE CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION EMPTY>
-<!ATTLIST COLLECTION
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    CODE CDATA #IMPLIED
-    CODESTANDARD CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    TOWNORLOCATION CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    INSTITUTE_ID CDATA #IMPLIED
-    SUPERCOLLECTION_ID CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_ANNOTATION EMPTY>
-<!ATTLIST COLLECTION_ANNOTATION
-    COLLECTION_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION_ANNOTATION_AUD EMPTY>
-<!ATTLIST COLLECTION_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    COLLECTION_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_AUD EMPTY>
-<!ATTLIST COLLECTION_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    CODE CDATA #IMPLIED
-    CODESTANDARD CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    TOWNORLOCATION CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    INSTITUTE_ID CDATA #IMPLIED
-    SUPERCOLLECTION_ID CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_EXTENSION EMPTY>
-<!ATTLIST COLLECTION_EXTENSION
-    COLLECTION_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION_EXTENSION_AUD EMPTY>
-<!ATTLIST COLLECTION_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    COLLECTION_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_MARKER EMPTY>
-<!ATTLIST COLLECTION_MARKER
-    COLLECTION_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION_MARKER_AUD EMPTY>
-<!ATTLIST COLLECTION_MARKER_AUD
-    REV CDATA #REQUIRED
-    COLLECTION_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_MEDIA EMPTY>
-<!ATTLIST COLLECTION_MEDIA
-    COLLECTION_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION_MEDIA_AUD EMPTY>
-<!ATTLIST COLLECTION_MEDIA_AUD
-    REV CDATA #REQUIRED
-    COLLECTION_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_ORIGINALSOURCE EMPTY>
-<!ATTLIST COLLECTION_ORIGINALSOURCE
-    COLLECTION_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST COLLECTION_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    COLLECTION_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT COLLECTION_RIGHTSINFO EMPTY>
-<!ATTLIST COLLECTION_RIGHTSINFO
-    COLLECTION_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT COLLECTION_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST COLLECTION_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    COLLECTION_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT CONTACT EMPTY>
-<!ATTLIST CONTACT
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    EMAIL CDATA #IMPLIED
-    FAX CDATA #IMPLIED
-    PHONE CDATA #IMPLIED
-    URL CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT CONTACT_AUD EMPTY>
-<!ATTLIST CONTACT_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    EMAIL CDATA #IMPLIED
-    FAX CDATA #IMPLIED
-    PHONE CDATA #IMPLIED
-    URL CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT DB_VERSION EMPTY>
-<!ATTLIST DB_VERSION
-    VERSION_INDEX CDATA #IMPLIED
-    VERSION_TIMESTAMP CDATA #IMPLIED
-    LAST_UPDATE_SUCCEEDED CDATA #IMPLIED
-    CODESCRIPTS_TIMESTAMP CDATA #IMPLIED
-    LAST_CODEUPDATE_SUCCEEDED CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE EMPTY>
-<!ATTLIST DEFINEDTERMBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TERMTYPE CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    RANKCLASS CDATA #IMPLIED
-    ORDERINDEX CDATA #IMPLIED
-    IDINVOCABULARY CDATA #IMPLIED
-    ISO639_1 CDATA #IMPLIED
-    SYMMETRICAL CDATA #IMPLIED
-    TRANSITIVE CDATA #IMPLIED
-    DEFAULTCOLOR CDATA #IMPLIED
-    SUPPORTSCOMMONTAXONNAME CDATA #IMPLIED
-    SUPPORTSDISTRIBUTION CDATA #IMPLIED
-    SUPPORTSINDIVIDUALASSOCIATION CDATA #IMPLIED
-    SUPPORTSQUANTITATIVEDATA CDATA #IMPLIED
-    SUPPORTSTAXONINTERACTION CDATA #IMPLIED
-    SUPPORTSTEXTDATA CDATA #IMPLIED
-    SUPPORTSCATEGORICALDATA CDATA #IMPLIED
-    POINTAPPROXIMATION_ERRORRADIUS CDATA #IMPLIED
-    POINTAPPROXIMATION_LATITUDE CDATA #IMPLIED
-    POINTAPPROXIMATION_LONGITUDE CDATA #IMPLIED
-    VALIDPERIOD_END CDATA #IMPLIED
-    VALIDPERIOD_START CDATA #IMPLIED
-    ISO3166_A2 CDATA #IMPLIED
-    ABSENCETERM CDATA #IMPLIED
-    ISTECHNICAL CDATA #REQUIRED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    KINDOF_ID CDATA #IMPLIED
-    PARTOF_ID CDATA #IMPLIED
-    VOCABULARY_ID CDATA #IMPLIED
-    LEVEL_ID CDATA #IMPLIED
-    POINTAPPROXIMATION_REFERENCESYSTEM_ID CDATA #IMPLIED
-    SHAPE_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    STRUCTURE_ID CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TERMTYPE CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    RANKCLASS CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    KINDOF_ID CDATA #IMPLIED
-    PARTOF_ID CDATA #IMPLIED
-    VOCABULARY_ID CDATA #IMPLIED
-    ORDERINDEX CDATA #IMPLIED
-    IDINVOCABULARY CDATA #IMPLIED
-    ISO639_1 CDATA #IMPLIED
-    ABSENCETERM CDATA #IMPLIED
-    ISTECHNICAL CDATA #IMPLIED
-    SYMMETRICAL CDATA #IMPLIED
-    TRANSITIVE CDATA #IMPLIED
-    DEFAULTCOLOR CDATA #IMPLIED
-    SUPPORTSCOMMONTAXONNAME CDATA #IMPLIED
-    SUPPORTSDISTRIBUTION CDATA #IMPLIED
-    SUPPORTSINDIVIDUALASSOCIATION CDATA #IMPLIED
-    SUPPORTSQUANTITATIVEDATA CDATA #IMPLIED
-    SUPPORTSTAXONINTERACTION CDATA #IMPLIED
-    SUPPORTSTEXTDATA CDATA #IMPLIED
-    SUPPORTSCATEGORICALDATA CDATA #IMPLIED
-    POINTAPPROXIMATION_ERRORRADIUS CDATA #IMPLIED
-    POINTAPPROXIMATION_LATITUDE CDATA #IMPLIED
-    POINTAPPROXIMATION_LONGITUDE CDATA #IMPLIED
-    VALIDPERIOD_END CDATA #IMPLIED
-    VALIDPERIOD_START CDATA #IMPLIED
-    ISO3166_A2 CDATA #IMPLIED
-    LEVEL_ID CDATA #IMPLIED
-    POINTAPPROXIMATION_REFERENCESYSTEM_ID CDATA #IMPLIED
-    SHAPE_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    STRUCTURE_ID CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_CONTINENT EMPTY>
-<!ATTLIST DEFINEDTERMBASE_CONTINENT
-    COUNTRY_ID CDATA #REQUIRED
-    CONTINENTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_CONTINENT_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_CONTINENT_AUD
-    REV CDATA #REQUIRED
-    COUNTRY_ID CDATA #REQUIRED
-    CONTINENTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_MEDIA EMPTY>
-<!ATTLIST DEFINEDTERMBASE_MEDIA
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_MEDIA_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_MEDIA_AUD
-    REV CDATA #REQUIRED
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION EMPTY>
-<!ATTLIST DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    RECOMMENDEDMODIFIERENUMERATION_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_RECOMMENDEDMODIFIERENUMERATION_AUD
-    REV CDATA #REQUIRED
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    RECOMMENDEDMODIFIERENUMERATION_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_REPRESENTATION EMPTY>
-<!ATTLIST DEFINEDTERMBASE_REPRESENTATION
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    REPRESENTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_REPRESENTATION_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_REPRESENTATION_AUD
-    REV CDATA #REQUIRED
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    REPRESENTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_STATISTICALMEASURE EMPTY>
-<!ATTLIST DEFINEDTERMBASE_STATISTICALMEASURE
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    RECOMMENDEDSTATISTICALMEASURES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_STATISTICALMEASURE_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_STATISTICALMEASURE_AUD
-    REV CDATA #REQUIRED
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    RECOMMENDEDSTATISTICALMEASURES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION EMPTY>
-<!ATTLIST DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    SUPPORTEDCATEGORICALENUMERATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION_AUD
-    REV CDATA #REQUIRED
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    SUPPORTEDCATEGORICALENUMERATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DEFINEDTERMBASE_COUNTRY EMPTY>
-<!ATTLIST DEFINEDTERMBASE_COUNTRY
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    COUNTRIES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DEFINEDTERMBASE_COUNTRY_AUD EMPTY>
-<!ATTLIST DEFINEDTERMBASE_COUNTRY_AUD
-    REV CDATA #REQUIRED
-    DEFINEDTERMBASE_ID CDATA #REQUIRED
-    COUNTRIES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DERIVATIONEVENT EMPTY>
-<!ATTLIST DERIVATIONEVENT
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    TIMEPERIOD_END CDATA #IMPLIED
-    TIMEPERIOD_START CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ACTOR_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT DERIVATIONEVENT_ANNOTATION EMPTY>
-<!ATTLIST DERIVATIONEVENT_ANNOTATION
-    DERIVATIONEVENT_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DERIVATIONEVENT_ANNOTATION_AUD EMPTY>
-<!ATTLIST DERIVATIONEVENT_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    DERIVATIONEVENT_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DERIVATIONEVENT_AUD EMPTY>
-<!ATTLIST DERIVATIONEVENT_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    TIMEPERIOD_END CDATA #IMPLIED
-    TIMEPERIOD_START CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ACTOR_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT DERIVATIONEVENT_MARKER EMPTY>
-<!ATTLIST DERIVATIONEVENT_MARKER
-    DERIVATIONEVENT_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DERIVATIONEVENT_MARKER_AUD EMPTY>
-<!ATTLIST DERIVATIONEVENT_MARKER_AUD
-    REV CDATA #REQUIRED
-    DERIVATIONEVENT_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE EMPTY>
-<!ATTLIST DESCRIPTIONBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    IMAGEGALLERY CDATA #IMPLIED
-    ISDEFAULT CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    SPECIMEN_ID CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
-    TAXONNAME_ID CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_ANNOTATION EMPTY>
-<!ATTLIST DESCRIPTIONBASE_ANNOTATION
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_ANNOTATION_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    IMAGEGALLERY CDATA #IMPLIED
-    ISDEFAULT CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    SPECIMEN_ID CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
-    TAXONNAME_ID CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_EXTENSION EMPTY>
-<!ATTLIST DESCRIPTIONBASE_EXTENSION
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_EXTENSION_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_GEOSCOPE EMPTY>
-<!ATTLIST DESCRIPTIONBASE_GEOSCOPE
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    GEOSCOPES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_GEOSCOPE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_GEOSCOPE_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    GEOSCOPES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_MARKER EMPTY>
-<!ATTLIST DESCRIPTIONBASE_MARKER
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_MARKER_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_MARKER_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_ORIGINALSOURCE EMPTY>
-<!ATTLIST DESCRIPTIONBASE_ORIGINALSOURCE
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_REFERENCE EMPTY>
-<!ATTLIST DESCRIPTIONBASE_REFERENCE
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    DESCRIPTIONSOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_REFERENCE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_REFERENCE_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    DESCRIPTIONSOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_RIGHTSINFO EMPTY>
-<!ATTLIST DESCRIPTIONBASE_RIGHTSINFO
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONBASE_SCOPE EMPTY>
-<!ATTLIST DESCRIPTIONBASE_SCOPE
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    SCOPES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_SCOPE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_SCOPE_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONBASE_ID CDATA #REQUIRED
-    SCOPES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    ORDERRELEVANT CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    FEATURE_ID CDATA #IMPLIED
-    INDESCRIPTION_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
-    AREA_ID CDATA #IMPLIED
-    STATUS_ID CDATA #IMPLIED
-    ASSOCIATEDSPECIMENOROBSERVATION_ID CDATA #IMPLIED
-    UNIT_ID CDATA #IMPLIED
-    TAXON2_ID CDATA #IMPLIED
-    FORMAT_ID CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_ANNOTATION EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_ANNOTATION
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_ANNOTATION_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    FEATURE_ID CDATA #IMPLIED
-    INDESCRIPTION_ID CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
-    UNIT_ID CDATA #IMPLIED
-    FORMAT_ID CDATA #IMPLIED
-    TAXON2_ID CDATA #IMPLIED
-    AREA_ID CDATA #IMPLIED
-    STATUS_ID CDATA #IMPLIED
-    ORDERRELEVANT CDATA #IMPLIED
-    ASSOCIATEDSPECIMENOROBSERVATION_ID CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_LANGUAGESTRING EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_LANGUAGESTRING
-    TEXTDATA_ID CDATA #REQUIRED
-    MULTILANGUAGETEXT_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_LANGUAGESTRING_AUD
-    REV CDATA #REQUIRED
-    TEXTDATA_ID CDATA #REQUIRED
-    MULTILANGUAGETEXT_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MARKER EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MARKER
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MARKER_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MARKER_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MEDIA EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MEDIA
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MEDIA_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MEDIA_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MODIFIER EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MODIFIER
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MODIFIERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MODIFIER_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MODIFIER_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MODIFIERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MODIFYINGTEXT EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MODIFYINGTEXT
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MODIFYINGTEXT_ID CDATA #IMPLIED
-    MODIFYINGTEXT_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD EMPTY>
-<!ATTLIST DESCRIPTIONELEMENTBASE_MODIFYINGTEXT_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    MODIFYINGTEXT_ID CDATA #REQUIRED
-    MODIFYINGTEXT_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DETERMINATIONEVENT EMPTY>
-<!ATTLIST DETERMINATIONEVENT
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    TIMEPERIOD_END CDATA #IMPLIED
-    TIMEPERIOD_START CDATA #IMPLIED
-    PREFERREDFLAG CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ACTOR_ID CDATA #IMPLIED
-    IDENTIFIEDUNIT_ID CDATA #IMPLIED
-    MODIFIER_ID CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
->
-
-<!ELEMENT DETERMINATIONEVENT_ANNOTATION EMPTY>
-<!ATTLIST DETERMINATIONEVENT_ANNOTATION
-    DETERMINATIONEVENT_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DETERMINATIONEVENT_ANNOTATION_AUD EMPTY>
-<!ATTLIST DETERMINATIONEVENT_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    DETERMINATIONEVENT_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DETERMINATIONEVENT_AUD EMPTY>
-<!ATTLIST DETERMINATIONEVENT_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    TIMEPERIOD_END CDATA #IMPLIED
-    TIMEPERIOD_START CDATA #IMPLIED
-    PREFERREDFLAG CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ACTOR_ID CDATA #IMPLIED
-    IDENTIFIEDUNIT_ID CDATA #IMPLIED
-    MODIFIER_ID CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
->
-
-<!ELEMENT DETERMINATIONEVENT_MARKER EMPTY>
-<!ATTLIST DETERMINATIONEVENT_MARKER
-    DETERMINATIONEVENT_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DETERMINATIONEVENT_MARKER_AUD EMPTY>
-<!ATTLIST DETERMINATIONEVENT_MARKER_AUD
-    REV CDATA #REQUIRED
-    DETERMINATIONEVENT_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT DETERMINATIONEVENT_REFERENCE EMPTY>
-<!ATTLIST DETERMINATIONEVENT_REFERENCE
-    DETERMINATIONEVENT_ID CDATA #REQUIRED
-    SETOFREFERENCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT DETERMINATIONEVENT_REFERENCE_AUD EMPTY>
-<!ATTLIST DETERMINATIONEVENT_REFERENCE_AUD
-    REV CDATA #REQUIRED
-    DETERMINATIONEVENT_ID CDATA #REQUIRED
-    SETOFREFERENCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT EXTENSION EMPTY>
-<!ATTLIST EXTENSION
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    VALUE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT EXTENSION_AUD EMPTY>
-<!ATTLIST EXTENSION_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    VALUE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT FEATURENODE EMPTY>
-<!ATTLIST FEATURENODE
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    FEATURE_ID CDATA #IMPLIED
-    PARENT_FK CDATA #IMPLIED
->
-
-<!ELEMENT FEATURENODE_AUD EMPTY>
-<!ATTLIST FEATURENODE_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    FEATURE_ID CDATA #IMPLIED
-    PARENT_FK CDATA #IMPLIED
->
-
-<!ELEMENT FEATURETREE EMPTY>
-<!ATTLIST FEATURETREE
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ROOT_ID CDATA #IMPLIED
->
-
-<!ELEMENT FEATURETREE_AUD EMPTY>
-<!ATTLIST FEATURETREE_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ROOT_ID CDATA #IMPLIED
->
-
-<!ELEMENT FEATURETREE_REPRESENTATION EMPTY>
-<!ATTLIST FEATURETREE_REPRESENTATION
-    FEATURETREE_ID CDATA #REQUIRED
-    REPRESENTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT FEATURETREE_REPRESENTATION_AUD EMPTY>
-<!ATTLIST FEATURETREE_REPRESENTATION_AUD
-    REV CDATA #REQUIRED
-    FEATURETREE_ID CDATA #REQUIRED
-    REPRESENTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT GATHERINGEVENT EMPTY>
-<!ATTLIST GATHERINGEVENT
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    TIMEPERIOD_END CDATA #IMPLIED
-    TIMEPERIOD_START CDATA #IMPLIED
-    ABSOLUTEELEVATION CDATA #IMPLIED
-    ABSOLUTEELEVATIONERROR CDATA #IMPLIED
-    COLLECTINGMETHOD CDATA #IMPLIED
-    COLLECTINGMETHODMAX CDATA #IMPLIED
-    DISTANCETOGROUND CDATA #IMPLIED
-    DISTANCETOGROUNDMAX CDATA #IMPLIED
-    DISTANCETOGROUNDTEXT CDATA #IMPLIED
-    DISTANCETOWATERSURFACE CDATA #IMPLIED
-    DISTANCETOWATERSURFACEMAX CDATA #IMPLIED
-    DISTANCETOWATERSURFACETEXT CDATA #IMPLIED
-    EXACTLOCATION_ERRORRADIUS CDATA #IMPLIED
-    EXACTLOCATION_LATITUDE CDATA #IMPLIED
-    EXACTLOCATION_LONGITUDE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ACTOR_ID CDATA #IMPLIED
-    EXACTLOCATION_REFERENCESYSTEM_ID CDATA #IMPLIED
-    LOCALITY_ID CDATA #IMPLIED
->
-
-<!ELEMENT GATHERINGEVENT_ANNOTATION EMPTY>
-<!ATTLIST GATHERINGEVENT_ANNOTATION
-    GATHERINGEVENT_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT GATHERINGEVENT_ANNOTATION_AUD EMPTY>
-<!ATTLIST GATHERINGEVENT_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    GATHERINGEVENT_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT GATHERINGEVENT_AUD EMPTY>
-<!ATTLIST GATHERINGEVENT_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DESCRIPTION CDATA #IMPLIED
-    TIMEPERIOD_END CDATA #IMPLIED
-    TIMEPERIOD_START CDATA #IMPLIED
-    ABSOLUTEELEVATION CDATA #IMPLIED
-    ABSOLUTEELEVATIONERROR CDATA #IMPLIED
-    COLLECTINGMETHOD CDATA #IMPLIED
-    DISTANCETOGROUND CDATA #IMPLIED
-    DISTANCETOGROUNDMAX CDATA #IMPLIED
-    DISTANCETOGROUNDTEXT CDATA #IMPLIED
-    DISTANCETOWATERSURFACE CDATA #IMPLIED
-    DISTANCETOWATERSURFACEMAX CDATA #IMPLIED
-    DISTANCETOWATERSURFACETEXT CDATA #IMPLIED
-    EXACTLOCATION_ERRORRADIUS CDATA #IMPLIED
-    EXACTLOCATION_LATITUDE CDATA #IMPLIED
-    EXACTLOCATION_LONGITUDE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ACTOR_ID CDATA #IMPLIED
-    EXACTLOCATION_REFERENCESYSTEM_ID CDATA #IMPLIED
-    LOCALITY_ID CDATA #IMPLIED
->
-
-<!ELEMENT GATHERINGEVENT_DEFINEDTERMBASE EMPTY>
-<!ATTLIST GATHERINGEVENT_DEFINEDTERMBASE
-    GATHERINGEVENT_ID CDATA #REQUIRED
-    COLLECTINGAREAS_ID CDATA #REQUIRED
->
-
-<!ELEMENT GATHERINGEVENT_DEFINEDTERMBASE_AUD EMPTY>
-<!ATTLIST GATHERINGEVENT_DEFINEDTERMBASE_AUD
-    REV CDATA #REQUIRED
-    GATHERINGEVENT_ID CDATA #REQUIRED
-    COLLECTINGAREAS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT GATHERINGEVENT_MARKER EMPTY>
-<!ATTLIST GATHERINGEVENT_MARKER
-    GATHERINGEVENT_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT GATHERINGEVENT_MARKER_AUD EMPTY>
-<!ATTLIST GATHERINGEVENT_MARKER_AUD
-    REV CDATA #REQUIRED
-    GATHERINGEVENT_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT GRANTEDAUTHORITYIMPL EMPTY>
-<!ATTLIST GRANTEDAUTHORITYIMPL
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    AUTHORITY CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT HIBERNATE_SEQUENCES EMPTY>
-<!ATTLIST HIBERNATE_SEQUENCES
-       SEQUENCE_NAME CDATA #IMPLIED
-       NEXT_VAL CDATA #IMPLIED
->
-
-<!ELEMENT HOMOTYPICALGROUP EMPTY>
-<!ATTLIST HOMOTYPICALGROUP
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT HOMOTYPICALGROUP_ANNOTATION EMPTY>
-<!ATTLIST HOMOTYPICALGROUP_ANNOTATION
-    HOMOTYPICALGROUP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT HOMOTYPICALGROUP_ANNOTATION_AUD EMPTY>
-<!ATTLIST HOMOTYPICALGROUP_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    HOMOTYPICALGROUP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT HOMOTYPICALGROUP_AUD EMPTY>
-<!ATTLIST HOMOTYPICALGROUP_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT HOMOTYPICALGROUP_MARKER EMPTY>
-<!ATTLIST HOMOTYPICALGROUP_MARKER
-    HOMOTYPICALGROUP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT HOMOTYPICALGROUP_MARKER_AUD EMPTY>
-<!ATTLIST HOMOTYPICALGROUP_MARKER_AUD
-    REV CDATA #REQUIRED
-    HOMOTYPICALGROUP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT HYBRIDRELATIONSHIP EMPTY>
-<!ATTLIST HYBRIDRELATIONSHIP
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    RULECONSIDERED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    RELATEDFROM_ID CDATA #IMPLIED
-    RELATEDTO_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT HYBRIDRELATIONSHIP_ANNOTATION EMPTY>
-<!ATTLIST HYBRIDRELATIONSHIP_ANNOTATION
-    HYBRIDRELATIONSHIP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT HYBRIDRELATIONSHIP_ANNOTATION_AUD EMPTY>
-<!ATTLIST HYBRIDRELATIONSHIP_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    HYBRIDRELATIONSHIP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT HYBRIDRELATIONSHIP_AUD EMPTY>
-<!ATTLIST HYBRIDRELATIONSHIP_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    RULECONSIDERED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    RELATEDFROM_ID CDATA #IMPLIED
-    RELATEDTO_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT HYBRIDRELATIONSHIP_MARKER EMPTY>
-<!ATTLIST HYBRIDRELATIONSHIP_MARKER
-    HYBRIDRELATIONSHIP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT HYBRIDRELATIONSHIP_MARKER_AUD EMPTY>
-<!ATTLIST HYBRIDRELATIONSHIP_MARKER_AUD
-    REV CDATA #REQUIRED
-    HYBRIDRELATIONSHIP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAKEY_TAXONSCOPE EMPTY>
-<!ATTLIST MEDIAKEY_TAXONSCOPE
-    MEDIAKEY_FK CDATA #REQUIRED
-    TAXONOMICSCOPE_FK CDATA #REQUIRED
->
-
-<!ELEMENT MEDIAKEY_TAXONSCOPE_AUD EMPTY>
-<!ATTLIST MEDIAKEY_TAXONSCOPE_AUD
-    REV CDATA #REQUIRED
-    MEDIAKEY_FK CDATA #REQUIRED
-    TAXONOMICSCOPE_FK CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT INDIVIDUALSASSOCIATION_LANGUAGESTRING EMPTY>
-<!ATTLIST INDIVIDUALSASSOCIATION_LANGUAGESTRING
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #IMPLIED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST INDIVIDUALSASSOCIATION_LANGUAGESTRING_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #REQUIRED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT INSTITUTIONALMEMBERSHIP EMPTY>
-<!ATTLIST INSTITUTIONALMEMBERSHIP
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DEPARTMENT CDATA #IMPLIED
-    PERIOD_END CDATA #IMPLIED
-    PERIOD_START CDATA #IMPLIED
-    ROLE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    INSTITUTE_ID CDATA #IMPLIED
-    PERSON_ID CDATA #IMPLIED
->
-
-<!ELEMENT INSTITUTIONALMEMBERSHIP_AUD EMPTY>
-<!ATTLIST INSTITUTIONALMEMBERSHIP_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    DEPARTMENT CDATA #IMPLIED
-    PERIOD_END CDATA #IMPLIED
-    PERIOD_START CDATA #IMPLIED
-    ROLE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    INSTITUTE_ID CDATA #IMPLIED
-    PERSON_ID CDATA #IMPLIED
->
-
-<!ELEMENT LANGUAGESTRING EMPTY>
-<!ATTLIST LANGUAGESTRING
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
->
-
-<!ELEMENT LANGUAGESTRING_ANNOTATION EMPTY>
-<!ATTLIST LANGUAGESTRING_ANNOTATION
-    LANGUAGESTRING_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT LANGUAGESTRING_ANNOTATION_AUD EMPTY>
-<!ATTLIST LANGUAGESTRING_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    LANGUAGESTRING_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST LANGUAGESTRING_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
->
-
-<!ELEMENT LANGUAGESTRING_MARKER EMPTY>
-<!ATTLIST LANGUAGESTRING_MARKER
-    LANGUAGESTRING_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT LANGUAGESTRING_MARKER_AUD EMPTY>
-<!ATTLIST LANGUAGESTRING_MARKER_AUD
-    REV CDATA #REQUIRED
-    LANGUAGESTRING_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MARKER EMPTY>
-<!ATTLIST MARKER
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    FLAG CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    MARKERTYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT MARKER_AUD EMPTY>
-<!ATTLIST MARKER_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    FLAG CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    MARKERTYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA EMPTY>
-<!ATTLIST MEDIA
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    MEDIACREATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ARTIST_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAREPRESENTATION EMPTY>
-<!ATTLIST MEDIAREPRESENTATION
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    MIMETYPE CDATA #IMPLIED
-    SUFFIX CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    MEDIA_ID CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAREPRESENTATIONPART EMPTY>
-<!ATTLIST MEDIAREPRESENTATIONPART
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    SIZE CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    DURATION CDATA #IMPLIED
-    HEIGHT CDATA #IMPLIED
-    WIDTH CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    REPRESENTATION_ID CDATA #IMPLIED
-    SORTINDEX CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAREPRESENTATIONPART_AUD EMPTY>
-<!ATTLIST MEDIAREPRESENTATIONPART_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    SIZE CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    REPRESENTATION_ID CDATA #IMPLIED
-    DURATION CDATA #IMPLIED
-    HEIGHT CDATA #IMPLIED
-    WIDTH CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAREPRESENTATION_AUD EMPTY>
-<!ATTLIST MEDIAREPRESENTATION_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    MIMETYPE CDATA #IMPLIED
-    SUFFIX CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    MEDIA_ID CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD EMPTY>
-<!ATTLIST MEDIAREPRESENTATION_MEDIAREPRESENTATIONPART_AUD
-    REV CDATA #REQUIRED
-    REPRESENTATION_ID CDATA #REQUIRED
-    ID CDATA #REQUIRED
-    SORTINDEX CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_ANNOTATION EMPTY>
-<!ATTLIST MEDIA_ANNOTATION
-    MEDIA_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_ANNOTATION_AUD EMPTY>
-<!ATTLIST MEDIA_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_AUD EMPTY>
-<!ATTLIST MEDIA_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    MEDIACREATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    ARTIST_ID CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_DEFINEDTERMBASE EMPTY>
-<!ATTLIST MEDIA_DEFINEDTERMBASE
-    MEDIA_ID CDATA #REQUIRED
-    GEOGRAPHICALSCOPE_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_DEFINEDTERMBASE_AUD EMPTY>
-<!ATTLIST MEDIA_DEFINEDTERMBASE_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    GEOGRAPHICALSCOPE_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_DESCRIPTION EMPTY>
-<!ATTLIST MEDIA_DESCRIPTION
-    MEDIA_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #IMPLIED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_DESCRIPTION_AUD EMPTY>
-<!ATTLIST MEDIA_DESCRIPTION_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #REQUIRED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_LANGUAGESTRING EMPTY>
-<!ATTLIST MEDIA_LANGUAGESTRING
-    MEDIA_ID CDATA #REQUIRED
-    TITLE_ID CDATA #IMPLIED
-    TITLE_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST MEDIA_LANGUAGESTRING_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    TITLE_ID CDATA #REQUIRED
-    TITLE_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_MARKER EMPTY>
-<!ATTLIST MEDIA_MARKER
-    MEDIA_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_MARKER_AUD EMPTY>
-<!ATTLIST MEDIA_MARKER_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_RIGHTSINFO EMPTY>
-<!ATTLIST MEDIA_RIGHTSINFO
-    MEDIA_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST MEDIA_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIA_SEQUENCE EMPTY>
-<!ATTLIST MEDIA_SEQUENCE
-    MEDIA_ID CDATA #REQUIRED
-    USEDSEQUENCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIA_SEQUENCE_AUD EMPTY>
-<!ATTLIST MEDIA_SEQUENCE_AUD
-    REV CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    USEDSEQUENCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT MEDIAKEY_COVEREDTAXON EMPTY>
-<!ATTLIST MEDIAKEY_COVEREDTAXON
-    MEDIAKEY_ID CDATA #REQUIRED
-    COVEREDTAXA_ID CDATA #REQUIRED
->
-
-<!ELEMENT MEDIAKEY_COVEREDTAXON_AUD EMPTY>
-<!ATTLIST MEDIAKEY_COVEREDTAXON_AUD
-    REV CDATA #REQUIRED
-    MEDIAKEY_ID CDATA #REQUIRED
-    COVEREDTAXA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT NAMERELATIONSHIP EMPTY>
-<!ATTLIST NAMERELATIONSHIP
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    RULECONSIDERED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    RELATEDFROM_ID CDATA #IMPLIED
-    RELATEDTO_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT NAMERELATIONSHIP_ANNOTATION EMPTY>
-<!ATTLIST NAMERELATIONSHIP_ANNOTATION
-    NAMERELATIONSHIP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT NAMERELATIONSHIP_ANNOTATION_AUD EMPTY>
-<!ATTLIST NAMERELATIONSHIP_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    NAMERELATIONSHIP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT NAMERELATIONSHIP_AUD EMPTY>
-<!ATTLIST NAMERELATIONSHIP_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    RULECONSIDERED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    RELATEDFROM_ID CDATA #IMPLIED
-    RELATEDTO_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT NAMERELATIONSHIP_MARKER EMPTY>
-<!ATTLIST NAMERELATIONSHIP_MARKER
-    NAMERELATIONSHIP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT NAMERELATIONSHIP_MARKER_AUD EMPTY>
-<!ATTLIST NAMERELATIONSHIP_MARKER_AUD
-    REV CDATA #REQUIRED
-    NAMERELATIONSHIP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT NOMENCLATURALSTATUS EMPTY>
-<!ATTLIST NOMENCLATURALSTATUS
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    RULECONSIDERED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT NOMENCLATURALSTATUS_ANNOTATION EMPTY>
-<!ATTLIST NOMENCLATURALSTATUS_ANNOTATION
-    NOMENCLATURALSTATUS_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT NOMENCLATURALSTATUS_ANNOTATION_AUD EMPTY>
-<!ATTLIST NOMENCLATURALSTATUS_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    NOMENCLATURALSTATUS_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT NOMENCLATURALSTATUS_AUD EMPTY>
-<!ATTLIST NOMENCLATURALSTATUS_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    RULECONSIDERED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT NOMENCLATURALSTATUS_MARKER EMPTY>
-<!ATTLIST NOMENCLATURALSTATUS_MARKER
-    NOMENCLATURALSTATUS_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT NOMENCLATURALSTATUS_MARKER_AUD EMPTY>
-<!ATTLIST NOMENCLATURALSTATUS_MARKER_AUD
-    REV CDATA #REQUIRED
-    NOMENCLATURALSTATUS_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT ORIGINALSOURCE EMPTY>
-<!ATTLIST ORIGINALSOURCE
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    IDINSOURCE CDATA #IMPLIED
-    IDNAMESPACE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
->
-
-<!ELEMENT ORIGINALSOURCE_ANNOTATION EMPTY>
-<!ATTLIST ORIGINALSOURCE_ANNOTATION
-    ORIGINALSOURCE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT ORIGINALSOURCE_ANNOTATION_AUD EMPTY>
-<!ATTLIST ORIGINALSOURCE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    ORIGINALSOURCE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST ORIGINALSOURCE_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    IDINSOURCE CDATA #IMPLIED
-    IDNAMESPACE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
->
-
-<!ELEMENT ORIGINALSOURCE_MARKER EMPTY>
-<!ATTLIST ORIGINALSOURCE_MARKER
-    ORIGINALSOURCE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT ORIGINALSOURCE_MARKER_AUD EMPTY>
-<!ATTLIST ORIGINALSOURCE_MARKER_AUD
-    REV CDATA #REQUIRED
-    ORIGINALSOURCE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT PERMISSIONGROUP EMPTY>
-<!ATTLIST PERMISSIONGROUP
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    NAME CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT PERMISSIONGROUP_GRANTEDAUTHORITYIMPL EMPTY>
-<!ATTLIST PERMISSIONGROUP_GRANTEDAUTHORITYIMPL
-    GROUP_ID CDATA #REQUIRED
-    GRANTEDAUTHORITIES_ID CDATA #REQUIRED
->
-
-<!ELEMENT PERSON_KEYWORD EMPTY>
-<!ATTLIST PERSON_KEYWORD
-    PERSON_FK CDATA #REQUIRED
-    KEYWORD_FK CDATA #REQUIRED
->
-
-<!ELEMENT PERSON_KEYWORD_AUD EMPTY>
-<!ATTLIST PERSON_KEYWORD_AUD
-    REV CDATA #REQUIRED
-    PERSON_FK CDATA #REQUIRED
-    KEYWORD_FK CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE EMPTY>
-<!ATTLIST REFERENCE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    HASPROBLEM CDATA #IMPLIED
-    NOMENCLATURALLYRELEVANT CDATA #IMPLIED
-    PROBLEMENDS CDATA #IMPLIED
-    PROBLEMSTARTS CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    DATEPUBLISHED_END CDATA #IMPLIED
-    DATEPUBLISHED_START CDATA #IMPLIED
-    TITLE CDATA #IMPLIED
-    PAGES CDATA #IMPLIED
-    SERIES CDATA #IMPLIED
-    VOLUME CDATA #IMPLIED
-    ADDRESS CDATA #IMPLIED
-    ANNOTE CDATA #IMPLIED
-    BOOKTITLE CDATA #IMPLIED
-    CHAPTER CDATA #IMPLIED
-    EDITION CDATA #IMPLIED
-    EDITOR CDATA #IMPLIED
-    EPRINT CDATA #IMPLIED
-    HOWPUBLISHED CDATA #IMPLIED
-    INSTITUTION CDATA #IMPLIED
-    JOURNAL CDATA #IMPLIED
-    MONTH CDATA #IMPLIED
-    NOTE CDATA #IMPLIED
-    NUMBER CDATA #IMPLIED
-    ORGANIZATION CDATA #IMPLIED
-    PUBLISHER CDATA #IMPLIED
-    REPORTTYPE CDATA #IMPLIED
-    SCHOOL CDATA #IMPLIED
-    YEAR CDATA #IMPLIED
-    PLACEPUBLISHED CDATA #IMPLIED
-    SERIESPART CDATA #IMPLIED
-    ISBN CDATA #IMPLIED
-    ISSN CDATA #IMPLIED
-    ACCESSED CDATA #IMPLIED
-    LASTRETRIEVED CDATA #IMPLIED
-    EXTERNALID CDATA #IMPLIED
-    EXTERNALLINK CDATA #IMPLIED
-    AUTHORITYTYPE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    AUTHORSHIP_ID CDATA #IMPLIED
-    INJOURNAL_ID CDATA #IMPLIED
-    CROSSREF_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    INSERIES_ID CDATA #IMPLIED
-    INBOOK_ID CDATA #IMPLIED
-    INPROCEEDINGS_ID CDATA #IMPLIED
-    INSTITUTION_ID CDATA #IMPLIED
-    SCHOOL_ID CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_ANNOTATION EMPTY>
-<!ATTLIST REFERENCE_ANNOTATION
-    REFERENCE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT REFERENCE_ANNOTATION_AUD EMPTY>
-<!ATTLIST REFERENCE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    REFERENCE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_AUD EMPTY>
-<!ATTLIST REFERENCE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    HASPROBLEM CDATA #IMPLIED
-    NOMENCLATURALLYRELEVANT CDATA #IMPLIED
-    PROBLEMENDS CDATA #IMPLIED
-    PROBLEMSTARTS CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    AUTHORSHIP_ID CDATA #IMPLIED
-    DATEPUBLISHED_END CDATA #IMPLIED
-    DATEPUBLISHED_START CDATA #IMPLIED
-    TITLE CDATA #IMPLIED
-    ABBREVTITLE CDATA #IMPLIED
-    ABBREVTITLECACHE CDATA #IMPLIED
-    PROTECTEDABBREVTITLECACHE CDATA #IMPLIED
-    PAGES CDATA #IMPLIED
-    PLACEPUBLISHED CDATA #IMPLIED
-    PUBLISHER CDATA #IMPLIED
-    SCHOOL_ID CDATA #IMPLIED
-    EDITOR CDATA #IMPLIED
-    SERIESPART CDATA #IMPLIED
-    VOLUME CDATA #IMPLIED
-    INSERIES_ID CDATA #IMPLIED
-    EDITION CDATA #IMPLIED
-    ISBN CDATA #IMPLIED
-    ORGANIZATION CDATA #IMPLIED
-    SERIES CDATA #IMPLIED
-    ISSN CDATA #IMPLIED
-    ADDRESS CDATA #IMPLIED
-    ANNOTE CDATA #IMPLIED
-    BOOKTITLE CDATA #IMPLIED
-    CHAPTER CDATA #IMPLIED
-    EPRINT CDATA #IMPLIED
-    HOWPUBLISHED CDATA #IMPLIED
-    INSTITUTION CDATA #IMPLIED
-    JOURNAL CDATA #IMPLIED
-    MONTH CDATA #IMPLIED
-    NOTE CDATA #IMPLIED
-    NUMBER CDATA #IMPLIED
-    REPORTTYPE CDATA #IMPLIED
-    SCHOOL CDATA #IMPLIED
-    YEAR CDATA #IMPLIED
-    ACCESSED CDATA #IMPLIED
-    LASTRETRIEVED CDATA #IMPLIED
-    EXTERNALID CDATA #IMPLIED
-    EXTERNALLINK CDATA #IMPLIED
-    AUTHORITYTYPE CDATA #IMPLIED
-    CROSSREF_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    INBOOK_ID CDATA #IMPLIED
-    INJOURNAL_ID CDATA #IMPLIED
-    INPROCEEDINGS_ID CDATA #IMPLIED
-    INSTITUTION_ID CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_EXTENSION EMPTY>
-<!ATTLIST REFERENCE_EXTENSION
-    REFERENCE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT REFERENCE_EXTENSION_AUD EMPTY>
-<!ATTLIST REFERENCE_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    REFERENCE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_MARKER EMPTY>
-<!ATTLIST REFERENCE_MARKER
-    REFERENCE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT REFERENCE_MARKER_AUD EMPTY>
-<!ATTLIST REFERENCE_MARKER_AUD
-    REV CDATA #REQUIRED
-    REFERENCE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_MEDIA EMPTY>
-<!ATTLIST REFERENCE_MEDIA
-    REFERENCE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
->
-
-<!ELEMENT REFERENCE_MEDIA_AUD EMPTY>
-<!ATTLIST REFERENCE_MEDIA_AUD
-    REV CDATA #REQUIRED
-    REFERENCE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_ORIGINALSOURCE EMPTY>
-<!ATTLIST REFERENCE_ORIGINALSOURCE
-    REFERENCE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT REFERENCE_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST REFERENCE_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    REFERENCE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REFERENCE_RIGHTSINFO EMPTY>
-<!ATTLIST REFERENCE_RIGHTSINFO
-    REFERENCE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT REFERENCE_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST REFERENCE_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    REFERENCE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TERMBASE_INVERSEREPRESENTATION EMPTY>
-<!ATTLIST TERMBASE_INVERSEREPRESENTATION
-    TERM_ID CDATA #REQUIRED
-    INVERSEREPRESENTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TERMBASE_INVERSEREPRESENTATION_AUD EMPTY>
-<!ATTLIST TERMBASE_INVERSEREPRESENTATION_AUD
-    REV CDATA #REQUIRED
-    TERM_ID CDATA #REQUIRED
-    INVERSEREPRESENTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REPRESENTATION EMPTY>
-<!ATTLIST REPRESENTATION
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    ABBREVIATEDLABEL CDATA #IMPLIED
-    LABEL CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
->
-
-<!ELEMENT REPRESENTATION_ANNOTATION EMPTY>
-<!ATTLIST REPRESENTATION_ANNOTATION
-    REPRESENTATION_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT REPRESENTATION_ANNOTATION_AUD EMPTY>
-<!ATTLIST REPRESENTATION_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    REPRESENTATION_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT REPRESENTATION_AUD EMPTY>
-<!ATTLIST REPRESENTATION_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    ABBREVIATEDLABEL CDATA #IMPLIED
-    LABEL CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
->
-
-<!ELEMENT REPRESENTATION_MARKER EMPTY>
-<!ATTLIST REPRESENTATION_MARKER
-    REPRESENTATION_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT REPRESENTATION_MARKER_AUD EMPTY>
-<!ATTLIST REPRESENTATION_MARKER_AUD
-    REV CDATA #REQUIRED
-    REPRESENTATION_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT RIGHTSINFO EMPTY>
-<!ATTLIST RIGHTSINFO
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    ABBREVIATEDTEXT CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
-    AGENTBASE_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT RIGHTSINFO_ANNOTATION EMPTY>
-<!ATTLIST RIGHTSINFO_ANNOTATION
-    RIGHTSINFO_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT RIGHTSINFO_ANNOTATION_AUD EMPTY>
-<!ATTLIST RIGHTSINFO_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    RIGHTSINFO_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT RIGHTSINFO_AUD EMPTY>
-<!ATTLIST RIGHTSINFO_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    TEXT CDATA #IMPLIED
-    ABBREVIATEDTEXT CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LANGUAGE_ID CDATA #IMPLIED
-    AGENTBASE_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT RIGHTSINFO_MARKER EMPTY>
-<!ATTLIST RIGHTSINFO_MARKER
-    RIGHTSINFO_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT RIGHTSINFO_MARKER_AUD EMPTY>
-<!ATTLIST RIGHTSINFO_MARKER_AUD
-    REV CDATA #REQUIRED
-    RIGHTSINFO_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE EMPTY>
-<!ATTLIST SEQUENCE
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    BARCODE CDATA #IMPLIED
-    GENBANKACCESSIONNUMBER CDATA #IMPLIED
-    GENBANKURI CDATA #IMPLIED 
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    DATESEQUENCED CDATA #IMPLIED
-    LENGTH CDATA #IMPLIED
-    SEQUENCE CDATA #IMPLIED
-    MARKER_ID CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    PUBLISHEDIN_ID CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_ANNOTATION EMPTY>
-<!ATTLIST SEQUENCE_ANNOTATION
-    SEQUENCE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_ANNOTATION_AUD EMPTY>
-<!ATTLIST SEQUENCE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_AUD EMPTY>
-<!ATTLIST SEQUENCE_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    BARCODE CDATA #IMPLIED
-    GENBANKACCESSIONNUMBER CDATA #IMPLIED
-    GENBANKURI CDATA #IMPLIED 
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    DATESEQUENCED CDATA #IMPLIED
-    LENGTH CDATA #IMPLIED
-    SEQUENCE CDATA #IMPLIED
-    MARKER_ID CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    PUBLISHEDIN_ID CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_EXTENSION EMPTY>
-<!ATTLIST SEQUENCE_EXTENSION
-    SEQUENCE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_EXTENSION_AUD EMPTY>
-<!ATTLIST SEQUENCE_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_MARKER EMPTY>
-<!ATTLIST SEQUENCE_MARKER
-    SEQUENCE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_MARKER_AUD EMPTY>
-<!ATTLIST SEQUENCE_MARKER_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_MEDIA EMPTY>
-<!ATTLIST SEQUENCE_MEDIA
-    SEQUENCE_ID CDATA #REQUIRED
-    CHROMATOGRAMS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_MEDIA_AUD EMPTY>
-<!ATTLIST SEQUENCE_MEDIA_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    CHROMATOGRAMS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_ORIGINALSOURCE EMPTY>
-<!ATTLIST SEQUENCE_ORIGINALSOURCE
-    SEQUENCE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST SEQUENCE_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_REFERENCE EMPTY>
-<!ATTLIST SEQUENCE_REFERENCE
-    SEQUENCE_ID CDATA #REQUIRED
-    CITATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_REFERENCE_AUD EMPTY>
-<!ATTLIST SEQUENCE_REFERENCE_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    CITATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SEQUENCE_RIGHTSINFO EMPTY>
-<!ATTLIST SEQUENCE_RIGHTSINFO
-    SEQUENCE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SEQUENCE_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST SEQUENCE_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    SEQUENCE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    RECORDBASIS CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDIDENTITYCACHE CDATA #IMPLIED
-    IDENTITYCACHE CDATA #IMPLIED
-    PUBLISHED CDATA #IMPLIED
-    INDIVIDUALCOUNT CDATA #IMPLIED
-    ACCESSIONNUMBER CDATA #IMPLIED
-    CATALOGNUMBER CDATA #IMPLIED
-    COLLECTORSNUMBER CDATA #IMPLIED
-    FIELDNOTES CDATA #IMPLIED
-    FIELDNUMBER CDATA #IMPLIED
-    BARCODE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LIFESTAGE_ID CDATA #IMPLIED
-    SEX_ID CDATA #IMPLIED
-    KINDOFUNIT_ID CDATA #IMPLIED
-    COLLECTION_ID CDATA #IMPLIED
-    DERIVATIONEVENT_ID CDATA #IMPLIED
-    STOREDUNDER_ID CDATA #IMPLIED
-    PRESERVATION_ID CDATA #IMPLIED
-    GATHERINGEVENT_ID CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_ANNOTATION EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_ANNOTATION
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    RECORDBASIS CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDIDENTITYCACHE CDATA #IMPLIED
-    IDENTITYCACHE CDATA #IMPLIED
-    PUBLISHED CDATA #IMPLIED
-    INDIVIDUALCOUNT CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    LIFESTAGE_ID CDATA #IMPLIED
-    SEX_ID CDATA #IMPLIED
-    KINDOFUNIT_ID CDATA #IMPLIED
-    ACCESSIONNUMBER CDATA #IMPLIED
-    CATALOGNUMBER CDATA #IMPLIED
-    COLLECTORSNUMBER CDATA #IMPLIED
-    COLLECTION_ID CDATA #IMPLIED
-    DERIVATIONEVENT_ID CDATA #IMPLIED
-    STOREDUNDER_ID CDATA #IMPLIED
-    FIELDNOTES CDATA #IMPLIED
-    FIELDNUMBER CDATA #IMPLIED
-    BARCODE CDATA #IMPLIED
-    GATHERINGEVENT_ID CDATA #IMPLIED
-    PRESERVATION_ID CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT
-    ORIGINALS_ID CDATA #REQUIRED
-    DERIVATIONEVENTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT_AUD
-    REV CDATA #REQUIRED
-    ORIGINALS_ID CDATA #REQUIRED
-    DERIVATIONEVENTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_EXTENSION EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_EXTENSION
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_EXTENSION_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_LANGUAGESTRING EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_LANGUAGESTRING
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #IMPLIED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #REQUIRED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_MARKER EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_MARKER
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_MARKER_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_MARKER_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_MEDIA EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_MEDIA
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_MEDIA_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_MEDIA_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    MEDIA_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_ORIGINALSOURCE EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_ORIGINALSOURCE
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_RIGHTSINFO EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_RIGHTSINFO
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT STATEDATA EMPTY>
-<!ATTLIST STATEDATA
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    STATE_ID CDATA #IMPLIED
->
-
-<!ELEMENT STATEDATA_AUD EMPTY>
-<!ATTLIST STATEDATA_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    STATE_ID CDATA #IMPLIED
->
-
-<!ELEMENT STATEDATA_DEFINEDTERMBASE EMPTY>
-<!ATTLIST STATEDATA_DEFINEDTERMBASE
-    STATEDATA_ID CDATA #REQUIRED
-    MODIFIERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT STATEDATA_DEFINEDTERMBASE_AUD EMPTY>
-<!ATTLIST STATEDATA_DEFINEDTERMBASE_AUD
-    REV CDATA #REQUIRED
-    STATEDATA_ID CDATA #REQUIRED
-    MODIFIERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT STATEDATA_LANGUAGESTRING EMPTY>
-<!ATTLIST STATEDATA_LANGUAGESTRING
-    STATEDATA_ID CDATA #REQUIRED
-    MODIFYINGTEXT_ID CDATA #IMPLIED
-    MODIFYINGTEXT_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT STATEDATA_LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST STATEDATA_LANGUAGESTRING_AUD
-    REV CDATA #REQUIRED
-    STATEDATA_ID CDATA #REQUIRED
-    MODIFYINGTEXT_ID CDATA #REQUIRED
-    MODIFYINGTEXT_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT STATISTICALMEASUREMENTVALUE EMPTY>
-<!ATTLIST STATISTICALMEASUREMENTVALUE
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    VALUE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT STATISTICALMEASUREMENTVALUE_AUD EMPTY>
-<!ATTLIST STATISTICALMEASUREMENTVALUE_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    VALUE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE EMPTY>
-<!ATTLIST STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE
-    STATISTICALMEASUREMENTVALUE_ID CDATA #REQUIRED
-    MODIFIERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD EMPTY>
-<!ATTLIST STATISTICALMEASUREMENTVALUE_DEFINEDTERMBASE_AUD
-    REV CDATA #REQUIRED
-    STATISTICALMEASUREMENTVALUE_ID CDATA #REQUIRED
-    MODIFIERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE EMPTY>
-<!ATTLIST TAXONBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    SECMICROREFERENCE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    PUBLISHED CDATA #IMPLIED
-    TAXONSTATUSUNKNOWN CDATA #IMPLIED
-    UNPLACED CDATA #IMPLIED
-    EXCLUDED CDATA #IMPLIED
-    PARTIAL CDATA #IMPLIED
-    PROPARTE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    TAXONNAME_FK CDATA #IMPLIED
-    SEC_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    ACCEPTEDTAXON_ID  CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE_ANNOTATION EMPTY>
-<!ATTLIST TAXONBASE_ANNOTATION
-    TAXONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONBASE_ANNOTATION_AUD EMPTY>
-<!ATTLIST TAXONBASE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    TAXONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE_AUD EMPTY>
-<!ATTLIST TAXONBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    SECMICROREFERENCE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    PUBLISHED CDATA #IMPLIED
-    TAXONSTATUSUNKNOWN CDATA #IMPLIED
-    UNPLACED CDATA #IMPLIED
-    EXCLUDED CDATA #IMPLIED
-    PARTIAL CDATA #IMPLIED
-    PROPARTE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    TAXONNAME_FK CDATA #IMPLIED
-    SEC_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
-    ACCEPTEDTAXON_ID  CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE_EXTENSION EMPTY>
-<!ATTLIST TAXONBASE_EXTENSION
-    TAXONBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONBASE_EXTENSION_AUD EMPTY>
-<!ATTLIST TAXONBASE_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    TAXONBASE_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE_MARKER EMPTY>
-<!ATTLIST TAXONBASE_MARKER
-    TAXONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONBASE_MARKER_AUD EMPTY>
-<!ATTLIST TAXONBASE_MARKER_AUD
-    REV CDATA #REQUIRED
-    TAXONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE_ORIGINALSOURCE EMPTY>
-<!ATTLIST TAXONBASE_ORIGINALSOURCE
-    TAXONBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONBASE_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST TAXONBASE_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    TAXONBASE_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONBASE_RIGHTSINFO EMPTY>
-<!ATTLIST TAXONBASE_RIGHTSINFO
-    TAXONBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONBASE_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST TAXONBASE_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    TAXONBASE_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONINTERACTION_LANGUAGESTRING EMPTY>
-<!ATTLIST TAXONINTERACTION_LANGUAGESTRING
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #IMPLIED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONINTERACTION_LANGUAGESTRING_AUD EMPTY>
-<!ATTLIST TAXONINTERACTION_LANGUAGESTRING_AUD
-    REV CDATA #REQUIRED
-    DESCRIPTIONELEMENTBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #REQUIRED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME EMPTY>
-<!ATTLIST TAXONNAME
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    APPENDEDPHRASE CDATA #IMPLIED
-    FULLTITLECACHE CDATA #IMPLIED
-    HASPROBLEM CDATA #IMPLIED
-    NOMENCLATURALMICROREFERENCE CDATA #IMPLIED
-    PROBLEMENDS CDATA #IMPLIED
-    PROBLEMSTARTS CDATA #IMPLIED
-    PROTECTEDFULLTITLECACHE CDATA #IMPLIED
-    AUTHORSHIPCACHE CDATA #IMPLIED
-    GENUSORUNINOMIAL CDATA #IMPLIED
-    INFRAGENERICEPITHET CDATA #IMPLIED
-    INFRASPECIFICEPITHET CDATA #IMPLIED
-    NAMECACHE CDATA #IMPLIED
-    PROTECTEDAUTHORSHIPCACHE CDATA #IMPLIED
-    PROTECTEDNAMECACHE CDATA #IMPLIED
-    SPECIFICEPITHET CDATA #IMPLIED
-    NAMEAPPROBATION CDATA #IMPLIED
-    SUBGENUSAUTHORSHIP CDATA #IMPLIED
-    ANAMORPHIC CDATA #IMPLIED
-    BINOMHYBRID CDATA #IMPLIED
-    HYBRIDFORMULA CDATA #IMPLIED
-    MONOMHYBRID CDATA #IMPLIED
-    TRINOMHYBRID CDATA #IMPLIED
-    CULTIVARNAME CDATA #IMPLIED
-    ACRONYM CDATA #IMPLIED
-    BREED CDATA #IMPLIED
-    ORIGINALPUBLICATIONYEAR CDATA #IMPLIED
-    PUBLICATIONYEAR CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    HOMOTYPICALGROUP_ID CDATA #IMPLIED
-    NOMENCLATURALREFERENCE_ID CDATA #IMPLIED
-    RANK_ID CDATA #IMPLIED
-    BASIONYMAUTHORSHIP_ID CDATA #IMPLIED
-    COMBINATIONAUTHORSHIP_ID CDATA #IMPLIED
-    EXBASIONYMAUTHORSHIP_ID CDATA #IMPLIED
-    EXCOMBINATIONAUTHORSHIP_ID CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_ANNOTATION EMPTY>
-<!ATTLIST TAXONNAME_ANNOTATION
-    TAXONNAME_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_ANNOTATION_AUD EMPTY>
-<!ATTLIST TAXONNAME_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_AUD EMPTY>
-<!ATTLIST TAXONNAME_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    LSID CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    APPENDEDPHRASE CDATA #IMPLIED
-    FULLTITLECACHE CDATA #IMPLIED
-    HASPROBLEM CDATA #IMPLIED
-    NOMENCLATURALMICROREFERENCE CDATA #IMPLIED
-    PROBLEMENDS CDATA #IMPLIED
-    PROBLEMSTARTS CDATA #IMPLIED
-    PROTECTEDFULLTITLECACHE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    HOMOTYPICALGROUP_ID CDATA #IMPLIED
-    NOMENCLATURALREFERENCE_ID CDATA #IMPLIED
-    RANK_ID CDATA #IMPLIED
-    ACRONYM CDATA #IMPLIED
-    AUTHORSHIPCACHE CDATA #IMPLIED
-    GENUSORUNINOMIAL CDATA #IMPLIED
-    INFRAGENERICEPITHET CDATA #IMPLIED
-    INFRASPECIFICEPITHET CDATA #IMPLIED
-    NAMECACHE CDATA #IMPLIED
-    PROTECTEDAUTHORSHIPCACHE CDATA #IMPLIED
-    PROTECTEDNAMECACHE CDATA #IMPLIED
-    SPECIFICEPITHET CDATA #IMPLIED
-    BASIONYMAUTHORSHIP_ID CDATA #IMPLIED
-    COMBINATIONAUTHORSHIP_ID CDATA #IMPLIED
-    EXBASIONYMAUTHORSHIP_ID CDATA #IMPLIED
-    EXCOMBINATIONAUTHORSHIP_ID CDATA #IMPLIED
-    NAMEAPPROBATION CDATA #IMPLIED
-    SUBGENUSAUTHORSHIP CDATA #IMPLIED
-    ANAMORPHIC CDATA #IMPLIED
-    BINOMHYBRID CDATA #IMPLIED
-    HYBRIDFORMULA CDATA #IMPLIED
-    MONOMHYBRID CDATA #IMPLIED
-    TRINOMHYBRID CDATA #IMPLIED
-    CULTIVARNAME CDATA #IMPLIED
-    BREED CDATA #IMPLIED
-    ORIGINALPUBLICATIONYEAR CDATA #IMPLIED
-    PUBLICATIONYEAR CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_EXTENSION EMPTY>
-<!ATTLIST TAXONNAME_EXTENSION
-    TAXONNAME_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_EXTENSION_AUD EMPTY>
-<!ATTLIST TAXONNAME_EXTENSION_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    EXTENSIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_HYBRIDRELATIONSHIP EMPTY>
-<!ATTLIST TAXONNAME_HYBRIDRELATIONSHIP
-    TAXONNAME_ID CDATA #REQUIRED
-    HYBRIDRELATIONSHIPS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_HYBRIDRELATIONSHIP_AUD EMPTY>
-<!ATTLIST TAXONNAME_HYBRIDRELATIONSHIP_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    HYBRIDRELATIONSHIPS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_MARKER EMPTY>
-<!ATTLIST TAXONNAME_MARKER
-    TAXONNAME_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_MARKER_AUD EMPTY>
-<!ATTLIST TAXONNAME_MARKER_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_NOMENCLATURALSTATUS EMPTY>
-<!ATTLIST TAXONNAME_NOMENCLATURALSTATUS
-    TAXONNAME_ID CDATA #REQUIRED
-    STATUS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_NOMENCLATURALSTATUS_AUD EMPTY>
-<!ATTLIST TAXONNAME_NOMENCLATURALSTATUS_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    STATUS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_ORIGINALSOURCE EMPTY>
-<!ATTLIST TAXONNAME_ORIGINALSOURCE
-    TAXONNAME_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_ORIGINALSOURCE_AUD EMPTY>
-<!ATTLIST TAXONNAME_ORIGINALSOURCE_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    SOURCES_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_RIGHTSINFO EMPTY>
-<!ATTLIST TAXONNAME_RIGHTSINFO
-    TAXONNAME_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_RIGHTSINFO_AUD EMPTY>
-<!ATTLIST TAXONNAME_RIGHTSINFO_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    RIGHTS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNAME_TYPEDESIGNATIONBASE EMPTY>
-<!ATTLIST TAXONNAME_TYPEDESIGNATIONBASE
-    TAXONNAME_ID CDATA #REQUIRED
-    TYPEDESIGNATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNAME_TYPEDESIGNATIONBASE_AUD EMPTY>
-<!ATTLIST TAXONNAME_TYPEDESIGNATIONBASE_AUD
-    REV CDATA #REQUIRED
-    TAXONNAME_ID CDATA #REQUIRED
-    TYPEDESIGNATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-<!ELEMENT TAXONNODE EMPTY>
-<!ATTLIST TAXONNODE
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    SORTINDEX CDATA #IMPLIED
-    TREEINDEX CDATA #IMPLIED
-    COUNTCHILDREN CDATA #IMPLIED
-    MICROREFERENCEFORPARENTCHILDRELATION CDATA #IMPLIED
-    EXCLUDED CDATA #IMPLIED
-    UNPLACED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CLASSIFICATION_ID CDATA #IMPLIED
-    PARENT_ID CDATA #IMPLIED
-    REFERENCEFORPARENTCHILDRELATION_ID CDATA #IMPLIED
-    SYNONYMTOBEUSED_ID CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
->
-<!ELEMENT TAXONNODE_AUD EMPTY>
-<!ATTLIST TAXONNODE_AUD
-    REV CDATA #REQUIRED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    SORTINDEX CDATA #IMPLIED
-    TREEINDEX CDATA #IMPLIED
-    COUNTCHILDREN CDATA #IMPLIED
-    MICROREFERENCEFORPARENTCHILDRELATION CDATA #IMPLIED
-    EXCLUDED CDATA #IMPLIED
-    UNPLACED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CLASSIFICATION_ID CDATA #IMPLIED
-    PARENT_ID CDATA #IMPLIED
-    REFERENCEFORPARENTCHILDRELATION_ID CDATA #IMPLIED
-    SYNONYMTOBEUSED_ID CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONNODE_ANNOTATION EMPTY>
-<!ATTLIST TAXONNODE_ANNOTATION
-    TAXONNODE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONNODE_ANNOTATION_AUD EMPTY>
-<!ATTLIST TAXONNODE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    TAXONNODE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-<!ELEMENT TAXONNNODE_EXCLUDEDNOTE EMPTY>
-<!ATTLIST TAXONNODE_EXCLUDEDNOTE
-    TAXONNODE_ID CDATA #REQUIRED
-    EXCLUDEDNOTE_ID CDATA #REQUIRED
-    EXCLUDEDNOTE_MAPKEY_ID CDATA #REQUIRED
->
-<!ELEMENT TAXONNODE_EXCLUDEDNOTE_AUD EMPTY>
-<!ATTLIST TAXONNODE_EXCLUDEDNOTE_AUD
-    REV CDATA #REQUIRED
-    TAXONNODE_ID CDATA #REQUIRED
-    EXCLUDEDNOTE_ID CDATA #REQUIRED
-    EXCLUDEDNOTE_MAPKEY_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-<!ELEMENT TAXONNNODE_MARKER EMPTY>
-<!ATTLIST TAXONNODE_MARKER
-    TAXONNODE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-<!ELEMENT TAXONNNODE_MARKER_AUD EMPTY>
-<!ATTLIST TAXONNODE_MARKER_AUD
-    REV CDATA #REQUIRED
-    TAXONNODE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-
-<!ELEMENT TAXONRELATIONSHIP EMPTY>
-<!ATTLIST TAXONRELATIONSHIP
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    RELATEDFROM_ID CDATA #IMPLIED
-    RELATEDTO_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT TAXONRELATIONSHIP_ANNOTATION EMPTY>
-<!ATTLIST TAXONRELATIONSHIP_ANNOTATION
-    TAXONRELATIONSHIP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONRELATIONSHIP_ANNOTATION_AUD EMPTY>
-<!ATTLIST TAXONRELATIONSHIP_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    TAXONRELATIONSHIP_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TAXONRELATIONSHIP_AUD EMPTY>
-<!ATTLIST TAXONRELATIONSHIP_AUD
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    DOUBTFUL CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    RELATEDFROM_ID CDATA #IMPLIED
-    RELATEDTO_ID CDATA #IMPLIED
-    TYPE_ID CDATA #IMPLIED
->
-
-<!ELEMENT TAXONRELATIONSHIP_MARKER EMPTY>
-<!ATTLIST TAXONRELATIONSHIP_MARKER
-    TAXONRELATIONSHIP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TAXONRELATIONSHIP_MARKER_AUD EMPTY>
-<!ATTLIST TAXONRELATIONSHIP_MARKER_AUD
-    REV CDATA #REQUIRED
-    TAXONRELATIONSHIP_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TERMVOCABULARY EMPTY>
-<!ATTLIST TERMVOCABULARY
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    TERMTYPE CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    TERMSOURCEURI CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT TERMVOCABULARY_AUD EMPTY>
-<!ATTLIST TERMVOCABULARY_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    TERMTYPE CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    URI CDATA #IMPLIED
-    TERMSOURCEURI CDATA #IMPLIED
-    TITLECACHE CDATA #IMPLIED
-    PROTECTEDTITLECACHE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT TERMVOCABULARY_REPRESENTATION EMPTY>
-<!ATTLIST TERMVOCABULARY_REPRESENTATION
-    TERMVOCABULARY_ID CDATA #REQUIRED
-    REPRESENTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TERMVOCABULARY_REPRESENTATION_AUD EMPTY>
-<!ATTLIST TERMVOCABULARY_REPRESENTATION_AUD
-    REV CDATA #REQUIRED
-    TERMVOCABULARY_ID CDATA #REQUIRED
-    REPRESENTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TYPEDESIGNATIONBASE EMPTY>
-<!ATTLIST TYPEDESIGNATIONBASE
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    NOTDESIGNATED CDATA #IMPLIED
-    CONSERVEDTYPE CDATA #IMPLIED
-    LECTOTYPE CDATA #IMPLIED
-    REJECTEDTYPE CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    TYPENAME_ID CDATA #IMPLIED
-    TYPESPECIMEN_ID CDATA #IMPLIED
-    TYPESTATUS_ID CDATA #IMPLIED
->
-
-<!ELEMENT TYPEDESIGNATIONBASE_ANNOTATION EMPTY>
-<!ATTLIST TYPEDESIGNATIONBASE_ANNOTATION
-    TYPEDESIGNATIONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TYPEDESIGNATIONBASE_ANNOTATION_AUD EMPTY>
-<!ATTLIST TYPEDESIGNATIONBASE_ANNOTATION_AUD
-    REV CDATA #REQUIRED
-    TYPEDESIGNATIONBASE_ID CDATA #REQUIRED
-    ANNOTATIONS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT TYPEDESIGNATIONBASE_AUD EMPTY>
-<!ATTLIST TYPEDESIGNATIONBASE_AUD
-    DTYPE CDATA #IMPLIED
-    ID CDATA #REQUIRED
-    REV CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    UPDATED CDATA #IMPLIED
-    CITATIONMICROREFERENCE CDATA #IMPLIED
-    ORIGINALNAMESTRING CDATA #IMPLIED
-    NOTDESIGNATED CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
-    UPDATEDBY_ID CDATA #IMPLIED
-    CITATION_ID CDATA #IMPLIED
-    CONSERVEDTYPE CDATA #IMPLIED
-    LECTOTYPE CDATA #IMPLIED
-    REJECTEDTYPE CDATA #IMPLIED
-    TYPENAME_ID CDATA #IMPLIED
-    TYPESPECIMEN_ID CDATA #IMPLIED
-    TYPESTATUS_ID CDATA #IMPLIED
->
-
-<!ELEMENT TYPEDESIGNATIONBASE_MARKER EMPTY>
-<!ATTLIST TYPEDESIGNATIONBASE_MARKER
-    TYPEDESIGNATIONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
->
-
-<!ELEMENT TYPEDESIGNATIONBASE_MARKER_AUD EMPTY>
-<!ATTLIST TYPEDESIGNATIONBASE_MARKER_AUD
-    REV CDATA #REQUIRED
-    TYPEDESIGNATIONBASE_ID CDATA #REQUIRED
-    MARKERS_ID CDATA #REQUIRED
-    REVTYPE CDATA #IMPLIED
->
-
-<!ELEMENT USER EMPTY>
-<!ATTLIST USER
-    ID CDATA #REQUIRED
-    CREATED CDATA #IMPLIED
-    UUID CDATA #IMPLIED
-    ACCOUNTNONEXPIRED CDATA #IMPLIED
-    ACCOUNTNONLOCKED CDATA #IMPLIED
-    CREDENTIALSNONEXPIRED CDATA #IMPLIED
-    EMAILADDRESS CDATA #IMPLIED
-    ENABLED CDATA #IMPLIED
-    PASSWORD CDATA #IMPLIED
-    USERNAME CDATA #IMPLIED
-    CREATEDBY_ID CDATA #IMPLIED
->
-
-<!ELEMENT USER_GRANTEDAUTHORITYIMPL EMPTY>
-<!ATTLIST USER_GRANTEDAUTHORITYIMPL
-    USER_ID CDATA #REQUIRED
-    GRANTEDAUTHORITIES_ID CDATA #REQUIRED
->
-
-<!ELEMENT USER_PERMISSIONGROUP EMPTY>
-<!ATTLIST USER_PERMISSIONGROUP
-    MEMBERS_ID CDATA #REQUIRED
-    GROUPS_ID CDATA #REQUIRED
->
-
index d04190644a81976033f739cc9d8e0d1726939748..ae3e079461933ace5ee5bb2afe53ee6cbb8898aa 100644 (file)
@@ -2,7 +2,7 @@
 <dataset>
   <TAXONNAME ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="47d9263e-b32a-42af-98ea-5528f154384f" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
   <REFERENCE ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="45804c65-7df9-42fd-b43a-818a8958c264" UPDATED="2017-11-23 15:32:58.33" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="05555fcb-72bf-49d0-9677-4de87f13e9ed" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
+  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="05555fcb-72bf-49d0-9677-4de87f13e9ed" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" GIVENNAME="[null]" INITIALS="[null]" FAMILYNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
   <HOMOTYPICALGROUP ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="042ac145-cf9f-47c2-b4a1-8a4350e234eb" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
   <REGISTRATION ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="c8bb4e70-ca85-43c3-ae81-c90a2b41a93f" UPDATED="[null]" IDENTIFIER="[null]" REGISTRATIONDATE="[null]" SPECIFICIDENTIFIER="[null]" STATUS="PREP" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" INSTITUTION_ID="[null]" NAME_ID="5000" SUBMITTER_ID="[null]"/>
   <DERIVATIONEVENT ID="5000" CREATED="2017-11-24 16:26:03.0" UUID="42610c79-b50f-4d86-94e6-9f775266f6e5" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" INSTITUTION_ID="[null]" TYPE_ID="1998"/>
@@ -20,7 +20,7 @@
   <TAXONNAME_TYPEDESIGNATIONBASE TAXONNAME_ID="5000" TYPEDESIGNATIONS_ID="5001"/>
   <SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ORIGINALS_ID="5001" DERIVATIONEVENTS_ID="5000"/>
   <SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ORIGINALS_ID="5001" DERIVATIONEVENTS_ID="5001"/>
-  <MEDIA DTYPE="Media" ID="5000" CREATED="2017-11-24 16:26:04.0" UUID="10130fe6-a176-4a6b-8606-6546976400d4" UPDATED="2017-11-24 16:26:04.307" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="image1" MEDIACREATED="[null]" CITATIONMICROREFERENCE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ARTIST_ID="[null]" CITATION_ID="[null]"/>
+  <MEDIA DTYPE="Media" ID="5000" CREATED="2017-11-24 16:26:04.0" UUID="10130fe6-a176-4a6b-8606-6546976400d4" UPDATED="2017-11-24 16:26:04.307" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="image1" MEDIACREATED_START="[null]" MEDIACREATED_END="[null]" MEDIACREATED_FREETEXT="[null]" CITATIONMICROREFERENCE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ARTIST_ID="[null]" CITATION_ID="[null]"/>
   <MEDIAREPRESENTATION ID="5000" CREATED="2017-11-24 16:26:04.0" UUID="7cb1eb82-3792-4206-886a-f9848d18a2c7" UPDATED="[null]" MIMETYPE="[null]" SUFFIX="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" MEDIA_ID="5000"/>
   <MEDIAREPRESENTATIONPART DTYPE="MediaRepresentationPart" ID="5000" CREATED="2017-11-24 16:26:04.0" UUID="5b7ba042-7e17-4918-abdd-990ee1f56fc0" UPDATED="[null]" SIZE="[null]" URI="http://foo.bar.com/image1" DURATION="[null]" HEIGHT="[null]" WIDTH="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" REPRESENTATION_ID="5000" SORTINDEX="0"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="AgentBase" NEXT_VAL="5001"/>
index 1dad0f6f622bf301bfc8945da39b4e2fe4c04f59..e7234e81bf1de71c44fc2c87383f55559d09e26f 100644 (file)
@@ -2,7 +2,7 @@
 <dataset>
   <TAXONNAME ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="47d9263e-b32a-42af-98ea-5528f154384f" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
   <REFERENCE ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="45804c65-7df9-42fd-b43a-818a8958c264" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="05555fcb-72bf-49d0-9677-4de87f13e9ed" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
+  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="05555fcb-72bf-49d0-9677-4de87f13e9ed" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" GIVENNAME="[null]" INITIALS="[null]" FAMILYNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
   <HOMOTYPICALGROUP ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="042ac145-cf9f-47c2-b4a1-8a4350e234eb" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
   <REGISTRATION ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="c8bb4e70-ca85-43c3-ae81-c90a2b41a93f" IDENTIFIER="[null]" REGISTRATIONDATE="[null]" SPECIFICIDENTIFIER="[null]" STATUS="PREP" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" INSTITUTION_ID="[null]" NAME_ID="5000" SUBMITTER_ID="[null]"/>
   <DERIVATIONEVENT ID="5001" CREATED="2017-11-24 16:26:04.0" UUID="50537c4e-e8cf-45e7-9e9d-e73197d17be8" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" INSTITUTION_ID="[null]" TYPE_ID="1998"/>
index f6b1107ef3ec0e499b03e9d42c4eddfff19a8745..c10df1aa49100bc7f4bcf9dbedd5cbe5c93e8e1b 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <dataset>
-  <TAXONNAME ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="bd294483-8383-4a5c-bf76-ffa3e104dc9e" UPDATED="2017-11-24 22:17:27.447" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
-  <REFERENCE ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="ed1c8722-015b-4a94-82a6-0b42e03d0e92" UPDATED="2017-11-24 22:17:27.448" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="5e7b791e-d17f-4378-9a47-923ebebc9b6a" UPDATED="2017-11-24 22:17:27.449" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
+  <TAXONNAME ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="47d9263e-b32a-42af-98ea-5528f154384f" UPDATED="2017-11-24 22:17:27.447" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
+  <REFERENCE ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="45804c65-7df9-42fd-b43a-818a8958c264" UPDATED="2017-11-24 22:17:27.448" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="5e7b791e-d17f-4378-9a47-923ebebc9b6a" UPDATED="2017-11-24 22:17:27.449" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" GIVENNAME="[null]" INITIALS="[null]" FAMILYNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
   <HOMOTYPICALGROUP ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="76cb5ec1-ac61-4c40-a0e2-1bb738f04575" UPDATED="2017-11-24 22:17:27.448" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
-  <REGISTRATION ID="5000" CREATED="2017-11-24 22:17:27.0" UUID="247090ee-31b4-4738-970c-69813e785a86" UPDATED="[null]" IDENTIFIER="[null]" REGISTRATIONDATE="[null]" SPECIFICIDENTIFIER="[null]" STATUS="PREP" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" INSTITUTION_ID="[null]" NAME_ID="5000" SUBMITTER_ID="[null]"/>
+  <REGISTRATION ID="5000" CREATED="2017-11-24 22:17:27.0" UUID="c8bb4e70-ca85-43c3-ae81-c90a2b41a93f" UPDATED="[null]" IDENTIFIER="[null]" REGISTRATIONDATE="[null]" SPECIFICIDENTIFIER="[null]" STATUS="PREP" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" INSTITUTION_ID="[null]" NAME_ID="5000" SUBMITTER_ID="[null]"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="AgentBase" NEXT_VAL="5001"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="AuditEvent" NEXT_VAL="5005"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="CdmMetaData" NEXT_VAL="5005"/>
index f9fd4ec663cf34706ab4562f2a9cd704a3d91d5c..bdb5259d3878cef30c5c4e05ffcd3857c1be9d6e 100644 (file)
@@ -6,7 +6,7 @@
        <xsd:element name="GATHERINGEVENT_ANNOTATION" type="GATHERINGEVENT_ANNOTATION__type" />
        <xsd:element name="MEDIA_LANGUAGESTRING_AUD" type="MEDIA_LANGUAGESTRING_AUD__type" />
        <xsd:element name="SPECIMENOROBSERVATIONBASE_RIGHTSINFO" type="SPECIMENOROBSERVATIONBASE_RIGHTSINFO__type" />
-       <xsd:element name="WORKINGSET_ANNOTATION" type="WORKINGSET_ANNOTATION__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_ANNOTATION" type="DESCRIPTIVEDATASET_ANNOTATION__type" />
        <xsd:element name="TERMVOCABULARY_EXTENSION_AUD" type="TERMVOCABULARY_EXTENSION_AUD__type" />
        <xsd:element name="DESCRIPTIONBASE_CREDIT_AUD" type="DESCRIPTIONBASE_CREDIT_AUD__type" />
        <xsd:element name="AGENTBASE_ORIGINALSOURCEBASE_AUD" type="AGENTBASE_ORIGINALSOURCEBASE_AUD__type" />
@@ -84,7 +84,7 @@
        <xsd:element name="RIGHTSINFO_MARKER" type="RIGHTSINFO_MARKER__type" />
        <xsd:element name="CLASSIFICATION_MARKER_AUD" type="CLASSIFICATION_MARKER_AUD__type" />
        <xsd:element name="FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD" type="FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD__type" />
-       <xsd:element name="WORKINGSET_DESCRIPTIONBASE_AUD" type="WORKINGSET_DESCRIPTIONBASE_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_DESCRIPTIONBASE_AUD" type="DESCRIPTIVEDATASET_DESCRIPTIONBASE_AUD__type" />
        <xsd:element name="DEFINEDTERMBASE_STATISTICALMEASURE" type="DEFINEDTERMBASE_STATISTICALMEASURE__type" />
        <xsd:element name="REFERENCE_RIGHTSINFO" type="REFERENCE_RIGHTSINFO__type" />
        <xsd:element name="TERMVOCABULARY_ORIGINALSOURCEBASE_AUD" type="TERMVOCABULARY_ORIGINALSOURCEBASE_AUD__type" />
        <xsd:element name="TERMVOCABULARY" type="TERMVOCABULARY__type" />
        <xsd:element name="TAXONINTERACTION_LANGUAGESTRING_AUD" type="TAXONINTERACTION_LANGUAGESTRING_AUD__type" />
        <xsd:element name="TAXONNAME" type="TAXONNAME__type" />
-       <xsd:element name="WORKINGSET_MARKER" type="WORKINGSET_MARKER__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_MARKER" type="DESCRIPTIVEDATASET_MARKER__type" />
        <xsd:element name="SPECIMENOROBSERVATIONBASE_ANNOTATION" type="SPECIMENOROBSERVATIONBASE_ANNOTATION__type" />
        <xsd:element name="SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD" type="SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD__type" />
        <xsd:element name="HIBERNATE_SEQUENCES" type="HIBERNATE_SEQUENCES__type" />
        <xsd:element name="DESCRIPTIONBASE_EXTENSION_AUD" type="DESCRIPTIONBASE_EXTENSION_AUD__type" />
        <xsd:element name="AGENTBASE_IDENTIFIER_AUD" type="AGENTBASE_IDENTIFIER_AUD__type" />
        <xsd:element name="TAXONNODEAGENTRELATION_ANNOTATION_AUD" type="TAXONNODEAGENTRELATION_ANNOTATION_AUD__type" />
-       <xsd:element name="WORKINGSET_MARKER_AUD" type="WORKINGSET_MARKER_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_MARKER_AUD" type="DESCRIPTIVEDATASET_MARKER_AUD__type" />
        <xsd:element name="HOMOTYPICALGROUP_AUD" type="HOMOTYPICALGROUP_AUD__type" />
        <xsd:element name="SEQUENCE_MARKER_AUD" type="SEQUENCE_MARKER_AUD__type" />
        <xsd:element name="USERACCOUNT_AUD" type="USERACCOUNT_AUD__type" />
        <xsd:element name="TAXONNAME_RIGHTSINFO" type="TAXONNAME_RIGHTSINFO__type" />
-       <xsd:element name="WORKINGSET_REPRESENTATION" type="WORKINGSET_REPRESENTATION__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_REPRESENTATION" type="DESCRIPTIVEDATASET_REPRESENTATION__type" />
        <xsd:element name="ADDRESS" type="ADDRESS__type" />
        <xsd:element name="ANNOTATION_AUD" type="ANNOTATION_AUD__type" />
        <xsd:element name="TAXONRELATIONSHIP_ANNOTATION_AUD" type="TAXONRELATIONSHIP_ANNOTATION_AUD__type" />
        <xsd:element name="SINGLEREAD_MARKER_AUD" type="SINGLEREAD_MARKER_AUD__type" />
        <xsd:element name="MEDIA_REPRESENTATION_AUD" type="MEDIA_REPRESENTATION_AUD__type" />
        <xsd:element name="AUDITEVENT" type="AUDITEVENT__type" />
-       <xsd:element name="WORKINGSET_AUD" type="WORKINGSET_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_AUD" type="DESCRIPTIVEDATASET_AUD__type" />
        <xsd:element name="AMPLIFICATIONRESULT_ANNOTATION" type="AMPLIFICATIONRESULT_ANNOTATION__type" />
        <xsd:element name="CLASSIFICATION_CREDIT_AUD" type="CLASSIFICATION_CREDIT_AUD__type" />
        <xsd:element name="KEYSTATEMENT_AUD" type="KEYSTATEMENT_AUD__type" />
        <xsd:element name="DESCRIPTIONBASE_SCOPE" type="DESCRIPTIONBASE_SCOPE__type" />
        <xsd:element name="DNAQUALITY" type="DNAQUALITY__type" />
        <xsd:element name="MEDIAKEY_TAXONSCOPE" type="MEDIAKEY_TAXONSCOPE__type" />
-       <xsd:element name="WORKINGSET_NAMEDAREA_AUD" type="WORKINGSET_NAMEDAREA_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_NAMEDAREA_AUD" type="DESCRIPTIVEDATASET_NAMEDAREA_AUD__type" />
        <xsd:element name="DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE" type="DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE__type" />
        <xsd:element name="STATEDATA_DEFINEDTERMBASE" type="STATEDATA_DEFINEDTERMBASE__type" />
        <xsd:element name="TAXONNAME_AUD" type="TAXONNAME_AUD__type" />
        <xsd:element name="DEFINEDTERMBASE_RIGHTSINFO_AUD" type="DEFINEDTERMBASE_RIGHTSINFO_AUD__type" />
        <xsd:element name="TYPEDESIGNATIONBASE_AUD" type="TYPEDESIGNATIONBASE_AUD__type" />
        <xsd:element name="DERIVATIONEVENT_MARKER" type="DERIVATIONEVENT_MARKER__type" />
-       <xsd:element name="WORKINGSET_REPRESENTATION_AUD" type="WORKINGSET_REPRESENTATION_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_REPRESENTATION_AUD" type="DESCRIPTIVEDATASET_REPRESENTATION_AUD__type" />
        <xsd:element name="REFERENCE_AUD" type="REFERENCE_AUD__type" />
        <xsd:element name="DEFINEDTERMBASE_CREDIT_AUD" type="DEFINEDTERMBASE_CREDIT_AUD__type" />
        <xsd:element name="REFERENCE_MEDIA_AUD" type="REFERENCE_MEDIA_AUD__type" />
        <xsd:element name="TAXONBASE_RIGHTSINFO_AUD" type="TAXONBASE_RIGHTSINFO_AUD__type" />
        <xsd:element name="TAXONNAME_NOMENCLATURALSTATUS" type="TAXONNAME_NOMENCLATURALSTATUS__type" />
        <xsd:element name="FEATURETREE_RIGHTSINFO_AUD" type="FEATURETREE_RIGHTSINFO_AUD__type" />
-       <xsd:element name="WORKINGSET_NAMEDAREA" type="WORKINGSET_NAMEDAREA__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_NAMEDAREA" type="DESCRIPTIVEDATASET_NAMEDAREA__type" />
        <xsd:element name="DETERMINATIONEVENT_ANNOTATION_AUD" type="DETERMINATIONEVENT_ANNOTATION_AUD__type" />
        <xsd:element name="FEATURETREE_CREDIT" type="FEATURETREE_CREDIT__type" />
        <xsd:element name="DERIVATIONEVENT_ANNOTATION" type="DERIVATIONEVENT_ANNOTATION__type" />
        <xsd:element name="DEFINEDTERMBASE_AUD" type="DEFINEDTERMBASE_AUD__type" />
        <xsd:element name="LANGUAGESTRING_MARKER_AUD" type="LANGUAGESTRING_MARKER_AUD__type" />
        <xsd:element name="DEFINEDTERMBASE_IDENTIFIER_AUD" type="DEFINEDTERMBASE_IDENTIFIER_AUD__type" />
-       <xsd:element name="WORKINGSET_DESCRIPTIONBASE" type="WORKINGSET_DESCRIPTIONBASE__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_DESCRIPTIONBASE" type="DESCRIPTIVEDATASET_DESCRIPTIONBASE__type" />
        <xsd:element name="POLYTOMOUSKEYNODE" type="POLYTOMOUSKEYNODE__type" />
        <xsd:element name="REPRESENTATION" type="REPRESENTATION__type" />
        <xsd:element name="TAXONRELATIONSHIP_MARKER" type="TAXONRELATIONSHIP_MARKER__type" />
-       <xsd:element name="WORKINGSET_TAXONNODE" type="WORKINGSET_TAXONNODE__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_TAXONNODE" type="DESCRIPTIVEDATASET_TAXONNODE__type" />
        <xsd:element name="ORIGINALSOURCEBASE_ANNOTATION" type="ORIGINALSOURCEBASE_ANNOTATION__type" />
        <xsd:element name="CREDIT_ANNOTATION" type="CREDIT_ANNOTATION__type" />
        <xsd:element name="DESCRIPTIONBASE_RIGHTSINFO" type="DESCRIPTIONBASE_RIGHTSINFO__type" />
        <xsd:element name="PRIMER_ANNOTATION_AUD" type="PRIMER_ANNOTATION_AUD__type" />
        <xsd:element name="AMPLIFICATIONRESULT_MARKER_AUD" type="AMPLIFICATIONRESULT_MARKER_AUD__type" />
        <xsd:element name="AMPLIFICATION_ANNOTATION_AUD" type="AMPLIFICATION_ANNOTATION_AUD__type" />
-       <xsd:element name="WORKINGSET" type="WORKINGSET__type" />
+       <xsd:element name="DESCRIPTIVEDATASET" type="DESCRIPTIVEDATASET__type" />
        <xsd:element name="ORIGINALSOURCEBASE_MARKER_AUD" type="ORIGINALSOURCEBASE_MARKER_AUD__type" />
        <xsd:element name="INTEXTREFERENCE" type="INTEXTREFERENCE__type" />
        <xsd:element name="COLLECTION_MEDIA_AUD" type="COLLECTION_MEDIA_AUD__type" />
        <xsd:element name="REPRESENTATION_MARKER" type="REPRESENTATION_MARKER__type" />
        <xsd:element name="DESCRIPTIONBASE_IDENTIFIER" type="DESCRIPTIONBASE_IDENTIFIER__type" />
        <xsd:element name="CDM_VIEW_CDM_VIEW" type="CDM_VIEW_CDM_VIEW__type" />
-       <xsd:element name="WORKINGSET_ANNOTATION_AUD" type="WORKINGSET_ANNOTATION_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_ANNOTATION_AUD" type="DESCRIPTIVEDATASET_ANNOTATION_AUD__type" />
        <xsd:element name="DESCRIPTIONELEMENTBASE_ANNOTATION_AUD" type="DESCRIPTIONELEMENTBASE_ANNOTATION_AUD__type" />
        <xsd:element name="IDENTIFIER_ANNOTATION" type="IDENTIFIER_ANNOTATION__type" />
        <xsd:element name="TAXONBASE_CREDIT_AUD" type="TAXONBASE_CREDIT_AUD__type" />
        <xsd:element name="AMPLIFICATION" type="AMPLIFICATION__type" />
        <xsd:element name="MEDIA_MARKER_AUD" type="MEDIA_MARKER_AUD__type" />
        <xsd:element name="NAMERELATIONSHIP_MARKER_AUD" type="NAMERELATIONSHIP_MARKER_AUD__type" />
-       <xsd:element name="WORKINGSET_TAXONNODE_AUD" type="WORKINGSET_TAXONNODE_AUD__type" />
+       <xsd:element name="DESCRIPTIVEDATASET_TAXONNODE_AUD" type="DESCRIPTIVEDATASET_TAXONNODE_AUD__type" />
        <xsd:element name="COLLECTION_CREDIT" type="COLLECTION_CREDIT__type" />
        <xsd:element name="DESCRIPTIONBASE_REFERENCE" type="DESCRIPTIONBASE_REFERENCE__type" />
        <xsd:element name="SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT" type="SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT__type" />
                <xsd:attribute name="SPECIMENOROBSERVATIONBASE_ID" use="optional" />
                <xsd:attribute name="RIGHTS_ID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_ANNOTATION__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_ANNOTATION__type">
                <xsd:attribute name="ANNOTATIONS_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="TERMVOCABULARY_EXTENSION_AUD__type">
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="FEATURENODE_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_DESCRIPTIONBASE_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_DESCRIPTIONBASE_AUD__type">
                <xsd:attribute name="REV" use="optional" />
-               <xsd:attribute name="WORKINGSETS_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASETS_ID" use="optional" />
                <xsd:attribute name="DESCRIPTIONS_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
                <xsd:attribute name="NOMENCLATURALREFERENCE_ID" use="optional" />
                <xsd:attribute name="LSID_LSID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_MARKER__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_MARKER__type">
                <xsd:attribute name="MARKERS_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="SPECIMENOROBSERVATIONBASE_ANNOTATION__type">
                <xsd:attribute name="ANNOTATIONS_ID" use="optional" />
                <xsd:attribute name="TAXONNODEAGENTRELATION_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_MARKER_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_MARKER_AUD__type">
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="MARKERS_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="HOMOTYPICALGROUP_AUD__type">
                <xsd:attribute name="TAXONNAME_ID" use="optional" />
                <xsd:attribute name="RIGHTS_ID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_REPRESENTATION__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_REPRESENTATION__type">
                <xsd:attribute name="REPRESENTATIONS_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="ADDRESS__type">
                <xsd:attribute name="POBOX" use="optional" />
                <xsd:attribute name="TIMESTAMP" use="optional" />
                <xsd:attribute name="UUID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_AUD__type">
                <xsd:attribute name="DESCRIPTIVESYSTEM_ID" use="optional" />
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="CREATED" use="optional" />
                <xsd:attribute name="LSID_AUTHORITY" use="optional" />
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="UPDATED" use="optional" />
-               <xsd:attribute name="FIRSTNAME" use="optional" />
+               <xsd:attribute name="GIVENNAME" use="optional" />
                <xsd:attribute name="CREATEDBY_ID" use="optional" />
                <xsd:attribute name="TITLECACHE" use="optional" />
                <xsd:attribute name="PROTECTEDTITLECACHE" use="optional" />
                <xsd:attribute name="CREATED" use="optional" />
                <xsd:attribute name="LIFESPAN_END" use="optional" />
                <xsd:attribute name="UPDATEDBY_ID" use="optional" />
-               <xsd:attribute name="LASTNAME" use="optional" />
+               <xsd:attribute name="FAMILYNAME" use="optional" />
                <xsd:attribute name="PROTECTEDNOMENCLATURALTITLECACHE" use="optional" />
                <xsd:attribute name="LIFESPAN_FREETEXT" use="optional" />
                <xsd:attribute name="DTYPE" use="optional" />
                <xsd:attribute name="MEDIAKEY_ID" use="optional" />
                <xsd:attribute name="TAXONOMICSCOPE_ID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_NAMEDAREA_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_NAMEDAREA_AUD__type">
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="GEOFILTER_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE__type">
                <xsd:attribute name="MARKERS_ID" use="optional" />
                <xsd:attribute name="DERIVATIONEVENT_ID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_REPRESENTATION_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_REPRESENTATION_AUD__type">
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="REPRESENTATIONS_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="REFERENCE_AUD__type">
                <xsd:attribute name="RIGHTS_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_NAMEDAREA__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_NAMEDAREA__type">
                <xsd:attribute name="GEOFILTER_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="DETERMINATIONEVENT_ANNOTATION_AUD__type">
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="IDENTIFIERS_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_DESCRIPTIONBASE__type">
-               <xsd:attribute name="WORKINGSETS_ID" use="optional" />
+       <xsd:complexType name="DESCRIPTIVEDATASET_DESCRIPTIONBASE__type">
+               <xsd:attribute name="DESCRIPTIVEDATASETS_ID" use="optional" />
                <xsd:attribute name="DESCRIPTIONS_ID" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="POLYTOMOUSKEYNODE__type">
                <xsd:attribute name="MARKERS_ID" use="optional" />
                <xsd:attribute name="TAXONRELATIONSHIP_ID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_TAXONNODE__type">
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+       <xsd:complexType name="DESCRIPTIVEDATASET_TAXONNODE__type">
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
                <xsd:attribute name="TAXONSUBTREEFILTER_ID" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="ORIGINALSOURCEBASE_ANNOTATION__type">
                <xsd:attribute name="ANNOTATIONS_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET__type">
                <xsd:attribute name="DESCRIPTIVESYSTEM_ID" use="optional" />
                <xsd:attribute name="CREATED" use="optional" />
                <xsd:attribute name="MINRANK_ID" use="optional" />
                <xsd:attribute name="CDM_VIEW_ID" use="optional" />
                <xsd:attribute name="SUPERVIEWS_ID" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_ANNOTATION_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_ANNOTATION_AUD__type">
                <xsd:attribute name="REV" use="optional" />
                <xsd:attribute name="ANNOTATIONS_ID" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
        <xsd:complexType name="DESCRIPTIONELEMENTBASE_ANNOTATION_AUD__type">
                <xsd:attribute name="INITIALS" use="optional" />
                <xsd:attribute name="LSID_AUTHORITY" use="optional" />
                <xsd:attribute name="UPDATED" use="optional" />
-               <xsd:attribute name="FIRSTNAME" use="optional" />
+               <xsd:attribute name="GIVENNAME" use="optional" />
                <xsd:attribute name="CREATEDBY_ID" use="optional" />
                <xsd:attribute name="TITLECACHE" use="optional" />
                <xsd:attribute name="PROTECTEDTITLECACHE" use="optional" />
                <xsd:attribute name="CREATED" use="optional" />
                <xsd:attribute name="LIFESPAN_END" use="optional" />
                <xsd:attribute name="UPDATEDBY_ID" use="optional" />
-               <xsd:attribute name="LASTNAME" use="optional" />
+               <xsd:attribute name="FAMILYNAME" use="optional" />
                <xsd:attribute name="PROTECTEDNOMENCLATURALTITLECACHE" use="optional" />
                <xsd:attribute name="LIFESPAN_FREETEXT" use="optional" />
                <xsd:attribute name="DTYPE" use="optional" />
                <xsd:attribute name="NAMERELATIONSHIP_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
-       <xsd:complexType name="WORKINGSET_TAXONNODE_AUD__type">
+       <xsd:complexType name="DESCRIPTIVEDATASET_TAXONNODE_AUD__type">
                <xsd:attribute name="REV" use="optional" />
-               <xsd:attribute name="WORKINGSET_ID" use="optional" />
+               <xsd:attribute name="DESCRIPTIVEDATASET_ID" use="optional" />
                <xsd:attribute name="TAXONSUBTREEFILTER_ID" use="optional" />
                <xsd:attribute name="REVTYPE" use="optional" />
        </xsd:complexType>
index 2c25912fa88272d7b10470e1d80b0e2bc8c802df..5cc4b9957931a10aeddb6ea15a62465dc8f4318c 100644 (file)
@@ -10,7 +10,7 @@
                                <xsd:element name="GATHERINGEVENT_ANNOTATION" type="dflt:GATHERINGEVENT_ANNOTATION__type" />
                                <xsd:element name="MEDIA_LANGUAGESTRING_AUD" type="dflt:MEDIA_LANGUAGESTRING_AUD__type" />
                                <xsd:element name="SPECIMENOROBSERVATIONBASE_RIGHTSINFO" type="dflt:SPECIMENOROBSERVATIONBASE_RIGHTSINFO__type" />
-                               <xsd:element name="WORKINGSET_ANNOTATION" type="dflt:WORKINGSET_ANNOTATION__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_ANNOTATION" type="dflt:DESCRIPTIVEDATASET_ANNOTATION__type" />
                                <xsd:element name="TERMVOCABULARY_EXTENSION_AUD" type="dflt:TERMVOCABULARY_EXTENSION_AUD__type" />
                                <xsd:element name="DESCRIPTIONBASE_CREDIT_AUD" type="dflt:DESCRIPTIONBASE_CREDIT_AUD__type" />
                                <xsd:element name="AGENTBASE_ORIGINALSOURCEBASE_AUD" type="dflt:AGENTBASE_ORIGINALSOURCEBASE_AUD__type" />
@@ -88,7 +88,7 @@
                                <xsd:element name="RIGHTSINFO_MARKER" type="dflt:RIGHTSINFO_MARKER__type" />
                                <xsd:element name="CLASSIFICATION_MARKER_AUD" type="dflt:CLASSIFICATION_MARKER_AUD__type" />
                                <xsd:element name="FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD" type="dflt:FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD__type" />
-                               <xsd:element name="WORKINGSET_DESCRIPTIONBASE_AUD" type="dflt:WORKINGSET_DESCRIPTIONBASE_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_DESCRIPTIONBASE_AUD" type="dflt:DESCRIPTIVEDATASET_DESCRIPTIONBASE_AUD__type" />
                                <xsd:element name="DEFINEDTERMBASE_STATISTICALMEASURE" type="dflt:DEFINEDTERMBASE_STATISTICALMEASURE__type" />
                                <xsd:element name="REFERENCE_RIGHTSINFO" type="dflt:REFERENCE_RIGHTSINFO__type" />
                                <xsd:element name="TERMVOCABULARY_ORIGINALSOURCEBASE_AUD" type="dflt:TERMVOCABULARY_ORIGINALSOURCEBASE_AUD__type" />
                                <xsd:element name="TERMVOCABULARY" type="dflt:TERMVOCABULARY__type" />
                                <xsd:element name="TAXONINTERACTION_LANGUAGESTRING_AUD" type="dflt:TAXONINTERACTION_LANGUAGESTRING_AUD__type" />
                                <xsd:element name="TAXONNAME" type="dflt:TAXONNAME__type" />
-                               <xsd:element name="WORKINGSET_MARKER" type="dflt:WORKINGSET_MARKER__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_MARKER" type="dflt:DESCRIPTIVEDATASET_MARKER__type" />
                                <xsd:element name="SPECIMENOROBSERVATIONBASE_ANNOTATION" type="dflt:SPECIMENOROBSERVATIONBASE_ANNOTATION__type" />
                                <xsd:element name="SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD" type="dflt:SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD__type" />
                                <xsd:element name="HIBERNATE_SEQUENCES" type="dflt:HIBERNATE_SEQUENCES__type" />
                                <xsd:element name="DESCRIPTIONBASE_EXTENSION_AUD" type="dflt:DESCRIPTIONBASE_EXTENSION_AUD__type" />
                                <xsd:element name="AGENTBASE_IDENTIFIER_AUD" type="dflt:AGENTBASE_IDENTIFIER_AUD__type" />
                                <xsd:element name="TAXONNODEAGENTRELATION_ANNOTATION_AUD" type="dflt:TAXONNODEAGENTRELATION_ANNOTATION_AUD__type" />
-                               <xsd:element name="WORKINGSET_MARKER_AUD" type="dflt:WORKINGSET_MARKER_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_MARKER_AUD" type="dflt:DESCRIPTIVEDATASET_MARKER_AUD__type" />
                                <xsd:element name="HOMOTYPICALGROUP_AUD" type="dflt:HOMOTYPICALGROUP_AUD__type" />
                                <xsd:element name="SEQUENCE_MARKER_AUD" type="dflt:SEQUENCE_MARKER_AUD__type" />
                                <xsd:element name="USERACCOUNT_AUD" type="dflt:USERACCOUNT_AUD__type" />
                                <xsd:element name="TAXONNAME_RIGHTSINFO" type="dflt:TAXONNAME_RIGHTSINFO__type" />
-                               <xsd:element name="WORKINGSET_REPRESENTATION" type="dflt:WORKINGSET_REPRESENTATION__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_REPRESENTATION" type="dflt:DESCRIPTIVEDATASET_REPRESENTATION__type" />
                                <xsd:element name="ADDRESS" type="dflt:ADDRESS__type" />
                                <xsd:element name="ANNOTATION_AUD" type="dflt:ANNOTATION_AUD__type" />
                                <xsd:element name="TAXONRELATIONSHIP_ANNOTATION_AUD" type="dflt:TAXONRELATIONSHIP_ANNOTATION_AUD__type" />
                                <xsd:element name="SINGLEREAD_MARKER_AUD" type="dflt:SINGLEREAD_MARKER_AUD__type" />
                                <xsd:element name="MEDIA_REPRESENTATION_AUD" type="dflt:MEDIA_REPRESENTATION_AUD__type" />
                                <xsd:element name="AUDITEVENT" type="dflt:AUDITEVENT__type" />
-                               <xsd:element name="WORKINGSET_AUD" type="dflt:WORKINGSET_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_AUD" type="dflt:DESCRIPTIVEDATASET_AUD__type" />
                                <xsd:element name="AMPLIFICATIONRESULT_ANNOTATION" type="dflt:AMPLIFICATIONRESULT_ANNOTATION__type" />
                                <xsd:element name="CLASSIFICATION_CREDIT_AUD" type="dflt:CLASSIFICATION_CREDIT_AUD__type" />
                                <xsd:element name="KEYSTATEMENT_AUD" type="dflt:KEYSTATEMENT_AUD__type" />
                                <xsd:element name="DESCRIPTIONBASE_SCOPE" type="dflt:DESCRIPTIONBASE_SCOPE__type" />
                                <xsd:element name="DNAQUALITY" type="dflt:DNAQUALITY__type" />
                                <xsd:element name="MEDIAKEY_TAXONSCOPE" type="dflt:MEDIAKEY_TAXONSCOPE__type" />
-                               <xsd:element name="WORKINGSET_NAMEDAREA_AUD" type="dflt:WORKINGSET_NAMEDAREA_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_NAMEDAREA_AUD" type="dflt:DESCRIPTIVEDATASET_NAMEDAREA_AUD__type" />
                                <xsd:element name="DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE" type="dflt:DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE__type" />
                                <xsd:element name="STATEDATA_DEFINEDTERMBASE" type="dflt:STATEDATA_DEFINEDTERMBASE__type" />
                                <xsd:element name="TAXONNAME_AUD" type="dflt:TAXONNAME_AUD__type" />
                                <xsd:element name="DEFINEDTERMBASE_RIGHTSINFO_AUD" type="dflt:DEFINEDTERMBASE_RIGHTSINFO_AUD__type" />
                                <xsd:element name="TYPEDESIGNATIONBASE_AUD" type="dflt:TYPEDESIGNATIONBASE_AUD__type" />
                                <xsd:element name="DERIVATIONEVENT_MARKER" type="dflt:DERIVATIONEVENT_MARKER__type" />
-                               <xsd:element name="WORKINGSET_REPRESENTATION_AUD" type="dflt:WORKINGSET_REPRESENTATION_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_REPRESENTATION_AUD" type="dflt:DESCRIPTIVEDATASET_REPRESENTATION_AUD__type" />
                                <xsd:element name="REFERENCE_AUD" type="dflt:REFERENCE_AUD__type" />
                                <xsd:element name="DEFINEDTERMBASE_CREDIT_AUD" type="dflt:DEFINEDTERMBASE_CREDIT_AUD__type" />
                                <xsd:element name="REFERENCE_MEDIA_AUD" type="dflt:REFERENCE_MEDIA_AUD__type" />
                                <xsd:element name="TAXONBASE_RIGHTSINFO_AUD" type="dflt:TAXONBASE_RIGHTSINFO_AUD__type" />
                                <xsd:element name="TAXONNAME_NOMENCLATURALSTATUS" type="dflt:TAXONNAME_NOMENCLATURALSTATUS__type" />
                                <xsd:element name="FEATURETREE_RIGHTSINFO_AUD" type="dflt:FEATURETREE_RIGHTSINFO_AUD__type" />
-                               <xsd:element name="WORKINGSET_NAMEDAREA" type="dflt:WORKINGSET_NAMEDAREA__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_NAMEDAREA" type="dflt:DESCRIPTIVEDATASET_NAMEDAREA__type" />
                                <xsd:element name="DETERMINATIONEVENT_ANNOTATION_AUD" type="dflt:DETERMINATIONEVENT_ANNOTATION_AUD__type" />
                                <xsd:element name="FEATURETREE_CREDIT" type="dflt:FEATURETREE_CREDIT__type" />
                                <xsd:element name="DERIVATIONEVENT_ANNOTATION" type="dflt:DERIVATIONEVENT_ANNOTATION__type" />
                                <xsd:element name="DEFINEDTERMBASE_AUD" type="dflt:DEFINEDTERMBASE_AUD__type" />
                                <xsd:element name="LANGUAGESTRING_MARKER_AUD" type="dflt:LANGUAGESTRING_MARKER_AUD__type" />
                                <xsd:element name="DEFINEDTERMBASE_IDENTIFIER_AUD" type="dflt:DEFINEDTERMBASE_IDENTIFIER_AUD__type" />
-                               <xsd:element name="WORKINGSET_DESCRIPTIONBASE" type="dflt:WORKINGSET_DESCRIPTIONBASE__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_DESCRIPTIONBASE" type="dflt:DESCRIPTIVEDATASET_DESCRIPTIONBASE__type" />
                                <xsd:element name="POLYTOMOUSKEYNODE" type="dflt:POLYTOMOUSKEYNODE__type" />
                                <xsd:element name="REPRESENTATION" type="dflt:REPRESENTATION__type" />
                                <xsd:element name="TAXONRELATIONSHIP_MARKER" type="dflt:TAXONRELATIONSHIP_MARKER__type" />
-                               <xsd:element name="WORKINGSET_TAXONNODE" type="dflt:WORKINGSET_TAXONNODE__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_TAXONNODE" type="dflt:DESCRIPTIVEDATASET_TAXONNODE__type" />
                                <xsd:element name="ORIGINALSOURCEBASE_ANNOTATION" type="dflt:ORIGINALSOURCEBASE_ANNOTATION__type" />
                                <xsd:element name="CREDIT_ANNOTATION" type="dflt:CREDIT_ANNOTATION__type" />
                                <xsd:element name="DESCRIPTIONBASE_RIGHTSINFO" type="dflt:DESCRIPTIONBASE_RIGHTSINFO__type" />
                                <xsd:element name="PRIMER_ANNOTATION_AUD" type="dflt:PRIMER_ANNOTATION_AUD__type" />
                                <xsd:element name="AMPLIFICATIONRESULT_MARKER_AUD" type="dflt:AMPLIFICATIONRESULT_MARKER_AUD__type" />
                                <xsd:element name="AMPLIFICATION_ANNOTATION_AUD" type="dflt:AMPLIFICATION_ANNOTATION_AUD__type" />
-                               <xsd:element name="WORKINGSET" type="dflt:WORKINGSET__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET" type="dflt:DESCRIPTIVEDATASET__type" />
                                <xsd:element name="ORIGINALSOURCEBASE_MARKER_AUD" type="dflt:ORIGINALSOURCEBASE_MARKER_AUD__type" />
                                <xsd:element name="INTEXTREFERENCE" type="dflt:INTEXTREFERENCE__type" />
                                <xsd:element name="COLLECTION_MEDIA_AUD" type="dflt:COLLECTION_MEDIA_AUD__type" />
                                <xsd:element name="REPRESENTATION_MARKER" type="dflt:REPRESENTATION_MARKER__type" />
                                <xsd:element name="DESCRIPTIONBASE_IDENTIFIER" type="dflt:DESCRIPTIONBASE_IDENTIFIER__type" />
                                <xsd:element name="CDM_VIEW_CDM_VIEW" type="dflt:CDM_VIEW_CDM_VIEW__type" />
-                               <xsd:element name="WORKINGSET_ANNOTATION_AUD" type="dflt:WORKINGSET_ANNOTATION_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_ANNOTATION_AUD" type="dflt:DESCRIPTIVEDATASET_ANNOTATION_AUD__type" />
                                <xsd:element name="DESCRIPTIONELEMENTBASE_ANNOTATION_AUD" type="dflt:DESCRIPTIONELEMENTBASE_ANNOTATION_AUD__type" />
                                <xsd:element name="IDENTIFIER_ANNOTATION" type="dflt:IDENTIFIER_ANNOTATION__type" />
                                <xsd:element name="TAXONBASE_CREDIT_AUD" type="dflt:TAXONBASE_CREDIT_AUD__type" />
                                <xsd:element name="AMPLIFICATION" type="dflt:AMPLIFICATION__type" />
                                <xsd:element name="MEDIA_MARKER_AUD" type="dflt:MEDIA_MARKER_AUD__type" />
                                <xsd:element name="NAMERELATIONSHIP_MARKER_AUD" type="dflt:NAMERELATIONSHIP_MARKER_AUD__type" />
-                               <xsd:element name="WORKINGSET_TAXONNODE_AUD" type="dflt:WORKINGSET_TAXONNODE_AUD__type" />
+                               <xsd:element name="DESCRIPTIVEDATASET_TAXONNODE_AUD" type="dflt:DESCRIPTIVEDATASET_TAXONNODE_AUD__type" />
                                <xsd:element name="COLLECTION_CREDIT" type="dflt:COLLECTION_CREDIT__type" />
                                <xsd:element name="DESCRIPTIONBASE_REFERENCE" type="dflt:DESCRIPTIONBASE_REFERENCE__type" />
                                <xsd:element name="SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT" type="dflt:SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT__type" />
index 6c5a3be0c0268a181107ac9c7f694818e69d61d8..0c2a42bbc6da18e0b4e0077b7e4644680ccf73a8 100644 (file)
   <HOMOTYPICALGROUP ID="17" CREATED="2015-03-09 15:53:30.0" UUID="bafedb10-2a56-4457-8c48-ecb0aae18bf5" UPDATED="2015-03-09 15:53:32.0" CREATEDBY_ID="5000" UPDATEDBY_ID="5000"/>
   <HOMOTYPICALGROUP ID="20" CREATED="2015-03-10 13:40:30.0" UUID="61c41e51-72cd-40d1-9a56-554732036c57" UPDATED="2015-03-10 13:40:31.0" CREATEDBY_ID="5000" UPDATEDBY_ID="5000"/>
 
-  <TAXONNAME NAMETYPE="ICNAFP" ID="10" CREATED="2015-03-09 15:49:22.0" UUID="9c0b6c13-562e-4642-9494-58dbcedf45f4" UPDATED="2015-03-09 15:49:25.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon A" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="A" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="10" RANK_ID="769" COMBINATIONAUTHORSHIP_ID="10"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="10" CREATED="2015-03-09 15:49:22.0" UUID="9c0b6c13-562e-4642-9494-58dbcedf45f4" UPDATED="2015-03-09 15:49:25.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon A" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="A" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="10" RANK_ID="765" COMBINATIONAUTHORSHIP_ID="10"/>
   <TAXONNAME NAMETYPE="ICNAFP" ID="11" CREATED="2015-03-09 15:49:30.0" UUID="82de3687-f90d-4968-951b-456a21659666" UPDATED="2015-03-09 15:50:21.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="true" TITLECACHE="HTSynonym A1" FULLTITLECACHE="HTSynonym A1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="HTSynonym A1" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="11"/>
   <TAXONNAME NAMETYPE="ICNAFP" ID="12" CREATED="2015-03-09 15:50:25.0" UUID="bd86d4f9-8427-4ac5-a8c2-48add63da449" UPDATED="2015-03-09 15:50:54.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="true" TITLECACHE="HMSynonym A1" FULLTITLECACHE="HMSynonym A1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="HMSynonym A1" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="10"/>
-  <TAXONNAME NAMETYPE="ICNAFP" ID="13" CREATED="2015-03-09 15:51:11.0" UUID="fb76b9cb-29d2-4986-a327-19d1d003159a" UPDATED="2015-03-09 15:51:14.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon B" FULLTITLECACHE="Taxon B" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="B" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="12" RANK_ID="769" COMBINATIONAUTHORSHIP_ID="11"/>
-  <TAXONNAME NAMETYPE="ICNAFP" ID="14" CREATED="2015-03-09 15:51:24.0" UUID="a21d5e7c-e8b5-4395-b83b-a219877e80eb" UPDATED="2015-03-09 15:51:25.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon C" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="C" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="13" RANK_ID="769" COMBINATIONAUTHORSHIP_ID="12"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="13" CREATED="2015-03-09 15:51:11.0" UUID="fb76b9cb-29d2-4986-a327-19d1d003159a" UPDATED="2015-03-09 15:51:14.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon B" FULLTITLECACHE="Taxon B" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="B" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="12" RANK_ID="765" COMBINATIONAUTHORSHIP_ID="11"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="14" CREATED="2015-03-09 15:51:24.0" UUID="a21d5e7c-e8b5-4395-b83b-a219877e80eb" UPDATED="2015-03-09 15:51:25.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon C" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="C" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="13" RANK_ID="765" COMBINATIONAUTHORSHIP_ID="12"/>
   <TAXONNAME NAMETYPE="ICNAFP" ID="15" CREATED="2015-03-09 15:51:31.0" UUID="7dd4eaa3-b65f-4d1e-8d2c-26a31ea3ae0b" UPDATED="2015-03-09 15:51:44.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="true" TITLECACHE="HTSynonym C1" FULLTITLECACHE="HTSynonym C1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="HTSynonym C1" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="13"/>
-  <TAXONNAME NAMETYPE="ICNAFP" ID="16" CREATED="2015-03-09 15:52:34.0" UUID="81444d5e-122f-46aa-9bee-d7c0ba52f8d6" UPDATED="2015-03-09 15:52:42.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon A" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="A" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="14" RANK_ID="769" COMBINATIONAUTHORSHIP_ID="13"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="16" CREATED="2015-03-09 15:52:34.0" UUID="81444d5e-122f-46aa-9bee-d7c0ba52f8d6" UPDATED="2015-03-09 15:52:42.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon A" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="A" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="14" RANK_ID="766" COMBINATIONAUTHORSHIP_ID="13"/>
   <TAXONNAME NAMETYPE="ICNAFP" ID="17" CREATED="2015-03-09 15:52:53.0" UUID="dcdfbc9f-5596-4ae2-85e0-b9c738d8bcec" UPDATED="2015-03-09 15:52:57.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="true" TITLECACHE="HMSynonym A1" FULLTITLECACHE="HMSynonym A1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="HMSynonym A1" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="14"/>
   <TAXONNAME NAMETYPE="ICNAFP" ID="18" CREATED="2015-03-09 15:53:06.0" UUID="fa186915-0bb5-4047-a5c5-404d75851f1c" UPDATED="2015-03-09 15:53:07.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="true" TITLECACHE="HTSynonym A1" FULLTITLECACHE="HTSynonym A1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="HTSynonym A1" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="15"/>
-  <TAXONNAME NAMETYPE="ICNAFP" ID="19" CREATED="2015-03-09 15:53:21.0" UUID="fddf69fa-4f25-4d10-b693-1a9d5d7bbd5c" UPDATED="2015-03-09 15:53:23.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon B" FULLTITLECACHE="Taxon B" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="B" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="16" RANK_ID="769" COMBINATIONAUTHORSHIP_ID="14"/>
-  <TAXONNAME NAMETYPE="ICNAFP" ID="20" CREATED="2015-03-09 15:53:30.0" UUID="9e644031-9190-4a4f-94bb-fc1f6066bbab" UPDATED="2015-03-09 15:53:32.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon C" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="C" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="17" RANK_ID="769" COMBINATIONAUTHORSHIP_ID="15"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="19" CREATED="2015-03-09 15:53:21.0" UUID="fddf69fa-4f25-4d10-b693-1a9d5d7bbd5c" UPDATED="2015-03-09 15:53:23.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon B" FULLTITLECACHE="Taxon B" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="B" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="16" RANK_ID="767" COMBINATIONAUTHORSHIP_ID="14"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="20" CREATED="2015-03-09 15:53:30.0" UUID="9e644031-9190-4a4f-94bb-fc1f6066bbab" UPDATED="2015-03-09 15:53:32.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon C" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="C" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="17" RANK_ID="766" COMBINATIONAUTHORSHIP_ID="15"/>
   <TAXONNAME NAMETYPE="ICNAFP" ID="21" CREATED="2015-03-09 15:53:49.0" UUID="0755d9d7-007a-4d81-a2f8-2ba1b7020cf4" UPDATED="2015-03-09 15:53:52.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="true" TITLECACHE="HTSynonym C1" FULLTITLECACHE="HTSynonym C1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="HTSynonym C1" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="17"/>
-  <TAXONNAME NAMETYPE="ICNAFP" ID="30" CREATED="2015-03-10 13:40:30.0" UUID="b1b9abf0-72a6-4a2e-8bd1-3ef189f5b3e9" UPDATED="2015-03-10 13:40:31.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon D" FULLTITLECACHE="Taxon D" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="D" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="20" RANK_ID="778" COMBINATIONAUTHORSHIP_ID="20"/>
+  <TAXONNAME NAMETYPE="ICNAFP" ID="30" CREATED="2015-03-10 13:40:30.0" UUID="b1b9abf0-72a6-4a2e-8bd1-3ef189f5b3e9" UPDATED="2015-03-10 13:40:31.0" PARSINGPROBLEM="0" PROBLEMSTARTS="-1" PROBLEMENDS="-1" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon D" FULLTITLECACHE="Taxon D" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="D" BINOMHYBRID="false" GENUSORUNINOMIAL="Taxon" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Taxon" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" HOMOTYPICALGROUP_ID="20" RANK_ID="774" COMBINATIONAUTHORSHIP_ID="20"/>
 
   <CLASSIFICATION ID="11" CREATED="2015-03-09 15:48:30.0" UUID="6595638e-4993-421a-9fe5-76b09d94f36a" UPDATED="2015-03-09 15:48:42.0" PROTECTEDTITLECACHE="false" TITLECACHE="Classification1" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" NAME_ID="11" ROOTNODE_ID="11"/>
   <CLASSIFICATION ID="12" CREATED="2015-03-09 15:52:08.0" UUID="1ef8aada-de72-4023-bbe1-14465b6bc60d" UPDATED="2015-03-09 15:52:24.0" PROTECTEDTITLECACHE="false" TITLECACHE="Classification2" CREATEDBY_ID="5000" UPDATEDBY_ID="5000" NAME_ID="12" ROOTNODE_ID="15"/>
index 781f80fa587cf35729cdf5a5c3fb9d3533f7aa1d..91e96d263604ff0faf23c54f9e4f9497abf89a1d 100644 (file)
@@ -2,7 +2,7 @@
 #
 
 # 1)
-#
+# This is needed for the ApplicationConfiguration
 # In the integration test application context the DataSourceConfigurer is not being used
 # The DataSourceConfigurer usually set the 'cdm.dataSource.id' property in the Spring 
 # environment.