From 597358de3619e60a9b1e3a4ea41e4252d58486d4 Mon Sep 17 00:00:00 2001 From: "ben.clark" Date: Wed, 25 Feb 2009 12:49:23 +0000 Subject: [PATCH] Committing large number of changes relating to versioning implementation (#108) --- .gitattributes | 21 + cdmlib-persistence/pom.xml | 26 +- .../database/PersistentTermInitializer.java | 5 +- .../cdm/persistence/dao/agent/IAgentDao.java | 4 +- .../dao/common/AuditEventSort.java | 6 + .../dao/common/IAnnotatableDao.java | 2 +- .../persistence/dao/common/ICdmEntityDao.java | 11 +- .../dao/common/IDefinedTermDao.java | 3 +- .../dao/common/IIdentifiableDao.java | 16 + .../dao/common/ILsidAuthorityDao.java | 10 + .../dao/common/IReferencedEntityDao.java | 2 - .../dao/common/ITermVocabularyDao.java | 2 +- .../dao/common/IVersionableDao.java | 55 + ...ationNotSupportedInPriorViewException.java | 16 + .../dao/hibernate/agent/AgentDaoImpl.java | 76 +- .../hibernate/common/AnnotatableDaoImpl.java | 19 +- .../hibernate/common/AnnotationDaoImpl.java | 2 + .../hibernate/common/CdmEntityDaoBase.java | 7 +- .../hibernate/common/DefinedTermDaoImpl.java | 241 +- .../hibernate/common/IdentifiableDaoBase.java | 84 +- .../common/LsidAuthorityDaoImpl.java | 25 + .../common/TermVocabularyDaoImpl.java | 50 +- .../hibernate/common/VersionableDaoBase.java | 217 + .../description/DescriptionDaoImpl.java | 186 +- .../DescriptionElementDaoImpl.java | 4 + .../media/MediaDaoHibernateImpl.java | 2 + .../name/TaxonNameDaoHibernateImpl.java | 479 +- .../CollectionDaoHibernateImpl.java | 19 +- .../OccurrenceDaoHibernateImpl.java | 60 +- ...onAlternativeSpellingSuggestionParser.java | 2 +- .../taxon/TaxonDaoHibernateImpl.java | 429 +- .../dao/hibernate/view/AuditEventDao.java | 77 + .../cdm/persistence/view/IAuditEventDao.java | 72 + .../eu/etaxonomy/cdm/hibernate.cfg.xml | 11 +- .../eu/etaxonomy/cdm/persistence.xml | 19 +- .../src/main/resources/log4j.properties | 31 +- .../PersistentTermInitializerTest.java | 13 +- .../database/TestingTermInitializerTest.java | 37 + .../hibernate/FreeTextSearchIntegration.java | 19 +- .../dao/hibernate/agent/AgentDaoImplTest.java | 148 +- .../hibernate/common/AnnotationDaoTest.java | 2 + .../common/CdmEntityDaoBaseTest.java | 17 +- .../dao/hibernate/common/DaoBaseTest.java | 2 +- .../common/DefinedTermDaoImplTest.java | 49 +- .../common/IdentifiableDaoBaseTest.java | 40 +- .../common/UserDaoHibernateImplTest.java | 1 + .../DescriptionDaoHibernateImplTest.java | 1 + .../dao/hibernate/media/MediaDaoImplTest.java | 1 + .../name/TaxonNameDaoHibernateImplTest.java | 1 + .../taxon/TaxonDaoHibernateImplTest.java | 226 +- .../test/integration/CdmIntegrationTest.java | 19 +- .../cdm/test/integration/HSQLDialect.java | 12 + .../test/resources/META-INF/persistence.xml | 7 +- .../src/test/resources/dbscripts/001_cdm.ddl | 13531 ++++++++-------- .../resources/dbscripts/hibernate.cfg.xml | 146 + .../etaxonomy/cdm/applicationContext-test.xml | 18 +- .../cdm/persistence/dao/hibernate/PUBLIC.xsd | 4945 +++--- .../AgentDaoImplTest.testDelete-result.xml | 38 + .../agent/AgentDaoImplTest.testExists.xml | 41 + .../agent/AgentDaoImplTest.testFind.xml | 40 + .../AgentDaoImplTest.testSave-result.xml | 40 + .../agent/AgentDaoImplTest.testSave.xml | 38 + .../AgentDaoImplTest.testUpdate-result.xml | 38 + .../dao/hibernate/agent/AgentDaoImplTest.xml | 51 +- .../hibernate/common/AnnotationDaoTest.xml | 8 +- .../CdmEntityDaoBaseTest.testSave-result.xml | 2 +- .../hibernate/common/CdmEntityDaoBaseTest.xml | 18 +- .../common/IdentifiableDaoBaseTest.xml | 33 +- .../cdm/persistence/dao/hibernate/dataset.dtd | 7562 ++++----- .../cdm/persistence/dao/hibernate/dataset.xsd | 641 +- ...oHibernateImplTest.testAddChild-result.xml | 310 + ...DaoHibernateImplTest.testDelete-result.xml | 311 + .../TaxonDaoHibernateImplTest.testFind.xml | 313 + ...onDaoHibernateImplTest.testFindDeleted.xml | 312 + .../taxon/TaxonDaoHibernateImplTest.xml | 165 +- .../src/test/resources/log4j.properties | 90 + cdmlib-persistence/test.xml | Bin 987871 -> 2523259 bytes 77 files changed, 17716 insertions(+), 13861 deletions(-) create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/AuditEventSort.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILsidAuthorityDao.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IVersionableDao.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/OperationNotSupportedInPriorViewException.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LsidAuthorityDaoImpl.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/VersionableDaoBase.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDao.java create mode 100644 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/view/IAuditEventDao.java create mode 100644 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/HSQLDialect.java create mode 100644 cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testDelete-result.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testExists.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testFind.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave-result.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testUpdate-result.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testAddChild-result.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testDelete-result.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFind.xml create mode 100644 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFindDeleted.xml create mode 100644 cdmlib-persistence/src/test/resources/log4j.properties diff --git a/.gitattributes b/.gitattributes index e1301e8510..9fae66aa99 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1155,6 +1155,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/SybaseDatabaseT cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/IAlternativeSpellingSuggestionParser.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/QueryParseException.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/agent/IAgentDao.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/AuditEventSort.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IAnnotatableDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IAnnotationDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ICdmEntityDao.java -text @@ -1165,6 +1166,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IGroupD cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILanguageStringBaseDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILanguageStringDao.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILsidAuthorityDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IOrderedTermVocabularyDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IOriginalSourceDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java -text @@ -1172,6 +1174,8 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IRepres cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITermVocabularyDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITitledDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IUserDao.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IVersionableDao.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/OperationNotSupportedInPriorViewException.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IDescriptionDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IDescriptionElementDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureDao.java -text @@ -1191,12 +1195,14 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/comm cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LanguageStringBaseDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LanguageStringDaoImpl.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LsidAuthorityDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/OrderedTermVocabularyDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/OriginalSourceDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/ReferencedEntityDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/RepresentationDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoImpl.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/VersionableDaoBase.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureDaoImpl.java -text @@ -1215,6 +1221,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occu cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImpl.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonAlternativeSpellingSuggestionParser.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/media/IMediaDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/media/IMediaRepresentationDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/media/IMediaRepresentationPartDao.java -text @@ -1228,6 +1235,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/reference/IRef cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonDao.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/fetch/CdmFetch.java -text cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/CdmHibernateInterceptor.java -text +cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/view/IAuditEventDao.java -text cdmlib-persistence/src/main/java/org/hibernate/dialect/H2CorrectedDialect.java -text cdmlib-persistence/src/main/java/org/hibernate/dialect/HSQLCorrectedDialect.java -text cdmlib-persistence/src/main/java/org/hibernate/dialect/MySQL5InnoDBUtf8Dialect.java -text @@ -1273,11 +1281,13 @@ cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/function/TestPersistence. cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/function/TestSessionFactory.java -text cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/CdmIntegrationTest.java -text cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/CdmTransactionalIntegrationTest.java -text +cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/HSQLDialect.java -text cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/HsqldbDataTypeFactory.java -text cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/suite/CdmTestSuite.java -text cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/unit/CdmUnitTestBase.java -text cdmlib-persistence/src/test/resources/META-INF/persistence.xml -text cdmlib-persistence/src/test/resources/dbscripts/001_cdm.ddl -text +cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml -text cdmlib-persistence/src/test/resources/dbscripts/hibernate.properties -text cdmlib-persistence/src/test/resources/eu.etaxonomy.cdm.model.common.DefinedTermBase/segments.gen -text cdmlib-persistence/src/test/resources/eu.etaxonomy.cdm.model.common.DefinedTermBase/segments_1 -text @@ -1310,6 +1320,12 @@ cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet.xml cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/jdbc-datasource.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/FreeTextSearchIntegration.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/PUBLIC.xsd -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testDelete-result.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testExists.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testFind.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave-result.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testUpdate-result.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testDelete-result.xml -text @@ -1326,9 +1342,14 @@ cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testAddChild-result.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testDelete-result.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFind.xml -text +cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFindDeleted.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/override.properties -text cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/override.properties-testPersistentDataSource -text +cdmlib-persistence/src/test/resources/log4j.properties -text cdmlib-persistence/src/test/resources/unitils.properties -text cdmlib-persistence/test.xml -text cdmlib-remote/LICENSE.TXT -text diff --git a/cdmlib-persistence/pom.xml b/cdmlib-persistence/pom.xml index 860bc09cbf..67ddb56e9c 100644 --- a/cdmlib-persistence/pom.xml +++ b/cdmlib-persistence/pom.xml @@ -48,11 +48,11 @@ org.hibernate hibernate-annotations - 3.3.1.GA + 3.4.0-SNAPSHOT - + org.apache.maven.plugins maven-jar-plugin @@ -127,9 +127,17 @@ eu.etaxonomy cdmlib-model + + org.slf4j + slf4j-log4j12 + javax.persistence - ejb + persistence-api + + + javassist + javassist javax.annotation @@ -145,7 +153,15 @@ org.hibernate - hibernate + hibernate-annotations + + + org.hibernate + hibernate-core + + + org.hibernate + hibernate-envers org.hibernate diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/PersistentTermInitializer.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/PersistentTermInitializer.java index b416b91fac..838e9d9733 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/PersistentTermInitializer.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/PersistentTermInitializer.java @@ -27,7 +27,9 @@ import org.springframework.transaction.support.DefaultTransactionDefinition; import eu.etaxonomy.cdm.model.common.DefaultTermInitializer; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.TermVocabulary; +import eu.etaxonomy.cdm.model.common.init.IVocabularyStore; import eu.etaxonomy.cdm.model.common.init.TermLoader; +import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao; import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao; /** @@ -100,8 +102,7 @@ public class PersistentTermInitializer extends DefaultTermInitializer { for(Object obj : persistedVocabulary.getTerms()) { DefinedTermBase d = (DefinedTermBase)obj; Hibernate.initialize(d.getRepresentations()); - terms.put(d.getUuid(), d); - + terms.put(d.getUuid(), d); } logger.debug("Setting defined Terms for class " + clazz.getSimpleName()); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/agent/IAgentDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/agent/IAgentDao.java index e731763c00..a8d20a77b0 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/agent/IAgentDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/agent/IAgentDao.java @@ -12,14 +12,14 @@ package eu.etaxonomy.cdm.persistence.dao.agent; import java.util.List; import eu.etaxonomy.cdm.model.agent.Address; -import eu.etaxonomy.cdm.model.agent.Agent; +import eu.etaxonomy.cdm.model.agent.AgentBase; import eu.etaxonomy.cdm.model.agent.Institution; import eu.etaxonomy.cdm.model.agent.InstitutionalMembership; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao; -public interface IAgentDao extends IIdentifiableDao { +public interface IAgentDao extends IIdentifiableDao { public List getInstitutionByCode(String code); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/AuditEventSort.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/AuditEventSort.java new file mode 100644 index 0000000000..1954dfcd5a --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/AuditEventSort.java @@ -0,0 +1,6 @@ +package eu.etaxonomy.cdm.persistence.dao.common; + +public enum AuditEventSort { + BACKWARDS, + FORWARDS; +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IAnnotatableDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IAnnotatableDao.java index 01fd53fb58..39f602b35b 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IAnnotatableDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IAnnotatableDao.java @@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.common.MarkerType; * @created 24.09.2008 * @version 1.0 */ -public interface IAnnotatableDao extends ICdmEntityDao{ +public interface IAnnotatableDao extends IVersionableDao{ /** * Returns a List of Annotations belonging to the supplied AnnotatableEntity diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ICdmEntityDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ICdmEntityDao.java index 21c725a30b..b0cc9552d1 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ICdmEntityDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ICdmEntityDao.java @@ -112,10 +112,15 @@ public interface ICdmEntityDao { public int count(Class clazz); /** - * + * FIXME Should this method exist : I would expect flushing of a session to be + * something that a DAO should hide? */ public void flush(); - - + /** + * Convenience method which makes it easy to discover what type of object this DAO returns at runtime + * + * @return + */ + public Class getType(); } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefinedTermDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefinedTermDao.java index f84e79007c..671126ea7d 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefinedTermDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefinedTermDao.java @@ -16,7 +16,6 @@ import java.util.Set; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.Language; -import eu.etaxonomy.cdm.model.common.Representation; import eu.etaxonomy.cdm.model.location.NamedArea; import eu.etaxonomy.cdm.model.location.NamedAreaLevel; import eu.etaxonomy.cdm.model.location.NamedAreaType; @@ -24,7 +23,7 @@ import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry; import eu.etaxonomy.cdm.model.media.Media; -public interface IDefinedTermDao extends ICdmEntityDao, ITitledDao{ +public interface IDefinedTermDao extends IVersionableDao, ITitledDao{ /** * @param iso639 a two or three letter language code according to iso639-1 or iso639-2 diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java index fa4fca138c..495d5a28ce 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java @@ -12,11 +12,27 @@ package eu.etaxonomy.cdm.persistence.dao.common; import java.util.List; import eu.etaxonomy.cdm.model.common.IdentifiableEntity; +import eu.etaxonomy.cdm.model.common.LSID; import eu.etaxonomy.cdm.model.common.OriginalSource; import eu.etaxonomy.cdm.model.media.Rights; public interface IIdentifiableDao extends IAnnotatableDao, ITitledDao{ + /** + * Return an object by LSID. NOTE: Because of the fact that LSIDs are supposed to + * be globally resolvable, this method behaves in a different way to other methods + * + * In short, it attempts to find an object of type T in the current view using the LSID passed. If the LSID passed has a + * revision part, then this will be used in the query, but if not, then it is expected that the request is for the 'current' + * version of the object and the revision part will not be used as a matching criteria in the query. + * + * If the object does not appear in the current view (i.e. it has been deleted), then this method will search the history + * tables for a match, again using the revision if it exists, but ignoring it if not. + * + * @param lsid a LifeScience Identifier identifying the desired object + */ + public T find(LSID lsid); + /** * Return a count of the sources for this identifiable entity * diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILsidAuthorityDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILsidAuthorityDao.java new file mode 100644 index 0000000000..95d0d72872 --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ILsidAuthorityDao.java @@ -0,0 +1,10 @@ +package eu.etaxonomy.cdm.persistence.dao.common; + +import eu.etaxonomy.cdm.model.common.IIdentifiableEntity; +import eu.etaxonomy.cdm.model.common.LSID; +import eu.etaxonomy.cdm.model.common.LSIDAuthority; + +public interface ILsidAuthorityDao extends ICdmEntityDao { + + public Class getClassForNamespace(LSID lsid); +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java index d90c094161..3e15a200c7 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java @@ -6,8 +6,6 @@ package eu.etaxonomy.cdm.persistence.dao.common; -import org.springframework.stereotype.Repository; - import eu.etaxonomy.cdm.model.common.ReferencedEntityBase; /** diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITermVocabularyDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITermVocabularyDao.java index c33b7cd2db..1af741c8d3 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITermVocabularyDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITermVocabularyDao.java @@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary; * @author a.mueller * */ -public interface ITermVocabularyDao extends ICdmEntityDao> { +public interface ITermVocabularyDao extends IVersionableDao> { /** * Return a count of terms that belong to the termVocabulary supplied diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IVersionableDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IVersionableDao.java new file mode 100644 index 0000000000..d8824f7803 --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IVersionableDao.java @@ -0,0 +1,55 @@ +package eu.etaxonomy.cdm.persistence.dao.common; + +import java.util.List; + +import eu.etaxonomy.cdm.model.common.VersionableEntity; +import eu.etaxonomy.cdm.model.view.AuditEventRecord; + +public interface IVersionableDao extends ICdmEntityDao { + + /** + * Returns a list of audit events (in order) which affected the state of an entity t. + * The events returned either start at the AuditEvent in context and go forward in time + * (AuditEventSort.FORWARDS) or backwards in time (AuditEventSort.BACKWARDS). If the + * AuditEventContext is set to null, or to AuditEvent.CURRENT_VIEW, then all relevant + * AuditEvents are returned. + * + * @param t The versionable entity which was affected by the audit events + * @param pageSize The maximum number of audit event records returned (can be null for all audit event records) + * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based) + * @param sort should the list be sorted going forward in time (AuditEventSort.FORWARDS) or backwards (AuditEventSort.BACKWARDS) + * @return a list of AuditEventRecords, containing the AuditEvent, the state of the entity at that event, and the type of modification + */ + public List> getAuditEvents(T t, Integer pageSize, Integer pageNumber, AuditEventSort sort); + + /** + * Returns a count of audit events which affected the state of an entity t. + * The events either start at the AuditEvent in context and go forward in time + * (AuditEventSort.FORWARDS) or backwards in time (AuditEventSort.BACKWARDS). If the + * AuditEventContext is set to null, or to AuditEvent.CURRENT_VIEW, then all relevant + * AuditEvents are considered. + * + * @param t The versionable entity which was affected by the audit events + * @param sort should the events considered start now and go forward in time (AuditEventSort.FORWARDS) or backwards (AuditEventSort.BACKWARDS) + * @return a count of audit events + */ + public Integer countAuditEvents(T t, AuditEventSort sort); + + /** + * A convenience method which returns a record of the next (relative to the audit event in context) + * audit event to affect the entity t. + * + * @param t The versionable entity affected by these audit events + * @return a record of the next audit event to affect t, or null if the current event is the last to affect t + */ + public AuditEventRecord getNextAuditEvent(T t); + + /** + * A convenience method which returns a record of the previous (relative to the audit event in context) + * audit event to affect the entity t. + * + * @param t The versionable entity affected by these audit events + * @return a record of the previous audit event to affect t, or null if the current event is the first to affect t + */ + public AuditEventRecord getPreviousAuditEvent(T t); +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/OperationNotSupportedInPriorViewException.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/OperationNotSupportedInPriorViewException.java new file mode 100644 index 0000000000..d8e2691977 --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/OperationNotSupportedInPriorViewException.java @@ -0,0 +1,16 @@ +package eu.etaxonomy.cdm.persistence.dao.common; + +public class OperationNotSupportedInPriorViewException extends + UnsupportedOperationException { + /** + * + */ + private static final long serialVersionUID = -7170039485943962416L; + + public OperationNotSupportedInPriorViewException(String message) { + super(message); + } + + + +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImpl.java index 280d48413c..8aeb7488df 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImpl.java @@ -15,63 +15,97 @@ import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.stereotype.Repository; -import eu.etaxonomy.cdm.model.agent.Agent; +import eu.etaxonomy.cdm.model.agent.AgentBase; import eu.etaxonomy.cdm.model.agent.Institution; import eu.etaxonomy.cdm.model.agent.InstitutionalMembership; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao; import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; @Repository -public class AgentDaoImpl extends IdentifiableDaoBase implements IAgentDao{ +public class AgentDaoImpl extends IdentifiableDaoBase implements IAgentDao{ @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(AgentDaoImpl.class); public AgentDaoImpl() { - super(Agent.class); + super(AgentBase.class); } public List getInstitutionByCode(String code) { - Criteria crit = getSession().createCriteria(Institution.class); - - crit.add(Restrictions.eq("code", code)); - List results = crit.list(); - return results; + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria crit = getSession().createCriteria(Institution.class); + crit.add(Restrictions.eq("code", code)); + return (List)crit.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(Institution.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property("code").eq(code)); + return (List)query.getResultList(); + } } public int countInstitutionalMemberships(Person person) { - Query query = getSession().createQuery("select count(institutionalMembership) from InstitutionalMembership institutionalMembership where institutionalMembership.person = :person"); - query.setParameter("person", person); - return ((Long)query.uniqueResult()).intValue(); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select count(institutionalMembership) from InstitutionalMembership institutionalMembership where institutionalMembership.person = :person"); + query.setParameter("person", person); + return ((Long)query.uniqueResult()).intValue(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(InstitutionalMembership.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("person").eq(person.getId())); + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } } public int countMembers(Team team) { + checkNotInPriorView("AgentDaoImpl.countMembers(Team team)"); Query query = getSession().createQuery("select count(teamMember) from Team team join team.teamMembers teamMember where team = :team"); query.setParameter("team", team); return ((Long)query.uniqueResult()).intValue(); } public List getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) { - Query query = getSession().createQuery("select institutionalMembership from InstitutionalMembership institutionalMembership left join fetch institutionalMembership.institute where institutionalMembership.person = :person"); - query.setParameter("person", person); - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select institutionalMembership from InstitutionalMembership institutionalMembership left join fetch institutionalMembership.institute where institutionalMembership.person = :person"); + query.setParameter("person", person); + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } } - } - return (List)query.list(); + return (List)query.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(InstitutionalMembership.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("person").eq(person.getId())); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + return (List)query.getResultList(); + } } public List getMembers(Team team, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("AgentDaoImpl.getMembers(Team team, Integer pageSize, Integer pageNumber)"); Query query = getSession().createQuery("select teamMember from Team team join team.teamMembers teamMember where team = :team"); query.setParameter("team", team); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotatableDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotatableDaoImpl.java index 45c315fdaf..9dd9871aab 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotatableDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotatableDaoImpl.java @@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao; * @created 24.09.2008 * @version 1.0 */ -public abstract class AnnotatableDaoImpl extends CdmEntityDaoBase implements IAnnotatableDao { +public abstract class AnnotatableDaoImpl extends VersionableDaoBase implements IAnnotatableDao { private static Logger logger = Logger.getLogger(AnnotatableDaoImpl.class); /** @@ -34,30 +34,35 @@ public abstract class AnnotatableDaoImpl extends Cd super(type); } public int countAnnotations(T annotatableEntity, MarkerType status) { + checkNotInPriorView("AnnotatableDaoImpl.countAnnotations(T annotatableEntity, MarkerType status)"); Query query = null; if(status == null) { - query = getSession().createQuery("select count(annotation) from Annotation annotation where annotation.annotatedObj = :annotatableEntity"); + query = getSession().createQuery("select count(annotation) from Annotation annotation where annotation.annotatedObj.id = :id and annotation.annotatedObj.class = :class"); } else { - query = getSession().createQuery("select count(annotation) from Annotation annotation join annotation.markers marker where annotation.annotatedObj = :annotatableEntity and marker.markerType = :status"); + query = getSession().createQuery("select count(annotation) from Annotation annotation join annotation.markers marker where annotation.annotatedObj.id = :id and annotation.annotatedObj.class = :class and marker.markerType = :status"); query.setParameter("status",status); } - query.setParameter("annotatableEntity",annotatableEntity); + query.setParameter("id",annotatableEntity.getId()); + query.setParameter("class", annotatableEntity.getClass().getName()); return ((Long)query.uniqueResult()).intValue(); } + public List getAnnotations(T annotatableEntity, MarkerType status, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("AnnotatableDaoImpl.getAnnotations(T annotatableEntity, MarkerType status, Integer pageSize, Integer pageNumber)"); Query query = null; if(status == null) { - query = getSession().createQuery("select annotation from Annotation annotation where annotation.annotatedObj = :annotatableEntity"); + query = getSession().createQuery("select annotation from Annotation annotation where annotation.annotatedObj.id = :id and annotation.annotatedObj.class = :class"); } else { - query = getSession().createQuery("select annotation from Annotation annotation join annotation.markers marker where annotation.annotatedObj = :annotatableEntity and marker.markerType = :status"); + query = getSession().createQuery("select annotation from Annotation annotation join annotation.markers marker where annotation.annotatedObj.id = :id and annotation.annotatedObj.class = :class and marker.markerType = :status"); query.setParameter("status",status); } - query.setParameter("annotatableEntity",annotatableEntity); + query.setParameter("id",annotatableEntity.getId()); + query.setParameter("class", annotatableEntity.getClass().getName()); if(pageSize != null) { query.setMaxResults(pageSize); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoImpl.java index 2170a91558..0f261d7fec 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoImpl.java @@ -18,6 +18,7 @@ public class AnnotationDaoImpl extends LanguageStringBaseDaoImpl imp } public int count(Person commentator, MarkerType status) { + checkNotInPriorView("AnnotationDaoImpl.count(Person commentator, MarkerType status)"); Query query = null; if(status == null) { @@ -33,6 +34,7 @@ public class AnnotationDaoImpl extends LanguageStringBaseDaoImpl imp } public List list(Person commentator, MarkerType status, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("AnnotationDaoImpl.list(Person commentator, MarkerType status, Integer pageSize, Integer pageNumber)"); Query query = null; if(status == null) { diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBase.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBase.java index b8603057c1..134452bfb2 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBase.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBase.java @@ -27,7 +27,6 @@ import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao; @@ -35,7 +34,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao; /** * @author a.mueller - * + * FIXME CdmEntityDaoBase is abstract, can it be annotated with @Repository? */ @Repository public abstract class CdmEntityDaoBase extends DaoBase implements ICdmEntityDao { @@ -193,4 +192,8 @@ public abstract class CdmEntityDaoBase extends DaoBase implem List result = query.list(); return result; } + + public Class getType() { + return type; + } } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java index e6d9cb695f..a840223868 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java @@ -22,6 +22,8 @@ import org.hibernate.Session; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.stereotype.Repository; import eu.etaxonomy.cdm.model.common.CdmBase; @@ -32,6 +34,7 @@ import eu.etaxonomy.cdm.model.location.NamedAreaLevel; import eu.etaxonomy.cdm.model.location.NamedAreaType; import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry; import eu.etaxonomy.cdm.model.media.Media; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao; import eu.etaxonomy.cdm.persistence.dao.common.ITitledDao; @@ -41,7 +44,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.ITitledDao; * @version 1.0 */ @Repository -public class DefinedTermDaoImpl extends CdmEntityDaoBase implements IDefinedTermDao{ +public class DefinedTermDaoImpl extends VersionableDaoBase implements IDefinedTermDao{ private static final Logger logger = Logger.getLogger(DefinedTermDaoImpl.class); public DefinedTermDaoImpl() { @@ -56,8 +59,9 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase) */ public List findByTitle(String queryString, CdmBase sessionObject) { + checkNotInPriorView("DefinedTermDaoImpl.findByTitle(String queryString, CdmBase sessionObject)"); Session session = getSession(); - if ( sessionObject != null ) { + if ( sessionObject != null ) {// FIXME is this needed? session.update(sessionObject); } Query query = session.createQuery("select term from DefinedTermBase term join fetch term.representations representation where representation.label = :label"); @@ -67,6 +71,7 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem } public List findByTitleAndClass(String queryString, Class clazz) { + checkNotInPriorView("DefinedTermDaoImpl.findByTitleAndClass(String queryString, Class clazz)"); Session session = getSession(); Criteria crit = session.createCriteria(clazz); crit.add(Restrictions.ilike("persistentTitleCache", queryString)); @@ -78,7 +83,8 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String, eu.etaxonomy.cdm.persistence.dao.common.ITitledDao.MATCH_MODE, int, int, java.util.List) */ public List findByTitle(String queryString, ITitledDao.MATCH_MODE matchMode, int page, int pagesize, List criteria) { - //FXIME is query parametrised? + //FIXME is query parametrised? + checkNotInPriorView("DefinedTermDaoImpl.findByTitle(String queryString, ITitledDao.MATCH_MODE matchMode, int page, int pagesize, List criteria)"); Criteria crit = getSession().createCriteria(type); crit.add(Restrictions.ilike("titleCache", matchMode.queryStringFrom(queryString))); crit.setMaxResults(pagesize); @@ -92,10 +98,16 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem public WaterbodyOrCountry getCountryByIso(String iso639) { // If iso639 = "" query returns non-unique result. We prevent this here: if (iso639.equals("") ) { return null; } - - Query query = getSession().createQuery("from WaterbodyOrCountry where iso3166_A2 = :isoCode"); - query.setParameter("isoCode", iso639); - return (WaterbodyOrCountry) query.uniqueResult(); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("from WaterbodyOrCountry where iso3166_A2 = :isoCode"); + query.setParameter("isoCode", iso639); + return (WaterbodyOrCountry) query.uniqueResult(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(WaterbodyOrCountry.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property("iso3166_A2").eq(iso639)); + return (WaterbodyOrCountry) query.getSingleResult(); + } } public List getDefinedTermByRepresentationText(String text, Class clazz ) { @@ -112,11 +124,22 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem return null; } String isoStandart = "iso639_" + (iso639.length() - 1); - Query query = getSession().createQuery("from Language where " + isoStandart + "= :isoCode"); - query.setParameter("isoCode", iso639); - return (Language) query.uniqueResult(); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("from Language where " + isoStandart + "= :isoCode"); + query.setParameter("isoCode", iso639); + return (Language) query.uniqueResult(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(Language.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property(isoStandart).eq(iso639)); + return (Language)query.getSingleResult(); + } } + /** + * FIXME this will result in a query per language - could you, given that iso codes + * are unique, use from Language where iso639_1 in (:isoCode) or iso639_2 in (:isoCode) + */ public List getLanguagesByIso(List iso639List) { List languages = new ArrayList(iso639List.size()); for (String iso639 : iso639List) { @@ -135,22 +158,38 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem } public int count(NamedAreaLevel level, NamedAreaType type) { - Criteria criteria = getSession().createCriteria(NamedArea.class); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(NamedArea.class); - if(level != null) { - criteria.add(Restrictions.eq("level",level)); - } + if(level != null) { + criteria.add(Restrictions.eq("level",level)); + } - if(type != null) { - criteria.add(Restrictions.eq("type", type)); - } + if(type != null) { + criteria.add(Restrictions.eq("type", type)); + } + + criteria.setProjection(Projections.rowCount()); - criteria.setProjection(Projections.rowCount()); + return (Integer)criteria.uniqueResult(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(NamedArea.class,auditEvent.getRevisionNumber()); + + if(level != null) { + query.add(AuditEntity.relatedId("level").eq(level.getId())); + } - return (Integer)criteria.uniqueResult(); + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } } public int countMedia(DefinedTermBase definedTerm) { + checkNotInPriorView("DefinedTermDaoImpl.countMedia(DefinedTermBase definedTerm)"); Query query = getSession().createQuery("select count(media) from DefinedTermBase definedTerm join definedTerm.media media where definedTerm = :definedTerm"); query.setParameter("definedTerm", definedTerm); @@ -158,6 +197,7 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem } public List getMedia(DefinedTermBase definedTerm, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DefinedTermDaoImpl.getMedia(DefinedTermBase definedTerm, Integer pageSize, Integer pageNumber)"); Query query = getSession().createQuery("select media from DefinedTermBase definedTerm join definedTerm.media media where definedTerm = :definedTerm"); query.setParameter("definedTerm", definedTerm); @@ -172,73 +212,143 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem } public List list(NamedAreaLevel level, NamedAreaType type, Integer pageSize, Integer pageNumber) { - Criteria criteria = getSession().createCriteria(NamedArea.class); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(NamedArea.class); - if(level != null) { - criteria.add(Restrictions.eq("level",level)); - } + if(level != null) { + criteria.add(Restrictions.eq("level",level)); + } - if(type != null) { - criteria.add(Restrictions.eq("type", type)); - } + if(type != null) { + criteria.add(Restrictions.eq("type", type)); + } - if(pageSize != null) { - criteria.setMaxResults(pageSize); - if(pageNumber != null) { - criteria.setFirstResult(pageNumber * pageSize); + if(pageSize != null) { + criteria.setMaxResults(pageSize); + if(pageNumber != null) { + criteria.setFirstResult(pageNumber * pageSize); + } + } + + return (List)criteria.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(NamedArea.class,auditEvent.getRevisionNumber()); + + if(level != null) { + query.add(AuditEntity.relatedId("level").eq(level.getId())); } - } - return (List)criteria.list(); + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + return (List)query.getResultList(); + } } - public int countGeneralizationOf(T definedTerm) { - Query query = getSession().createQuery("select count(specialization) from DefinedTermBase generalization join generalization.generalizationOf specialization where generalization = :generalization"); - query.setParameter("generalization", definedTerm); - return ((Long)query.uniqueResult()).intValue(); + public int countGeneralizationOf(T kindOf) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select count(term) from DefinedTermBase term where term.kindOf = :kindOf"); + query.setParameter("kindOf", kindOf); + return ((Long)query.uniqueResult()).intValue(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DefinedTermBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("kindOf").eq(kindOf.getId())); + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } } - public int countIncludes(Set definedTerms) { - Query query = getSession().createQuery("select count(included) from DefinedTermBase definedTerm join definedTerm.includes included where definedTerm in (:definedTerms)"); - query.setParameterList("definedTerms", definedTerms); - return ((Long)query.uniqueResult()).intValue(); + public int countIncludes(Set partOf) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select count(term) from DefinedTermBase term where term.partOf in (:partOf)"); + query.setParameterList("partOf", partOf); + return ((Long)query.uniqueResult()).intValue(); + } else { + Integer count = 0; + for(T t : partOf) { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DefinedTermBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("partOf").eq(t.getId())); + query.addProjection(AuditEntity.id().count("id")); + count += ((Long)query.getSingleResult()).intValue(); + } + return count; + } } - public List getGeneralizationOf(T definedTerm, Integer pageSize, Integer pageNumber) { - Query query = getSession().createQuery("select specialization from DefinedTermBase generalization join generalization.generalizationOf specialization where generalization = :generalization"); - query.setParameter("generalization", definedTerm); + public List getGeneralizationOf(T kindOf, Integer pageSize, Integer pageNumber) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select term from DefinedTermBase term where term.kindOf = :kindOf"); + query.setParameter("kindOf", kindOf); - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } } - } - return (List)query.list(); + return (List)query.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DefinedTermBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("kindOf").eq(kindOf.getId())); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } + } + + return (List)query.getResultList(); + } } - public List getIncludes(Set definedTerms, Integer pageSize, Integer pageNumber) { - Query query = getSession().createQuery("select included from DefinedTermBase definedTerm join definedTerm.includes included where definedTerm in (:definedTerms)"); - query.setParameterList("definedTerms", definedTerms); - - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); + public List getIncludes(Set partOf, Integer pageSize, Integer pageNumber) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select term from DefinedTermBase term where term.partOf in (:partOf)"); + query.setParameterList("partOf", partOf); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } } - } - return (List)query.list(); + return (List)query.list(); + } else { + List result = new ArrayList(); + for(T t : partOf) { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DefinedTermBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("partOf").eq(t.getId())); + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } + } + + result.addAll((List)query.getResultList()); + } + return result; + } } public int countPartOf(Set definedTerms) { + checkNotInPriorView("DefinedTermDaoImpl.countPartOf(Set definedTerms)"); Query query = getSession().createQuery("select count(distinct partOf) from DefinedTermBase definedTerm join definedTerm.partOf partOf where definedTerm in (:definedTerms)"); query.setParameterList("definedTerms", definedTerms); return ((Long)query.uniqueResult()).intValue(); } public List getPartOf(Set definedTerms, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DefinedTermDaoImpl.getPartOf(Set definedTerms, Integer pageSize, Integer pageNumber)"); Query query = getSession().createQuery("select distinct partOf from DefinedTermBase definedTerm join definedTerm.partOf partOf where definedTerm in (:definedTerms)"); query.setParameterList("definedTerms", definedTerms); @@ -253,9 +363,16 @@ public class DefinedTermDaoImpl extends CdmEntityDaoBase implem } public DefinedTermBase findByUri(String uri) { - Query query = getSession().createQuery("select term from DefinedTermBase term where term.uri = :uri"); - query.setParameter("uri", uri); - return (DefinedTermBase)query.uniqueResult(); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select term from DefinedTermBase term where term.uri = :uri"); + query.setParameter("uri", uri); + return (DefinedTermBase)query.uniqueResult(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DefinedTermBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property("uri").eq(uri)); + return (DefinedTermBase)query.getSingleResult(); + } } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java index 2f209077e9..035b88b626 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java @@ -18,11 +18,16 @@ import org.hibernate.Session; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; +import org.hibernate.impl.AbstractQueryImpl; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.IdentifiableEntity; +import eu.etaxonomy.cdm.model.common.LSID; import eu.etaxonomy.cdm.model.common.OriginalSource; import eu.etaxonomy.cdm.model.media.Rights; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao; @@ -46,20 +51,25 @@ public class IdentifiableDaoBase extends Annotatab * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String) */ public List findByTitle(String queryString, CdmBase sessionObject) { + /** + * FIXME why do we need to call update in a find* method? I don't know for sure + * that this is a good idea . . . + */ Session session = getSession(); if ( sessionObject != null ) { session.update(sessionObject); } + checkNotInPriorView("IdentifiableDaoBase.findByTitle(String queryString, CdmBase sessionObject)"); Criteria crit = session.createCriteria(type); - crit.add(Restrictions.ilike("persistentTitleCache", queryString)); + crit.add(Restrictions.ilike("titleCache", queryString)); List results = crit.list(); return results; } public List findByTitleAndClass(String queryString, Class clazz) { - Session session = getSession(); - Criteria crit = session.createCriteria(clazz); - crit.add(Restrictions.ilike("persistentTitleCache", queryString)); + checkNotInPriorView("IdentifiableDaoBase.findByTitleAndClass(String queryString, Class clazz)"); + Criteria crit = getSession().createCriteria(clazz); + crit.add(Restrictions.ilike("titleCache", queryString)); List results = crit.list(); return results; } @@ -69,16 +79,16 @@ public class IdentifiableDaoBase extends Annotatab * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String, boolean, int, int, java.util.List) */ public List findByTitle(String queryString, MATCH_MODE matchmode, int page, int pagesize, List criteria) { - + checkNotInPriorView("IdentifiableDaoBase.findByTitle(String queryString, MATCH_MODE matchmode, int page, int pagesize, List criteria)"); Criteria crit = getSession().createCriteria(type); - crit.add(Restrictions.ilike("persistentTitleCache", matchmode.queryStringFrom(queryString))); + crit.add(Restrictions.ilike("titleCache", matchmode.queryStringFrom(queryString))); crit.setMaxResults(pagesize); if(criteria != null){ for (Criterion criterion : criteria) { crit.add(criterion); } } - crit.addOrder(Order.asc("persistentTitleCache")); + crit.addOrder(Order.asc("titleCache")); int firstItem = (page - 1) * pagesize; crit.setFirstResult(firstItem); List results = crit.list(); @@ -86,18 +96,21 @@ public class IdentifiableDaoBase extends Annotatab } public int countRights(T identifiableEntity) { + checkNotInPriorView("IdentifiableDaoBase.countRights(T identifiableEntity)"); Query query = getSession().createQuery("select count(rights) from " + type.getSimpleName() + " identifiableEntity join identifiableEntity.rights rights where identifiableEntity = :identifiableEntity"); query.setParameter("identifiableEntity",identifiableEntity); return ((Long)query.uniqueResult()).intValue(); } public int countSources(T identifiableEntity) { + checkNotInPriorView("IdentifiableDaoBase.countSources(T identifiableEntity)"); Query query = getSession().createQuery("select count(source) from OriginalSource source where source.sourcedObj = :identifiableEntity"); query.setParameter("identifiableEntity",identifiableEntity); return ((Long)query.uniqueResult()).intValue(); } public List getRights(T identifiableEntity, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("IdentifiableDaoBase.getRights(T identifiableEntity, Integer pageSize, Integer pageNumber)"); Query query = getSession().createQuery("select rights from " + type.getSimpleName() + " identifiableEntity join identifiableEntity.rights rights where identifiableEntity = :identifiableEntity"); query.setParameter("identifiableEntity",identifiableEntity); @@ -114,9 +127,10 @@ public class IdentifiableDaoBase extends Annotatab } public List getSources(T identifiableEntity, Integer pageSize, Integer pageNumber) { - Query query = getSession().createQuery("select source from OriginalSource source where source.sourcedObj = :identifiableEntity"); - query.setParameter("identifiableEntity",identifiableEntity); - + checkNotInPriorView("IdentifiableDaoBase.getSources(T identifiableEntity, Integer pageSize, Integer pageNumber)"); + Query query = getSession().createQuery("select source from OriginalSource source where source.sourcedObj.id = :id and source.sourcedObj.class = :class"); + query.setParameter("id",identifiableEntity.getId()); + query.setParameter("class",identifiableEntity.getClass().getName()); if(pageSize != null) { query.setMaxResults(pageSize); if(pageNumber != null) { @@ -125,23 +139,57 @@ public class IdentifiableDaoBase extends Annotatab query.setFirstResult(0); } } - + return (List)query.list(); } public List findOriginalSourceByIdInSource(String idInSource, String idNamespace) { - Session session = getSession(); - Query q = session.createQuery( + checkNotInPriorView("IdentifiableDaoBase.findOriginalSourceByIdInSource(String idInSource, String idNamespace)"); + Query query = getSession().createQuery( "Select c from " + type.getSimpleName() + " as c " + "inner join c.sources as source " + "where source.idInSource = :idInSource " + " AND source.idNamespace = :idNamespace" ); - q.setString("idInSource", idInSource); - q.setString("idNamespace", idNamespace); - //TODO integrate reference in where - List results = (List)q.list(); + query.setString("idInSource", idInSource); + query.setString("idNamespace", idNamespace); + //TODO integrate reference in where + return (List)query.list(); + } + + public T find(LSID lsid) { + checkNotInPriorView("IdentifiableDaoBase.find(LSID lsid)"); + Criteria criteria = getSession().createCriteria(type); + criteria.add(Restrictions.eq("lsid.authority", lsid.getAuthority())); + criteria.add(Restrictions.eq("lsid.namespace", lsid.getNamespace())); + criteria.add(Restrictions.eq("lsid.object", lsid.getObject())); - return results; + if(lsid.getRevision() != null) { + criteria.add(Restrictions.eq("lsid.revision", lsid.getRevision())); + } + + T object = (T)criteria.uniqueResult(); + if(object != null) { + return object; + } else { + AuditQuery query = getAuditReader().createQuery().forRevisionsOfEntity(type, false, true); + query.add(AuditEntity.property("lsid_authority").eq(lsid.getAuthority())); + query.add(AuditEntity.property("lsid_namespace").eq(lsid.getNamespace())); + query.add(AuditEntity.property("lsid_object").eq(lsid.getObject())); + + if(lsid.getRevision() != null) { + query.add(AuditEntity.property("lsid_revision").eq(lsid.getRevision())); + } + + query.addOrder(AuditEntity.revisionNumber().asc()); + query.setMaxResults(1); + query.setFirstResult(0); + List objs = (List)query.getResultList(); + if(objs.isEmpty()) { + return null; + } else { + return (T)objs.get(0)[0]; + } + } } } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LsidAuthorityDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LsidAuthorityDaoImpl.java new file mode 100644 index 0000000000..ce22769e33 --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/LsidAuthorityDaoImpl.java @@ -0,0 +1,25 @@ +package eu.etaxonomy.cdm.persistence.dao.hibernate.common; + +import org.hibernate.Query; +import org.springframework.stereotype.Repository; + +import eu.etaxonomy.cdm.model.common.IIdentifiableEntity; +import eu.etaxonomy.cdm.model.common.LSID; +import eu.etaxonomy.cdm.model.common.LSIDAuthority; +import eu.etaxonomy.cdm.persistence.dao.common.ILsidAuthorityDao; + +@Repository +public class LsidAuthorityDaoImpl extends CdmEntityDaoBase implements + ILsidAuthorityDao { + + public LsidAuthorityDaoImpl() { + super(LSIDAuthority.class); + } + + public Class getClassForNamespace(LSID lsid) { + Query query = getSession().createQuery("select clazz from LSIDAuthority authority join authority.namespaces clazz where authority.authority = :authority and index(clazz) = :namespace"); + query.setParameter("authority",lsid.getAuthority()); + query.setParameter("namespace", lsid.getNamespace()); + return (Class)query.uniqueResult(); + } +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java index 0e74071eb3..0016c68905 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java @@ -12,10 +12,13 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.common; import java.util.List; import org.hibernate.Query; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.stereotype.Repository; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.TermVocabulary; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao; /** @@ -23,7 +26,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao; * */ @Repository -public class TermVocabularyDaoImpl extends CdmEntityDaoBase> implements +public class TermVocabularyDaoImpl extends VersionableDaoBase> implements ITermVocabularyDao { @@ -35,24 +38,47 @@ public class TermVocabularyDaoImpl extends CdmEntityDaoBase List getTerms(TermVocabulary termVocabulary, Integer pageSize, Integer pageNumber) { - Query query = getSession().createQuery("select term from TermVocabulary termVocabulary join termVocabulary.terms term where termVocabulary = :termVocabulary"); - query.setParameter("termVocabulary", termVocabulary); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select term from DefinedTermBase term where term.vocabulary = :vocabulary"); + query.setParameter("vocabulary", termVocabulary); - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } } - } - return (List)query.list(); + return (List)query.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("vocabulary").eq(termVocabulary.getId())); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } + } + + return (List)query.getResultList(); + } } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/VersionableDaoBase.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/VersionableDaoBase.java new file mode 100644 index 0000000000..f3961b4fa8 --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/VersionableDaoBase.java @@ -0,0 +1,217 @@ +package eu.etaxonomy.cdm.persistence.dao.hibernate.common; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hibernate.envers.AuditReader; +import org.hibernate.envers.AuditReaderFactory; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; + +import eu.etaxonomy.cdm.model.common.VersionableEntity; +import eu.etaxonomy.cdm.model.view.AuditEvent; +import eu.etaxonomy.cdm.model.view.AuditEventRecord; +import eu.etaxonomy.cdm.model.view.AuditEventRecordImpl; +import eu.etaxonomy.cdm.model.view.context.AuditEventContext; +import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder; +import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort; +import eu.etaxonomy.cdm.persistence.dao.common.IVersionableDao; +import eu.etaxonomy.cdm.persistence.dao.common.OperationNotSupportedInPriorViewException; + +public abstract class VersionableDaoBase extends CdmEntityDaoBase implements IVersionableDao { + + private static Log log = LogFactory.getLog(VersionableDaoBase.class); + + protected AuditReader getAuditReader() { + return AuditReaderFactory.get(getSession()); + } + + public VersionableDaoBase(Class type) { + super(type); + } + + protected AuditEvent getAuditEventFromContext() { + AuditEventContext auditEventContext = AuditEventContextHolder.getContext(); + + AuditEvent auditEvent = auditEventContext.getAuditEvent(); + if(auditEvent != null) { + return auditEvent; + } else { + return AuditEvent.CURRENT_VIEW; + } + } + + protected void checkNotInPriorView(String message) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(!auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + throw new OperationNotSupportedInPriorViewException(message); + } + } + + + @Override + public T findByUuid(UUID uuid) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + return super.findByUuid(uuid); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property("uuid").eq(uuid)); + // TODO initialize bits + return (T)query.getSingleResult(); + } + } + + @Override + public Boolean exists(UUID uuid) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + return super.exists(uuid); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property("uuid").eq(uuid)); + return null != (T)query.getSingleResult(); + } + } + + @Override + public int count() { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + return super.count(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } + } + + @Override + public int count(Class type) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + return super.count(type); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } + } + + @Override + public List list(Integer limit, Integer start) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + return super.list(limit, start); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + if(limit != null) { + query.setMaxResults(limit); + query.setFirstResult(start); + } + return (List)query.getResultList(); + } + } + + @Override + public List list(Class type, Integer limit, Integer start) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + return super.list(type,limit, start); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + if(limit != null) { + query.setMaxResults(limit); + query.setFirstResult(start); + } + return (List)query.getResultList(); + } + } + + public List> getAuditEvents(T t, Integer pageSize, Integer pageNumber, AuditEventSort sort) { + AuditEvent auditEvent = getAuditEventFromContext(); + + AuditQuery query = getAuditReader().createQuery().forRevisionsOfEntity(type, false, true); + query.add(AuditEntity.id().eq(t.getId())); + if(sort == null) { + sort = AuditEventSort.BACKWARDS; + } + + if(sort.equals(AuditEventSort.BACKWARDS)) { + if(!auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + query.add(AuditEntity.revisionNumber().lt(auditEvent.getRevisionNumber())); + } + query.addOrder(AuditEntity.revisionNumber().desc()); + } else { + if(!auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + query.add(AuditEntity.revisionNumber().gt(auditEvent.getRevisionNumber())); + } + query.addOrder(AuditEntity.revisionNumber().asc()); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + /** + * At the moment we need to transform the data manually + */ + List objs = (List)query.getResultList(); + List> records = new ArrayList>(); + + for(Object[] obj : objs) { + records.add(new AuditEventRecordImpl(obj)); + } + + return records; + } + + public Integer countAuditEvents(T t, AuditEventSort sort) { + AuditEvent auditEvent = getAuditEventFromContext(); + + AuditQuery query = getAuditReader().createQuery().forRevisionsOfEntity(type, false, true); + query.add(AuditEntity.id().eq(t.getId())); + + if(!auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + if(sort == null) { + sort = AuditEventSort.BACKWARDS; + } + + if(sort.equals(AuditEventSort.BACKWARDS)) { + query.add(AuditEntity.revisionNumber().lt(auditEvent.getRevisionNumber())); + } else { + query.add(AuditEntity.revisionNumber().gt(auditEvent.getRevisionNumber())); + } + } + + query.addProjection(AuditEntity.revisionNumber().count()); + + return ((Long)query.getSingleResult()).intValue(); + } + + public AuditEventRecord getNextAuditEvent(T t) { + List> auditEvents = getAuditEvents(t,1,0,AuditEventSort.FORWARDS); + if(auditEvents.isEmpty()) { + return null; + } else { + return auditEvents.get(0); + } + } + + public AuditEventRecord getPreviousAuditEvent(T t) { + List> auditEvents = getAuditEvents(t,1,0,AuditEventSort.BACKWARDS); + if(auditEvents.isEmpty()) { + return null; + } else { + return auditEvents.get(0); + } + } +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java index 5bbd3f1252..3cef2ec4f7 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java @@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.description; import java.util.ArrayList; import java.util.HashSet; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -19,9 +20,12 @@ import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; +import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.description.DescriptionBase; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Feature; @@ -32,6 +36,7 @@ import eu.etaxonomy.cdm.model.description.TaxonNameDescription; import eu.etaxonomy.cdm.model.location.NamedArea; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao; import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; @@ -48,6 +53,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp } public int countDescriptionByDistribution(Set namedAreas, PresenceAbsenceTermBase status) { + checkNotInPriorView("DescriptionDaoImpl.countDescriptionByDistribution(Set namedAreas, PresenceAbsenceTermBase status)"); Query query = null; if(status == null) { @@ -61,23 +67,52 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp return ((Long)query.uniqueResult()).intValue(); } - public int countDescriptionElements(DescriptionBase description, Set features, Class type) { - Criteria criteria = getSession().createCriteria(type); + public int countDescriptionElements(DescriptionBase description, Set features, Class type) { + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(type); - if(description != null) { - criteria.add(Restrictions.eq("inDescription", description)); - } + if(description != null) { + criteria.add(Restrictions.eq("inDescription", description)); + } - if(features != null && !features.isEmpty()) { - criteria.add(Restrictions.in("feature", features)); - } + if(features != null && !features.isEmpty()) { + criteria.add(Restrictions.in("feature", features)); + } - criteria.setProjection(Projections.rowCount()); + criteria.setProjection(Projections.rowCount()); - return (Integer)criteria.uniqueResult(); + return (Integer)criteria.uniqueResult(); + } else { + if(features != null && !features.isEmpty()) { + Integer count = 0; + for(Feature f : features) { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + + if(description != null) { + query.add(AuditEntity.relatedId("inDescription").eq(description.getId())); + } + + query.add(AuditEntity.relatedId("feature").eq(f.getId())); + query.addProjection(AuditEntity.id().count("id")); + count += ((Long)query.getSingleResult()).intValue(); + } + + return count; + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + + if(description != null) { + query.add(AuditEntity.relatedId("inDescription").eq(description.getId())); + } + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } + } } public int countDescriptions(Class type, Boolean hasImages, Boolean hasText, Set features) { + checkNotInPriorView("DescriptionDaoImpl.countDescriptions(Class type, Boolean hasImages, Boolean hasText, Set features)"); Criteria inner = getSession().createCriteria(type); Criteria elementsCriteria = inner.createCriteria("elements"); if(hasText != null) { @@ -106,6 +141,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp } public int countTaxonDescriptions(Taxon taxon, Set scopes,Set geographicalScopes) { + checkNotInPriorView("DescriptionDaoImpl.countTaxonDescriptions(Taxon taxon, Set scopes,Set geographicalScopes)"); Criteria criteria = getSession().createCriteria(TaxonDescription.class); if(taxon != null) { @@ -134,27 +170,55 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp } public List getDescriptionElements(DescriptionBase description, Set features, Class type, Integer pageSize, Integer pageNumber) { - Criteria criteria = getSession().createCriteria(type); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(type); - if(description != null) { - criteria.add(Restrictions.eq("inDescription", description)); - } + if(description != null) { + criteria.add(Restrictions.eq("inDescription", description)); + } - if(features != null && !features.isEmpty()) { - criteria.add(Restrictions.in("feature", features)); - } + if(features != null && !features.isEmpty()) { + criteria.add(Restrictions.in("feature", features)); + } - if(pageSize != null) { - criteria.setMaxResults(pageSize); - if(pageNumber != null) { - criteria.setFirstResult(pageNumber * pageSize); + if(pageSize != null) { + criteria.setMaxResults(pageSize); + if(pageNumber != null) { + criteria.setFirstResult(pageNumber * pageSize); + } } - } - return (List)criteria.list(); + return (List)criteria.list(); + } else { + if(features != null && !features.isEmpty()) { + List result = new ArrayList(); + for(Feature f : features) { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + + if(description != null) { + query.add(AuditEntity.relatedId("inDescription").eq(description.getId())); + } + + query.add(AuditEntity.relatedId("feature").eq(f.getId())); + result.addAll((List)query.getResultList()); + } + + return result; + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber()); + + if(description != null) { + query.add(AuditEntity.relatedId("inDescription").eq(description.getId())); + } + + return (List)query.getResultList(); + } + } } public List getTaxonDescriptions(Taxon taxon, Set scopes, Set geographicalScopes,Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DescriptionDaoImpl.getTaxonDescriptions(Taxon taxon, Set scopes, Set geographicalScopes,Integer pageSize, Integer pageNumber)"); Criteria criteria = getSession().createCriteria(TaxonDescription.class); if(taxon != null) { @@ -188,33 +252,62 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp } public List getTaxonNameDescriptions(TaxonNameBase name, Integer pageSize, Integer pageNumber) { - Criteria criteria = getSession().createCriteria(TaxonNameDescription.class); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(TaxonNameDescription.class); - if(name != null) { - criteria.add(Restrictions.eq("taxonName", name)); - } + if(name != null) { + criteria.add(Restrictions.eq("taxonName", name)); + } - if(pageSize != null) { - criteria.setMaxResults(pageSize); - if(pageNumber != null) { - criteria.setFirstResult(pageNumber * pageSize); - } - } + if(pageSize != null) { + criteria.setMaxResults(pageSize); + if(pageNumber != null) { + criteria.setFirstResult(pageNumber * pageSize); + } + } - return (List)criteria.list(); + return (List)criteria.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonNameDescription.class,auditEvent.getRevisionNumber()); + + if(name != null) { + query.add(AuditEntity.relatedId("taxonName").eq(name.getId())); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } + } + return (List)query.getResultList(); + } } public int countTaxonNameDescriptions(TaxonNameBase name) { - Criteria criteria = getSession().createCriteria(TaxonNameDescription.class); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(TaxonNameDescription.class); - if(name != null) { - criteria.add(Restrictions.eq("taxonName", name)); - } + if(name != null) { + criteria.add(Restrictions.eq("taxonName", name)); + } - criteria.setProjection(Projections.rowCount()); + criteria.setProjection(Projections.rowCount()); - return (Integer)criteria.uniqueResult(); + return (Integer)criteria.uniqueResult(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonNameDescription.class,auditEvent.getRevisionNumber()); + + if(name != null) { + query.add(AuditEntity.relatedId("taxonName").eq(name.getId())); + } + + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); + } } /** @@ -225,6 +318,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp * outer.add(Subqueries.propertyIn("id", inner)); */ public List listDescriptions(Class type, Boolean hasImages, Boolean hasText, Set features, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DescriptionDaoImpl.listDescriptions(Class type, Boolean hasImages, Boolean hasText, Set features, Integer pageSize, Integer pageNumber)"); Criteria inner = getSession().createCriteria(type); Criteria elementsCriteria = inner.createCriteria("elements"); if(hasText != null) { @@ -249,20 +343,15 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp inner.setProjection(Projections.distinct(Projections.id())); -// Criteria outer = getSession().createCriteria(type); -// outer.add(Restrictions.in("id", (List)inner.list())); - List ids = (List)inner.list(); - + if(ids.isEmpty()) { - return new ArrayList(); + return new ArrayList(); } - + Criteria outer = getSession().createCriteria(type); outer.add(Restrictions.in("id", ids)); - - if(pageSize != null) { outer.setMaxResults(pageSize); if(pageNumber != null) { @@ -274,6 +363,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase imp } public List searchDescriptionByDistribution(Set namedAreas, PresenceAbsenceTermBase status, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DescriptionDaoImpl.searchDescriptionByDistribution(Set namedAreas, PresenceAbsenceTermBase status, Integer pageSize, Integer pageNumber)"); Query query = null; if(status == null) { diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java index 2ed348d752..f07bf0c1f5 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java @@ -32,6 +32,7 @@ public class DescriptionElementDaoImpl extends AnnotatableDaoImpl getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DescriptionElementDaoImpl.getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber)"); Query query = getSession().createQuery("select media from DescriptionElementBase descriptionElement join descriptionElement.media media where descriptionElement = :descriptionElement"); query.setParameter("descriptionElement", descriptionElement); @@ -69,6 +72,7 @@ public class DescriptionElementDaoImpl extends AnnotatableDaoImpl searchTextData(String queryString, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("DescriptionElementDaoImpl.searchTextData(String queryString, Integer pageSize, Integer pageNumber)"); QueryParser queryParser = new QueryParser("multilanguageText.text", new SimpleAnalyzer()); try { diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoHibernateImpl.java index fddfae7fe0..a56fdeddd8 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoHibernateImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoHibernateImpl.java @@ -35,6 +35,7 @@ public class MediaDaoHibernateImpl extends AnnotatableDaoImpl } public int countIdentificationKeys(Set taxonomicScope, Set geoScopes) { + checkNotInPriorView("MediaDaoHibernateImpl.countIdentificationKeys(Set taxonomicScope, Set geoScopes)"); Criteria criteria = getSession().createCriteria(IdentificationKey.class); if(taxonomicScope != null && !taxonomicScope.isEmpty()) { @@ -59,6 +60,7 @@ public class MediaDaoHibernateImpl extends AnnotatableDaoImpl } public List getIdentificationKeys(Set taxonomicScope, Set geoScopes, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("MediaDaoHibernateImpl.getIdentificationKeys(Set taxonomicScope, Set geoScopes, Integer pageSize, Integer pageNumber)"); Criteria inner = getSession().createCriteria(IdentificationKey.class); if(taxonomicScope != null && !taxonomicScope.isEmpty()) { diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java index 06fa0679af..9e58204456 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java @@ -16,6 +16,8 @@ import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -28,8 +30,7 @@ import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.name.TypeDesignationBase; import eu.etaxonomy.cdm.model.name.TypeDesignationStatus; -import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao; @@ -40,8 +41,8 @@ import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao; @Repository @Qualifier("taxonNameDaoHibernateImpl") public class TaxonNameDaoHibernateImpl - extends IdentifiableDaoBase implements ITaxonNameDao { - +extends IdentifiableDaoBase implements ITaxonNameDao { + @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(TaxonNameDaoHibernateImpl.class); @@ -50,19 +51,32 @@ public class TaxonNameDaoHibernateImpl } public int countHybridNames(BotanicalName name, HybridRelationshipType type) { - Query query = null; - if(type == null) { - query = getSession().createQuery("select count(relation) from HybridRelationship relation where relation.relatedFrom = :name"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + if(type == null) { + query = getSession().createQuery("select count(relation) from HybridRelationship relation where relation.relatedFrom = :name"); + } else { + query = getSession().createQuery("select count(relation) from HybridRelationship relation where relation.relatedFrom = :name and relation.type = :type"); + query.setParameter("type", type); + } + query.setParameter("name",name); + return ((Long)query.uniqueResult()).intValue(); } else { - query = getSession().createQuery("select count(relation) from HybridRelationship relation where relation.relatedFrom = :name and relation.type = :type"); - query.setParameter("type", type); + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(HybridRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedFrom").eq(name.getId())); + query.addProjection(AuditEntity.id().count("id")); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + return ((Long)query.getSingleResult()).intValue(); } - query.setParameter("name",name); - return ((Long)query.uniqueResult()).intValue(); } public int countNames(String queryString) { - + checkNotInPriorView("TaxonNameDaoHibernateImpl.countNames(String queryString)"); Criteria criteria = getSession().createCriteria(TaxonNameBase.class); if (queryString != null) { @@ -74,131 +88,259 @@ public class TaxonNameDaoHibernateImpl } public int countNames(String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank) { - Criteria criteria = getSession().createCriteria(TaxonNameBase.class); - - /** - * Given HHH-2951 - "Restrictions.eq when passed null, should create a NullRestriction" - * We need to convert nulls to NullRestrictions for now - */ - if(genusOrUninomial != null) { - criteria.add(Restrictions.eq("genusOrUninomial",genusOrUninomial)); - } else { - criteria.add(Restrictions.isNull("genusOrUninomial")); - } - - if(infraGenericEpithet != null) { - criteria.add(Restrictions.eq("infraGenericEpithet", infraGenericEpithet)); - } else { - criteria.add(Restrictions.isNull("infraGenericEpithet")); - } - - if(specificEpithet != null) { - criteria.add(Restrictions.eq("specificEpithet", specificEpithet)); - } else { - criteria.add(Restrictions.isNull("specificEpithet")); - } - - if(infraSpecificEpithet != null) { - criteria.add(Restrictions.eq("infraSpecificEpithet",infraSpecificEpithet)); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(TaxonNameBase.class); + + /** + * Given HHH-2951 - "Restrictions.eq when passed null, should create a NullRestriction" + * We need to convert nulls to NullRestrictions for now + */ + if(genusOrUninomial != null) { + criteria.add(Restrictions.eq("genusOrUninomial",genusOrUninomial)); + } else { + criteria.add(Restrictions.isNull("genusOrUninomial")); + } + + if(infraGenericEpithet != null) { + criteria.add(Restrictions.eq("infraGenericEpithet", infraGenericEpithet)); + } else { + criteria.add(Restrictions.isNull("infraGenericEpithet")); + } + + if(specificEpithet != null) { + criteria.add(Restrictions.eq("specificEpithet", specificEpithet)); + } else { + criteria.add(Restrictions.isNull("specificEpithet")); + } + + if(infraSpecificEpithet != null) { + criteria.add(Restrictions.eq("infraSpecificEpithet",infraSpecificEpithet)); + } else { + criteria.add(Restrictions.isNull("infraSpecificEpithet")); + } + + if(rank != null) { + criteria.add(Restrictions.eq("rank", rank)); + } + + criteria.setProjection(Projections.rowCount()); + return (Integer)criteria.uniqueResult(); } else { - criteria.add(Restrictions.isNull("infraSpecificEpithet")); + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonNameBase.class,auditEvent.getRevisionNumber()); + + if(genusOrUninomial != null) { + query.add(AuditEntity.property("genusOrUninomial").eq(genusOrUninomial)); + } else { + query.add(AuditEntity.property("genusOrUninomial").isNull()); + } + + if(infraGenericEpithet != null) { + query.add(AuditEntity.property("infraGenericEpithet").eq(infraGenericEpithet)); + } else { + query.add(AuditEntity.property("infraGenericEpithet").isNull()); + } + + if(specificEpithet != null) { + query.add(AuditEntity.property("specificEpithet").eq(specificEpithet)); + } else { + query.add(AuditEntity.property("specificEpithet").isNull()); + } + + if(infraSpecificEpithet != null) { + query.add(AuditEntity.property("infraSpecificEpithet").eq(infraSpecificEpithet)); + } else { + query.add(AuditEntity.property("infraSpecificEpithet").isNull()); + } + + if(rank != null) { + query.add(AuditEntity.relatedId("rank").eq(rank.getId())); + } + + query.addProjection(AuditEntity.id().count("id")); + return ((Long)query.getSingleResult()).intValue(); } - criteria.add(Restrictions.eq("rank", rank)); - - criteria.setProjection(Projections.rowCount()); - return (Integer)criteria.uniqueResult(); } public int countRelatedNames(TaxonNameBase name, NameRelationshipType type) { - Query query = null; - if(type == null) { - query = getSession().createQuery("select count(relation) from NameRelationship relation where relation.relatedFrom = :name"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + if(type == null) { + query = getSession().createQuery("select count(relation) from NameRelationship relation where relation.relatedFrom = :name"); + } else { + query = getSession().createQuery("select count(relation) from NameRelationship relation where relation.relatedFrom = :name and relation.type = :type"); + query.setParameter("type", type); + } + query.setParameter("name",name); + return ((Long)query.uniqueResult()).intValue(); } else { - query = getSession().createQuery("select count(relation) from NameRelationship relation where relation.relatedFrom = :name and relation.type = :type"); - query.setParameter("type", type); + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(NameRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedFrom").eq(name.getId())); + query.addProjection(AuditEntity.id().count("id")); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + return ((Long)query.getSingleResult()).intValue(); } - query.setParameter("name",name); - return ((Long)query.uniqueResult()).intValue(); } public int countTypeDesignations(TaxonNameBase name, TypeDesignationStatus status) { - Query query = null; - if(status == null) { - query = getSession().createQuery("select count(designation) from TypeDesignationBase designation join designation.typifiedNames name where name = :name"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + if(status == null) { + query = getSession().createQuery("select count(designation) from TypeDesignationBase designation join designation.typifiedNames name where name = :name"); + } else { + query = getSession().createQuery("select count(designation) from TypeDesignationBase designation join designation.typifiedNames name where name = :name and designation.typeStatus = :status"); + query.setParameter("status", status); + } + query.setParameter("name",name); + return ((Long)query.uniqueResult()).intValue(); } else { - query = getSession().createQuery("select count(designation) from TypeDesignationBase designation join designation.typifiedNames name where name = :name and designation.typeStatus = :status"); - query.setParameter("status", status); + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TypeDesignationBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("typifiedNames").eq(name.getId())); + query.addProjection(AuditEntity.id().count("id")); + + if(type != null) { + query.add(AuditEntity.relatedId("typeStatus").eq(status.getId())); + } + + return ((Long)query.getSingleResult()).intValue(); } - query.setParameter("name",name); - return ((Long)query.uniqueResult()).intValue(); } public List getHybridNames(BotanicalName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber) { - Query query = null; - if(type == null) { - query = getSession().createQuery("select relation from HybridRelationship relation where relation.relatedFrom = :name"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + if(type == null) { + query = getSession().createQuery("select relation from HybridRelationship relation where relation.relatedFrom = :name"); + } else { + query = getSession().createQuery("select relation from HybridRelationship relation where relation.relatedFrom = :name and relation.type = :type"); + query.setParameter("type", type); + } + query.setParameter("name",name); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + return (List)query.list(); } else { - query = getSession().createQuery("select relation from HybridRelationship relation where relation.relatedFrom = :name and relation.type = :type"); - query.setParameter("type", type); - } - query.setParameter("name",name); - - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); - } + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(HybridRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedFrom").eq(name.getId())); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.getResultList(); } - return (List)query.list(); } public List getRelatedNames(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber) { - Query query = null; - if(type == null) { - query = getSession().createQuery("select relation from NameRelationship relation where relation.relatedFrom = :name"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + if(type == null) { + query = getSession().createQuery("select relation from NameRelationship relation where relation.relatedFrom = :name"); + } else { + query = getSession().createQuery("select relation from NameRelationship relation where relation.relatedFrom = :name and relation.type = :type"); + query.setParameter("type", type); + } + query.setParameter("name",name); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + return (List)query.list(); } else { - query = getSession().createQuery("select relation from NameRelationship relation where relation.relatedFrom = :name and relation.type = :type"); - query.setParameter("type", type); - } - query.setParameter("name",name); - - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); - } + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(NameRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedFrom").eq(name.getId())); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.getResultList(); } - return (List)query.list(); } public List getTypeDesignations(TaxonNameBase name, TypeDesignationStatus status, Integer pageSize, Integer pageNumber) { - Query query = null; - if(status == null) { - query = getSession().createQuery("select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + if(status == null) { + query = getSession().createQuery("select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name"); + } else { + query = getSession().createQuery("select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name and designation.typeStatus = :status"); + query.setParameter("status", status); + } + query.setParameter("name",name); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + return (List)query.list(); } else { - query = getSession().createQuery("select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name and designation.typeStatus = :status"); - query.setParameter("status", status); - } - query.setParameter("name",name); - - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); - } + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TypeDesignationBase.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("typifiedNames").eq(name.getId())); + + if(type != null) { + query.add(AuditEntity.relatedId("typeStatus").eq(status.getId())); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.getResultList(); } - return (List)query.list(); } public List> searchNames(String queryString, Integer pageSize, Integer pageNumber) { - + checkNotInPriorView("TaxonNameDaoHibernateImpl.searchNames(String queryString, Integer pageSize, Integer pageNumber)"); Criteria criteria = getSession().createCriteria(TaxonNameBase.class); if (queryString != null) { @@ -218,47 +360,94 @@ public class TaxonNameDaoHibernateImpl public List searchNames(String genusOrUninomial,String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank, Integer pageSize,Integer pageNumber) { - Criteria criteria = getSession().createCriteria(TaxonNameBase.class); - - /** - * Given HHH-2951 - "Restrictions.eq when passed null, should create a NullRestriction" - * We need to convert nulls to NullRestrictions for now - */ - if(genusOrUninomial != null) { - criteria.add(Restrictions.eq("genusOrUninomial",genusOrUninomial)); - } else { - criteria.add(Restrictions.isNull("genusOrUninomial")); - } - - if(infraGenericEpithet != null) { - criteria.add(Restrictions.eq("infraGenericEpithet", infraGenericEpithet)); - } else { - criteria.add(Restrictions.isNull("infraGenericEpithet")); - } - - if(specificEpithet != null) { - criteria.add(Restrictions.eq("specificEpithet", specificEpithet)); - } else { - criteria.add(Restrictions.isNull("specificEpithet")); - } - - if(infraSpecificEpithet != null) { - criteria.add(Restrictions.eq("infraSpecificEpithet",infraSpecificEpithet)); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(TaxonNameBase.class); + + /** + * Given HHH-2951 - "Restrictions.eq when passed null, should create a NullRestriction" + * We need to convert nulls to NullRestrictions for now + */ + if(genusOrUninomial != null) { + criteria.add(Restrictions.eq("genusOrUninomial",genusOrUninomial)); + } else { + criteria.add(Restrictions.isNull("genusOrUninomial")); + } + + if(infraGenericEpithet != null) { + criteria.add(Restrictions.eq("infraGenericEpithet", infraGenericEpithet)); + } else { + criteria.add(Restrictions.isNull("infraGenericEpithet")); + } + + if(specificEpithet != null) { + criteria.add(Restrictions.eq("specificEpithet", specificEpithet)); + } else { + criteria.add(Restrictions.isNull("specificEpithet")); + } + + if(infraSpecificEpithet != null) { + criteria.add(Restrictions.eq("infraSpecificEpithet",infraSpecificEpithet)); + } else { + criteria.add(Restrictions.isNull("infraSpecificEpithet")); + } + + if(rank != null) { + criteria.add(Restrictions.eq("rank", rank)); + } + + if(pageSize != null) { + criteria.setMaxResults(pageSize); + if(pageNumber != null) { + criteria.setFirstResult(pageNumber * pageSize); + } else { + criteria.setFirstResult(0); + } + } + + return (List)criteria.list(); } else { - criteria.add(Restrictions.isNull("infraSpecificEpithet")); - } - criteria.add(Restrictions.eq("rank", rank)); - - if(pageSize != null) { - criteria.setMaxResults(pageSize); - if(pageNumber != null) { - criteria.setFirstResult(pageNumber * pageSize); - } else { - criteria.setFirstResult(0); - } - } + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonNameBase.class,auditEvent.getRevisionNumber()); + + if(genusOrUninomial != null) { + query.add(AuditEntity.property("genusOrUninomial").eq(genusOrUninomial)); + } else { + query.add(AuditEntity.property("genusOrUninomial").isNull()); + } - return (List)criteria.list(); + if(infraGenericEpithet != null) { + query.add(AuditEntity.property("infraGenericEpithet").eq(infraGenericEpithet)); + } else { + query.add(AuditEntity.property("infraGenericEpithet").isNull()); + } + + if(specificEpithet != null) { + query.add(AuditEntity.property("specificEpithet").eq(specificEpithet)); + } else { + query.add(AuditEntity.property("specificEpithet").isNull()); + } + + if(infraSpecificEpithet != null) { + query.add(AuditEntity.property("infraSpecificEpithet").eq(infraSpecificEpithet)); + } else { + query.add(AuditEntity.property("infraSpecificEpithet").isNull()); + } + + if(rank != null) { + query.add(AuditEntity.relatedId("rank").eq(rank.getId())); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.getResultList(); + } } } \ No newline at end of file diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java index 89b40e9d1b..77db12c7c9 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java @@ -4,9 +4,12 @@ import java.util.List; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.stereotype.Repository; import eu.etaxonomy.cdm.model.occurrence.Collection; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; import eu.etaxonomy.cdm.persistence.dao.occurrence.ICollectionDao; @@ -19,10 +22,16 @@ public class CollectionDaoHibernateImpl extends IdentifiableDaoBase } public List getCollectionByCode(String code) { - Criteria crit = getSession().createCriteria(Collection.class); - - crit.add(Restrictions.eq("code", code)); - List results = crit.list(); - return results; + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria crit = getSession().createCriteria(Collection.class); + crit.add(Restrictions.eq("code", code)); + + return (List)crit.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(Collection.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.property("code").eq(code)); + return (List)query.getResultList(); + } } } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java index fe041fd8c4..e0e4ece4e9 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java @@ -10,12 +10,15 @@ import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Query; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; import org.springframework.stereotype.Repository; import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.occurrence.DerivationEvent; import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; import eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl; import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao; @@ -36,6 +39,7 @@ public class OccurrenceDaoHibernateImpl extends IdentifiableDaoBase getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber) { + checkNotInPriorView("OccurrenceDaoHibernateImpl.getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber)"); Query query = getSession().createQuery("select distinct derivationEvent from DerivationEvent derivationEvent join derivationEvent.originals occurence where occurence = :occurence"); query.setParameter("occurence", occurence); @@ -72,22 +87,39 @@ public class OccurrenceDaoHibernateImpl extends IdentifiableDaoBase getDeterminations(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber) { - Query query = getSession().createQuery("select determination from DeterminationEvent determination where determination.identifiedUnit = :occurence"); - query.setParameter("occurence", occurence); - - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); - } + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = getSession().createQuery("select determination from DeterminationEvent determination where determination.identifiedUnit = :occurence"); + query.setParameter("occurence", occurence); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DeterminationEvent.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("identifiedUnit").eq(occurence.getId())); + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.getResultList(); } - - return (List)query.list(); } public List getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("OccurrenceDaoHibernateImpl.getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber)"); Query query = getSession().createQuery("select media from SpecimenOrObservationBase occurence join occurence.media media where occurence = :occurence"); query.setParameter("occurence", occurence); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonAlternativeSpellingSuggestionParser.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonAlternativeSpellingSuggestionParser.java index 039fb1ea82..513ba2e267 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonAlternativeSpellingSuggestionParser.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonAlternativeSpellingSuggestionParser.java @@ -10,7 +10,7 @@ import org.springmodules.lucene.index.factory.IndexFactory; import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser; -//@Component //FIXME +@Component public class TaxonAlternativeSpellingSuggestionParser extends AlternativeSpellingSuggestionParser { public TaxonAlternativeSpellingSuggestionParser() { diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java index 1a02c3dfc4..742c8b800f 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java @@ -9,6 +9,9 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.taxon; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.UUID; @@ -24,9 +27,13 @@ import org.hibernate.FetchMode; import org.hibernate.Hibernate; import org.hibernate.LazyInitializationException; import org.hibernate.Query; +import org.hibernate.Transaction; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.AuditQuery; +import org.hibernate.search.FullTextQuery; import org.hibernate.search.FullTextSession; import org.hibernate.search.Search; import org.hibernate.search.SearchFactory; @@ -36,11 +43,16 @@ import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Repository; import eu.etaxonomy.cdm.model.common.Annotation; +import eu.etaxonomy.cdm.model.common.Extension; import eu.etaxonomy.cdm.model.common.Marker; import eu.etaxonomy.cdm.model.common.OriginalSource; import eu.etaxonomy.cdm.model.common.RelationshipBase; +import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry; +import eu.etaxonomy.cdm.model.media.Rights; import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.name.TaxonNameBase; +import eu.etaxonomy.cdm.model.occurrence.Collection; +import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent; import eu.etaxonomy.cdm.model.reference.ReferenceBase; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.SynonymRelationship; @@ -49,6 +61,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonRelationship; import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; +import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.QueryParseException; import eu.etaxonomy.cdm.persistence.dao.common.ITitledDao; import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser; @@ -56,6 +69,15 @@ import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao; import eu.etaxonomy.cdm.persistence.fetch.CdmFetch; +/** + * @author a.mueller + * + */ +/** + * @author a.mueller + * @created 24.11.2008 + * @version 1.0 + */ /** * @author a.mueller * @created 24.11.2008 @@ -66,6 +88,8 @@ import eu.etaxonomy.cdm.persistence.fetch.CdmFetch; public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implements ITaxonDao { private AlternativeSpellingSuggestionParser alternativeSpellingSuggestionParser; + + @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(TaxonDaoHibernateImpl.class); public TaxonDaoHibernateImpl() { @@ -84,12 +108,23 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem return getRootTaxa(sec, CdmFetch.FETCH_CHILDTAXA(), true, false); } - - + @Override + public TaxonBase findByUuid(UUID uuid) { + TaxonBase taxonBase = super.findByUuid(uuid); + if(taxonBase == null) + return taxonBase; + + Hibernate.initialize(taxonBase.getName()); + Hibernate.initialize(taxonBase.getSec()); + + return taxonBase; + } + /* (non-Javadoc) * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, java.lang.Boolean, java.lang.Boolean) */ public List getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications) { + checkNotInPriorView("TaxonDaoHibernateImpl.getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications)"); if (onlyWithChildren == null){ onlyWithChildren = true; } @@ -100,7 +135,6 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem cdmFetch = CdmFetch.NO_FETCH(); } - // String query = "from Taxon root "; // query += " where root.taxonomicParentCache is NULL "; // if (sec != null){ @@ -111,14 +145,12 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem // q.setInteger("sec", sec.getId()); // } - Criteria crit = getSession().createCriteria(Taxon.class); crit.add(Restrictions.isNull("taxonomicParentCache")); if (sec != null){ crit.add(Restrictions.eq("sec", sec) ); } - if (! cdmFetch.includes(CdmFetch.FETCH_CHILDTAXA())){ logger.warn("no child taxa fetch"); //TODO overwrite LAZY (SELECT) does not work (bug in hibernate?) @@ -137,25 +169,27 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } return results; } - + public List getTaxaByName(String queryString, ReferenceBase sec) { return getTaxaByName(queryString, true, sec); } public List getTaxaByName(String queryString, Boolean accepted, ReferenceBase sec) { + checkNotInPriorView("TaxonDaoHibernateImpl.getTaxaByName(String name, ReferenceBase sec)"); - Criteria criteria = null; + Criteria criteria = null; if (accepted == true) { criteria = getSession().createCriteria(Taxon.class); } else { criteria = getSession().createCriteria(Synonym.class); } - + criteria.setFetchMode( "name", FetchMode.JOIN ); criteria.createAlias("name", "name"); - + if (sec != null){ + // FIXME I don't think that we should be saving objects in get methods if(sec.getId() == 0){ getSession().save(sec); } @@ -164,92 +198,116 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem if (queryString != null) { criteria.add(Restrictions.ilike("name.nameCache", queryString)); } - List results = criteria.list(); - return results; + + return (List)criteria.list(); } public List getAllTaxonBases(Integer pagesize, Integer page) { - Criteria crit = getSession().createCriteria(TaxonBase.class); - List results = crit.list(); - // TODO add page & pagesize criteria - return results; + return super.list(pagesize, page); } public List getAllSynonyms(Integer limit, Integer start) { - Criteria crit = getSession().createCriteria(Synonym.class); - List results = crit.list(); - return results; + return super.list(Synonym.class, limit, start); } public List getAllTaxa(Integer limit, Integer start) { - Criteria crit = getSession().createCriteria(Taxon.class); - List results = crit.list(); - return results; + return super.list(Taxon.class, limit, start); } public List getAllRelationships(Integer limit, Integer start) { - Criteria crit = getSession().createCriteria(RelationshipBase.class); - List results = crit.list(); - return results; + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Criteria criteria = getSession().createCriteria(RelationshipBase.class); + return (List)criteria.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(RelationshipBase.class,auditEvent.getRevisionNumber()); + return (List)query.getResultList(); + } } @Override public UUID delete(TaxonBase taxonBase) throws DataAccessException{ - //getSession().update(taxonBase); doesn't work with lazy collections if (taxonBase == null){ logger.warn("TaxonBase was 'null'"); return null; } - //annotations - try { - Set annotations = taxonBase.getAnnotations(); - for (Annotation annotation: annotations){ - taxonBase.removeAnnotation(annotation); - } - } catch (LazyInitializationException e) { - logger.warn("LazyInitializationException: " + e); - } - //markers - try { - Set markers = taxonBase.getMarkers(); - for (Marker marker: markers){ - taxonBase.removeMarker(marker); - } - } catch (LazyInitializationException e) { - logger.warn("LazyInitializationException: " + e); - } - //originalSource - try { - Set origSources = taxonBase.getSources(); - for (OriginalSource source: origSources){ - taxonBase.removeSource(source); - } - } catch (LazyInitializationException e) { - logger.warn("LazyInitializationException: " + e); - } - //is Taxon - TaxonNameBase taxonNameBase =taxonBase.getName(); - if (taxonNameBase != null){ - taxonNameBase.removeTaxonBase(taxonBase); - } - if (taxonBase instanceof Taxon){ + + // Merge the object in if it is detached + // + // I think this is preferable to catching lazy initialization errors + // as that solution only swallows and hides the exception, but doesn't + // actually solve it. + getSession().merge(taxonBase); + + for(Iterator iterator = taxonBase.getAnnotations().iterator(); iterator.hasNext();) { + Annotation annotation = iterator.next(); + annotation.setAnnotatedObj(null); + iterator.remove(); + getSession().delete(annotation); + } + + for(Iterator iterator = taxonBase.getMarkers().iterator(); iterator.hasNext();) { + Marker marker = iterator.next(); + marker.setMarkedObj(null); + iterator.remove(); + getSession().delete(marker); + } + + for(Iterator iterator = taxonBase.getExtensions().iterator(); iterator.hasNext();) { + Extension extension = iterator.next(); + extension.setExtendedObj(null); + iterator.remove(); + getSession().delete(extension); + } + + for(Iterator iterator = taxonBase.getSources().iterator(); iterator.hasNext();) { + OriginalSource source = iterator.next(); + source.setSourcedObj(null); + iterator.remove(); + getSession().delete(source); + } + + for(Iterator iterator = taxonBase.getRights().iterator(); iterator.hasNext();) { + Rights rights = iterator.next(); + iterator.remove(); + getSession().delete(rights); + } + + if (taxonBase instanceof Taxon){ // is Taxon //taxonRelationships Taxon taxon = (Taxon)taxonBase; - Set taxRels = taxon.getTaxonRelations(); - for (TaxonRelationship taxRel: taxRels){ - taxon.removeTaxonRelation(taxRel); - } ; + + for (Iterator iterator = taxon.getRelationsFromThisTaxon().iterator(); iterator.hasNext();){ + TaxonRelationship relationToThisTaxon = iterator.next(); + iterator.remove(); + relationToThisTaxon.setFromTaxon(null); + relationToThisTaxon.setToTaxon(null); + getSession().delete(relationToThisTaxon); + } + + for (Iterator iterator = taxon.getRelationsToThisTaxon().iterator(); iterator.hasNext();){ + TaxonRelationship relationFromThisTaxon = iterator.next(); + iterator.remove(); + relationFromThisTaxon.setToTaxon(null); + relationFromThisTaxon.setFromTaxon(null); + getSession().delete(relationFromThisTaxon); + } + //SynonymRelationships - Set synRels = taxon.getSynonymRelations(); - for (SynonymRelationship synRel: synRels){ - taxon.removeSynonymRelation(synRel); - } ; - }//is Synonym - else if (taxonBase instanceof Synonym){ + for (Iterator iterator = taxon.getSynonymRelations().iterator(); iterator.hasNext();){ + SynonymRelationship synonymRelation = iterator.next(); + iterator.remove(); + synonymRelation.setAcceptedTaxon(null); + synonymRelation.setSynonym(null); + getSession().delete(synonymRelation); + } + } else if (taxonBase instanceof Synonym){ //is Synonym Synonym synonym = (Synonym)taxonBase; - Set synRels = synonym.getSynonymRelations(); - for (SynonymRelationship synRel: synRels){ - synonym.removeSynonymRelation(synRel); + for (Iterator iterator = synonym.getSynonymRelations().iterator(); iterator.hasNext();){ + SynonymRelationship synonymRelation = iterator.next(); + iterator.remove(); + synonymRelation.setAcceptedTaxon(null); + synonymRelation.setSynonym(null); } ; } return super.delete(taxonBase); @@ -265,9 +323,9 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } public int countMatchesByName(String queryString, ITitledDao.MATCH_MODE matchMode, boolean onlyAcccepted) { - + checkNotInPriorView("TaxonDaoHibernateImpl.countMatchesByName(String queryString, ITitledDao.MATCH_MODE matchMode, boolean onlyAcccepted)"); Criteria crit = getSession().createCriteria(type); - crit.add(Restrictions.ilike("persistentTitleCache", matchMode.queryStringFrom(queryString))); + crit.add(Restrictions.ilike("titleCache", matchMode.queryStringFrom(queryString))); crit.setProjection(Projections.rowCount()); int result = ((Integer)crit.list().get(0)).intValue(); return result; @@ -275,9 +333,9 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem public int countMatchesByName(String queryString, ITitledDao.MATCH_MODE matchMode, boolean onlyAcccepted, List criteria) { - + checkNotInPriorView("TaxonDaoHibernateImpl.countMatchesByName(String queryString, ITitledDao.MATCH_MODE matchMode, boolean onlyAcccepted, List criteria)"); Criteria crit = getSession().createCriteria(type); - crit.add(Restrictions.ilike("persistentTitleCache", matchMode.queryStringFrom(queryString))); + crit.add(Restrictions.ilike("titleCache", matchMode.queryStringFrom(queryString))); if(criteria != null){ for (Criterion criterion : criteria) { crit.add(criterion); @@ -289,37 +347,64 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } public int countRelatedTaxa(Taxon taxon, TaxonRelationshipType type) { - Query query = null; + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; - if(type == null) { - query = getSession().createQuery("select count(taxonRelationship) from TaxonRelationship taxonRelationship where taxonRelationship.relatedTo = :relatedTo"); - } else { - query = getSession().createQuery("select count(taxonRelationship) from TaxonRelationship taxonRelationship where taxonRelationship.relatedTo = :relatedTo and taxonRelationship.type = :type"); - query.setParameter("type",type); - } + if(type == null) { + query = getSession().createQuery("select count(taxonRelationship) from TaxonRelationship taxonRelationship where taxonRelationship.relatedTo = :relatedTo"); + } else { + query = getSession().createQuery("select count(taxonRelationship) from TaxonRelationship taxonRelationship where taxonRelationship.relatedTo = :relatedTo and taxonRelationship.type = :type"); + query.setParameter("type",type); + } - query.setParameter("relatedTo", taxon); + query.setParameter("relatedTo", taxon); - return ((Long)query.uniqueResult()).intValue(); + return ((Long)query.uniqueResult()).intValue(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedTo").eq(taxon.getId())); + query.addProjection(AuditEntity.id().count("id")); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + return ((Long)query.getSingleResult()).intValue(); + } } public int countSynonyms(Taxon taxon, SynonymRelationshipType type) { - Query query = null; - - if(type == null) { - query = getSession().createQuery("select count(synonymRelationship) from SynonymRelationship synonymRelationship where synonymRelationship.relatedTo = :relatedTo"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + + if(type == null) { + query = getSession().createQuery("select count(synonymRelationship) from SynonymRelationship synonymRelationship where synonymRelationship.relatedTo = :relatedTo"); + } else { + query = getSession().createQuery("select count(synonymRelationship) from SynonymRelationship synonymRelationship where synonymRelationship.relatedTo = :relatedTo and synonymRelationship.type = :type"); + query.setParameter("type",type); + } + + query.setParameter("relatedTo", taxon); + + return ((Long)query.uniqueResult()).intValue(); } else { - query = getSession().createQuery("select count(synonymRelationship) from SynonymRelationship synonymRelationship where synonymRelationship.relatedTo = :relatedTo and synonymRelationship.type = :type"); - query.setParameter("type",type); + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(SynonymRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedTo").eq(taxon.getId())); + query.addProjection(AuditEntity.id().count("id")); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); + } + + return ((Long)query.getSingleResult()).intValue(); } - - query.setParameter("relatedTo", taxon); - - return ((Long)query.uniqueResult()).intValue(); } public int countTaxa(String queryString, Boolean accepted) { - QueryParser queryParser = new QueryParser("name.persistentTitleCache", new SimpleAnalyzer()); + checkNotInPriorView("TaxonDaoHibernateImpl.countTaxa(String queryString, Boolean accepted)"); + QueryParser queryParser = new QueryParser("name.titleCache", new SimpleAnalyzer()); try { org.apache.lucene.search.Query query = queryParser.parse(queryString); @@ -346,7 +431,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } public int countTaxaByName(String queryString, Boolean accepted, ReferenceBase sec) { - + checkNotInPriorView("TaxonDaoHibernateImpl.countTaxaByName(String queryString, Boolean accepted, ReferenceBase sec)"); Criteria criteria = null; if (accepted == true) { @@ -372,7 +457,8 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem return (Integer)criteria.uniqueResult(); } - public int countTaxaByName(Boolean accepted, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank) { + public int countTaxaByName(Boolean accepted, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank) { + checkNotInPriorView("TaxonDaoHibernateImpl.countTaxaByName(Boolean accepted, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank)"); Criteria criteria = null; if(accepted == null) { @@ -414,6 +500,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } public List findTaxaByName(Boolean accepted, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) { + checkNotInPriorView("TaxonDaoHibernateImpl.findTaxaByName(Boolean accepted, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank, Integer pageSize, Integer pageNumber)"); Criteria criteria = null; if(accepted == null) { @@ -464,55 +551,108 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } public List getRelatedTaxa(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber) { - Query query = null; + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + + if(type == null) { + query = getSession().createQuery("select taxonRelationship from TaxonRelationship taxonRelationship join fetch taxonRelationship.relatedFrom where taxonRelationship.relatedTo = :relatedTo"); + } else { + query = getSession().createQuery("select taxonRelationship from TaxonRelationship taxonRelationship join fetch taxonRelationship.relatedFrom where taxonRelationship.relatedTo = :relatedTo and taxonRelationship.type = :type"); + query.setParameter("type",type); + } - if(type == null) { - query = getSession().createQuery("select taxonRelationship from TaxonRelationship taxonRelationship join fetch taxonRelationship.relatedFrom where taxonRelationship.relatedTo = :relatedTo"); - } else { - query = getSession().createQuery("select taxonRelationship from TaxonRelationship taxonRelationship join fetch taxonRelationship.relatedFrom where taxonRelationship.relatedTo = :relatedTo and taxonRelationship.type = :type"); - query.setParameter("type",type); - } + query.setParameter("relatedTo", taxon); - query.setParameter("relatedTo", taxon); + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); + return (List)query.list(); + } else { + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedTo").eq(taxon.getId())); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + List result = (List)query.getResultList(); + for(TaxonRelationship relationship : result) { + Hibernate.initialize(relationship.getFromTaxon()); + } + + return result; } - - return (List)query.list(); } public List getSynonyms(Taxon taxon, SynonymRelationshipType type, Integer pageSize, Integer pageNumber) { - Query query = null; - - if(type == null) { - query = getSession().createQuery("select synonymRelationship from SynonymRelationship synonymRelationship join fetch synonymRelationship.relatedFrom where synonymRelationship.relatedTo = :relatedTo"); + AuditEvent auditEvent = getAuditEventFromContext(); + if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { + Query query = null; + + if(type == null) { + query = getSession().createQuery("select synonymRelationship from SynonymRelationship synonymRelationship join fetch synonymRelationship.relatedFrom where synonymRelationship.relatedTo = :relatedTo"); + } else { + query = getSession().createQuery("select synonymRelationship from SynonymRelationship synonymRelationship join fetch synonymRelationship.relatedFrom where synonymRelationship.relatedTo = :relatedTo and synonymRelationship.type = :type"); + query.setParameter("type",type); + } + + query.setParameter("relatedTo", taxon); + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.list(); } else { - query = getSession().createQuery("select synonymRelationship from SynonymRelationship synonymRelationship join fetch synonymRelationship.relatedFrom where synonymRelationship.relatedTo = :relatedTo and synonymRelationship.type = :type"); - query.setParameter("type",type); - } - - query.setParameter("relatedTo", taxon); - - if(pageSize != null) { - query.setMaxResults(pageSize); - if(pageNumber != null) { - query.setFirstResult(pageNumber * pageSize); - } else { - query.setFirstResult(0); + AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(SynonymRelationship.class,auditEvent.getRevisionNumber()); + query.add(AuditEntity.relatedId("relatedTo").eq(taxon.getId())); + + if(type != null) { + query.add(AuditEntity.relatedId("type").eq(type.getId())); } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + List result = (List)query.getResultList(); + for(SynonymRelationship relationship : result) { + Hibernate.initialize(relationship.getSynonym()); + } + + return result; } - - return (List)query.list(); } public List searchTaxa(String queryString, Boolean accepted, Integer pageSize, Integer pageNumber) { - QueryParser queryParser = new QueryParser("name.persistentTitleCache", new SimpleAnalyzer()); + checkNotInPriorView("TaxonDaoHibernateImpl.searchTaxa(String queryString, Boolean accepted, Integer pageSize, Integer pageNumber)"); + QueryParser queryParser = new QueryParser("name.titleCache", new SimpleAnalyzer()); List results = new ArrayList(); try { @@ -582,16 +722,23 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase implem } public String suggestQuery(String queryString) { - try { - String alternativeQueryString = null; - alternativeSpellingSuggestionParser.parse(queryString); - org.apache.lucene.search.Query alternativeQuery = alternativeSpellingSuggestionParser.suggest(queryString); - if(alternativeQuery != null) { - alternativeQueryString = alternativeQuery.toString("name.persistentTitleCache"); + checkNotInPriorView("TaxonDaoHibernateImpl.suggestQuery(String queryString)"); + String alternativeQueryString = null; + if (alternativeSpellingSuggestionParser != null) { + try { + + alternativeSpellingSuggestionParser.parse(queryString); + org.apache.lucene.search.Query alternativeQuery = alternativeSpellingSuggestionParser + .suggest(queryString); + if (alternativeQuery != null) { + alternativeQueryString = alternativeQuery + .toString("name.titleCache"); + } + + } catch (ParseException e) { + throw new QueryParseException(e, queryString); } - return alternativeQueryString; - } catch (ParseException e) { - throw new QueryParseException(e, queryString); } + return alternativeQueryString; } } \ No newline at end of file diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDao.java new file mode 100644 index 0000000000..974de68fad --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDao.java @@ -0,0 +1,77 @@ +package eu.etaxonomy.cdm.persistence.dao.hibernate.view; + +import java.util.List; +import java.util.UUID; + +import org.hibernate.Query; +import org.springframework.stereotype.Repository; + +import eu.etaxonomy.cdm.model.view.AuditEvent; +import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort; +import eu.etaxonomy.cdm.persistence.dao.hibernate.common.DaoBase; +import eu.etaxonomy.cdm.persistence.view.IAuditEventDao; + +@Repository +public class AuditEventDao extends DaoBase implements IAuditEventDao { + + public int count() { + Query query = getSession().createQuery("select count(auditEvent) from AuditEvent auditEvent"); + + return ((Long)query.uniqueResult()).intValue(); + } + + public boolean exists(UUID uuid) { + Query query = getSession().createQuery("select auditEvent from AuditEvent auditEvent where auditEvent.uuid = :uuid"); + query.setParameter("uuid", uuid); + return null != (AuditEvent)query.uniqueResult(); + } + + public AuditEvent findById(Integer id) { + Query query = getSession().createQuery("select auditEvent from AuditEvent auditEvent where auditEvent.id = :id"); + query.setParameter("id", id); + return (AuditEvent)query.uniqueResult(); + } + + public AuditEvent findByUuid(UUID uuid) { + Query query = getSession().createQuery("select auditEvent from AuditEvent auditEvent where auditEvent.uuid = :uuid"); + query.setParameter("uuid", uuid); + return (AuditEvent)query.uniqueResult(); + } + + public AuditEvent getNextAuditEvent(AuditEvent auditEvent) { + Query query = getSession().createQuery("select auditEvent from AuditEvent auditEvent where auditEvent.revisionNumber = :revisionNumber + 1"); + query.setParameter("revisionNumber", auditEvent.getRevisionNumber()); + return (AuditEvent) query.uniqueResult(); + } + + public AuditEvent getPreviousAuditEvent(AuditEvent auditEvent) { + Query query = getSession().createQuery("select auditEvent from AuditEvent auditEvent where auditEvent.revisionNumber = :revisionNumber - 1"); + query.setParameter("revisionNumber", auditEvent.getRevisionNumber()); + return (AuditEvent) query.uniqueResult(); + } + + public List list(Integer pageNumber, Integer pageSize, AuditEventSort sort) { + if(sort == null) { + sort = AuditEventSort.BACKWARDS; + } + + Query query = null; + + if(sort.equals(AuditEventSort.FORWARDS)) { + query = getSession().createQuery("select auditEvent from AuditEvent auditEvent order by auditEvent.timestamp asc"); + } else { + query = getSession().createQuery("select auditEvent from AuditEvent auditEvent order by auditEvent.timestamp desc"); + } + + if(pageSize != null) { + query.setMaxResults(pageSize); + if(pageNumber != null) { + query.setFirstResult(pageNumber * pageSize); + } else { + query.setFirstResult(0); + } + } + + return (List)query.list(); + } +} diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/view/IAuditEventDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/view/IAuditEventDao.java new file mode 100644 index 0000000000..7f27b1d754 --- /dev/null +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/view/IAuditEventDao.java @@ -0,0 +1,72 @@ +package eu.etaxonomy.cdm.persistence.view; + +import java.util.List; +import java.util.UUID; + +import eu.etaxonomy.cdm.model.view.AuditEvent; +import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort; + + +public interface IAuditEventDao { + + /** + * Find the AuditEvent with an identifier equal to the parameter + * + * @param id + * @return an AuditEvent, or null if there is no AuditEvent with that identifier + */ + public AuditEvent findById(Integer id); + + /** + * Find the AuditEvent with a uuid (surrogate key) equal to the uuid supplied + * + * @param uuid + * @return an AuditEvent, or null if there is no AuditEvent with a uuid which matches + */ + public AuditEvent findByUuid(UUID uuid); + + /** + * Count the AuditEvents in this database + * + * @return the total number of AuditEvents in this database + */ + public int count(); + + /** + * Returns a sublist of AuditEvent instances stored in the database. + * A maximum of 'limit' objects are returned, starting at object with index 'start'. + * + * @param limit the maximum number of entities returned (can be null to return all entities) + * @param start + * @param sort Whether the list is sorted going forward in time (AuditEventSort.FORWARDS) + * or backwards (AuditEventSort.BACKWARDS) + * @return a List of AuditEvent instances + */ + public List list(Integer limit, Integer start,AuditEventSort sort); + + /** + * Returns the AuditEvent immediately proceeding the audit event passed as an argument + * + * @param auditEvent + * @return the AuditEvent immediately proceeding, or null if the AuditEvent passed is + * the most recent event + */ + public AuditEvent getNextAuditEvent(AuditEvent auditEvent); + + /** + * Returns the AuditEvent immediately preceding the audit event passed as an argument + * + * @param auditEvent + * @return the AuditEvent immediately preceding, or null if the AuditEvent passed is + * the first event in the database + */ + public AuditEvent getPreviousAuditEvent(AuditEvent auditEvent); + + /** + * Checks whether an AuditEvent with a matching uuid exists in the database + * + * @param uuid + * @return true if an AuditEvent with a matching uuid exists in the database, false otherwise + */ + public boolean exists(UUID uuid); +} diff --git a/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml b/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml index f46b85e71c..6e5aa38a7b 100644 --- a/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml +++ b/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml @@ -8,7 +8,7 @@ - + @@ -28,6 +28,8 @@ + + @@ -161,8 +163,9 @@ - - + \ No newline at end of file diff --git a/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml b/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml index e2e4e45fb4..28eb90498e 100644 --- a/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml +++ b/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml @@ -1,26 +1,24 @@ - - - - + + + + - @@ -29,5 +27,4 @@ - diff --git a/cdmlib-persistence/src/main/resources/log4j.properties b/cdmlib-persistence/src/main/resources/log4j.properties index e760ce4920..dd5b802c71 100644 --- a/cdmlib-persistence/src/main/resources/log4j.properties +++ b/cdmlib-persistence/src/main/resources/log4j.properties @@ -1,10 +1,10 @@ ### ************ APPENDER ***********************************### ### direct log messages to stdout ### -#log4j.appender.stdout=org.apache.log4j.ConsoleAppender -#log4j.appender.stdout.Target=System.out -#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -#log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file hibernate.log ### log4j.appender.file=org.apache.log4j.FileAppender @@ -17,7 +17,7 @@ log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### -log4j.rootLogger=debug,file +log4j.rootLogger=warn, stdout ### *** CDM *** ### @@ -35,29 +35,28 @@ log4j.rootLogger=debug,file ### ***HIBERNATE ************ ### -log4j.logger.org.hibernate=warn, file -#log4j.logger.org.hibernate.tool.hbm2ddl.SchemaExport = error -#log4j.logger.org.hibernate.engine.LoadContexts = error -# -#log4j.logger.org.hibernate.envers.event.AuditEventListener = debug, file +log4j.logger.org.hibernate=warn +log4j.logger.org.hibernate.tool.hbm2ddl.SchemaExport = error +log4j.logger.eu.etaxonomy.cdm=debug +log4j.logger.org.hibernate.engine.LoadContexts = error ### No warnings as thrown by SQLServer -#log4j.logger.org.hibernate.cfg = warn +log4j.logger.org.hibernate.cfg = warn ### No warnings as thrown by SQLServer -#log4j.logger.org.hibernate.util.JDBCExceptionReporter = error +log4j.logger.org.hibernate.util.JDBCExceptionReporter = error ### log HQL query parser activity #log4j.logger.org.hibernate.hql.ast.AST=debug ### log just the SQL -#log4j.logger.org.hibernate.SQL=warn +log4j.logger.org.hibernate.SQL=warn ### log JDBC bind parameters ### -#log4j.logger.org.hibernate.type=warn +log4j.logger.org.hibernate.type=warn ### log schema export/update ### -#log4j.logger.org.hibernate.tool.hbm2ddl=warn +log4j.logger.org.hibernate.tool.hbm2ddl=warn ### log HQL parse trees #log4j.logger.org.hibernate.hql=debug @@ -69,7 +68,7 @@ log4j.logger.org.hibernate=warn, file #log4j.logger.org.hibernate.transaction=debug ### log JDBC resource acquisition -#log4j.logger.org.hibernate.jdbc=info +log4j.logger.org.hibernate.jdbc=info ### enable the following line if you want to track down connection ### ### leakages when using DriverManagerConnectionProvider ### diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/PersistentTermInitializerTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/PersistentTermInitializerTest.java index 5e5ed0f4ba..d6263a2408 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/PersistentTermInitializerTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/PersistentTermInitializerTest.java @@ -1,20 +1,11 @@ -/** -* Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy -* http://www.e-taxonomy.eu -* -* The contents of this file are subject to the Mozilla Public License Version 1.1 -* See LICENSE.TXT at the top of this package for the full license terms. -*/ - package eu.etaxonomy.cdm.database; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.HashMap; -import java.util.Map; import java.util.UUID; +import java.util.Map; import org.junit.Ignore; import org.junit.Test; @@ -27,6 +18,7 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; +@Ignore @SpringApplicationContext("classpath:eu/etaxonomy/cdm/applicationContext-testPersistentDataSource.xml") public class PersistentTermInitializerTest extends CdmIntegrationTest { @@ -39,6 +31,7 @@ public class PersistentTermInitializerTest extends CdmIntegrationTest { assertNotNull("TermInitializer should have initialized Language.DEFAULT",Language.DEFAULT()); assertEquals("Language.DEFAULT should equal Language.ENGLISH",Language.DEFAULT(),Language.ENGLISH()); } + @Test @DataSet("TermsDataSet.xml") diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializerTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializerTest.java index 1f3b2afc25..c926865506 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializerTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializerTest.java @@ -3,15 +3,27 @@ package eu.etaxonomy.cdm.database; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import java.util.UUID; + +import org.junit.Before; import org.junit.Test; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType; +import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; public class TestingTermInitializerTest extends CdmIntegrationTest { + private UUID taxonomicallyIncludedInUuid; + + @Before + public void setUp() { + taxonomicallyIncludedInUuid = UUID.fromString("d13fecdf-eb44-4dd7-9244-26679c05df1c"); + } + @Test public void testInit() { assertNotNull("TermInitializer should have initialized Language.DEFAULT",Language.DEFAULT()); @@ -27,4 +39,29 @@ public class TestingTermInitializerTest extends CdmIntegrationTest { public void testFeatureIds() { assertEquals("We expect Feature.ECOLOGY to have an id of 922",922,Feature.ECOLOGY().getId()); } + + /** + * Test method for {@link eu.etaxonomy.cdm.model.taxon.ConceptRelationshipType#TAXONOMICALLY_INCLUDED_IN()}. + */ + @Test + public final void testTermsAreLoaded() { + assertNotNull("TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN should have been initialized",TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN()); + assertEquals("TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN should have a uuid of " + taxonomicallyIncludedInUuid.toString(),taxonomicallyIncludedInUuid, TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN().getUuid()); + } + + @Test + public void testUnlazyStatusTerms() { + assertNotNull("NomenclaturalStatusType.SUPERFLUOUS should exist",NomenclaturalStatusType.SUPERFLUOUS()); + assertNotNull("NomenclaturalStatusType.NUDUM should exist",NomenclaturalStatusType.NUDUM()); + assertNotNull("NomenclaturalStatusType.ILLEGITIMATE should exist",NomenclaturalStatusType.ILLEGITIMATE()); + assertNotNull("NomenclaturalStatusType.INVALID should exist",NomenclaturalStatusType.INVALID()); + assertNotNull("NomenclaturalStatusType.CONSERVED should exist",NomenclaturalStatusType.CONSERVED()); + assertNotNull("NomenclaturalStatusType.ALTERNATIVE should exist",NomenclaturalStatusType.ALTERNATIVE()); + assertNotNull("NomenclaturalStatusType.REJECTED should exist",NomenclaturalStatusType.REJECTED()); + assertNotNull("NomenclaturalStatusType.REJECTED_PROP should exist",NomenclaturalStatusType.REJECTED_PROP()); + assertNotNull("NomenclaturalStatusType.PROVISIONAL should exist",NomenclaturalStatusType.PROVISIONAL()); + assertNotNull("NomenclaturalStatusType.SUBNUDUM should exist",NomenclaturalStatusType.SUBNUDUM()); + assertNotNull("NomenclaturalStatusType.OPUS_UTIQUE_OPPR should exist",NomenclaturalStatusType.OPUS_UTIQUE_OPPR()); + assertNotNull("NomenclaturalStatusType.VALID should exist",NomenclaturalStatusType.VALID()); + } } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/FreeTextSearchIntegration.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/FreeTextSearchIntegration.java index 35d036a75b..aa52bb964f 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/FreeTextSearchIntegration.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/FreeTextSearchIntegration.java @@ -3,37 +3,20 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.IOException; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.lucene.index.CorruptIndexException; -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.store.Directory; -import org.apache.lucene.store.FSDirectory; import org.hibernate.Hibernate; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.Transaction; -import org.hibernate.search.FullTextSession; -import org.hibernate.search.Search; -import org.hibernate.search.SearchFactory; -import org.hibernate.search.reader.ReaderProvider; -import org.hibernate.search.store.DirectoryProvider; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; -import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.TaxonDescription; import eu.etaxonomy.cdm.model.description.TextData; -import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; -import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao; import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao; -import eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonAlternativeSpellingSuggestionParser; import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao; import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.java index 1c513d028e..af4d896427 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.java @@ -7,33 +7,51 @@ import static org.junit.Assert.assertNotNull; import java.util.List; import java.util.UUID; +import junit.framework.Assert; + +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.dbunit.annotation.ExpectedDataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; +import eu.etaxonomy.cdm.model.agent.AgentBase; import eu.etaxonomy.cdm.model.agent.InstitutionalMembership; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; +import eu.etaxonomy.cdm.model.view.AuditEvent; +import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder; import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao; -import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; +import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest; -@DataSet -public class AgentDaoImplTest extends CdmIntegrationTest { +public class AgentDaoImplTest extends CdmTransactionalIntegrationTest { @SpringBeanByType private IAgentDao agentDao; private UUID uuid; private UUID personUuid; + private AuditEvent previousAuditEvent; @Before public void setUp() { uuid = UUID.fromString("924fa059-1b83-45f8-bc3a-e754d2757364"); personUuid = UUID.fromString("ed6ac546-8c6c-48c4-9b91-40b1157c05c6"); + previousAuditEvent = new AuditEvent(); + previousAuditEvent.setRevisionNumber(1000); + previousAuditEvent.setUuid(UUID.fromString("a680fab4-365e-4765-b49e-768f2ee30cda")); + AuditEventContextHolder.clearContext(); // By default we're in the current view (i.e. view == null) + } + + @After + public void tearDown() { + AuditEventContextHolder.clearContext(); } @Test + @DataSet public void testCountMembers() { Team team = (Team)agentDao.findByUuid(uuid); assert team != null : "team must exist"; @@ -43,6 +61,7 @@ public class AgentDaoImplTest extends CdmIntegrationTest { } @Test + @DataSet public void testGetMembers() { Team team = (Team)agentDao.findByUuid(uuid); assert team != null : "team must exist"; @@ -54,6 +73,7 @@ public class AgentDaoImplTest extends CdmIntegrationTest { } @Test + @DataSet public void testCountInstitutionalMemberships() { Person person = (Person)agentDao.findByUuid(personUuid); assert person != null : "person must exist"; @@ -63,6 +83,7 @@ public class AgentDaoImplTest extends CdmIntegrationTest { } @Test + @DataSet public void testGetInstitutionalMemberships() { Person person = (Person)agentDao.findByUuid(personUuid); assert person != null : "person must exist"; @@ -72,4 +93,125 @@ public class AgentDaoImplTest extends CdmIntegrationTest { assertFalse("getInstitutionalMemberships should not be empty",memberships.isEmpty()); assertEquals("getInstitutionalMemberships should return 3 institutional membership instances",3,memberships.size()); } + + @Test + @DataSet("AgentDaoImplTest.testSave.xml") + @ExpectedDataSet + public void testSave() { + Person person = Person.NewInstance(); + person.setFirstname("ben"); + agentDao.save(person); + setComplete(); + endTransaction(); + } + + @Test + @DataSet + @ExpectedDataSet + public void testUpdate() { + Person person = (Person)agentDao.findByUuid(personUuid); + assert person != null : "person must exist"; + person.setFirstname("Benjamin"); + agentDao.update(person); + setComplete(); + endTransaction(); + } + + @Test + @DataSet("AgentDaoImplTest.testFind.xml") + public void testFindInCurrentView() { + Person person = (Person)agentDao.findByUuid(personUuid); + Assert.assertEquals("The person's firstname should be \'Benjamin\' in the current view",person.getFirstname(),"Benjamin"); + } + + @Test + @DataSet("AgentDaoImplTest.testFind.xml") + public void testFindInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Person person = (Person)agentDao.findByUuid(personUuid); + Assert.assertEquals("The person's firstname should be \'Ben\' in the previous view",person.getFirstname(),"Ben"); + } + + @Test + @DataSet("AgentDaoImplTest.testFind.xml") + @ExpectedDataSet + public void testDelete() throws Exception { + Person person = (Person)agentDao.findByUuid(personUuid); + agentDao.delete(person); + setComplete(); + endTransaction(); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testExists() { + Assert.assertFalse("Person with the uuid " + personUuid.toString() + "should not exist in the current view",agentDao.exists(personUuid)); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testExistsInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Assert.assertTrue("Person with the uuid " + personUuid.toString() + "should exist in the previous view",agentDao.exists(uuid)); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testCount() { + Assert.assertEquals("There should be eight agents in the current view",8, agentDao.count()); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testCountInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Assert.assertEquals("There should be nine agents in the previous view",9, agentDao.count()); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testList() { + List result = agentDao.list(null,null); + Assert.assertNotNull("list() should return a list",result); + Assert.assertEquals("list() should return eight agents in the current view", result.size(),8); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testListInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + List result = agentDao.list(null, null); + Assert.assertNotNull("list() should return a list",result); + Assert.assertEquals("list() should return nine agents in the current view",result.size(),9); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testCountPeople() { + Assert.assertEquals("There should be four agents in the current view",4, agentDao.count(Person.class)); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testCountPeopleInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Assert.assertEquals("There should be five agents in the previous view",5, agentDao.count(Person.class)); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testListPeople() { + List result = agentDao.list(Person.class,null,null); + Assert.assertNotNull("list() should return a list",result); + Assert.assertEquals("list() should return four agents in the current view", result.size(),4); + } + + @Test + @DataSet("AgentDaoImplTest.testExists.xml") + public void testListPeopleInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + List result = agentDao.list(Person.class,null, null); + Assert.assertNotNull("list() should return a list",result); + Assert.assertEquals("list() should return five agents in the current view",result.size(),5); + } } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.java index ee3ef0d659..1efec7c399 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.java @@ -19,6 +19,7 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.common.Annotation; @@ -63,6 +64,7 @@ public class AnnotationDaoTest extends CdmIntegrationTest { public void testCountAnnotationsWithStatus() { Annotation annotatedObj = annotationDao.findByUuid(uuid); MarkerType markerType = MarkerType.TO_BE_CHECKED(); + assert annotatedObj != null : "annotatedObj must exist"; assert markerType != null : "markerType must exist"; diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.java index bb47806775..8eacab3ca1 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.java @@ -24,10 +24,9 @@ import org.unitils.dbunit.annotation.ExpectedDataSet; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.common.CdmBase; -import eu.etaxonomy.cdm.model.name.BotanicalName; -import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao; import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; /** @@ -37,10 +36,10 @@ import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; public class CdmEntityDaoBaseTest extends CdmIntegrationTest { private UUID uuid; - private CdmBase cdmBase; + private TaxonBase cdmBase; @SpringBeanByType - private CdmEntityDaoBaseTestClass cdmEntityDaoBase; + private ITaxonDao cdmEntityDaoBase; /** * @throws java.lang.Exception @@ -48,7 +47,7 @@ public class CdmEntityDaoBaseTest extends CdmIntegrationTest { @Before public void setUp() throws Exception { uuid = UUID.fromString("8d77c380-c76a-11dd-ad8b-0800200c9a66"); - cdmBase = Taxon.NewInstance(BotanicalName.NewInstance(Rank.SPECIES()), null);; + cdmBase = Taxon.NewInstance(null, null); cdmBase.setUuid(UUID.fromString("e463b270-c76b-11dd-ad8b-0800200c9a66")); } @@ -71,7 +70,7 @@ public class CdmEntityDaoBaseTest extends CdmIntegrationTest { @DataSet("CdmEntityDaoBaseTest.xml") @ExpectedDataSet public void testSaveOrUpdate() { - CdmBase cdmBase = cdmEntityDaoBase.findByUuid(uuid); + TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid); cdmBase.setUuid(UUID.fromString("61410dd0-c774-11dd-ad8b-0800200c9a66")); cdmEntityDaoBase.saveOrUpdate(cdmBase); } @@ -82,7 +81,7 @@ public class CdmEntityDaoBaseTest extends CdmIntegrationTest { @Test @DataSet("CdmEntityDaoBaseTest.xml") @ExpectedDataSet - public void testSave() { + public void testSave() throws Exception { cdmEntityDaoBase.save(cdmBase); } @@ -93,7 +92,7 @@ public class CdmEntityDaoBaseTest extends CdmIntegrationTest { @DataSet("CdmEntityDaoBaseTest.xml") @ExpectedDataSet public void testUpdate() { - CdmBase cdmBase = cdmEntityDaoBase.findByUuid(uuid); + TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid); cdmBase.setUuid(UUID.fromString("65bc7d70-c76c-11dd-ad8b-0800200c9a66")); cdmEntityDaoBase.update(cdmBase); } @@ -148,7 +147,7 @@ public class CdmEntityDaoBaseTest extends CdmIntegrationTest { @DataSet("CdmEntityDaoBaseTest.xml") @ExpectedDataSet public void testDelete() { - CdmBase cdmBase = cdmEntityDaoBase.findByUuid(uuid); + TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid); assertNotNull(cdmBase); cdmEntityDaoBase.delete(cdmBase); } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java index 8274e9a095..0c29fc4e19 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java @@ -12,6 +12,7 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.common; import static org.junit.Assert.assertNotNull; import org.junit.Test; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl; @@ -36,5 +37,4 @@ public class DaoBaseTest extends CdmIntegrationTest { public void testGetSession() { assertNotNull(daoBaseTester.getSession()); } - } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImplTest.java index 5d803e53c3..3e88882f22 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImplTest.java @@ -15,6 +15,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import java.io.FileOutputStream; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -23,15 +24,16 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.location.NamedArea; import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao; import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; -@DataSet public class DefinedTermDaoImplTest extends CdmIntegrationTest { @SpringBeanByType @@ -46,7 +48,7 @@ public class DefinedTermDaoImplTest extends CdmIntegrationTest { @Before public void setUp() { - uuid = UUID.fromString("d6781519-ec60-4afa-b5ea-375f4d2a1729"); + uuid = UUID.fromString("910307f1-dc3c-452c-a6dd-af5ac7cd365c"); armUuid = UUID.fromString("7a0fde13-26e9-4382-a5c9-5640fc2b3334"); northernEuropeUuid = UUID.fromString("22524ba2-6e57-4b71-89ab-89fc50fba6b4"); middleEuropeUuid = UUID.fromString("d292f237-da3d-408b-93a1-3257a8c80b97"); @@ -56,37 +58,17 @@ public class DefinedTermDaoImplTest extends CdmIntegrationTest { @Test public void findByTitle() throws Exception { - List terms = dao.findByTitle("nomenclature"); + List terms = dao.findByTitle("Diagnosis"); assertNotNull("findByTitle should return a List", terms); assertEquals("findByTitle should return one term ",terms.size(),1); - assertEquals("findByTitle should return a term with uuid " + uuid,terms.get(0).getUuid(),uuid); - } - - /** - * FIXME Should list() be tested in CdmEntityDaoBaseTest? - * Also - how is this list sorted? Should we supply an enum that allows - * the list to be sorted by different fields (titleCache? label? text? uri?) - */ - @Test - public void listOneTerm() { - List terms = dao.list(1,2017); - assertNotNull("list should return a list",terms); - assertEquals("list should return one term",1, terms.size()); - assertEquals("list should return one term with uuid " + uuid, uuid,terms.get(0).getUuid()); - } - - @Test - public void listManyTerms() { - List terms = dao.list(5,2013); - assertNotNull("list should return a list",terms); - assertEquals("list should return five terms",5, terms.size()); - assertEquals("list should return a term with uuid " + uuid + " at position 5", uuid,terms.get(4).getUuid()); + assertEquals("findByTitle should return Feature.DIAGNOSIS",terms.get(0),Feature.DIAGNOSIS()); } @Test public void getTermByUUID() { DefinedTermBase term = dao.findByUuid(uuid); assertNotNull("findByUuid should return a term",term); + assertEquals("findByUuid should return Feature.UNKNOWN",Feature.UNKNOWN(),term); } @@ -160,14 +142,15 @@ public class DefinedTermDaoImplTest extends CdmIntegrationTest { @Test public void countPartOf() { NamedArea northernEurope = (NamedArea)dao.findByUuid(northernEuropeUuid); - NamedArea middleEurope = (NamedArea)dao.findByUuid(middleEuropeUuid); - NamedArea westTropicalAfrica = (NamedArea)dao.findByUuid(westTropicalAfricaUuid); - assert northernEurope != null : "NamedArea must exist"; - assert middleEurope != null : "NamedArea must exist"; - assert westTropicalAfrica != null : "NamedArea must exist"; - namedAreas.add(northernEurope); - namedAreas.add(middleEurope); - namedAreas.add(westTropicalAfrica); + NamedArea middleEurope = (NamedArea)dao.findByUuid(middleEuropeUuid); + NamedArea westTropicalAfrica = (NamedArea)dao.findByUuid(westTropicalAfricaUuid); + assert northernEurope != null : "NamedArea must exist"; + assert middleEurope != null : "NamedArea must exist"; + assert westTropicalAfrica != null : "NamedArea must exist"; + + namedAreas.add(northernEurope); + namedAreas.add(middleEurope); + namedAreas.add(westTropicalAfrica); int numberOfPartOf = dao.countPartOf(namedAreas); assertEquals("countPartOf should return 2",2,numberOfPartOf); diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.java index c0083659ab..77230b7702 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.java @@ -7,17 +7,16 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.util.List; import java.util.UUID; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; +import eu.etaxonomy.cdm.model.common.LSID; import eu.etaxonomy.cdm.model.common.OriginalSource; import eu.etaxonomy.cdm.model.media.Rights; import eu.etaxonomy.cdm.model.taxon.TaxonBase; @@ -41,8 +40,7 @@ public class IdentifiableDaoBaseTest extends CdmIntegrationTest { uuid = UUID.fromString("496b1325-be50-4b0a-9aa2-3ecd610215f2"); } -/************ TESTS ******************************* - * @throws FileNotFoundException */ +/************ TESTS ********************************/ /** * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase#IdentifiableDaoBase(java.lang.Class)}. @@ -76,7 +74,7 @@ public class IdentifiableDaoBaseTest extends CdmIntegrationTest { } @Test - public void testSources() { + public void testSources() throws Exception { TaxonBase taxon = identifiableDao.findByUuid(uuid); assert taxon != null : "IdentifiableEntity must exist"; @@ -87,13 +85,25 @@ public class IdentifiableDaoBaseTest extends CdmIntegrationTest { assertEquals("getSources should return 2 OriginalSource instances",2, sources.size()); } -// @Test -// TODO - implement this later -// public void testGetByLSID() throws Exception { -// LSID lsid = new LSID("urn:lsid:cate-project.org:taxonconcepts:1"); -// TaxonBase result = taxonDAO.find(lsid); -// -// Assert.assertNotNull(result); -// } -// + @Test + public void testGetByLsidWithoutVersion() throws Exception { + LSID lsid = new LSID("urn:lsid:example.org:namespace:1"); + TaxonBase result = identifiableDao.find(lsid); + assertNotNull(result); + } + + @Test + public void testGetByLsidWithVersionCurrent() throws Exception { + LSID lsid = new LSID("urn:lsid:example.org:namespace:1:2"); + TaxonBase result = identifiableDao.find(lsid); + assertNotNull(result); + } + + @Test + public void testGetByLsidWithVersionPast() throws Exception { + LSID lsid = new LSID("urn:lsid:example.org:namespace:1:1"); + TaxonBase result = identifiableDao.find(lsid); + assertNotNull(result); + } + } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoHibernateImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoHibernateImplTest.java index 1413bfdf38..14eb51424f 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoHibernateImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoHibernateImplTest.java @@ -7,6 +7,7 @@ import java.lang.reflect.Array; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.common.User; diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.java index 103b30cc8c..27fcdbbeff 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.java @@ -167,6 +167,7 @@ public class DescriptionDaoHibernateImplTest extends CdmIntegrationTest { @Test public void testListDescriptionsWithTextAndFeatures() { + assert Feature.ECOLOGY() != null; features.add(Feature.ECOLOGY()); List descriptions = descriptionDao.listDescriptions(TaxonDescription.class, null, true, features,null,null); diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.java index c93ff71a64..c8897373b7 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.java @@ -21,6 +21,7 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.description.IdentificationKey; diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.java index 3bce2792c1..114bc66362 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.java @@ -10,6 +10,7 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.name.BotanicalName; diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java index 5c2dd03052..9c7abf4e1c 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java @@ -4,14 +4,22 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.util.List; import java.util.UUID; import org.hibernate.Hibernate; +import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; +import org.unitils.dbunit.annotation.ExpectedDataSet; +import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.reference.ReferenceBase; @@ -21,16 +29,20 @@ import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonRelationship; import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; +import eu.etaxonomy.cdm.model.view.AuditEvent; +import eu.etaxonomy.cdm.model.view.AuditEventRecord; +import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder; +import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort; import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao; import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao; -import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; +import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest; /** * @author a.mueller * @author ben.clark * */ -public class TaxonDaoHibernateImplTest extends CdmIntegrationTest { +public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest { @SpringBeanByType private ITaxonDao taxonDao; @@ -41,12 +53,28 @@ public class TaxonDaoHibernateImplTest extends CdmIntegrationTest { private UUID uuid; private UUID sphingidae; private UUID acherontia; + private UUID acherontiaLachesis; + private AuditEvent previousAuditEvent; + private AuditEvent mostRecentAuditEvent; @Before public void setUp() { uuid = UUID.fromString("496b1325-be50-4b0a-9aa2-3ecd610215f2"); sphingidae = UUID.fromString("54e767ee-894e-4540-a758-f906ecb4e2d9"); acherontia = UUID.fromString("c5cc8674-4242-49a4-aada-72d63194f5fa"); + acherontiaLachesis = UUID.fromString("b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06"); + previousAuditEvent = new AuditEvent(); + previousAuditEvent.setRevisionNumber(1000); + previousAuditEvent.setUuid(UUID.fromString("a680fab4-365e-4765-b49e-768f2ee30cda")); + mostRecentAuditEvent = new AuditEvent(); + mostRecentAuditEvent.setRevisionNumber(1025); + mostRecentAuditEvent.setUuid(UUID.fromString("afe8e761-8545-497b-9134-6a6791fc0b0d")); + AuditEventContextHolder.clearContext(); // By default we're in the current view (i.e. view == null) + } + + @After + public void tearDown() { + AuditEventContextHolder.clearContext(); } /** @@ -248,4 +276,198 @@ public class TaxonDaoHibernateImplTest extends CdmIntegrationTest { assertNotNull("list should return a List",taxa); assertEquals("list should return 33 taxa",33, taxa.size()); } + + @Test + @DataSet + @ExpectedDataSet + public void testDelete() { + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontia); + assert taxon != null : "taxon must exist"; + taxonDao.delete(taxon); + setComplete(); + endTransaction(); + try { + printDataSet(new FileOutputStream("test.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void testFindDeleted() { + TaxonBase taxon = taxonDao.findByUuid(acherontia); + assertNull("findByUuid should return null in this view", taxon); + assertFalse("exist should return false in this view",taxonDao.exists(acherontia)); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void testFindDeletedInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontia); + assertNotNull("findByUuid should return a taxon in this view",taxon); + assertTrue("exists should return true in this view", taxonDao.exists(acherontia)); + + try{ + assertEquals("There should be 3 relations to this taxon in this view",3,taxon.getRelationsToThisTaxon().size()); + } catch(Exception e) { + fail("We should not experience any problems initializing proxies with envers"); + } + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void testGetAuditEvents() { + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + List> auditEvents = taxonDao.getAuditEvents(taxon, null,null,null); + assertNotNull("getAuditEvents should return a list",auditEvents); + assertFalse("the list should not be empty",auditEvents.isEmpty()); + assertEquals("There should be two AuditEventRecords in the list",2, auditEvents.size()); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void testGetAuditEventsFromNow() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + List> auditEvents = taxonDao.getAuditEvents(taxon, null,null,AuditEventSort.FORWARDS); + assertNotNull("getAuditEvents should return a list",auditEvents); + assertFalse("the list should not be empty",auditEvents.isEmpty()); + assertEquals("There should be one audit event in the list",1,auditEvents.size()); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void testCountAuditEvents() { + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + int numberOfAuditEvents = taxonDao.countAuditEvents(taxon,null); + assertEquals("countAuditEvents should return 2",numberOfAuditEvents,2); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void getPreviousAuditEvent() { + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + AuditEventRecord auditEvent = taxonDao.getPreviousAuditEvent(taxon); + assertNotNull("getPreviousAuditEvent should not return null as there is at least one audit event prior to the current one",auditEvent); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void getPreviousAuditEventAtBeginning() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + AuditEventRecord auditEvent = taxonDao.getPreviousAuditEvent(taxon); + assertNull("getPreviousAuditEvent should return null if we're at the first audit event anyway",auditEvent); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void getNextAuditEvent() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + AuditEventRecord auditEvent = taxonDao.getNextAuditEvent(taxon); + assertNotNull("getNextAuditEvent should not return null as there is at least one audit event after the current one",auditEvent); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml") + public void getNextAuditEventAtEnd() { + AuditEventContextHolder.getContext().setAuditEvent(mostRecentAuditEvent); + TaxonBase taxon = taxonDao.findByUuid(sphingidae); + assert taxon != null : "taxon cannot be null"; + + AuditEventRecord auditEvent = taxonDao.getNextAuditEvent(taxon); + assertNull("getNextAuditEvent should return null as there no more audit events after the current one",auditEvent); + } + + @Test + @DataSet + @ExpectedDataSet + @Ignore + public void testAddChild() throws Exception { + printDataSet(new FileOutputStream("test.xml")); + Taxon parent = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert parent != null : "taxon cannot be null"; + Taxon child = Taxon.NewInstance(null, null); + child.setTitleCache("Acherontia lachesis diehli Eitschberger, 2003", true); + child.addTaxonRelation(parent, TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN(),null, null); + taxonDao.save(child); + setComplete(); + endTransaction(); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFind.xml") + public void testFind() { + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert taxon != null : "taxon cannot be null"; + + assertEquals("getTaxonomicChildrenCount should return 1 in this view",1,taxon.getTaxonomicChildrenCount()); + assertEquals("getRelationsToThisTaxon should contain 1 TaxonRelationship in this view",1,taxon.getRelationsToThisTaxon().size()); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFind.xml") + public void testFindInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert taxon != null : "taxon cannot be null"; + + assertEquals("getTaxonomicChildrenCount should return 0 in this view",0,taxon.getTaxonomicChildrenCount()); + assertTrue("getRelationsToThisTaxon should contain 0 TaxonRelationship in this view",taxon.getRelationsToThisTaxon().isEmpty()); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFind.xml") + public void testGetRelations() { + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert taxon != null : "taxon cannot be null"; + List taxonRelations = taxonDao.getRelatedTaxa(taxon, TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN(), null, null); + assertNotNull("getRelatedTaxa should return a list", taxonRelations); + assertEquals("there should be one TaxonRelationship in the list in the current view",1,taxonRelations.size()); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFind.xml") + public void testCountRelations() { + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert taxon != null : "taxon cannot be null"; + assertEquals("countRelatedTaxa should return 1 in the current view",1, taxonDao.countRelatedTaxa(taxon,TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFind.xml") + public void testGetRelationsInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert taxon != null : "taxon cannot be null"; + + List taxonRelations = taxonDao.getRelatedTaxa(taxon, TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN(), null, null); + assertNotNull("getRelatedTaxa should return a list",taxonRelations); + assertTrue("there should be no TaxonRelationships in the list in the prior view",taxonRelations.isEmpty()); + } + + @Test + @DataSet("TaxonDaoHibernateImplTest.testFind.xml") + public void testCountRelationsInPreviousView() { + AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent); + Taxon taxon = (Taxon)taxonDao.findByUuid(acherontiaLachesis); + assert taxon != null : "taxon cannot be null"; + assertEquals("countRelatedTaxa should return 0 in the current view",0, taxonDao.countRelatedTaxa(taxon,TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())); + } } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/CdmIntegrationTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/CdmIntegrationTest.java index 6300057dfb..c82b9bbcee 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/CdmIntegrationTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/CdmIntegrationTest.java @@ -1,10 +1,16 @@ package eu.etaxonomy.cdm.test.integration; -import java.io.FileOutputStream; +import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.sql.SQLException; import javax.sql.DataSource; +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; import org.apache.log4j.Logger; import org.dbunit.database.DatabaseConfig; @@ -24,7 +30,7 @@ import org.unitils.spring.annotation.SpringApplicationContext; * @author ben.clark * @see unitils home page */ -@SpringApplicationContext("classpath:eu/etaxonomy/cdm/applicationContext-test.xml") +@SpringApplicationContext("file:./target/test-classes/eu/etaxonomy/cdm/applicationContext-test.xml") public abstract class CdmIntegrationTest extends UnitilsJUnit4 { protected static final Logger logger = Logger.getLogger(CdmIntegrationTest.class); @@ -104,4 +110,13 @@ public abstract class CdmIntegrationTest extends UnitilsJUnit4 { } } + public String transformSourceToString(Source source) throws TransformerException { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + Result result = new StreamResult(outputStream); + transformer.transform(source, result); + + return new String(outputStream.toByteArray()); + } } diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/HSQLDialect.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/HSQLDialect.java new file mode 100644 index 0000000000..3b73e9ca94 --- /dev/null +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/integration/HSQLDialect.java @@ -0,0 +1,12 @@ +package eu.etaxonomy.cdm.test.integration; + +import java.sql.Types; + +public class HSQLDialect extends org.hibernate.dialect.HSQLDialect { + + public HSQLDialect() { + super(); + registerColumnType(Types.BIT, "boolean"); + } + +} diff --git a/cdmlib-persistence/src/test/resources/META-INF/persistence.xml b/cdmlib-persistence/src/test/resources/META-INF/persistence.xml index a9726f71b2..51290b5bb8 100644 --- a/cdmlib-persistence/src/test/resources/META-INF/persistence.xml +++ b/cdmlib-persistence/src/test/resources/META-INF/persistence.xml @@ -4,7 +4,7 @@ org.hibernate.ejb.HibernatePersistence eu.etaxonomy.cdm.model.agent.Address - eu.etaxonomy.cdm.model.agent.Agent + eu.etaxonomy.cdm.model.agent.AgentBase eu.etaxonomy.cdm.model.agent.Contact eu.etaxonomy.cdm.model.agent.Institution eu.etaxonomy.cdm.model.agent.InstitutionalMembership @@ -24,6 +24,8 @@ eu.etaxonomy.cdm.model.common.Keyword eu.etaxonomy.cdm.model.common.Language eu.etaxonomy.cdm.model.common.LanguageString + eu.etaxonomy.cdm.model.common.LSID + eu.etaxonomy.cdm.model.common.LSIDAuthority eu.etaxonomy.cdm.model.common.Marker eu.etaxonomy.cdm.model.common.MarkerType eu.etaxonomy.cdm.model.common.OrderedTermBase @@ -156,6 +158,9 @@ eu.etaxonomy.cdm.model.taxon.TaxonBase eu.etaxonomy.cdm.model.taxon.TaxonRelationship eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType + + eu.etaxonomy.cdm.model.view.View + eu.etaxonomy.cdm.model.view.AuditEvent eu.etaxonomy.cdm.model.common diff --git a/cdmlib-persistence/src/test/resources/dbscripts/001_cdm.ddl b/cdmlib-persistence/src/test/resources/dbscripts/001_cdm.ddl index 40c4bf2a73..e4d7aa4468 100644 --- a/cdmlib-persistence/src/test/resources/dbscripts/001_cdm.ddl +++ b/cdmlib-persistence/src/test/resources/dbscripts/001_cdm.ddl @@ -1,6679 +1,6852 @@ - - create table Address ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - locality varchar(255), - location_errorradius integer, - location_latitude double, - location_longitude double, - pobox varchar(255), - postcode varchar(255), - region varchar(255), - street varchar(255), - createdby_id integer, - updatedby_id integer, - contact_id integer, - country_id integer, - location_referencesystem_id integer, - primary key (id) - ); - - create table Address_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - locality varchar(255), - location_errorradius integer, - location_latitude double, - location_longitude double, - pobox varchar(255), - postcode varchar(255), - region varchar(255), - street varchar(255), - createdby_id integer, - updatedby_id integer, - contact_id integer, - country_id integer, - location_referencesystem_id integer, - primary key (id, REV) - ); - - create table Agent ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - code varchar(255), - name varchar(255), - nomenclaturaltitle varchar(255), - firstname varchar(255), - lastname varchar(255), - lifespan_end varchar(255), - lifespan_start varchar(255), - prefix varchar(255), - suffix varchar(255), - protectednomenclaturaltitlecache bit, - createdby_id integer, - updatedby_id integer, - contact_id integer, - ispartof_id integer, - primary key (id) - ); - - create table Agent_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - createdby_id integer, - updatedby_id integer, - nomenclaturaltitle varchar(255), - protectednomenclaturaltitlecache bit, - firstname varchar(255), - lastname varchar(255), - lifespan_end varchar(255), - lifespan_start varchar(255), - prefix varchar(255), - suffix varchar(255), - contact_id integer, - code varchar(255), - name varchar(255), - ispartof_id integer, - primary key (id, REV) - ); - - create table Agent_Agent ( - Agent_id integer not null, - teammembers_id integer not null - ); - - create table Agent_Agent_AUD ( - REV integer not null, - Agent_id integer not null, - teammembers_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, teammembers_id) - ); - - create table Agent_Annotation ( - Agent_id integer not null, - annotations_id integer not null, - primary key (Agent_id, annotations_id), - unique (annotations_id) - ); - - create table Agent_Annotation_AUD ( - REV integer not null, - Agent_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, annotations_id) - ); - - create table Agent_DefinedTermBase ( - Agent_id integer not null, - types_id integer not null, - primary key (Agent_id, types_id) - ); - - create table Agent_DefinedTermBase_AUD ( - REV integer not null, - Agent_id integer not null, - types_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, types_id) - ); - - create table Agent_Extension ( - Agent_id integer not null, - extensions_id integer not null, - primary key (Agent_id, extensions_id), - unique (extensions_id) - ); - - create table Agent_Extension_AUD ( - REV integer not null, - Agent_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, extensions_id) - ); - - create table Agent_Marker ( - Agent_id integer not null, - markers_id integer not null, - primary key (Agent_id, markers_id), - unique (markers_id) - ); - - create table Agent_Marker_AUD ( - REV integer not null, - Agent_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, markers_id) - ); - - create table Agent_Media ( - Agent_id integer not null, - media_id integer not null, - primary key (Agent_id, media_id), - unique (media_id) - ); - - create table Agent_Media_AUD ( - REV integer not null, - Agent_id integer not null, - media_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, media_id) - ); - - create table Agent_OriginalSource ( - Agent_id integer not null, - sources_id integer not null, - primary key (Agent_id, sources_id), - unique (sources_id) - ); - - create table Agent_OriginalSource_AUD ( - REV integer not null, - Agent_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, sources_id) - ); - - create table Agent_Rights ( - Agent_id integer not null, - rights_id integer not null, - primary key (Agent_id, rights_id), - unique (rights_id) - ); - - create table Agent_Rights_AUD ( - REV integer not null, - Agent_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, Agent_id, rights_id) - ); - - create table Annotation ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - annotatedObj_type varchar(255), - annotatedObj_id integer not null, - linkbackurlstr varbinary(255), - createdby_id integer, - updatedby_id integer, - language_id integer, - annotationtype_id integer, - commentator_id integer, - primary key (id) - ); - - create table Annotation_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - linkbackurl varbinary(255), - createdby_id integer, - updatedby_id integer, - language_id integer, - annotationtype_id integer, - commentator_id integer, - primary key (id, REV) - ); - - create table Annotation_Annotation ( - Annotation_id integer not null, - annotations_id integer not null, - primary key (Annotation_id, annotations_id), - unique (annotations_id) - ); - - create table Annotation_Annotation_AUD ( - REV integer not null, - Annotation_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Annotation_id, annotations_id) - ); - - create table Annotation_Marker ( - Annotation_id integer not null, - markers_id integer not null, - primary key (Annotation_id, markers_id), - unique (markers_id) - ); - - create table Annotation_Marker_AUD ( - REV integer not null, - Annotation_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Annotation_id, markers_id) - ); - - create table AuditEvent ( - revisionnumber integer generated by default as identity (start with 1), - timestamp bigint, - uuid varchar(255), - primary key (revisionnumber) - ); - - create table CDM_VIEW ( - id integer not null, - created timestamp, - uuid varchar(255), - description varchar(255), - name varchar(255), - createdby_id integer, - reference_id integer, - primary key (id) - ); - - create table CDM_VIEW_CDM_VIEW ( - CDM_VIEW_id integer not null, - superviews_id integer not null, - primary key (CDM_VIEW_id, superviews_id), - unique (superviews_id) - ); - - create table Collection ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - code varchar(255), - codestandard varchar(255), - name varchar(255), - townorlocation varchar(255), - createdby_id integer, - updatedby_id integer, - institute_id integer, - supercollection_id integer, - primary key (id) - ); - - create table Collection_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - code varchar(255), - codestandard varchar(255), - name varchar(255), - townorlocation varchar(255), - createdby_id integer, - updatedby_id integer, - institute_id integer, - supercollection_id integer, - primary key (id, REV) - ); - - create table Collection_Annotation ( - Collection_id integer not null, - annotations_id integer not null, - primary key (Collection_id, annotations_id), - unique (annotations_id) - ); - - create table Collection_Annotation_AUD ( - REV integer not null, - Collection_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Collection_id, annotations_id) - ); - - create table Collection_Extension ( - Collection_id integer not null, - extensions_id integer not null, - primary key (Collection_id, extensions_id), - unique (extensions_id) - ); - - create table Collection_Extension_AUD ( - REV integer not null, - Collection_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, Collection_id, extensions_id) - ); - - create table Collection_Marker ( - Collection_id integer not null, - markers_id integer not null, - primary key (Collection_id, markers_id), - unique (markers_id) - ); - - create table Collection_Marker_AUD ( - REV integer not null, - Collection_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Collection_id, markers_id) - ); - - create table Collection_Media ( - Collection_id integer not null, - media_id integer not null, - primary key (Collection_id, media_id), - unique (media_id) - ); - - create table Collection_Media_AUD ( - REV integer not null, - Collection_id integer not null, - media_id integer not null, - revtype tinyint, - primary key (REV, Collection_id, media_id) - ); - - create table Collection_OriginalSource ( - Collection_id integer not null, - sources_id integer not null, - primary key (Collection_id, sources_id), - unique (sources_id) - ); - - create table Collection_OriginalSource_AUD ( - REV integer not null, - Collection_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, Collection_id, sources_id) - ); - - create table Collection_Rights ( - Collection_id integer not null, - rights_id integer not null, - primary key (Collection_id, rights_id), - unique (rights_id) - ); - - create table Collection_Rights_AUD ( - REV integer not null, - Collection_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, Collection_id, rights_id) - ); - - create table Contact ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - email varchar(255), - fax varchar(255), - phone varchar(255), - url varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id) - ); - - create table Contact_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - email varchar(255), - fax varchar(255), - phone varchar(255), - url varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id, REV) - ); - - create table DefinedTermBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - uri varchar(255), - orderindex integer, - iso639_1 varchar(2), - iso639_2 varchar(3), - symmetric bit, - transitive bit, - defaultcolor varchar(255), - supportscommontaxonname bit, - supportsdistribution bit, - supportsindividualassociation bit, - supportsquantitativedata bit, - supportstaxoninteraction bit, - supportstextdata bit, - pointapproximation_errorradius integer, - pointapproximation_latitude double, - pointapproximation_longitude double, - validperiod_end varchar(255), - validperiod_start varchar(255), - iso3166_a2 varchar(2), - createdby_id integer, - updatedby_id integer, - kindof_id integer, - partof_id integer, - vocabulary_id integer, - level_id integer, - pointapproximation_referencesystem_id integer, - shape_id integer, - type_id integer, - primary key (id) - ); - - create table DefinedTermBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - uri varchar(255), - createdby_id integer, - updatedby_id integer, - kindof_id integer, - partof_id integer, - vocabulary_id integer, - orderindex integer, - iso639_1 varchar(2), - iso639_2 varchar(3), - defaultcolor varchar(255), - supportscommontaxonname bit, - supportsdistribution bit, - supportsindividualassociation bit, - supportsquantitativedata bit, - supportstaxoninteraction bit, - supportstextdata bit, - pointapproximation_errorradius integer, - pointapproximation_latitude double, - pointapproximation_longitude double, - validperiod_end varchar(255), - validperiod_start varchar(255), - level_id integer, - pointapproximation_referencesystem_id integer, - shape_id integer, - type_id integer, - symmetric bit, - transitive bit, - iso3166_a2 varchar(2), - primary key (id, REV) - ); - - create table DefinedTermBase_Continent ( - DefinedTermBase_id integer not null, - continents_id integer not null, - primary key (DefinedTermBase_id, continents_id) - ); - - create table DefinedTermBase_Continent_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - continents_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, continents_id) - ); - - create table DefinedTermBase_Media ( - DefinedTermBase_id integer not null, - media_id integer not null, - primary key (DefinedTermBase_id, media_id), - unique (media_id) - ); - - create table DefinedTermBase_Media_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - media_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, media_id) - ); - - create table DefinedTermBase_RecommendedModifierEnumeration ( - DefinedTermBase_id integer not null, - recommendedmodifierenumeration_id integer not null, - primary key (DefinedTermBase_id, recommendedmodifierenumeration_id), - unique (recommendedmodifierenumeration_id) - ); - - create table DefinedTermBase_RecommendedModifierEnumeration_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - recommendedmodifierenumeration_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, recommendedmodifierenumeration_id) - ); - - create table DefinedTermBase_Representation ( - DefinedTermBase_id integer not null, - representations_id integer not null, - primary key (DefinedTermBase_id, representations_id), - unique (representations_id) - ); - - create table DefinedTermBase_Representation_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - representations_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, representations_id) - ); - - create table DefinedTermBase_StatisticalMeasure ( - DefinedTermBase_id integer not null, - recommendedstatisticalmeasures_id integer not null, - primary key (DefinedTermBase_id, recommendedstatisticalmeasures_id) - ); - - create table DefinedTermBase_StatisticalMeasure_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - recommendedstatisticalmeasures_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, recommendedstatisticalmeasures_id) - ); - - create table DefinedTermBase_SupportedCategoricalEnumeration ( - DefinedTermBase_id integer not null, - supportedcategoricalenumerations_id integer not null, - primary key (DefinedTermBase_id, supportedcategoricalenumerations_id), - unique (supportedcategoricalenumerations_id) - ); - - create table DefinedTermBase_SupportedCategoricalEnumeration_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - supportedcategoricalenumerations_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, supportedcategoricalenumerations_id) - ); - - create table DefinedTermBase_WaterbodyOrCountry ( - DefinedTermBase_id integer not null, - waterbodiesorcountries_id integer not null, - primary key (DefinedTermBase_id, waterbodiesorcountries_id) - ); - - create table DefinedTermBase_WaterbodyOrCountry_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - waterbodiesorcountries_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, waterbodiesorcountries_id) - ); - - create table DerivationEvent ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - timeperiod_end varchar(255), - timeperiod_start varchar(255), - createdby_id integer, - updatedby_id integer, - actor_id integer, - type_id integer, - primary key (id) - ); - - create table DerivationEvent_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - timeperiod_end varchar(255), - timeperiod_start varchar(255), - createdby_id integer, - updatedby_id integer, - actor_id integer, - type_id integer, - primary key (id, REV) - ); - - create table DerivationEvent_Annotation ( - DerivationEvent_id integer not null, - annotations_id integer not null, - primary key (DerivationEvent_id, annotations_id), - unique (annotations_id) - ); - - create table DerivationEvent_Annotation_AUD ( - REV integer not null, - DerivationEvent_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, DerivationEvent_id, annotations_id) - ); - - create table DerivationEvent_Marker ( - DerivationEvent_id integer not null, - markers_id integer not null, - primary key (DerivationEvent_id, markers_id), - unique (markers_id) - ); - - create table DerivationEvent_Marker_AUD ( - REV integer not null, - DerivationEvent_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, DerivationEvent_id, markers_id) - ); - - create table DescriptionBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - createdby_id integer, - updatedby_id integer, - taxon_fk integer, - taxonName_fk integer, - primary key (id) - ); - - create table DescriptionBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - createdby_id integer, - updatedby_id integer, - taxon_fk integer, - taxonName_fk integer, - primary key (id, REV) - ); - - create table DescriptionBase_Annotation ( - DescriptionBase_id integer not null, - annotations_id integer not null, - primary key (DescriptionBase_id, annotations_id), - unique (annotations_id) - ); - - create table DescriptionBase_Annotation_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, annotations_id) - ); - - create table DescriptionBase_Extension ( - DescriptionBase_id integer not null, - extensions_id integer not null, - primary key (DescriptionBase_id, extensions_id), - unique (extensions_id) - ); - - create table DescriptionBase_Extension_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, extensions_id) - ); - - create table DescriptionBase_GeoScope ( - DescriptionBase_id integer not null, - geoscopes_id integer not null, - primary key (DescriptionBase_id, geoscopes_id), - unique (geoscopes_id) - ); - - create table DescriptionBase_GeoScope_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - geoscopes_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, geoscopes_id) - ); - - create table DescriptionBase_Marker ( - DescriptionBase_id integer not null, - markers_id integer not null, - primary key (DescriptionBase_id, markers_id), - unique (markers_id) - ); - - create table DescriptionBase_Marker_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, markers_id) - ); - - create table DescriptionBase_OriginalSource ( - DescriptionBase_id integer not null, - sources_id integer not null, - primary key (DescriptionBase_id, sources_id), - unique (sources_id) - ); - - create table DescriptionBase_OriginalSource_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, sources_id) - ); - - create table DescriptionBase_ReferenceBase ( - DescriptionBase_id integer not null, - descriptionsources_id integer not null, - primary key (DescriptionBase_id, descriptionsources_id) - ); - - create table DescriptionBase_ReferenceBase_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - descriptionsources_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, descriptionsources_id) - ); - - create table DescriptionBase_Rights ( - DescriptionBase_id integer not null, - rights_id integer not null, - primary key (DescriptionBase_id, rights_id), - unique (rights_id) - ); - - create table DescriptionBase_Rights_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, rights_id) - ); - - create table DescriptionBase_Scope ( - DescriptionBase_id integer not null, - scopes_id integer not null, - primary key (DescriptionBase_id, scopes_id), - unique (scopes_id) - ); - - create table DescriptionBase_Scope_AUD ( - REV integer not null, - DescriptionBase_id integer not null, - scopes_id integer not null, - revtype tinyint, - primary key (REV, DescriptionBase_id, scopes_id) - ); - - create table DescriptionBase_SpecimenOrObservationBase ( - descriptions_id integer not null, - describedspecimenorobservations_id integer not null, - primary key (descriptions_id, describedspecimenorobservations_id) - ); - - create table DescriptionBase_SpecimenOrObservationBase_AUD ( - REV integer not null, - descriptions_id integer not null, - describedspecimenorobservations_id integer not null, - revtype tinyint, - primary key (REV, descriptions_id, describedspecimenorobservations_id) - ); - - create table DescriptionElementBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - orderrelevant bit, - name varchar(255), - modifyingtext varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - feature_id integer, - indescription_id integer, - language_id integer, - area_id integer, - status_id integer, - associatedspecimenorobservation_id integer, - unit_id integer, - taxon2_id integer, - format_id integer, - primary key (id) - ); - - create table DescriptionElementBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - feature_id integer, - indescription_id integer, - name varchar(255), - language_id integer, - unit_id integer, - format_id integer, - taxon2_id integer, - area_id integer, - status_id integer, - orderrelevant bit, - associatedspecimenorobservation_id integer, - primary key (id, REV) - ); - - create table DescriptionElementBase_Annotation ( - DescriptionElementBase_id integer not null, - annotations_id integer not null, - primary key (DescriptionElementBase_id, annotations_id), - unique (annotations_id) - ); - - create table DescriptionElementBase_Annotation_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, annotations_id) - ); - - create table DescriptionElementBase_LanguageString ( - DescriptionElementBase_id integer not null, - multilanguagetext_id integer not null, - primary key (DescriptionElementBase_id, multilanguagetext_id), - unique (multilanguagetext_id) - ); - - create table DescriptionElementBase_LanguageString_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - multilanguagetext_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, multilanguagetext_id) - ); - - create table DescriptionElementBase_Marker ( - DescriptionElementBase_id integer not null, - markers_id integer not null, - primary key (DescriptionElementBase_id, markers_id), - unique (markers_id) - ); - - create table DescriptionElementBase_Marker_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, markers_id) - ); - - create table DescriptionElementBase_Media ( - DescriptionElementBase_id integer not null, - media_id integer not null, - primary key (DescriptionElementBase_id, media_id), - unique (media_id) - ); - - create table DescriptionElementBase_Media_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - media_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, media_id) - ); - - create table DescriptionElementBase_Modifier ( - DescriptionElementBase_id integer not null, - modifiers_id integer not null, - primary key (DescriptionElementBase_id, modifiers_id), - unique (modifiers_id) - ); - - create table DescriptionElementBase_Modifier_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - modifiers_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, modifiers_id) - ); - - create table DescriptionElementBase_ModifyingText ( - DescriptionElementBase_id integer not null, - modifyingtext_id integer not null, - modifyingtext_mapkey_id integer not null, - primary key (DescriptionElementBase_id, modifyingtext_mapkey_id), - unique (modifyingtext_id) - ); - - create table DescriptionElementBase_ModifyingText_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - modifyingtext_id integer not null, - modifyingtext_mapkey_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, modifyingtext_id, modifyingtext_mapkey_id) - ); - - create table DescriptionElementBase_StateData ( - DescriptionElementBase_id integer not null, - states_id integer not null - ); - - create table DescriptionElementBase_StateData_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - states_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, states_id) - ); - - create table DescriptionElementBase_StatisticalMeasurementValue ( - DescriptionElementBase_id integer not null, - statisticalvalues_id integer not null, - primary key (DescriptionElementBase_id, statisticalvalues_id), - unique (statisticalvalues_id) - ); - - create table DescriptionElementBase_StatisticalMeasurementValue_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - statisticalvalues_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, statisticalvalues_id) - ); - - create table DeterminationEvent ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - timeperiod_end varchar(255), - timeperiod_start varchar(255), - preferredflag bit not null, - createdby_id integer, - updatedby_id integer, - actor_id integer, - identifiedunit_id integer, - modifier_id integer, - taxon_id integer, - primary key (id) - ); - - create table DeterminationEvent_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - timeperiod_end varchar(255), - timeperiod_start varchar(255), - preferredflag bit, - createdby_id integer, - updatedby_id integer, - actor_id integer, - identifiedunit_id integer, - modifier_id integer, - taxon_id integer, - primary key (id, REV) - ); - - create table DeterminationEvent_Annotation ( - DeterminationEvent_id integer not null, - annotations_id integer not null, - primary key (DeterminationEvent_id, annotations_id), - unique (annotations_id) - ); - - create table DeterminationEvent_Annotation_AUD ( - REV integer not null, - DeterminationEvent_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, DeterminationEvent_id, annotations_id) - ); - - create table DeterminationEvent_Marker ( - DeterminationEvent_id integer not null, - markers_id integer not null, - primary key (DeterminationEvent_id, markers_id), - unique (markers_id) - ); - - create table DeterminationEvent_Marker_AUD ( - REV integer not null, - DeterminationEvent_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, DeterminationEvent_id, markers_id) - ); - - create table DeterminationEvent_ReferenceBase ( - DeterminationEvent_id integer not null, - setofreferences_id integer not null, - primary key (DeterminationEvent_id, setofreferences_id) - ); - - create table DeterminationEvent_ReferenceBase_AUD ( - REV integer not null, - DeterminationEvent_id integer not null, - setofreferences_id integer not null, - revtype tinyint, - primary key (REV, DeterminationEvent_id, setofreferences_id) - ); - - create table Extension ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - extendedObj_type varchar(255), - extendedObj_id integer not null, - value varchar(255), - createdby_id integer, - updatedby_id integer, - type_id integer, - primary key (id) - ); - - create table Extension_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - value varchar(255), - createdby_id integer, - updatedby_id integer, - type_id integer, - primary key (id, REV) - ); - - create table FeatureNode ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - createdby_id integer, - updatedby_id integer, - feature_id integer, - parent_fk integer, - primary key (id) - ); - - create table FeatureNode_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - createdby_id integer, - updatedby_id integer, - feature_id integer, - parent_fk integer, - primary key (id, REV) - ); - - create table FeatureTree ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - uri varchar(255), - descriptionseparated bit not null, - createdby_id integer, - updatedby_id integer, - root_id integer, - primary key (id) - ); - - create table FeatureTree_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - uri varchar(255), - descriptionseparated bit, - createdby_id integer, - updatedby_id integer, - root_id integer, - primary key (id, REV) - ); - - create table FeatureTree_Representation ( - FeatureTree_id integer not null, - representations_id integer not null, - primary key (FeatureTree_id, representations_id), - unique (representations_id) - ); - - create table FeatureTree_Representation_AUD ( - REV integer not null, - FeatureTree_id integer not null, - representations_id integer not null, - revtype tinyint, - primary key (REV, FeatureTree_id, representations_id) - ); - - create table GatheringEvent ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - timeperiod_end varchar(255), - timeperiod_start varchar(255), - absoluteelevation integer, - absoluteelevationerror integer, - collectingmethod varchar(255), - distancetoground integer, - distancetowatersurface integer, - exactlocation_errorradius integer, - exactlocation_latitude double, - exactlocation_longitude double, - createdby_id integer, - updatedby_id integer, - actor_id integer, - exactlocation_referencesystem_id integer, - locality_id integer, - primary key (id) - ); - - create table GatheringEvent_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - timeperiod_end varchar(255), - timeperiod_start varchar(255), - absoluteelevation integer, - absoluteelevationerror integer, - collectingmethod varchar(255), - distancetoground integer, - distancetowatersurface integer, - exactlocation_errorradius integer, - exactlocation_latitude double, - exactlocation_longitude double, - createdby_id integer, - updatedby_id integer, - actor_id integer, - exactlocation_referencesystem_id integer, - locality_id integer, - primary key (id, REV) - ); - - create table GatheringEvent_Annotation ( - GatheringEvent_id integer not null, - annotations_id integer not null, - primary key (GatheringEvent_id, annotations_id), - unique (annotations_id) - ); - - create table GatheringEvent_Annotation_AUD ( - REV integer not null, - GatheringEvent_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, GatheringEvent_id, annotations_id) - ); - - create table GatheringEvent_DefinedTermBase ( - GatheringEvent_id integer not null, - collectingareas_id integer not null, - primary key (GatheringEvent_id, collectingareas_id) - ); - - create table GatheringEvent_DefinedTermBase_AUD ( - REV integer not null, - GatheringEvent_id integer not null, - collectingareas_id integer not null, - revtype tinyint, - primary key (REV, GatheringEvent_id, collectingareas_id) - ); - - create table GatheringEvent_Marker ( - GatheringEvent_id integer not null, - markers_id integer not null, - primary key (GatheringEvent_id, markers_id), - unique (markers_id) - ); - - create table GatheringEvent_Marker_AUD ( - REV integer not null, - GatheringEvent_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, GatheringEvent_id, markers_id) - ); - - create table GenBankAccession ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - accessionnumber varchar(255), - uri varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id) - ); - - create table GenBankAccession_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - accessionnumber varchar(255), - uri varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id, REV) - ); - - create table GrantedAuthorityImpl ( - id integer not null, - created timestamp, - uuid varchar(255), - authority varchar(255), - createdby_id integer, - primary key (id), - unique (authority) - ); - - create table HomotypicalGroup ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - createdby_id integer, - updatedby_id integer, - primary key (id) - ); - - create table HomotypicalGroup_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - createdby_id integer, - updatedby_id integer, - primary key (id, REV) - ); - - create table HomotypicalGroup_Annotation ( - HomotypicalGroup_id integer not null, - annotations_id integer not null, - primary key (HomotypicalGroup_id, annotations_id), - unique (annotations_id) - ); - - create table HomotypicalGroup_Annotation_AUD ( - REV integer not null, - HomotypicalGroup_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, HomotypicalGroup_id, annotations_id) - ); - - create table HomotypicalGroup_Marker ( - HomotypicalGroup_id integer not null, - markers_id integer not null, - primary key (HomotypicalGroup_id, markers_id), - unique (markers_id) - ); - - create table HomotypicalGroup_Marker_AUD ( - REV integer not null, - HomotypicalGroup_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, HomotypicalGroup_id, markers_id) - ); - - create table HybridRelationship ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit not null, - ruleconsidered varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id) - ); - - create table HybridRelationship_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit, - ruleconsidered varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id, REV) - ); - - create table HybridRelationship_Annotation ( - HybridRelationship_id integer not null, - annotations_id integer not null, - primary key (HybridRelationship_id, annotations_id), - unique (annotations_id) - ); - - create table HybridRelationship_Annotation_AUD ( - REV integer not null, - HybridRelationship_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, HybridRelationship_id, annotations_id) - ); - - create table HybridRelationship_Marker ( - HybridRelationship_id integer not null, - markers_id integer not null, - primary key (HybridRelationship_id, markers_id), - unique (markers_id) - ); - - create table HybridRelationship_Marker_AUD ( - REV integer not null, - HybridRelationship_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, HybridRelationship_id, markers_id) - ); - - create table IdentificationKey_Taxon ( - identificationKey_fk integer not null, - taxon_fk integer not null, - primary key (identificationKey_fk, taxon_fk) - ); - - create table IdentificationKey_Taxon_AUD ( - REV integer not null, - identificationKey_fk integer not null, - taxon_fk integer not null, - revtype tinyint, - primary key (REV, identificationKey_fk, taxon_fk) - ); - - create table IndividualAssociation_LanguageString ( - DescriptionElementBase_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - primary key (DescriptionElementBase_id, description_mapkey_id), - unique (description_id) - ); - - create table IndividualAssociation_LanguageString_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, description_id, description_mapkey_id) - ); - - create table InstitutionalMembership ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - department varchar(255), - period_end varchar(255), - period_start varchar(255), - role varchar(255), - createdby_id integer, - updatedby_id integer, - institute_id integer, - person_id integer, - primary key (id) - ); - - create table InstitutionalMembership_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - department varchar(255), - period_end varchar(255), - period_start varchar(255), - role varchar(255), - createdby_id integer, - updatedby_id integer, - institute_id integer, - person_id integer, - primary key (id, REV) - ); - - create table LanguageString ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - createdby_id integer, - updatedby_id integer, - language_id integer, - primary key (id) - ); - - create table LanguageString_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - createdby_id integer, - updatedby_id integer, - language_id integer, - primary key (id, REV) - ); - - create table LanguageString_Annotation ( - LanguageString_id integer not null, - annotations_id integer not null, - primary key (LanguageString_id, annotations_id), - unique (annotations_id) - ); - - create table LanguageString_Annotation_AUD ( - REV integer not null, - LanguageString_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, LanguageString_id, annotations_id) - ); - - create table LanguageString_Marker ( - LanguageString_id integer not null, - markers_id integer not null, - primary key (LanguageString_id, markers_id), - unique (markers_id) - ); - - create table LanguageString_Marker_AUD ( - REV integer not null, - LanguageString_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, LanguageString_id, markers_id) - ); - - create table Locus ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - name varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id) - ); - - create table Locus_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - description varchar(255), - name varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id, REV) - ); - - create table Marker ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - flag bit not null, - markedObj_type varchar(255), - markedObj_id integer not null, - createdby_id integer, - updatedby_id integer, - markertype_id integer, - primary key (id) - ); - - create table Marker_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - flag bit, - createdby_id integer, - updatedby_id integer, - markertype_id integer, - primary key (id, REV) - ); - - create table Media ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - mediacreated date, - description varchar(255), - title varchar(255), - citationmicroreference varchar(255), - createdby_id integer, - updatedby_id integer, - artist_id integer, - citation_id integer, - primary key (id) - ); - - create table MediaRepresentation ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - mimetype varchar(255), - suffix varchar(255), - createdby_id integer, - updatedby_id integer, - media_id integer, - primary key (id) - ); - - create table MediaRepresentationPart ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - size integer, - uri varchar(255), - duration integer, - height integer, - width integer, - createdby_id integer, - updatedby_id integer, - representation_id integer not null, - sortIndex integer, - primary key (id) - ); - - create table MediaRepresentationPart_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - size integer, - uri varchar(255), - createdby_id integer, - updatedby_id integer, - representation_id integer, - duration integer, - height integer, - width integer, - primary key (id, REV) - ); - - create table MediaRepresentation_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - mimetype varchar(255), - suffix varchar(255), - createdby_id integer, - updatedby_id integer, - media_id integer, - primary key (id, REV) - ); - - create table MediaRepresentation_MediaRepresentationPart_AUD ( - REV integer not null, - representation_id integer not null, - id integer not null, - sortIndex integer not null, - revtype tinyint, - primary key (REV, representation_id, id, sortIndex) - ); - - create table Media_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - mediacreated date, - createdby_id integer, - updatedby_id integer, - artist_id integer, - citationmicroreference varchar(255), - citation_id integer, - primary key (id, REV) - ); - - create table Media_Annotation ( - Media_id integer not null, - annotations_id integer not null, - primary key (Media_id, annotations_id), - unique (annotations_id) - ); - - create table Media_Annotation_AUD ( - REV integer not null, - Media_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Media_id, annotations_id) - ); - - create table Media_DefinedTermBase ( - Media_id integer not null, - geoscopes_id integer not null, - primary key (Media_id, geoscopes_id) - ); - - create table Media_DefinedTermBase_AUD ( - REV integer not null, - Media_id integer not null, - geoscopes_id integer not null, - revtype tinyint, - primary key (REV, Media_id, geoscopes_id) - ); - - create table Media_Description ( - Media_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - primary key (Media_id, description_mapkey_id), - unique (description_id) - ); - - create table Media_Description_AUD ( - REV integer not null, - Media_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - revtype tinyint, - primary key (REV, Media_id, description_id, description_mapkey_id) - ); - - create table Media_LanguageString ( - Media_id integer not null, - title_id integer not null, - title_mapkey_id integer not null, - primary key (Media_id, title_mapkey_id), - unique (title_id) - ); - - create table Media_LanguageString_AUD ( - REV integer not null, - Media_id integer not null, - title_id integer not null, - title_mapkey_id integer not null, - revtype tinyint, - primary key (REV, Media_id, title_id, title_mapkey_id) - ); - - create table Media_Marker ( - Media_id integer not null, - markers_id integer not null, - primary key (Media_id, markers_id), - unique (markers_id) - ); - - create table Media_Marker_AUD ( - REV integer not null, - Media_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Media_id, markers_id) - ); - - create table Media_Rights ( - Media_id integer not null, - rights_id integer not null, - primary key (Media_id, rights_id) - ); - - create table Media_Rights_AUD ( - REV integer not null, - Media_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, Media_id, rights_id) - ); - - create table Media_Sequence ( - Media_id integer not null, - usedsequences_id integer not null, - primary key (Media_id, usedsequences_id), - unique (usedsequences_id) - ); - - create table Media_Sequence_AUD ( - REV integer not null, - Media_id integer not null, - usedsequences_id integer not null, - revtype tinyint, - primary key (REV, Media_id, usedsequences_id) - ); - - create table Media_TaxonBase ( - Media_id integer not null, - coveredtaxa_id integer not null, - primary key (Media_id, coveredtaxa_id), - unique (coveredtaxa_id) - ); - - create table Media_Title ( - Media_id integer not null, - title_id integer not null, - title_mapkey_id integer not null, - primary key (Media_id, title_mapkey_id), - unique (title_id) - ); - - create table Media_TaxonBase_AUD ( - REV integer not null, - Media_id integer not null, - coveredtaxa_id integer not null, - revtype tinyint, - primary key (REV, Media_id, coveredtaxa_id) - ); - - create table NameRelationship ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit not null, - ruleconsidered varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id) - ); - - create table NameRelationship_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit, - ruleconsidered varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id, REV) - ); - - create table NameRelationship_Annotation ( - NameRelationship_id integer not null, - annotations_id integer not null, - primary key (NameRelationship_id, annotations_id), - unique (annotations_id) - ); - - create table NameRelationship_Annotation_AUD ( - REV integer not null, - NameRelationship_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, NameRelationship_id, annotations_id) - ); - - create table NameRelationship_Marker ( - NameRelationship_id integer not null, - markers_id integer not null, - primary key (NameRelationship_id, markers_id), - unique (markers_id) - ); - - create table NameRelationship_Marker_AUD ( - REV integer not null, - NameRelationship_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, NameRelationship_id, markers_id) - ); - - create table NomenclaturalStatus ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - ruleconsidered varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - type_id integer, - primary key (id) - ); - - create table NomenclaturalStatus_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - ruleconsidered varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - type_id integer, - primary key (id, REV) - ); - - create table NomenclaturalStatus_Annotation ( - NomenclaturalStatus_id integer not null, - annotations_id integer not null, - primary key (NomenclaturalStatus_id, annotations_id), - unique (annotations_id) - ); - - create table NomenclaturalStatus_Annotation_AUD ( - REV integer not null, - NomenclaturalStatus_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, NomenclaturalStatus_id, annotations_id) - ); - - create table NomenclaturalStatus_Marker ( - NomenclaturalStatus_id integer not null, - markers_id integer not null, - primary key (NomenclaturalStatus_id, markers_id), - unique (markers_id) - ); - - create table NomenclaturalStatus_Marker_AUD ( - REV integer not null, - NomenclaturalStatus_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, NomenclaturalStatus_id, markers_id) - ); - - create table OriginalSource ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - idinsource varchar(255), - idnamespace varchar(255), - sourcedObj_type varchar(255), - sourcedObj_id integer not null, - createdby_id integer, - updatedby_id integer, - citation_id integer, - primary key (id) - ); - - create table OriginalSource_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - idinsource varchar(255), - idnamespace varchar(255), - createdby_id integer, - updatedby_id integer, - citation_id integer, - primary key (id, REV) - ); - - create table OriginalSource_Annotation ( - OriginalSource_id integer not null, - annotations_id integer not null, - primary key (OriginalSource_id, annotations_id), - unique (annotations_id) - ); - - create table OriginalSource_Annotation_AUD ( - REV integer not null, - OriginalSource_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, OriginalSource_id, annotations_id) - ); - - create table OriginalSource_Marker ( - OriginalSource_id integer not null, - markers_id integer not null, - primary key (OriginalSource_id, markers_id), - unique (markers_id) - ); - - create table OriginalSource_Marker_AUD ( - REV integer not null, - OriginalSource_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, OriginalSource_id, markers_id) - ); - - create table PermissionGroup ( - id integer not null, - created timestamp, - uuid varchar(255), - name varchar(255), - createdby_id integer, - primary key (id), - unique (name) - ); - - create table PermissionGroup_GrantedAuthorityImpl ( - PermissionGroup_id integer not null, - grantedauthorities_id integer not null, - primary key (PermissionGroup_id, grantedauthorities_id) - ); - - create table Person_Keyword ( - person_fk integer not null, - keyword_fk integer not null, - primary key (person_fk, keyword_fk) - ); - - create table Person_Keyword_AUD ( - REV integer not null, - person_fk integer not null, - keyword_fk integer not null, - revtype tinyint, - primary key (REV, person_fk, keyword_fk) - ); - - create table ReferenceBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - hasproblem bit not null, - nomenclaturallyrelevant bit not null, - problemends integer not null, - problemstarts integer not null, - uri varchar(255), - datepublished_end varchar(255), - datepublished_start varchar(255), - title varchar(255), - pages varchar(255), - series varchar(255), - volume varchar(255), - address varchar(255), - annote varchar(255), - booktitle varchar(255), - chapter varchar(255), - edition varchar(255), - editor varchar(255), - eprint varchar(255), - howpublished varchar(255), - institution varchar(255), - journal varchar(255), - month varchar(255), - note varchar(255), - number varchar(255), - organization varchar(255), - publisher varchar(255), - reporttype varchar(255), - school varchar(255), - year varchar(255), - placepublished varchar(255), - seriespart varchar(255), - isbn varchar(255), - issn varchar(255), - createdby_id integer, - updatedby_id integer, - authorteam_id integer, - injournal_id integer, - crossref_id integer, - type_id integer, - inseries_id integer, - inbook_id integer, - inproceedings_id integer, - institution_id integer, - school_id integer, - primary key (id) - ); - - create table ReferenceBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - hasproblem bit, - nomenclaturallyrelevant bit, - problemends integer, - problemstarts integer, - uri varchar(255), - createdby_id integer, - updatedby_id integer, - authorteam_id integer, - datepublished_end varchar(255), - datepublished_start varchar(255), - title varchar(255), - pages varchar(255), - placepublished varchar(255), - publisher varchar(255), - school_id integer, - editor varchar(255), - seriespart varchar(255), - volume varchar(255), - inseries_id integer, - edition varchar(255), - isbn varchar(255), - organization varchar(255), - series varchar(255), - issn varchar(255), - address varchar(255), - annote varchar(255), - booktitle varchar(255), - chapter varchar(255), - eprint varchar(255), - howpublished varchar(255), - institution varchar(255), - journal varchar(255), - month varchar(255), - note varchar(255), - number varchar(255), - reporttype varchar(255), - school varchar(255), - year varchar(255), - crossref_id integer, - type_id integer, - inbook_id integer, - injournal_id integer, - inproceedings_id integer, - institution_id integer, - primary key (id, REV) - ); - - create table ReferenceBase_Annotation ( - ReferenceBase_id integer not null, - annotations_id integer not null, - primary key (ReferenceBase_id, annotations_id), - unique (annotations_id) - ); - - create table ReferenceBase_Annotation_AUD ( - REV integer not null, - ReferenceBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, ReferenceBase_id, annotations_id) - ); - - create table ReferenceBase_Extension ( - ReferenceBase_id integer not null, - extensions_id integer not null, - primary key (ReferenceBase_id, extensions_id), - unique (extensions_id) - ); - - create table ReferenceBase_Extension_AUD ( - REV integer not null, - ReferenceBase_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, ReferenceBase_id, extensions_id) - ); - - create table ReferenceBase_Marker ( - ReferenceBase_id integer not null, - markers_id integer not null, - primary key (ReferenceBase_id, markers_id), - unique (markers_id) - ); - - create table ReferenceBase_Marker_AUD ( - REV integer not null, - ReferenceBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, ReferenceBase_id, markers_id) - ); - - create table ReferenceBase_Media ( - ReferenceBase_id integer not null, - media_id integer not null, - primary key (ReferenceBase_id, media_id), - unique (media_id) - ); - - create table ReferenceBase_Media_AUD ( - REV integer not null, - ReferenceBase_id integer not null, - media_id integer not null, - revtype tinyint, - primary key (REV, ReferenceBase_id, media_id) - ); - - create table ReferenceBase_OriginalSource ( - ReferenceBase_id integer not null, - sources_id integer not null, - primary key (ReferenceBase_id, sources_id), - unique (sources_id) - ); - - create table ReferenceBase_OriginalSource_AUD ( - REV integer not null, - ReferenceBase_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, ReferenceBase_id, sources_id) - ); - - create table ReferenceBase_Rights ( - ReferenceBase_id integer not null, - rights_id integer not null, - primary key (ReferenceBase_id, rights_id), - unique (rights_id) - ); - - create table ReferenceBase_Rights_AUD ( - REV integer not null, - ReferenceBase_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, ReferenceBase_id, rights_id) - ); - - create table RelationshipTermBase_inverseRepresentation ( - DefinedTermBase_id integer not null, - inverserepresentations_id integer not null, - primary key (DefinedTermBase_id, inverserepresentations_id), - unique (inverserepresentations_id) - ); - - create table RelationshipTermBase_inverseRepresentation_AUD ( - REV integer not null, - DefinedTermBase_id integer not null, - inverserepresentations_id integer not null, - revtype tinyint, - primary key (REV, DefinedTermBase_id, inverserepresentations_id) - ); - - create table Representation ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - abbreviatedlabel varchar(255), - label varchar(255), - createdby_id integer, - updatedby_id integer, - language_id integer, - primary key (id) - ); - - create table Representation_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - abbreviatedlabel varchar(255), - label varchar(255), - createdby_id integer, - updatedby_id integer, - language_id integer, - primary key (id, REV) - ); - - create table Representation_Annotation ( - Representation_id integer not null, - annotations_id integer not null, - primary key (Representation_id, annotations_id), - unique (annotations_id) - ); - - create table Representation_Annotation_AUD ( - REV integer not null, - Representation_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Representation_id, annotations_id) - ); - - create table Representation_Marker ( - Representation_id integer not null, - markers_id integer not null, - primary key (Representation_id, markers_id), - unique (markers_id) - ); - - create table Representation_Marker_AUD ( - REV integer not null, - Representation_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Representation_id, markers_id) - ); - - create table Rights ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - abbreviatedtext varchar(255), - uri varchar(255), - createdby_id integer, - updatedby_id integer, - language_id integer, - agent_id integer, - type_id integer, - primary key (id) - ); - - create table Rights_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - text varchar(4096), - abbreviatedtext varchar(255), - uri varchar(255), - createdby_id integer, - updatedby_id integer, - language_id integer, - agent_id integer, - type_id integer, - primary key (id, REV) - ); - - create table Rights_Annotation ( - Rights_id integer not null, - annotations_id integer not null, - primary key (Rights_id, annotations_id), - unique (annotations_id) - ); - - create table Rights_Annotation_AUD ( - REV integer not null, - Rights_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Rights_id, annotations_id) - ); - - create table Rights_Marker ( - Rights_id integer not null, - markers_id integer not null, - primary key (Rights_id, markers_id), - unique (markers_id) - ); - - create table Rights_Marker_AUD ( - REV integer not null, - Rights_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Rights_id, markers_id) - ); - - create table Sequence ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - barcode bit not null, - citationmicroreference varchar(255), - datesequenced date, - length integer, - locus varbinary(255), - sequence varchar(255), - createdby_id integer, - updatedby_id integer, - publishedin_id integer, - primary key (id) - ); - - create table Sequence_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - barcode bit, - citationmicroreference varchar(255), - datesequenced date, - length integer, - locus varbinary(255), - sequence varchar(255), - createdby_id integer, - updatedby_id integer, - publishedin_id integer, - primary key (id, REV) - ); - - create table Sequence_Annotation ( - Sequence_id integer not null, - annotations_id integer not null, - primary key (Sequence_id, annotations_id), - unique (annotations_id) - ); - - create table Sequence_Annotation_AUD ( - REV integer not null, - Sequence_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, annotations_id) - ); - - create table Sequence_Extension ( - Sequence_id integer not null, - extensions_id integer not null, - primary key (Sequence_id, extensions_id), - unique (extensions_id) - ); - - create table Sequence_Extension_AUD ( - REV integer not null, - Sequence_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, extensions_id) - ); - - create table Sequence_GenBankAccession ( - Sequence_id integer not null, - genbankaccession_id integer not null, - primary key (Sequence_id, genbankaccession_id), - unique (genbankaccession_id) - ); - - create table Sequence_GenBankAccession_AUD ( - REV integer not null, - Sequence_id integer not null, - genbankaccession_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, genbankaccession_id) - ); - - create table Sequence_Marker ( - Sequence_id integer not null, - markers_id integer not null, - primary key (Sequence_id, markers_id), - unique (markers_id) - ); - - create table Sequence_Marker_AUD ( - REV integer not null, - Sequence_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, markers_id) - ); - - create table Sequence_Media ( - Sequence_id integer not null, - chromatograms_id integer not null, - primary key (Sequence_id, chromatograms_id), - unique (chromatograms_id) - ); - - create table Sequence_Media_AUD ( - REV integer not null, - Sequence_id integer not null, - chromatograms_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, chromatograms_id) - ); - - create table Sequence_OriginalSource ( - Sequence_id integer not null, - sources_id integer not null, - primary key (Sequence_id, sources_id), - unique (sources_id) - ); - - create table Sequence_OriginalSource_AUD ( - REV integer not null, - Sequence_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, sources_id) - ); - - create table Sequence_ReferenceBase ( - Sequence_id integer not null, - citations_id integer not null, - primary key (Sequence_id, citations_id), - unique (citations_id) - ); - - create table Sequence_ReferenceBase_AUD ( - REV integer not null, - Sequence_id integer not null, - citations_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, citations_id) - ); - - create table Sequence_Rights ( - Sequence_id integer not null, - rights_id integer not null, - primary key (Sequence_id, rights_id), - unique (rights_id) - ); - - create table Sequence_Rights_AUD ( - REV integer not null, - Sequence_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, Sequence_id, rights_id) - ); - - create table SpecimenOrObservationBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - individualcount integer, - accessionnumber varchar(255), - catalognumber varchar(255), - collectorsnumber varchar(255), - fieldnotes varchar(255), - fieldnumber varchar(255), - createdby_id integer, - updatedby_id integer, - lifestage_id integer, - sex_id integer, - collection_id integer, - derivationevent_id integer, - storedunder_id integer, - preservation_id integer, - gatheringevent_id integer, - primary key (id) - ); - - create table SpecimenOrObservationBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - individualcount integer, - createdby_id integer, - updatedby_id integer, - lifestage_id integer, - sex_id integer, - accessionnumber varchar(255), - catalognumber varchar(255), - collectorsnumber varchar(255), - collection_id integer, - derivationevent_id integer, - storedunder_id integer, - fieldnotes varchar(255), - fieldnumber varchar(255), - gatheringevent_id integer, - preservation_id integer, - primary key (id, REV) - ); - - create table SpecimenOrObservationBase_Annotation ( - SpecimenOrObservationBase_id integer not null, - annotations_id integer not null, - primary key (SpecimenOrObservationBase_id, annotations_id), - unique (annotations_id) - ); - - create table SpecimenOrObservationBase_Annotation_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, annotations_id) - ); - - create table SpecimenOrObservationBase_DerivationEvent ( - originals_id integer not null, - derivationevents_id integer not null, - primary key (originals_id, derivationevents_id) - ); - - create table SpecimenOrObservationBase_DerivationEvent_AUD ( - REV integer not null, - originals_id integer not null, - derivationevents_id integer not null, - revtype tinyint, - primary key (REV, originals_id, derivationevents_id) - ); - - create table SpecimenOrObservationBase_Extension ( - SpecimenOrObservationBase_id integer not null, - extensions_id integer not null, - primary key (SpecimenOrObservationBase_id, extensions_id), - unique (extensions_id) - ); - - create table SpecimenOrObservationBase_Extension_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, extensions_id) - ); - - create table SpecimenOrObservationBase_LanguageString ( - SpecimenOrObservationBase_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - primary key (SpecimenOrObservationBase_id, description_mapkey_id), - unique (description_id) - ); - - create table SpecimenOrObservationBase_LanguageString_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, description_id, description_mapkey_id) - ); - - create table SpecimenOrObservationBase_Marker ( - SpecimenOrObservationBase_id integer not null, - markers_id integer not null, - primary key (SpecimenOrObservationBase_id, markers_id), - unique (markers_id) - ); - - create table SpecimenOrObservationBase_Marker_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, markers_id) - ); - - create table SpecimenOrObservationBase_Media ( - SpecimenOrObservationBase_id integer not null, - media_id integer not null, - primary key (SpecimenOrObservationBase_id, media_id), - unique (media_id) - ); - - create table SpecimenOrObservationBase_Media_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - media_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, media_id) - ); - - create table SpecimenOrObservationBase_OriginalSource ( - SpecimenOrObservationBase_id integer not null, - sources_id integer not null, - primary key (SpecimenOrObservationBase_id, sources_id), - unique (sources_id) - ); - - create table SpecimenOrObservationBase_OriginalSource_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, sources_id) - ); - - create table SpecimenOrObservationBase_Rights ( - SpecimenOrObservationBase_id integer not null, - rights_id integer not null, - primary key (SpecimenOrObservationBase_id, rights_id), - unique (rights_id) - ); - - create table SpecimenOrObservationBase_Rights_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, rights_id) - ); - - create table SpecimenOrObservationBase_Sequence ( - SpecimenOrObservationBase_id integer not null, - sequences_id integer not null, - primary key (SpecimenOrObservationBase_id, sequences_id), - unique (sequences_id) - ); - - create table SpecimenOrObservationBase_Sequence_AUD ( - REV integer not null, - SpecimenOrObservationBase_id integer not null, - sequences_id integer not null, - revtype tinyint, - primary key (REV, SpecimenOrObservationBase_id, sequences_id) - ); - - create table StateData ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - createdby_id integer, - updatedby_id integer, - state_id integer, - primary key (id) - ); - - create table StateData_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - createdby_id integer, - updatedby_id integer, - state_id integer, - primary key (id, REV) - ); - - create table StateData_DefinedTermBase ( - StateData_id integer not null, - modifiers_id integer not null, - primary key (StateData_id, modifiers_id), - unique (modifiers_id) - ); - - create table StateData_DefinedTermBase_AUD ( - REV integer not null, - StateData_id integer not null, - modifiers_id integer not null, - revtype tinyint, - primary key (REV, StateData_id, modifiers_id) - ); - - create table StateData_LanguageString ( - StateData_id integer not null, - modifyingtext_id integer not null, - modifyingtext_mapkey_id integer not null, - primary key (StateData_id, modifyingtext_mapkey_id), - unique (modifyingtext_id) - ); - - create table StateData_LanguageString_AUD ( - REV integer not null, - StateData_id integer not null, - modifyingtext_id integer not null, - modifyingtext_mapkey_id integer not null, - revtype tinyint, - primary key (REV, StateData_id, modifyingtext_id, modifyingtext_mapkey_id) - ); - - create table StatisticalMeasurementValue ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - value float not null, - createdby_id integer, - updatedby_id integer, - type_id integer, - primary key (id) - ); - - create table StatisticalMeasurementValue_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - value float, - createdby_id integer, - updatedby_id integer, - type_id integer, - primary key (id, REV) - ); - - create table StatisticalMeasurementValue_DefinedTermBase ( - StatisticalMeasurementValue_id integer not null, - modifiers_id integer not null, - primary key (StatisticalMeasurementValue_id, modifiers_id), - unique (modifiers_id) - ); - - create table StatisticalMeasurementValue_DefinedTermBase_AUD ( - REV integer not null, - StatisticalMeasurementValue_id integer not null, - modifiers_id integer not null, - revtype tinyint, - primary key (REV, StatisticalMeasurementValue_id, modifiers_id) - ); - - create table SynonymRelationship ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit not null, - partial bit not null, - proparte bit not null, - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id) - ); - - create table SynonymRelationship_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit, - partial bit, - proparte bit, - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id, REV) - ); - - create table SynonymRelationship_Annotation ( - SynonymRelationship_id integer not null, - annotations_id integer not null, - primary key (SynonymRelationship_id, annotations_id), - unique (annotations_id) - ); - - create table SynonymRelationship_Annotation_AUD ( - REV integer not null, - SynonymRelationship_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, SynonymRelationship_id, annotations_id) - ); - - create table SynonymRelationship_Marker ( - SynonymRelationship_id integer not null, - markers_id integer not null, - primary key (SynonymRelationship_id, markers_id), - unique (markers_id) - ); - - create table SynonymRelationship_Marker_AUD ( - REV integer not null, - SynonymRelationship_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, SynonymRelationship_id, markers_id) - ); - - create table TaxonBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - doubtful bit not null, - taxonomicchildrencount integer, - createdby_id integer, - updatedby_id integer, - taxonName_fk integer, - sec_id integer, - taxonomicparentcache_id integer, - primary key (id) - ); - - create table TaxonBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - doubtful bit, - createdby_id integer, - updatedby_id integer, - taxonName_fk integer, - sec_id integer, - taxonomicchildrencount integer, - taxonomicparentcache_id integer, - primary key (id, REV) - ); - - create table TaxonBase_Annotation ( - TaxonBase_id integer not null, - annotations_id integer not null, - primary key (TaxonBase_id, annotations_id), - unique (annotations_id) - ); - - create table TaxonBase_Annotation_AUD ( - REV integer not null, - TaxonBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, TaxonBase_id, annotations_id) - ); - - create table TaxonBase_Extension ( - TaxonBase_id integer not null, - extensions_id integer not null, - primary key (TaxonBase_id, extensions_id), - unique (extensions_id) - ); - - create table TaxonBase_Extension_AUD ( - REV integer not null, - TaxonBase_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, TaxonBase_id, extensions_id) - ); - - create table TaxonBase_Marker ( - TaxonBase_id integer not null, - markers_id integer not null, - primary key (TaxonBase_id, markers_id), - unique (markers_id) - ); - - create table TaxonBase_Marker_AUD ( - REV integer not null, - TaxonBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, TaxonBase_id, markers_id) - ); - - create table TaxonBase_OriginalSource ( - TaxonBase_id integer not null, - sources_id integer not null, - primary key (TaxonBase_id, sources_id), - unique (sources_id) - ); - - create table TaxonBase_OriginalSource_AUD ( - REV integer not null, - TaxonBase_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, TaxonBase_id, sources_id) - ); - - create table TaxonBase_Rights ( - TaxonBase_id integer not null, - rights_id integer not null, - primary key (TaxonBase_id, rights_id), - unique (rights_id) - ); - - create table TaxonBase_Rights_AUD ( - REV integer not null, - TaxonBase_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, TaxonBase_id, rights_id) - ); - - create table TaxonInteraction_LanguageString ( - DescriptionElementBase_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - primary key (DescriptionElementBase_id, description_mapkey_id), - unique (description_id) - ); - - create table TaxonInteraction_LanguageString_AUD ( - REV integer not null, - DescriptionElementBase_id integer not null, - description_id integer not null, - description_mapkey_id integer not null, - revtype tinyint, - primary key (REV, DescriptionElementBase_id, description_id, description_mapkey_id) - ); - - create table TaxonNameBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit not null, - titleCache varchar(255), - appendedphrase varchar(255), - fullTitleCache varchar(330), - hasproblem bit not null, - nomenclaturalmicroreference varchar(255), - problemends integer not null, - problemstarts integer not null, - protectedfulltitlecache bit not null, - authorshipcache varchar(255), - genusoruninomial varchar(255), - infragenericepithet varchar(255), - infraspecificepithet varchar(255), - namecache varchar(255), - protectedauthorshipcache bit, - protectednamecache bit, - specificepithet varchar(255), - nameapprobation varchar(255), - subgenusauthorship varchar(255), - anamorphic bit, - binomhybrid bit, - hybridformula bit, - monomhybrid bit, - trinomhybrid bit, - cultivarname varchar(255), - acronym varchar(255), - breed varchar(255), - originalpublicationyear integer, - publicationyear integer, - createdby_id integer, - updatedby_id integer, - homotypicalgroup_id integer, - nomenclaturalreference_id integer, - rank_id integer, - basionymauthorteam_id integer, - combinationauthorteam_id integer, - exbasionymauthorteam_id integer, - excombinationauthorteam_id integer, - primary key (id) - ); - - create table TaxonNameBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - lsid varchar(255), - protectedtitlecache bit, - titleCache varchar(255), - appendedphrase varchar(255), - fullTitleCache varchar(330), - hasproblem bit, - nomenclaturalmicroreference varchar(255), - problemends integer, - problemstarts integer, - protectedfulltitlecache bit, - createdby_id integer, - updatedby_id integer, - homotypicalgroup_id integer, - nomenclaturalreference_id integer, - rank_id integer, - acronym varchar(255), - authorshipcache varchar(255), - genusoruninomial varchar(255), - infragenericepithet varchar(255), - infraspecificepithet varchar(255), - namecache varchar(255), - protectedauthorshipcache bit, - protectednamecache bit, - specificepithet varchar(255), - basionymauthorteam_id integer, - combinationauthorteam_id integer, - exbasionymauthorteam_id integer, - excombinationauthorteam_id integer, - nameapprobation varchar(255), - subgenusauthorship varchar(255), - anamorphic bit, - binomhybrid bit, - hybridformula bit, - monomhybrid bit, - trinomhybrid bit, - cultivarname varchar(255), - breed varchar(255), - originalpublicationyear integer, - publicationyear integer, - primary key (id, REV) - ); - - create table TaxonNameBase_Annotation ( - TaxonNameBase_id integer not null, - annotations_id integer not null, - primary key (TaxonNameBase_id, annotations_id), - unique (annotations_id) - ); - - create table TaxonNameBase_Annotation_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, annotations_id) - ); - - create table TaxonNameBase_Extension ( - TaxonNameBase_id integer not null, - extensions_id integer not null, - primary key (TaxonNameBase_id, extensions_id), - unique (extensions_id) - ); - - create table TaxonNameBase_Extension_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - extensions_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, extensions_id) - ); - - create table TaxonNameBase_HybridRelationship ( - TaxonNameBase_id integer not null, - hybridrelationships_id integer not null, - primary key (TaxonNameBase_id, hybridrelationships_id), - unique (hybridrelationships_id) - ); - - create table TaxonNameBase_HybridRelationship_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - hybridrelationships_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, hybridrelationships_id) - ); - - create table TaxonNameBase_Marker ( - TaxonNameBase_id integer not null, - markers_id integer not null, - primary key (TaxonNameBase_id, markers_id), - unique (markers_id) - ); - - create table TaxonNameBase_Marker_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, markers_id) - ); - - create table TaxonNameBase_NomenclaturalStatus ( - TaxonNameBase_id integer not null, - status_id integer not null, - primary key (TaxonNameBase_id, status_id), - unique (status_id) - ); - - create table TaxonNameBase_NomenclaturalStatus_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - status_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, status_id) - ); - - create table TaxonNameBase_OriginalSource ( - TaxonNameBase_id integer not null, - sources_id integer not null, - primary key (TaxonNameBase_id, sources_id), - unique (sources_id) - ); - - create table TaxonNameBase_OriginalSource_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - sources_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, sources_id) - ); - - create table TaxonNameBase_Rights ( - TaxonNameBase_id integer not null, - rights_id integer not null, - primary key (TaxonNameBase_id, rights_id), - unique (rights_id) - ); - - create table TaxonNameBase_Rights_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - rights_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, rights_id) - ); - - create table TaxonNameBase_TypeDesignationBase ( - TaxonNameBase_id integer not null, - typedesignations_id integer not null, - primary key (TaxonNameBase_id, typedesignations_id) - ); - - create table TaxonNameBase_TypeDesignationBase_AUD ( - REV integer not null, - TaxonNameBase_id integer not null, - typedesignations_id integer not null, - revtype tinyint, - primary key (REV, TaxonNameBase_id, typedesignations_id) - ); - - create table TaxonRelationship ( - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit not null, - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id) - ); - - create table TaxonRelationship_AUD ( - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - doubtful bit, - createdby_id integer, - updatedby_id integer, - citation_id integer, - relatedfrom_id integer, - relatedto_id integer, - type_id integer, - primary key (id, REV) - ); - - create table TaxonRelationship_Annotation ( - TaxonRelationship_id integer not null, - annotations_id integer not null, - primary key (TaxonRelationship_id, annotations_id), - unique (annotations_id) - ); - - create table TaxonRelationship_Annotation_AUD ( - REV integer not null, - TaxonRelationship_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, TaxonRelationship_id, annotations_id) - ); - - create table TaxonRelationship_Marker ( - TaxonRelationship_id integer not null, - markers_id integer not null, - primary key (TaxonRelationship_id, markers_id), - unique (markers_id) - ); - - create table TaxonRelationship_Marker_AUD ( - REV integer not null, - TaxonRelationship_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, TaxonRelationship_id, markers_id) - ); - - create table TermVocabulary ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - uri varchar(255), - termsourceuri varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id) - ); - - create table TermVocabulary_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - uri varchar(255), - termsourceuri varchar(255), - createdby_id integer, - updatedby_id integer, - primary key (id, REV) - ); - - create table TermVocabulary_Representation ( - TermVocabulary_id integer not null, - representations_id integer not null, - primary key (TermVocabulary_id, representations_id), - unique (representations_id) - ); - - create table TermVocabulary_Representation_AUD ( - REV integer not null, - TermVocabulary_id integer not null, - representations_id integer not null, - revtype tinyint, - primary key (REV, TermVocabulary_id, representations_id) - ); - - create table TypeDesignationBase ( - DTYPE varchar(31) not null, - id integer not null, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - notdesignated bit not null, - conservedtype bit, - lectotype bit, - rejectedtype bit, - createdby_id integer, - updatedby_id integer, - citation_id integer, - homotypicalgroup_id integer, - typename_id integer, - typespecimen_id integer, - typestatus_id integer, - primary key (id) - ); - - create table TypeDesignationBase_AUD ( - DTYPE varchar(31) not null, - id integer not null, - REV integer not null, - revtype tinyint, - created timestamp, - uuid varchar(255), - updated timestamp, - citationmicroreference varchar(255), - originalnamestring varchar(255), - notdesignated bit, - createdby_id integer, - updatedby_id integer, - citation_id integer, - homotypicalgroup_id integer, - conservedtype bit, - lectotype bit, - rejectedtype bit, - typename_id integer, - typespecimen_id integer, - typestatus_id integer, - primary key (id, REV) - ); - - create table TypeDesignationBase_Annotation ( - TypeDesignationBase_id integer not null, - annotations_id integer not null, - primary key (TypeDesignationBase_id, annotations_id), - unique (annotations_id) - ); - - create table TypeDesignationBase_Annotation_AUD ( - REV integer not null, - TypeDesignationBase_id integer not null, - annotations_id integer not null, - revtype tinyint, - primary key (REV, TypeDesignationBase_id, annotations_id) - ); - - create table TypeDesignationBase_Marker ( - TypeDesignationBase_id integer not null, - markers_id integer not null, - primary key (TypeDesignationBase_id, markers_id), - unique (markers_id) - ); - - create table TypeDesignationBase_Marker_AUD ( - REV integer not null, - TypeDesignationBase_id integer not null, - markers_id integer not null, - revtype tinyint, - primary key (REV, TypeDesignationBase_id, markers_id) - ); - - create table TypeDesignationBase_TaxonNameBase ( - TypeDesignationBase_id integer not null, - typifiednames_id integer not null, - primary key (TypeDesignationBase_id, typifiednames_id) - ); - - create table TypeDesignationBase_TaxonNameBase_AUD ( - REV integer not null, - TypeDesignationBase_id integer not null, - typifiednames_id integer not null, - revtype tinyint, - primary key (REV, TypeDesignationBase_id, typifiednames_id) - ); - - create table User ( - id integer not null, - created timestamp, - uuid varchar(255), - accountnonexpired bit not null, - accountnonlocked bit not null, - credentialsnonexpired bit not null, - emailaddress varchar(255), - enabled bit not null, - password varchar(255), - username varchar(255), - createdby_id integer, - primary key (id), - unique (username) - ); - - create table User_GrantedAuthorityImpl ( - User_id integer not null, - grantedauthorities_id integer not null, - primary key (User_id, grantedauthorities_id) - ); - - create table User_PermissionGroup ( - members_id integer not null, - groups_id integer not null, - primary key (members_id, groups_id) - ); - - alter table Address - add constraint FK1ED033D4132A2FE8 - foreign key (location_referencesystem_id) - references DefinedTermBase; - - alter table Address - add constraint FK1ED033D4EE7A4BF4 - foreign key (contact_id) - references Contact; - - alter table Address - add constraint FK1ED033D4EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Address - add constraint FK1ED033D42687715A - foreign key (country_id) - references DefinedTermBase; - - alter table Address - add constraint FK1ED033D45BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Address_AUD - add constraint FK115657A534869AAE - foreign key (REV) - references AuditEvent; - - create index agentTitleCacheIndex on Agent (titleCache); - - alter table Agent - add constraint FK3C452E5EE7A4BF4 - foreign key (contact_id) - references Contact; - - alter table Agent - add constraint FK3C452E5EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Agent - add constraint FK3C452E5A830578 - foreign key (ispartof_id) - references Agent; - - alter table Agent - add constraint FK3C452E55BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Agent_AUD - add constraint FK1212863634869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_Agent - add constraint FKD792890B8CB642F8 - foreign key (Agent_id) - references Agent; - - alter table Agent_Agent - add constraint FKD792890BE9E535F9 - foreign key (teammembers_id) - references Agent; - - alter table Agent_Agent_AUD - add constraint FK49ED395C34869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_Annotation - add constraint FKDD9D78E9C5F7EC54 - foreign key (Agent_id) - references Agent; - - alter table Agent_Annotation - add constraint FKDD9D78E91E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Agent_Annotation_AUD - add constraint FK6F210A3A34869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_DefinedTermBase - add constraint FK7029490CFE425B87 - foreign key (Agent_id) - references Agent; - - alter table Agent_DefinedTermBase - add constraint FK7029490C9A161BED - foreign key (types_id) - references DefinedTermBase; - - alter table Agent_DefinedTermBase_AUD - add constraint FK393210DD34869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_Extension - add constraint FK8AC9EF45C5F7EC54 - foreign key (Agent_id) - references Agent; - - alter table Agent_Extension - add constraint FK8AC9EF45927DE9DF - foreign key (extensions_id) - references Extension; - - alter table Agent_Extension_AUD - add constraint FK2A32F29634869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_Marker - add constraint FK2EEA0EF4C5F7EC54 - foreign key (Agent_id) - references Agent; - - alter table Agent_Marker - add constraint FK2EEA0EF4777265A1 - foreign key (markers_id) - references Marker; - - alter table Agent_Marker_AUD - add constraint FK7CCDA2C534869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_Media - add constraint FKD83AB5EAC5F7EC54 - foreign key (Agent_id) - references Agent; - - alter table Agent_Media - add constraint FKD83AB5EAC2C29593 - foreign key (media_id) - references Media; - - alter table Agent_Media_AUD - add constraint FK2EE5DEBB34869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_OriginalSource - add constraint FK774F9E06C5F7EC54 - foreign key (Agent_id) - references Agent; - - alter table Agent_OriginalSource - add constraint FK774F9E063BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table Agent_OriginalSource_AUD - add constraint FKEAD158D734869AAE - foreign key (REV) - references AuditEvent; - - alter table Agent_Rights - add constraint FK37DDFC91C5F7EC54 - foreign key (Agent_id) - references Agent; - - alter table Agent_Rights - add constraint FK37DDFC91C13F7B21 - foreign key (rights_id) - references Rights; - - alter table Agent_Rights_AUD - add constraint FKE8A779E234869AAE - foreign key (REV) - references AuditEvent; - - alter table Annotation - add constraint FK1A21C74FDF299D00 - foreign key (annotationtype_id) - references DefinedTermBase; - - alter table Annotation - add constraint FK1A21C74FEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Annotation - add constraint FK1A21C74FE7692740 - foreign key (commentator_id) - references Agent; - - alter table Annotation - add constraint FK1A21C74F5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Annotation - add constraint FK1A21C74FE8D36B00 - foreign key (language_id) - references DefinedTermBase; - - alter table Annotation_AUD - add constraint FK1A6BB5A034869AAE - foreign key (REV) - references AuditEvent; - - alter table Annotation_Annotation - add constraint FKC99DFE3F994CCE20 - foreign key (Annotation_id) - references Annotation; - - alter table Annotation_Annotation - add constraint FKC99DFE3F1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Annotation_Annotation_AUD - add constraint FKB212F49034869AAE - foreign key (REV) - references AuditEvent; - - alter table Annotation_Marker - add constraint FKB17EAF4A994CCE20 - foreign key (Annotation_id) - references Annotation; - - alter table Annotation_Marker - add constraint FKB17EAF4A777265A1 - foreign key (markers_id) - references Marker; - - alter table Annotation_Marker_AUD - add constraint FK68CE281B34869AAE - foreign key (REV) - references AuditEvent; - - alter table CDM_VIEW - add constraint FKC5DE8EF8765B124B - foreign key (reference_id) - references ReferenceBase; - - alter table CDM_VIEW - add constraint FKC5DE8EF8EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table CDM_VIEW_CDM_VIEW - add constraint FK230A885F7208BB38 - foreign key (superviews_id) - references CDM_VIEW; - - alter table CDM_VIEW_CDM_VIEW - add constraint FK230A885FC00D1213 - foreign key (CDM_VIEW_id) - references CDM_VIEW; - - create index collectionTitleCacheIndex on Collection (titleCache); - - alter table Collection - add constraint FKF078ABECEB38EFF - foreign key (supercollection_id) - references Collection; - - alter table Collection - add constraint FKF078ABEEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Collection - add constraint FKF078ABE16B9CA77 - foreign key (institute_id) - references Agent; - - alter table Collection - add constraint FKF078ABE5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Collection_AUD - add constraint FKD6D4298F34869AAE - foreign key (REV) - references AuditEvent; - - alter table Collection_Annotation - add constraint FKEA970F70EB62BE9A - foreign key (Collection_id) - references Collection; - - alter table Collection_Annotation - add constraint FKEA970F701E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Collection_Annotation_AUD - add constraint FKA0CE054134869AAE - foreign key (REV) - references AuditEvent; - - alter table Collection_Extension - add constraint FKF68FEBDE927DE9DF - foreign key (extensions_id) - references Extension; - - alter table Collection_Extension - add constraint FKF68FEBDEEB62BE9A - foreign key (Collection_id) - references Collection; - - alter table Collection_Extension_AUD - add constraint FK1306FAAF34869AAE - foreign key (REV) - references AuditEvent; - - alter table Collection_Marker - add constraint FKF0CA00FBEB62BE9A - foreign key (Collection_id) - references Collection; - - alter table Collection_Marker - add constraint FKF0CA00FB777265A1 - foreign key (markers_id) - references Marker; - - alter table Collection_Marker_AUD - add constraint FK89C7394C34869AAE - foreign key (REV) - references AuditEvent; - - alter table Collection_Media - add constraint FK7320E703EB62BE9A - foreign key (Collection_id) - references Collection; - - alter table Collection_Media - add constraint FK7320E703C2C29593 - foreign key (media_id) - references Media; - - alter table Collection_Media_AUD - add constraint FK9AABDB5434869AAE - foreign key (REV) - references AuditEvent; - - alter table Collection_OriginalSource - add constraint FKA8FC990DEB62BE9A - foreign key (Collection_id) - references Collection; - - alter table Collection_OriginalSource - add constraint FKA8FC990D3BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table Collection_OriginalSource_AUD - add constraint FK37EB785E34869AAE - foreign key (REV) - references AuditEvent; - - alter table Collection_Rights - add constraint FKF9BDEE98EB62BE9A - foreign key (Collection_id) - references Collection; - - alter table Collection_Rights - add constraint FKF9BDEE98C13F7B21 - foreign key (rights_id) - references Rights; - - alter table Collection_Rights_AUD - add constraint FKF5A1106934869AAE - foreign key (REV) - references AuditEvent; - - alter table Contact - add constraint FK9BEFBC00EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Contact - add constraint FK9BEFBC005BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Contact_AUD - add constraint FK65DDE9D134869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase - add constraint FK2E340A6636C6F6F6 - foreign key (pointapproximation_referencesystem_id) - references DefinedTermBase; - - alter table DefinedTermBase - add constraint FK2E340A66EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table DefinedTermBase - add constraint FK2E340A6688206484 - foreign key (type_id) - references DefinedTermBase; - - alter table DefinedTermBase - add constraint FK2E340A6647AF954C - foreign key (vocabulary_id) - references TermVocabulary; - - alter table DefinedTermBase - add constraint FK2E340A663B0DA0EF - foreign key (kindof_id) - references DefinedTermBase; - - alter table DefinedTermBase - add constraint FK2E340A6624AF3F70 - foreign key (level_id) - references DefinedTermBase; - - alter table DefinedTermBase - add constraint FK2E340A665BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table DefinedTermBase - add constraint FK2E340A66CC0240B6 - foreign key (shape_id) - references Media; - - alter table DefinedTermBase - add constraint FK2E340A66D040DBF0 - foreign key (partof_id) - references DefinedTermBase; - - alter table DefinedTermBase_AUD - add constraint FK86E8953734869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_Continent - add constraint FK45F60AFBE8CE10AA - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_Continent - add constraint FK45F60AFB3927C853 - foreign key (continents_id) - references DefinedTermBase; - - alter table DefinedTermBase_Continent_AUD - add constraint FKF5DE434C34869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_Media - add constraint FK6FC908ABC0DB4934 - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_Media - add constraint FK6FC908ABC2C29593 - foreign key (media_id) - references Media; - - alter table DefinedTermBase_Media_AUD - add constraint FKDD9AE8FC34869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_RecommendedModifierEnumeration - add constraint FKA72FB5AED0BDAE9B - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_RecommendedModifierEnumeration - add constraint FKA72FB5AE5255EAFD - foreign key (recommendedmodifierenumeration_id) - references TermVocabulary; - - alter table DefinedTermBase_RecommendedModifierEnumeration_AUD - add constraint FK780D5C7F34869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_Representation - add constraint FKAAC8AFE6C0DB4934 - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_Representation - add constraint FKAAC8AFE6B31C4747 - foreign key (representations_id) - references Representation; - - alter table DefinedTermBase_Representation_AUD - add constraint FKB5AE7AB734869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_StatisticalMeasure - add constraint FK6FF15DFCD0BDAE9B - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_StatisticalMeasure - add constraint FK6FF15DFCC9CD5B57 - foreign key (recommendedstatisticalmeasures_id) - references DefinedTermBase; - - alter table DefinedTermBase_StatisticalMeasure_AUD - add constraint FK3C062DCD34869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_SupportedCategoricalEnumeration - add constraint FK2170B25CD0BDAE9B - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_SupportedCategoricalEnumeration - add constraint FK2170B25C5AF2C74 - foreign key (supportedcategoricalenumerations_id) - references TermVocabulary; - - alter table DefinedTermBase_SupportedCategoricalEnumeration_AUD - add constraint FKBB04522D34869AAE - foreign key (REV) - references AuditEvent; - - alter table DefinedTermBase_WaterbodyOrCountry - add constraint FKCAF4393CE5C0F9E - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table DefinedTermBase_WaterbodyOrCountry - add constraint FKCAF43931603B036 - foreign key (waterbodiesorcountries_id) - references DefinedTermBase; - - alter table DefinedTermBase_WaterbodyOrCountry_AUD - add constraint FKD5996FE434869AAE - foreign key (REV) - references AuditEvent; - - alter table DerivationEvent - add constraint FK426BC03EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table DerivationEvent - add constraint FK426BC038524B89D - foreign key (type_id) - references DefinedTermBase; - - alter table DerivationEvent - add constraint FK426BC035BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table DerivationEvent - add constraint FK426BC03C04DF64 - foreign key (actor_id) - references Agent; - - alter table DerivationEvent_AUD - add constraint FKDABF305434869AAE - foreign key (REV) - references AuditEvent; - - alter table DerivationEvent_Annotation - add constraint FKEFA0D10B4AAB411A - foreign key (DerivationEvent_id) - references DerivationEvent; - - alter table DerivationEvent_Annotation - add constraint FKEFA0D10B1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table DerivationEvent_Annotation_AUD - add constraint FKA197815C34869AAE - foreign key (REV) - references AuditEvent; - - alter table DerivationEvent_Marker - add constraint FKE412C8164AAB411A - foreign key (DerivationEvent_id) - references DerivationEvent; - - alter table DerivationEvent_Marker - add constraint FKE412C816777265A1 - foreign key (markers_id) - references Marker; - - alter table DerivationEvent_Marker_AUD - add constraint FK8ED0FAE734869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase - add constraint FKFF4D58CDEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table DescriptionBase - add constraint FKFF4D58CDDA93512F - foreign key (taxonName_fk) - references TaxonNameBase; - - alter table DescriptionBase - add constraint FKFF4D58CD5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table DescriptionBase - add constraint FKFF4D58CDDE9A3DE3 - foreign key (taxon_fk) - references TaxonBase; - - alter table DescriptionBase_AUD - add constraint FK7456581E34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_Annotation - add constraint FKF3AD3201F1DDBFAB - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_Annotation - add constraint FKF3AD32011E403E0B - foreign key (annotations_id) - references Annotation; - - alter table DescriptionBase_Annotation_AUD - add constraint FK15FE775234869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_Extension - add constraint FKD5D2B32DF1DDBFAB - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_Extension - add constraint FKD5D2B32D927DE9DF - foreign key (extensions_id) - references Extension; - - alter table DescriptionBase_Extension_AUD - add constraint FK79E7827E34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_GeoScope - add constraint FK3ADD7CD5D86445CE - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_GeoScope - add constraint FK3ADD7CD586D04E74 - foreign key (geoscopes_id) - references DefinedTermBase; - - alter table DescriptionBase_GeoScope_AUD - add constraint FK63A5382634869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_Marker - add constraint FK6132140CF1DDBFAB - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_Marker - add constraint FK6132140C777265A1 - foreign key (markers_id) - references Marker; - - alter table DescriptionBase_Marker_AUD - add constraint FK92DD5BDD34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_OriginalSource - add constraint FK1E2D0B1EF1DDBFAB - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_OriginalSource - add constraint FK1E2D0B1E3BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table DescriptionBase_OriginalSource_AUD - add constraint FKDC8279EF34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_ReferenceBase - add constraint FK76188CAAF1DDBFAB - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_ReferenceBase - add constraint FK76188CAA45AB7BBA - foreign key (descriptionsources_id) - references ReferenceBase; - - alter table DescriptionBase_ReferenceBase_AUD - add constraint FK687A557B34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_Rights - add constraint FK6A2601A9F1DDBFAB - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_Rights - add constraint FK6A2601A9C13F7B21 - foreign key (rights_id) - references Rights; - - alter table DescriptionBase_Rights_AUD - add constraint FKFEB732FA34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_Scope - add constraint FKB9257C42D86445CE - foreign key (DescriptionBase_id) - references DescriptionBase; - - alter table DescriptionBase_Scope - add constraint FKB9257C42951A5D40 - foreign key (scopes_id) - references DefinedTermBase; - - alter table DescriptionBase_Scope_AUD - add constraint FK75D5B91334869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionBase_SpecimenOrObservationBase - add constraint FKDE29CD8033B8A841 - foreign key (descriptions_id) - references DescriptionBase; - - alter table DescriptionBase_SpecimenOrObservationBase - add constraint FKDE29CD805C9E3461 - foreign key (describedspecimenorobservations_id) - references SpecimenOrObservationBase; - - alter table DescriptionBase_SpecimenOrObservationBase_AUD - add constraint FKF1B33B5134869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase - add constraint FK38FE767134AF0E81 - foreign key (indescription_id) - references DescriptionBase; - - alter table DescriptionElementBase - add constraint FK38FE76716561D9B1 - foreign key (associatedspecimenorobservation_id) - references SpecimenOrObservationBase; - - alter table DescriptionElementBase - add constraint FK38FE7671EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table DescriptionElementBase - add constraint FK38FE767110A80E07 - foreign key (unit_id) - references DefinedTermBase; - - alter table DescriptionElementBase - add constraint FK38FE76716D0D7A56 - foreign key (format_id) - references DefinedTermBase; - - alter table DescriptionElementBase - add constraint FK38FE76715E9914B8 - foreign key (status_id) - references DefinedTermBase; - - alter table DescriptionElementBase - add constraint FK38FE76714220AFEB - foreign key (feature_id) - references DefinedTermBase; - - alter table DescriptionElementBase - add constraint FK38FE76719803512F - foreign key (citation_id) - references ReferenceBase; - - alter table DescriptionElementBase - add constraint FK38FE76715BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table DescriptionElementBase - add constraint FK38FE76719108D9B - foreign key (taxon2_id) - references TaxonBase; - - alter table DescriptionElementBase - add constraint FK38FE76711C3C3FF7 - foreign key (area_id) - references DefinedTermBase; - - alter table DescriptionElementBase - add constraint FK38FE7671E8D36B00 - foreign key (language_id) - references DefinedTermBase; - - alter table DescriptionElementBase_AUD - add constraint FKF3803C234869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_Annotation - add constraint FK7EE5E5DD3B8BB609 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_Annotation - add constraint FK7EE5E5DD1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table DescriptionElementBase_Annotation_AUD - add constraint FK2BC1DD2E34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_LanguageString - add constraint FKC753F137ACF5F60B - foreign key (multilanguagetext_id) - references LanguageString; - - alter table DescriptionElementBase_LanguageString - add constraint FKC753F137C086B46F - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_LanguageString_AUD - add constraint FK2D26AB8834869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_Marker - add constraint FK1CB715E83B8BB609 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_Marker - add constraint FK1CB715E8777265A1 - foreign key (markers_id) - references Marker; - - alter table DescriptionElementBase_Marker_AUD - add constraint FK1E160FB934869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_Media - add constraint FK21F70076C2C29593 - foreign key (media_id) - references Media; - - alter table DescriptionElementBase_Media - add constraint FK21F700763B8BB609 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_Media_AUD - add constraint FK5522034734869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_Modifier - add constraint FK97E0D105E0960EC4 - foreign key (modifiers_id) - references DefinedTermBase; - - alter table DescriptionElementBase_Modifier - add constraint FK97E0D1053B8BB609 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_Modifier_AUD - add constraint FK2982F45634869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_ModifyingText - add constraint FK522D90C7F05D08D4 - foreign key (modifyingtext_id) - references LanguageString; - - alter table DescriptionElementBase_ModifyingText - add constraint FK522D90C73B8BB609 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_ModifyingText - add constraint FK522D90C79682414B - foreign key (modifyingtext_mapkey_id) - references DefinedTermBase; - - alter table DescriptionElementBase_ModifyingText_AUD - add constraint FK6C06031834869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_StateData - add constraint FK592D6F6D987CC6A4 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_StateData - add constraint FK592D6F6D15153604 - foreign key (states_id) - references StateData; - - alter table DescriptionElementBase_StateData_AUD - add constraint FK1D0A1EBE34869AAE - foreign key (REV) - references AuditEvent; - - alter table DescriptionElementBase_StatisticalMeasurementValue - add constraint FK8AF511C2D883945E - foreign key (statisticalvalues_id) - references StatisticalMeasurementValue; - - alter table DescriptionElementBase_StatisticalMeasurementValue - add constraint FK8AF511C28F213219 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table DescriptionElementBase_StatisticalMeasurementValue_AUD - add constraint FK2DE8E9334869AAE - foreign key (REV) - references AuditEvent; - - alter table DeterminationEvent - add constraint FK1DB2497EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table DeterminationEvent - add constraint FK1DB2497378D1BD - foreign key (modifier_id) - references DefinedTermBase; - - alter table DeterminationEvent - add constraint FK1DB2497DE9A3E39 - foreign key (taxon_id) - references TaxonBase; - - alter table DeterminationEvent - add constraint FK1DB24974B251DAD - foreign key (identifiedunit_id) - references SpecimenOrObservationBase; - - alter table DeterminationEvent - add constraint FK1DB24975BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table DeterminationEvent - add constraint FK1DB2497C04DF64 - foreign key (actor_id) - references Agent; - - alter table DeterminationEvent_AUD - add constraint FKA0252EE834869AAE - foreign key (REV) - references AuditEvent; - - alter table DeterminationEvent_Annotation - add constraint FKB74F03F76BE0BFDA - foreign key (DeterminationEvent_id) - references DeterminationEvent; - - alter table DeterminationEvent_Annotation - add constraint FKB74F03F71E403E0B - foreign key (annotations_id) - references Annotation; - - alter table DeterminationEvent_Annotation_AUD - add constraint FKAFDA5E4834869AAE - foreign key (REV) - references AuditEvent; - - alter table DeterminationEvent_Marker - add constraint FK5C475102777265A1 - foreign key (markers_id) - references Marker; - - alter table DeterminationEvent_Marker - add constraint FK5C4751026BE0BFDA - foreign key (DeterminationEvent_id) - references DeterminationEvent; - - alter table DeterminationEvent_Marker_AUD - add constraint FK567F2DD334869AAE - foreign key (REV) - references AuditEvent; - - alter table DeterminationEvent_ReferenceBase - add constraint FK6248EEF43EF09CD5 - foreign key (setofreferences_id) - references ReferenceBase; - - alter table DeterminationEvent_ReferenceBase - add constraint FK6248EEF46BE0BFDA - foreign key (DeterminationEvent_id) - references DeterminationEvent; - - alter table DeterminationEvent_ReferenceBase_AUD - add constraint FK25BC82C534869AAE - foreign key (REV) - references AuditEvent; - - alter table Extension - add constraint FK52EF3C1FEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Extension - add constraint FK52EF3C1FAD392BD3 - foreign key (type_id) - references DefinedTermBase; - - alter table Extension - add constraint FK52EF3C1F5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Extension_AUD - add constraint FK92D2427034869AAE - foreign key (REV) - references AuditEvent; - - alter table FeatureNode - add constraint FK4CEED9F8E0AD2C03 - foreign key (parent_fk) - references FeatureNode; - - alter table FeatureNode - add constraint FK4CEED9F8EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table FeatureNode - add constraint FK4CEED9F84220AFEB - foreign key (feature_id) - references DefinedTermBase; - - alter table FeatureNode - add constraint FK4CEED9F85BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table FeatureNode_AUD - add constraint FK25AD4BC934869AAE - foreign key (REV) - references AuditEvent; - - alter table FeatureTree - add constraint FK4CF19F94EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table FeatureTree - add constraint FK4CF19F94B7892921 - foreign key (root_id) - references FeatureNode; - - alter table FeatureTree - add constraint FK4CF19F945BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table FeatureTree_AUD - add constraint FK355BE36534869AAE - foreign key (REV) - references AuditEvent; - - alter table FeatureTree_Representation - add constraint FK8C458F847C496CB - foreign key (FeatureTree_id) - references FeatureTree; - - alter table FeatureTree_Representation - add constraint FK8C458F8B31C4747 - foreign key (representations_id) - references Representation; - - alter table FeatureTree_Representation_AUD - add constraint FKECAB4AC934869AAE - foreign key (REV) - references AuditEvent; - - alter table GatheringEvent - add constraint FK6F1286F3F55AFD89 - foreign key (exactlocation_referencesystem_id) - references DefinedTermBase; - - alter table GatheringEvent - add constraint FK6F1286F38B455EC6 - foreign key (locality_id) - references LanguageString; - - alter table GatheringEvent - add constraint FK6F1286F3EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table GatheringEvent - add constraint FK6F1286F35BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table GatheringEvent - add constraint FK6F1286F3C04DF64 - foreign key (actor_id) - references Agent; - - alter table GatheringEvent_AUD - add constraint FK3EC034434869AAE - foreign key (REV) - references AuditEvent; - - alter table GatheringEvent_Annotation - add constraint FK76DDD01BF95F225A - foreign key (GatheringEvent_id) - references GatheringEvent; - - alter table GatheringEvent_Annotation - add constraint FK76DDD01B1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table GatheringEvent_Annotation_AUD - add constraint FK351E786C34869AAE - foreign key (REV) - references AuditEvent; - - alter table GatheringEvent_DefinedTermBase - add constraint FK69D9A11A7C34B6D6 - foreign key (collectingareas_id) - references DefinedTermBase; - - alter table GatheringEvent_DefinedTermBase - add constraint FK69D9A11AF95F225A - foreign key (GatheringEvent_id) - references GatheringEvent; - - alter table GatheringEvent_DefinedTermBase_AUD - add constraint FKB3BBB1EB34869AAE - foreign key (REV) - references AuditEvent; - - alter table GatheringEvent_Marker - add constraint FK7B49CF26777265A1 - foreign key (markers_id) - references Marker; - - alter table GatheringEvent_Marker - add constraint FK7B49CF26F95F225A - foreign key (GatheringEvent_id) - references GatheringEvent; - - alter table GatheringEvent_Marker_AUD - add constraint FK160DF9F734869AAE - foreign key (REV) - references AuditEvent; - - alter table GenBankAccession - add constraint FK86C1DBF8EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table GenBankAccession - add constraint FK86C1DBF85BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table GenBankAccession_AUD - add constraint FK5A2F4DC934869AAE - foreign key (REV) - references AuditEvent; - - alter table GrantedAuthorityImpl - add constraint FKB05CF928EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table HomotypicalGroup - add constraint FK7DECCC18EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table HomotypicalGroup - add constraint FK7DECCC185BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table HomotypicalGroup_AUD - add constraint FKE4252DE934869AAE - foreign key (REV) - references AuditEvent; - - alter table HomotypicalGroup_Annotation - add constraint FK7A0351D6BFEAE500 - foreign key (HomotypicalGroup_id) - references HomotypicalGroup; - - alter table HomotypicalGroup_Annotation - add constraint FK7A0351D61E403E0B - foreign key (annotations_id) - references Annotation; - - alter table HomotypicalGroup_Annotation_AUD - add constraint FK41E6A4A734869AAE - foreign key (REV) - references AuditEvent; - - alter table HomotypicalGroup_Marker - add constraint FK97D36661BFEAE500 - foreign key (HomotypicalGroup_id) - references HomotypicalGroup; - - alter table HomotypicalGroup_Marker - add constraint FK97D36661777265A1 - foreign key (markers_id) - references Marker; - - alter table HomotypicalGroup_Marker_AUD - add constraint FK19337BB234869AAE - foreign key (REV) - references AuditEvent; - - alter table HybridRelationship - add constraint FK9033CE745831BDC3 - foreign key (relatedfrom_id) - references TaxonNameBase; - - alter table HybridRelationship - add constraint FK9033CE7469ABE292 - foreign key (relatedto_id) - references TaxonNameBase; - - alter table HybridRelationship - add constraint FK9033CE74EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table HybridRelationship - add constraint FK9033CE7455F241D4 - foreign key (type_id) - references DefinedTermBase; - - alter table HybridRelationship - add constraint FK9033CE749803512F - foreign key (citation_id) - references ReferenceBase; - - alter table HybridRelationship - add constraint FK9033CE745BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table HybridRelationship_AUD - add constraint FK9C2BA24534869AAE - foreign key (REV) - references AuditEvent; - - alter table HybridRelationship_Annotation - add constraint FK2C7E7DFA59832240 - foreign key (HybridRelationship_id) - references HybridRelationship; - - alter table HybridRelationship_Annotation - add constraint FK2C7E7DFA1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table HybridRelationship_Annotation_AUD - add constraint FKACE71ECB34869AAE - foreign key (REV) - references AuditEvent; - - alter table HybridRelationship_Marker - add constraint FKCEF2448559832240 - foreign key (HybridRelationship_id) - references HybridRelationship; - - alter table HybridRelationship_Marker - add constraint FKCEF24485777265A1 - foreign key (markers_id) - references Marker; - - alter table HybridRelationship_Marker_AUD - add constraint FKCBAEA7D634869AAE - foreign key (REV) - references AuditEvent; - - alter table IdentificationKey_Taxon - add constraint FKD847ADDC996CD055 - foreign key (identificationKey_fk) - references Media; - - alter table IdentificationKey_Taxon - add constraint FKD847ADDCDE9A3DE3 - foreign key (taxon_fk) - references TaxonBase; - - alter table IdentificationKey_Taxon_AUD - add constraint FKEEF18DAD34869AAE - foreign key (REV) - references AuditEvent; - - alter table IndividualAssociation_LanguageString - add constraint FKB5C75EC02BEBA58D - foreign key (description_id) - references LanguageString; - - alter table IndividualAssociation_LanguageString - add constraint FKB5C75EC084FF3EDF - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table IndividualAssociation_LanguageString - add constraint FKB5C75EC028459272 - foreign key (description_mapkey_id) - references DefinedTermBase; - - alter table IndividualAssociation_LanguageString_AUD - add constraint FKB1A62C9134869AAE - foreign key (REV) - references AuditEvent; - - alter table InstitutionalMembership - add constraint FK3C8E1FF9EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table InstitutionalMembership - add constraint FK3C8E1FF9AAC1B820 - foreign key (person_id) - references Agent; - - alter table InstitutionalMembership - add constraint FK3C8E1FF916B9CA77 - foreign key (institute_id) - references Agent; - - alter table InstitutionalMembership - add constraint FK3C8E1FF95BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table InstitutionalMembership_AUD - add constraint FK847A94A34869AAE - foreign key (REV) - references AuditEvent; - - alter table LanguageString - add constraint FKB5FDC9A9EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table LanguageString - add constraint FKB5FDC9A95BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table LanguageString - add constraint FKB5FDC9A9E8D36B00 - foreign key (language_id) - references DefinedTermBase; - - alter table LanguageString_AUD - add constraint FK896AFAFA34869AAE - foreign key (REV) - references AuditEvent; - - alter table LanguageString_Annotation - add constraint FK8400DFA51E403E0B - foreign key (annotations_id) - references Annotation; - - alter table LanguageString_Annotation - add constraint FK8400DFA537998500 - foreign key (LanguageString_id) - references LanguageString; - - alter table LanguageString_Annotation_AUD - add constraint FKD3BAB2F634869AAE - foreign key (REV) - references AuditEvent; - - alter table LanguageString_Marker - add constraint FK8DA633B0777265A1 - foreign key (markers_id) - references Marker; - - alter table LanguageString_Marker - add constraint FK8DA633B037998500 - foreign key (LanguageString_id) - references LanguageString; - - alter table LanguageString_Marker_AUD - add constraint FK2331098134869AAE - foreign key (REV) - references AuditEvent; - - alter table Locus - add constraint FK462F1BEEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Locus - add constraint FK462F1BE5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Locus_AUD - add constraint FK5224108F34869AAE - foreign key (REV) - references AuditEvent; - - alter table Marker - add constraint FK88F1805AEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Marker - add constraint FK88F1805AD64DC020 - foreign key (markertype_id) - references DefinedTermBase; - - alter table Marker - add constraint FK88F1805A5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Marker_AUD - add constraint FKB951F12B34869AAE - foreign key (REV) - references AuditEvent; - - alter table Media - add constraint FK46C7FC4EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Media - add constraint FK46C7FC490A4D0D2 - foreign key (artist_id) - references Agent; - - alter table Media - add constraint FK46C7FC49803512F - foreign key (citation_id) - references ReferenceBase; - - alter table Media - add constraint FK46C7FC45BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table MediaRepresentation - add constraint FK1966BDB1EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table MediaRepresentation - add constraint FK1966BDB1C2C29593 - foreign key (media_id) - references Media; - - alter table MediaRepresentation - add constraint FK1966BDB15BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table MediaRepresentationPart - add constraint FK67A45544E3818E37 - foreign key (representation_id) - references MediaRepresentation; - - alter table MediaRepresentationPart - add constraint FK67A45544EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table MediaRepresentationPart - add constraint FK67A455445BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table MediaRepresentationPart_AUD - add constraint FKA75C411534869AAE - foreign key (REV) - references AuditEvent; - - alter table MediaRepresentation_AUD - add constraint FK67AAAB0234869AAE - foreign key (REV) - references AuditEvent; - - alter table MediaRepresentation_MediaRepresentationPart_AUD - add constraint FK3544378734869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_AUD - add constraint FKF70B2B9534869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_Annotation - add constraint FKA020DAAAC2C29593 - foreign key (Media_id) - references Media; - - alter table Media_Annotation - add constraint FKA020DAAA1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Media_Annotation_AUD - add constraint FK99ABA37B34869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_DefinedTermBase - add constraint FK96F1D7EB8A6C9D18 - foreign key (Media_id) - references Media; - - alter table Media_DefinedTermBase - add constraint FK96F1D7EB86D04E74 - foreign key (geoscopes_id) - references DefinedTermBase; - - alter table Media_DefinedTermBase_AUD - add constraint FK994A183C34869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_Description - add constraint FK368283E1C2C29593 - foreign key (Media_id) - references Media; - - alter table Media_Description - add constraint FK368283E12BEBA58D - foreign key (description_id) - references LanguageString; - - alter table Media_Description - add constraint FK368283E128459272 - foreign key (description_mapkey_id) - references DefinedTermBase; - - alter table Media_Description_AUD - add constraint FK6817D93234869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_LanguageString - add constraint FK353DB784A0A6EDCE - foreign key (title_mapkey_id) - references DefinedTermBase; - - alter table Media_LanguageString - add constraint FK353DB784C2C29593 - foreign key (Media_id) - references Media; - - alter table Media_LanguageString - add constraint FK353DB784A1CA19B1 - foreign key (title_id) - references LanguageString; - - alter table Media_LanguageString_AUD - add constraint FK68FA835534869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_Marker - add constraint FKD21E7935C2C29593 - foreign key (Media_id) - references Media; - - alter table Media_Marker - add constraint FKD21E7935777265A1 - foreign key (markers_id) - references Marker; - - alter table Media_Marker_AUD - add constraint FK3F51048634869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_Rights - add constraint FKDB1266D2C2C29593 - foreign key (Media_id) - references Media; - - alter table Media_Rights - add constraint FKDB1266D2C13F7B21 - foreign key (rights_id) - references Rights; - - alter table Media_Rights_AUD - add constraint FKAB2ADBA334869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_Sequence - add constraint FK61D09FC3282B64 - foreign key (Media_id) - references Media; - - alter table Media_Sequence - add constraint FK61D09FCF29B4761 - foreign key (usedsequences_id) - references Sequence; - - alter table Media_Sequence_AUD - add constraint FK3C7BD9CD34869AAE - foreign key (REV) - references AuditEvent; - - alter table Media_TaxonBase - add constraint FK1ABD49E07C3D0017 - foreign key (coveredtaxa_id) - references TaxonBase; - - alter table Media_TaxonBase - add constraint FK1ABD49E08A6C9D18 - foreign key (Media_id) - references Media; - - alter table Media_TaxonBase_AUD - add constraint FK857187B134869AAE - foreign key (REV) - references AuditEvent; - - alter table NameRelationship - add constraint FK5E5108316CDFF85 - foreign key (relatedfrom_id) - references TaxonNameBase; - - alter table NameRelationship - add constraint FK5E5108328482454 - foreign key (relatedto_id) - references TaxonNameBase; - - alter table NameRelationship - add constraint FK5E51083EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table NameRelationship - add constraint FK5E51083AF619DE3 - foreign key (type_id) - references DefinedTermBase; - - alter table NameRelationship - add constraint FK5E510839803512F - foreign key (citation_id) - references ReferenceBase; - - alter table NameRelationship - add constraint FK5E510835BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table NameRelationship_AUD - add constraint FK743F44D434869AAE - foreign key (REV) - references AuditEvent; - - alter table NameRelationship_Annotation - add constraint FK2E38AC8B7B4CB560 - foreign key (NameRelationship_id) - references NameRelationship; - - alter table NameRelationship_Annotation - add constraint FK2E38AC8B1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table NameRelationship_Annotation_AUD - add constraint FKD1D59CDC34869AAE - foreign key (REV) - references AuditEvent; - - alter table NameRelationship_Marker - add constraint FKE3E463967B4CB560 - foreign key (NameRelationship_id) - references NameRelationship; - - alter table NameRelationship_Marker - add constraint FKE3E46396777265A1 - foreign key (markers_id) - references Marker; - - alter table NameRelationship_Marker_AUD - add constraint FKCD68D66734869AAE - foreign key (REV) - references AuditEvent; - - alter table NomenclaturalStatus - add constraint FK1FFEC88BEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table NomenclaturalStatus - add constraint FK1FFEC88B7029BD9F - foreign key (type_id) - references DefinedTermBase; - - alter table NomenclaturalStatus - add constraint FK1FFEC88B9803512F - foreign key (citation_id) - references ReferenceBase; - - alter table NomenclaturalStatus - add constraint FK1FFEC88B5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table NomenclaturalStatus_AUD - add constraint FKFB2DB8DC34869AAE - foreign key (REV) - references AuditEvent; - - alter table NomenclaturalStatus_Annotation - add constraint FKE6E91F838D2CB1D4 - foreign key (NomenclaturalStatus_id) - references NomenclaturalStatus; - - alter table NomenclaturalStatus_Annotation - add constraint FKE6E91F831E403E0B - foreign key (annotations_id) - references Annotation; - - alter table NomenclaturalStatus_Annotation_AUD - add constraint FK6A3D3D434869AAE - foreign key (REV) - references AuditEvent; - - alter table NomenclaturalStatus_Marker - add constraint FK2F5128E8D2CB1D4 - foreign key (NomenclaturalStatus_id) - references NomenclaturalStatus; - - alter table NomenclaturalStatus_Marker - add constraint FK2F5128E777265A1 - foreign key (markers_id) - references Marker; - - alter table NomenclaturalStatus_Marker_AUD - add constraint FK8619495F34869AAE - foreign key (REV) - references AuditEvent; - - alter table OriginalSource - add constraint FK229A496CEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table OriginalSource - add constraint FK229A496C9803512F - foreign key (citation_id) - references ReferenceBase; - - alter table OriginalSource - add constraint FK229A496C5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table OriginalSource_AUD - add constraint FK506BE13D34869AAE - foreign key (REV) - references AuditEvent; - - alter table OriginalSource_Annotation - add constraint FK5B3FF802DC2DCA20 - foreign key (OriginalSource_id) - references OriginalSource; - - alter table OriginalSource_Annotation - add constraint FK5B3FF8021E403E0B - foreign key (annotations_id) - references Annotation; - - alter table OriginalSource_Annotation_AUD - add constraint FK4ACC54D334869AAE - foreign key (REV) - references AuditEvent; - - alter table OriginalSource_Marker - add constraint FKCF52028DDC2DCA20 - foreign key (OriginalSource_id) - references OriginalSource; - - alter table OriginalSource_Marker - add constraint FKCF52028D777265A1 - foreign key (markers_id) - references Marker; - - alter table OriginalSource_Marker_AUD - add constraint FKFA7021DE34869AAE - foreign key (REV) - references AuditEvent; - - alter table PermissionGroup - add constraint FK629941D0EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table PermissionGroup_GrantedAuthorityImpl - add constraint FK5311437CA0971A3 - foreign key (PermissionGroup_id) - references PermissionGroup; - - alter table PermissionGroup_GrantedAuthorityImpl - add constraint FK53114371857F6C2 - foreign key (grantedauthorities_id) - references GrantedAuthorityImpl; - - alter table Person_Keyword - add constraint FK5F559EFF13A443BE - foreign key (keyword_fk) - references DefinedTermBase; - - alter table Person_Keyword - add constraint FK5F559EFFAAC1B7CA - foreign key (person_fk) - references Agent; - - alter table Person_Keyword_AUD - add constraint FK6D8C355034869AAE - foreign key (REV) - references AuditEvent; - - create index ReferenceBaseTitleCacheIndex on ReferenceBase (titleCache); - - alter table ReferenceBase - add constraint FK8F034C9C1A488155 - foreign key (inbook_id) - references ReferenceBase; - - alter table ReferenceBase - add constraint FK8F034C9CEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table ReferenceBase - add constraint FK8F034C9C403E17F4 - foreign key (institution_id) - references Agent; - - alter table ReferenceBase - add constraint FK8F034C9CCCE9AAE2 - foreign key (inseries_id) - references ReferenceBase; - - alter table ReferenceBase - add constraint FK8F034C9CD893F6E6 - foreign key (crossref_id) - references ReferenceBase; - - alter table ReferenceBase - add constraint FK8F034C9CAEC3B8B8 - foreign key (school_id) - references Agent; - - alter table ReferenceBase - add constraint FK8F034C9CE3A02620 - foreign key (type_id) - references DefinedTermBase; - - alter table ReferenceBase - add constraint FK8F034C9CE87E60BF - foreign key (inproceedings_id) - references ReferenceBase; - - alter table ReferenceBase - add constraint FK8F034C9CE019003F - foreign key (injournal_id) - references ReferenceBase; - - alter table ReferenceBase - add constraint FK8F034C9C697665E - foreign key (authorteam_id) - references Agent; - - alter table ReferenceBase - add constraint FK8F034C9C5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table ReferenceBase_AUD - add constraint FK8D3FCC6D34869AAE - foreign key (REV) - references AuditEvent; - - alter table ReferenceBase_Annotation - add constraint FKC97616D2F443DB5A - foreign key (ReferenceBase_id) - references ReferenceBase; - - alter table ReferenceBase_Annotation - add constraint FKC97616D21E403E0B - foreign key (annotations_id) - references Annotation; - - alter table ReferenceBase_Annotation_AUD - add constraint FK60368BA334869AAE - foreign key (REV) - references AuditEvent; - - alter table ReferenceBase_Extension - add constraint FK81E1703C927DE9DF - foreign key (extensions_id) - references Extension; - - alter table ReferenceBase_Extension - add constraint FK81E1703CF443DB5A - foreign key (ReferenceBase_id) - references ReferenceBase; - - alter table ReferenceBase_Extension_AUD - add constraint FKD723200D34869AAE - foreign key (REV) - references AuditEvent; - - alter table ReferenceBase_Marker - add constraint FK6888095DF443DB5A - foreign key (ReferenceBase_id) - references ReferenceBase; - - alter table ReferenceBase_Marker - add constraint FK6888095D777265A1 - foreign key (markers_id) - references Marker; - - alter table ReferenceBase_Marker_AUD - add constraint FK68A640AE34869AAE - foreign key (REV) - references AuditEvent; - - alter table ReferenceBase_Media - add constraint FK3D2F4A61C2C29593 - foreign key (media_id) - references Media; - - alter table ReferenceBase_Media - add constraint FK3D2F4A61F443DB5A - foreign key (ReferenceBase_id) - references ReferenceBase; - - alter table ReferenceBase_Media_AUD - add constraint FK25FD5FB234869AAE - foreign key (REV) - references AuditEvent; - - alter table ReferenceBase_OriginalSource - add constraint FK68651F6F3BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table ReferenceBase_OriginalSource - add constraint FK68651F6FF443DB5A - foreign key (ReferenceBase_id) - references ReferenceBase; - - alter table ReferenceBase_OriginalSource_AUD - add constraint FK6905FDC034869AAE - foreign key (REV) - references AuditEvent; - - alter table ReferenceBase_Rights - add constraint FK717BF6FAF443DB5A - foreign key (ReferenceBase_id) - references ReferenceBase; - - alter table ReferenceBase_Rights - add constraint FK717BF6FAC13F7B21 - foreign key (rights_id) - references Rights; - - alter table ReferenceBase_Rights_AUD - add constraint FKD48017CB34869AAE - foreign key (REV) - references AuditEvent; - - alter table RelationshipTermBase_inverseRepresentation - add constraint FK98592F33ECEEF4AF - foreign key (DefinedTermBase_id) - references DefinedTermBase; - - alter table RelationshipTermBase_inverseRepresentation - add constraint FK98592F33473FB677 - foreign key (inverserepresentations_id) - references Representation; - - alter table RelationshipTermBase_inverseRepresentation_AUD - add constraint FK5D248B8434869AAE - foreign key (REV) - references AuditEvent; - - alter table Representation - add constraint FK9C4724EDEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Representation - add constraint FK9C4724ED5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Representation - add constraint FK9C4724EDE8D36B00 - foreign key (language_id) - references DefinedTermBase; - - alter table Representation_AUD - add constraint FK294D143E34869AAE - foreign key (REV) - references AuditEvent; - - alter table Representation_Annotation - add constraint FK371091E147E8AE60 - foreign key (Representation_id) - references Representation; - - alter table Representation_Annotation - add constraint FK371091E11E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Representation_Annotation_AUD - add constraint FK36EEE73234869AAE - foreign key (REV) - references AuditEvent; - - alter table Representation_Marker - add constraint FK560063EC47E8AE60 - foreign key (Representation_id) - references Representation; - - alter table Representation_Marker - add constraint FK560063EC777265A1 - foreign key (markers_id) - references Marker; - - alter table Representation_Marker_AUD - add constraint FKD640BBBD34869AAE - foreign key (REV) - references AuditEvent; - - alter table Rights - add constraint FK91E56DF7C5F7EC54 - foreign key (agent_id) - references Agent; - - alter table Rights - add constraint FK91E56DF7EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Rights - add constraint FK91E56DF7E6D2886A - foreign key (type_id) - references DefinedTermBase; - - alter table Rights - add constraint FK91E56DF75BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Rights - add constraint FK91E56DF7E8D36B00 - foreign key (language_id) - references DefinedTermBase; - - alter table Rights_AUD - add constraint FK252BC84834869AAE - foreign key (REV) - references AuditEvent; - - alter table Rights_Annotation - add constraint FK27CB1E97C13F7B21 - foreign key (Rights_id) - references Rights; - - alter table Rights_Annotation - add constraint FK27CB1E971E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Rights_Annotation_AUD - add constraint FKF98828E834869AAE - foreign key (REV) - references AuditEvent; - - alter table Rights_Marker - add constraint FKB739BBA2C13F7B21 - foreign key (Rights_id) - references Rights; - - alter table Rights_Marker - add constraint FKB739BBA2777265A1 - foreign key (markers_id) - references Marker; - - alter table Rights_Marker_AUD - add constraint FKC6FB487334869AAE - foreign key (REV) - references AuditEvent; - - create index sequenceTitleCacheIndex on Sequence (titleCache); - - alter table Sequence - add constraint FK544ADBE1EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table Sequence - add constraint FK544ADBE1B982A103 - foreign key (publishedin_id) - references ReferenceBase; - - alter table Sequence - add constraint FK544ADBE15BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table Sequence_AUD - add constraint FK39F4313234869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_Annotation - add constraint FK1010BA6D1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table Sequence_Annotation - add constraint FK1010BA6DD57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_Annotation_AUD - add constraint FKCB4FE9BE34869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_Extension - add constraint FK7BE66D41927DE9DF - foreign key (extensions_id) - references Extension; - - alter table Sequence_Extension - add constraint FK7BE66D41D57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_Extension_AUD - add constraint FK1CA8129234869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_GenBankAccession - add constraint FK8F69809615C4EF35 - foreign key (genbankaccession_id) - references GenBankAccession; - - alter table Sequence_GenBankAccession - add constraint FK8F698096D57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_GenBankAccession_AUD - add constraint FKC717736734869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_Marker - add constraint FK3D22B278777265A1 - foreign key (markers_id) - references Marker; - - alter table Sequence_Marker - add constraint FK3D22B278D57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_Marker_AUD - add constraint FKAF40E44934869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_Media - add constraint FK8E5D91E666ACA7EC - foreign key (chromatograms_id) - references Media; - - alter table Sequence_Media - add constraint FK8E5D91E6D57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_Media_AUD - add constraint FK20025CB734869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_OriginalSource - add constraint FKD37E7D8A3BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table Sequence_OriginalSource - add constraint FKD37E7D8AD57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_OriginalSource_AUD - add constraint FKCDBCD65B34869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_ReferenceBase - add constraint FK18D91CBE7291F8A - foreign key (citations_id) - references ReferenceBase; - - alter table Sequence_ReferenceBase - add constraint FK18D91CBED57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_ReferenceBase_AUD - add constraint FK998CBB8F34869AAE - foreign key (REV) - references AuditEvent; - - alter table Sequence_Rights - add constraint FK4616A015C13F7B21 - foreign key (rights_id) - references Rights; - - alter table Sequence_Rights - add constraint FK4616A015D57FFDD5 - foreign key (Sequence_id) - references Sequence; - - alter table Sequence_Rights_AUD - add constraint FK1B1ABB6634869AAE - foreign key (REV) - references AuditEvent; - - create index specimenOrObservationBaseTitleCacheIndex on SpecimenOrObservationBase (titleCache); - - alter table SpecimenOrObservationBase - add constraint FK21CA3272C8505DB - foreign key (preservation_id) - references DefinedTermBase; - - alter table SpecimenOrObservationBase - add constraint FK21CA3272EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table SpecimenOrObservationBase - add constraint FK21CA32727CC340C5 - foreign key (storedunder_id) - references TaxonNameBase; - - alter table SpecimenOrObservationBase - add constraint FK21CA3272EB62BE9A - foreign key (collection_id) - references Collection; - - alter table SpecimenOrObservationBase - add constraint FK21CA3272E17C9A6B - foreign key (sex_id) - references DefinedTermBase; - - alter table SpecimenOrObservationBase - add constraint FK21CA32728C750E27 - foreign key (lifestage_id) - references DefinedTermBase; - - alter table SpecimenOrObservationBase - add constraint FK21CA32724AAB411A - foreign key (derivationevent_id) - references DerivationEvent; - - alter table SpecimenOrObservationBase - add constraint FK21CA3272F95F225A - foreign key (gatheringevent_id) - references GatheringEvent; - - alter table SpecimenOrObservationBase - add constraint FK21CA32725BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table SpecimenOrObservationBase_AUD - add constraint FKF3D3D74334869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_Annotation - add constraint FK365E4F3C3B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_Annotation - add constraint FK365E4F3C1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table SpecimenOrObservationBase_Annotation_AUD - add constraint FK34187F0D34869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_DerivationEvent - add constraint FK20132036BD59A1AD - foreign key (derivationevents_id) - references DerivationEvent; - - alter table SpecimenOrObservationBase_DerivationEvent - add constraint FK2013203654C216AA - foreign key (originals_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_DerivationEvent_AUD - add constraint FKA4A8430734869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_Extension - add constraint FKE03B82923B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_Extension - add constraint FKE03B8292927DE9DF - foreign key (extensions_id) - references Extension; - - alter table SpecimenOrObservationBase_Extension_AUD - add constraint FK7AE0176334869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_LanguageString - add constraint FKCFAA93163B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_LanguageString - add constraint FKCFAA93162BEBA58D - foreign key (description_id) - references LanguageString; - - alter table SpecimenOrObservationBase_LanguageString - add constraint FKCFAA931628459272 - foreign key (description_mapkey_id) - references DefinedTermBase; - - alter table SpecimenOrObservationBase_LanguageString_AUD - add constraint FK38B45E734869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_Marker - add constraint FK8E6106C73B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_Marker - add constraint FK8E6106C7777265A1 - foreign key (markers_id) - references Marker; - - alter table SpecimenOrObservationBase_Marker_AUD - add constraint FKD58E791834869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_Media - add constraint FK4EEBF7B73B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_Media - add constraint FK4EEBF7B7C2C29593 - foreign key (media_id) - references Media; - - alter table SpecimenOrObservationBase_Media_AUD - add constraint FK8457720834869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_OriginalSource - add constraint FK3C4712D93B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_OriginalSource - add constraint FK3C4712D93BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table SpecimenOrObservationBase_OriginalSource_AUD - add constraint FKCA8C2C2A34869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_Rights - add constraint FK9754F4643B8A5ABA - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_Rights - add constraint FK9754F464C13F7B21 - foreign key (rights_id) - references Rights; - - alter table SpecimenOrObservationBase_Rights_AUD - add constraint FK4168503534869AAE - foreign key (REV) - references AuditEvent; - - alter table SpecimenOrObservationBase_Sequence - add constraint FKBBF27B0E7EE2770E - foreign key (SpecimenOrObservationBase_id) - references SpecimenOrObservationBase; - - alter table SpecimenOrObservationBase_Sequence - add constraint FKBBF27B0E35B10F24 - foreign key (sequences_id) - references Sequence; - - alter table SpecimenOrObservationBase_Sequence_AUD - add constraint FK392E71DF34869AAE - foreign key (REV) - references AuditEvent; - - alter table StateData - add constraint FKFB1697BBEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table StateData - add constraint FKFB1697BB682A4E4B - foreign key (state_id) - references DefinedTermBase; - - alter table StateData - add constraint FKFB1697BB5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table StateData_AUD - add constraint FKDA6A700C34869AAE - foreign key (REV) - references AuditEvent; - - alter table StateData_DefinedTermBase - add constraint FK107321E28E7BF9AB - foreign key (StateData_id) - references StateData; - - alter table StateData_DefinedTermBase - add constraint FK107321E2E0960EC4 - foreign key (modifiers_id) - references DefinedTermBase; - - alter table StateData_DefinedTermBase_AUD - add constraint FK7C978EB334869AAE - foreign key (REV) - references AuditEvent; - - alter table StateData_LanguageString - add constraint FK93FFD2AD8E7BF9AB - foreign key (StateData_id) - references StateData; - - alter table StateData_LanguageString - add constraint FK93FFD2ADF05D08D4 - foreign key (modifyingtext_id) - references LanguageString; - - alter table StateData_LanguageString - add constraint FK93FFD2AD9682414B - foreign key (modifyingtext_mapkey_id) - references DefinedTermBase; - - alter table StateData_LanguageString_AUD - add constraint FK1578E1FE34869AAE - foreign key (REV) - references AuditEvent; - - alter table StatisticalMeasurementValue - add constraint FK2DCE0290EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table StatisticalMeasurementValue - add constraint FK2DCE02904C428112 - foreign key (type_id) - references DefinedTermBase; - - alter table StatisticalMeasurementValue - add constraint FK2DCE02905BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table StatisticalMeasurementValue_AUD - add constraint FKBB16686134869AAE - foreign key (REV) - references AuditEvent; - - alter table StatisticalMeasurementValue_DefinedTermBase - add constraint FK686C42B75C9F4F2B - foreign key (StatisticalMeasurementValue_id) - references StatisticalMeasurementValue; - - alter table StatisticalMeasurementValue_DefinedTermBase - add constraint FK686C42B7E0960EC4 - foreign key (modifiers_id) - references DefinedTermBase; - - alter table StatisticalMeasurementValue_DefinedTermBase_AUD - add constraint FKFEBA3D0834869AAE - foreign key (REV) - references AuditEvent; - - alter table SynonymRelationship - add constraint FKF483ADB34BAC703F - foreign key (relatedfrom_id) - references TaxonBase; - - alter table SynonymRelationship - add constraint FKF483ADB3F8991B9D - foreign key (relatedto_id) - references TaxonBase; - - alter table SynonymRelationship - add constraint FKF483ADB3EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table SynonymRelationship - add constraint FKF483ADB380924EEC - foreign key (type_id) - references DefinedTermBase; - - alter table SynonymRelationship - add constraint FKF483ADB39803512F - foreign key (citation_id) - references ReferenceBase; - - alter table SynonymRelationship - add constraint FKF483ADB35BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table SynonymRelationship_AUD - add constraint FK8AEBCA0434869AAE - foreign key (REV) - references AuditEvent; - - alter table SynonymRelationship_Annotation - add constraint FKF494F15B260A8379 - foreign key (SynonymRelationship_id) - references SynonymRelationship; - - alter table SynonymRelationship_Annotation - add constraint FKF494F15B1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table SynonymRelationship_Annotation_AUD - add constraint FKD3E2F9AC34869AAE - foreign key (REV) - references AuditEvent; - - alter table SynonymRelationship_Marker - add constraint FK7A439066260A8379 - foreign key (SynonymRelationship_id) - references SynonymRelationship; - - alter table SynonymRelationship_Marker - add constraint FK7A439066777265A1 - foreign key (markers_id) - references Marker; - - alter table SynonymRelationship_Marker_AUD - add constraint FK93C51B3734869AAE - foreign key (REV) - references AuditEvent; - - create index taxonBaseTitleCacheIndex on TaxonBase (titleCache); - - alter table TaxonBase - add constraint FK9249B49BEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table TaxonBase - add constraint FK9249B49BDA93512F - foreign key (taxonName_fk) - references TaxonNameBase; - - alter table TaxonBase - add constraint FK9249B49B7C7B5AED - foreign key (taxonomicparentcache_id) - references TaxonBase; - - alter table TaxonBase - add constraint FK9249B49B5E4A2F85 - foreign key (sec_id) - references ReferenceBase; - - alter table TaxonBase - add constraint FK9249B49B5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table TaxonBase_AUD - add constraint FK37041CEC34869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonBase_Annotation - add constraint FK41ED09739C9D39 - foreign key (TaxonBase_id) - references TaxonBase; - - alter table TaxonBase_Annotation - add constraint FK41ED09731E403E0B - foreign key (annotations_id) - references Annotation; - - alter table TaxonBase_Annotation_AUD - add constraint FK8C145C434869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonBase_Extension - add constraint FKF961257B927DE9DF - foreign key (extensions_id) - references Extension; - - alter table TaxonBase_Extension - add constraint FKF961257B9C9D39 - foreign key (TaxonBase_id) - references TaxonBase; - - alter table TaxonBase_Extension_AUD - add constraint FK71381DCC34869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonBase_Marker - add constraint FK5CDB747E9C9D39 - foreign key (TaxonBase_id) - references TaxonBase; - - alter table TaxonBase_Marker - add constraint FK5CDB747E777265A1 - foreign key (markers_id) - references Marker; - - alter table TaxonBase_Marker_AUD - add constraint FKE11D334F34869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonBase_OriginalSource - add constraint FK10EFD9903BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table TaxonBase_OriginalSource - add constraint FK10EFD9909C9D39 - foreign key (TaxonBase_id) - references TaxonBase; - - alter table TaxonBase_OriginalSource_AUD - add constraint FKFB74BF6134869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonBase_Rights - add constraint FK65CF621BC13F7B21 - foreign key (rights_id) - references Rights; - - alter table TaxonBase_Rights - add constraint FK65CF621B9C9D39 - foreign key (TaxonBase_id) - references TaxonBase; - - alter table TaxonBase_Rights_AUD - add constraint FK4CF70A6C34869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonInteraction_LanguageString - add constraint FK579A1DC02BEBA58D - foreign key (description_id) - references LanguageString; - - alter table TaxonInteraction_LanguageString - add constraint FK579A1DC086C86FE0 - foreign key (DescriptionElementBase_id) - references DescriptionElementBase; - - alter table TaxonInteraction_LanguageString - add constraint FK579A1DC028459272 - foreign key (description_mapkey_id) - references DefinedTermBase; - - alter table TaxonInteraction_LanguageString_AUD - add constraint FK9E016B9134869AAE - foreign key (REV) - references AuditEvent; - - create index taxonNameBaseTitleCacheIndex on TaxonNameBase (titleCache); - - alter table TaxonNameBase - add constraint FKB4870C6EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table TaxonNameBase - add constraint FKB4870C62B4FEDD6 - foreign key (basionymauthorteam_id) - references Agent; - - alter table TaxonNameBase - add constraint FKB4870C64AC9C024 - foreign key (nomenclaturalreference_id) - references ReferenceBase; - - alter table TaxonNameBase - add constraint FKB4870C6B14B73EF - foreign key (combinationauthorteam_id) - references Agent; - - alter table TaxonNameBase - add constraint FKB4870C6BFEAE500 - foreign key (homotypicalgroup_id) - references HomotypicalGroup; - - alter table TaxonNameBase - add constraint FKB4870C662AD57A2 - foreign key (excombinationauthorteam_id) - references Agent; - - alter table TaxonNameBase - add constraint FKB4870C67F90DF03 - foreign key (exbasionymauthorteam_id) - references Agent; - - alter table TaxonNameBase - add constraint FKB4870C65BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table TaxonNameBase - add constraint FKB4870C6D7BE55A0 - foreign key (rank_id) - references DefinedTermBase; - - alter table TaxonNameBase_AUD - add constraint FK5CA2CB9734869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_Annotation - add constraint FK9E7794688C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_Annotation - add constraint FK9E7794681E403E0B - foreign key (annotations_id) - references Annotation; - - alter table TaxonNameBase_Annotation_AUD - add constraint FKB6734E3934869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_Extension - add constraint FKC28EE7E6927DE9DF - foreign key (extensions_id) - references Extension; - - alter table TaxonNameBase_Extension - add constraint FKC28EE7E68C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_Extension_AUD - add constraint FK8F98B2B734869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_HybridRelationship - add constraint FK371B728D2D57C7D5 - foreign key (hybridrelationships_id) - references HybridRelationship; - - alter table TaxonNameBase_HybridRelationship - add constraint FK371B728DCDE98DD2 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_HybridRelationship_AUD - add constraint FK800191DE34869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_Marker - add constraint FK39E3C1F38C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_Marker - add constraint FK39E3C1F3777265A1 - foreign key (markers_id) - references Marker; - - alter table TaxonNameBase_Marker_AUD - add constraint FK3DA7BE4434869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_NomenclaturalStatus - add constraint FK560BA7926615E90D - foreign key (status_id) - references NomenclaturalStatus; - - alter table TaxonNameBase_NomenclaturalStatus - add constraint FK560BA7928C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_NomenclaturalStatus_AUD - add constraint FK9215BC6334869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_OriginalSource - add constraint FKBEA1E2053BAB2414 - foreign key (sources_id) - references OriginalSource; - - alter table TaxonNameBase_OriginalSource - add constraint FKBEA1E2058C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_OriginalSource_AUD - add constraint FKF753855634869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_Rights - add constraint FK42D7AF90C13F7B21 - foreign key (rights_id) - references Rights; - - alter table TaxonNameBase_Rights - add constraint FK42D7AF908C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_Rights_AUD - add constraint FKA981956134869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonNameBase_TypeDesignationBase - add constraint FKC0D6BBB5C7DF530C - foreign key (typedesignations_id) - references TypeDesignationBase; - - alter table TaxonNameBase_TypeDesignationBase - add constraint FKC0D6BBB58C85CF94 - foreign key (TaxonNameBase_id) - references TaxonNameBase; - - alter table TaxonNameBase_TypeDesignationBase_AUD - add constraint FKBB24070634869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonRelationship - add constraint FK7482BA02E71EF6CE - foreign key (relatedfrom_id) - references TaxonBase; - - alter table TaxonRelationship - add constraint FK7482BA02F8991B9D - foreign key (relatedto_id) - references TaxonBase; - - alter table TaxonRelationship - add constraint FK7482BA02EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table TaxonRelationship - add constraint FK7482BA02F11BD77B - foreign key (type_id) - references DefinedTermBase; - - alter table TaxonRelationship - add constraint FK7482BA029803512F - foreign key (citation_id) - references ReferenceBase; - - alter table TaxonRelationship - add constraint FK7482BA025BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table TaxonRelationship_AUD - add constraint FKA0DE16D334869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonRelationship_Annotation - add constraint FK82C86DAC1E403E0B - foreign key (annotations_id) - references Annotation; - - alter table TaxonRelationship_Annotation - add constraint FK82C86DAC2BD180D9 - foreign key (TaxonRelationship_id) - references TaxonRelationship; - - alter table TaxonRelationship_Annotation_AUD - add constraint FKE86DE57D34869AAE - foreign key (REV) - references AuditEvent; - - alter table TaxonRelationship_Marker - add constraint FK69FBDD37777265A1 - foreign key (markers_id) - references Marker; - - alter table TaxonRelationship_Marker - add constraint FK69FBDD372BD180D9 - foreign key (TaxonRelationship_id) - references TaxonRelationship; - - alter table TaxonRelationship_Marker_AUD - add constraint FK21F8978834869AAE - foreign key (REV) - references AuditEvent; - - alter table TermVocabulary - add constraint FK487AA692EF7921F6 - foreign key (createdby_id) - references Agent; - - alter table TermVocabulary - add constraint FK487AA6925BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table TermVocabulary_AUD - add constraint FKA6ED3B6334869AAE - foreign key (REV) - references AuditEvent; - - alter table TermVocabulary_Representation - add constraint FKA408B63A258E060 - foreign key (TermVocabulary_id) - references TermVocabulary; - - alter table TermVocabulary_Representation - add constraint FKA408B63AB31C4747 - foreign key (representations_id) - references Representation; - - alter table TermVocabulary_Representation_AUD - add constraint FK681B370B34869AAE - foreign key (REV) - references AuditEvent; - - alter table TypeDesignationBase - add constraint FK8AC9DCAE2FB99E97 - foreign key (typestatus_id) - references DefinedTermBase; - - alter table TypeDesignationBase - add constraint FK8AC9DCAEEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table TypeDesignationBase - add constraint FK8AC9DCAE94DB044A - foreign key (typespecimen_id) - references SpecimenOrObservationBase; - - alter table TypeDesignationBase - add constraint FK8AC9DCAEBFEAE500 - foreign key (homotypicalgroup_id) - references HomotypicalGroup; - - alter table TypeDesignationBase - add constraint FK8AC9DCAE9803512F - foreign key (citation_id) - references ReferenceBase; - - alter table TypeDesignationBase - add constraint FK8AC9DCAE4CB0F315 - foreign key (typename_id) - references TaxonNameBase; - - alter table TypeDesignationBase - add constraint FK8AC9DCAE5BE3EC03 - foreign key (updatedby_id) - references Agent; - - alter table TypeDesignationBase_AUD - add constraint FK243C037F34869AAE - foreign key (REV) - references AuditEvent; - - alter table TypeDesignationBase_Annotation - add constraint FK4D73278044E9E6D4 - foreign key (TypeDesignationBase_id) - references TypeDesignationBase; - - alter table TypeDesignationBase_Annotation - add constraint FK4D7327801E403E0B - foreign key (annotations_id) - references Annotation; - - alter table TypeDesignationBase_Annotation_AUD - add constraint FK88BF955134869AAE - foreign key (REV) - references AuditEvent; - - alter table TypeDesignationBase_Marker - add constraint FKB914A10B44E9E6D4 - foreign key (TypeDesignationBase_id) - references TypeDesignationBase; - - alter table TypeDesignationBase_Marker - add constraint FKB914A10B777265A1 - foreign key (markers_id) - references Marker; - - alter table TypeDesignationBase_Marker_AUD - add constraint FKECA3515C34869AAE - foreign key (REV) - references AuditEvent; - - alter table TypeDesignationBase_TaxonNameBase - add constraint FKF61156F54D901A92 - foreign key (typifiednames_id) - references TaxonNameBase; - - alter table TypeDesignationBase_TaxonNameBase - add constraint FKF61156F544E9E6D4 - foreign key (TypeDesignationBase_id) - references TypeDesignationBase; - - alter table TypeDesignationBase_TaxonNameBase_AUD - add constraint FK4F1F024634869AAE - foreign key (REV) - references AuditEvent; - - alter table User - add constraint FK285FEBEF7921F6 - foreign key (createdby_id) - references Agent; - - alter table User_GrantedAuthorityImpl - add constraint FKA2FB64FCCF9BC520 - foreign key (User_id) - references User; - - alter table User_GrantedAuthorityImpl - add constraint FKA2FB64FC1857F6C2 - foreign key (grantedauthorities_id) - references GrantedAuthorityImpl; - - alter table User_PermissionGroup - add constraint FKDD33C17CDA9DCB5F - foreign key (groups_id) - references PermissionGroup; - - alter table User_PermissionGroup - add constraint FKDD33C17C887E3D12 - foreign key (members_id) - references User; + + create table Address ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + locality varchar(255), + location_errorradius integer, + location_latitude double, + location_longitude double, + pobox varchar(255), + postcode varchar(255), + region varchar(255), + street varchar(255), + createdby_id integer, + updatedby_id integer, + country_id integer, + location_referencesystem_id integer, + primary key (id) + ); + + create table Address_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + locality varchar(255), + location_errorradius integer, + location_latitude double, + location_longitude double, + pobox varchar(255), + postcode varchar(255), + region varchar(255), + street varchar(255), + createdby_id integer, + updatedby_id integer, + country_id integer, + location_referencesystem_id integer, + primary key (id, REV) + ); + + create table AgentBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + code varchar(255), + name varchar(255), + nomenclaturaltitle varchar(255), + firstname varchar(255), + lastname varchar(255), + lifespan_end varchar(255), + lifespan_start varchar(255), + prefix varchar(255), + suffix varchar(255), + protectednomenclaturaltitlecache bit, + createdby_id integer, + updatedby_id integer, + ispartof_id integer, + primary key (id) + ); + + create table AgentBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + createdby_id integer, + updatedby_id integer, + nomenclaturaltitle varchar(255), + protectednomenclaturaltitlecache bit, + firstname varchar(255), + lastname varchar(255), + lifespan_end varchar(255), + lifespan_start varchar(255), + prefix varchar(255), + suffix varchar(255), + code varchar(255), + name varchar(255), + ispartof_id integer, + primary key (id, REV) + ); + + create table AgentBase_Address ( + AgentBase_id integer not null, + contact_addresses_id integer not null, + primary key (AgentBase_id, contact_addresses_id), + unique (contact_addresses_id) + ); + + create table AgentBase_Address_AUD ( + REV integer not null, + AgentBase_id integer not null, + contact_addresses_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, contact_addresses_id) + ); + + create table AgentBase_AgentBase ( + AgentBase_id integer not null, + teammembers_id integer not null + ); + + create table AgentBase_AgentBase_AUD ( + REV integer not null, + AgentBase_id integer not null, + teammembers_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, teammembers_id) + ); + + create table AgentBase_Annotation ( + AgentBase_id integer not null, + annotations_id integer not null, + primary key (AgentBase_id, annotations_id), + unique (annotations_id) + ); + + create table AgentBase_Annotation_AUD ( + REV integer not null, + AgentBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, annotations_id) + ); + + create table AgentBase_DefinedTermBase ( + AgentBase_id integer not null, + types_id integer not null, + primary key (AgentBase_id, types_id) + ); + + create table AgentBase_DefinedTermBase_AUD ( + REV integer not null, + AgentBase_id integer not null, + types_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, types_id) + ); + + create table AgentBase_Extension ( + AgentBase_id integer not null, + extensions_id integer not null, + primary key (AgentBase_id, extensions_id), + unique (extensions_id) + ); + + create table AgentBase_Extension_AUD ( + REV integer not null, + AgentBase_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, extensions_id) + ); + + create table AgentBase_Marker ( + AgentBase_id integer not null, + markers_id integer not null, + primary key (AgentBase_id, markers_id), + unique (markers_id) + ); + + create table AgentBase_Marker_AUD ( + REV integer not null, + AgentBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, markers_id) + ); + + create table AgentBase_Media ( + AgentBase_id integer not null, + media_id integer not null, + primary key (AgentBase_id, media_id) + ); + + create table AgentBase_Media_AUD ( + REV integer not null, + AgentBase_id integer not null, + media_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, media_id) + ); + + create table AgentBase_OriginalSource ( + AgentBase_id integer not null, + sources_id integer not null, + primary key (AgentBase_id, sources_id), + unique (sources_id) + ); + + create table AgentBase_OriginalSource_AUD ( + REV integer not null, + AgentBase_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, sources_id) + ); + + create table AgentBase_Rights ( + AgentBase_id integer not null, + rights_id integer not null, + primary key (AgentBase_id, rights_id), + unique (rights_id) + ); + + create table AgentBase_Rights_AUD ( + REV integer not null, + AgentBase_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, AgentBase_id, rights_id) + ); + + create table AgentBase_contact_emailaddresses ( + AgentBase_id integer not null, + contact_emailaddresses_element varchar(255) + ); + + create table AgentBase_contact_emailaddresses_AUD ( + REV integer not null, + AgentBase_id integer not null, + contact_emailaddresses_element varchar(255) not null, + revtype tinyint, + primary key (REV, AgentBase_id, contact_emailaddresses_element) + ); + + create table AgentBase_contact_faxnumbers ( + AgentBase_id integer not null, + contact_faxnumbers_element varchar(255) + ); + + create table AgentBase_contact_faxnumbers_AUD ( + REV integer not null, + AgentBase_id integer not null, + contact_faxnumbers_element varchar(255) not null, + revtype tinyint, + primary key (REV, AgentBase_id, contact_faxnumbers_element) + ); + + create table AgentBase_contact_phonenumbers ( + AgentBase_id integer not null, + contact_phonenumbers_element varchar(255) + ); + + create table AgentBase_contact_phonenumbers_AUD ( + REV integer not null, + AgentBase_id integer not null, + contact_phonenumbers_element varchar(255) not null, + revtype tinyint, + primary key (REV, AgentBase_id, contact_phonenumbers_element) + ); + + create table AgentBase_contact_urls ( + AgentBase_id integer not null, + contact_urls_element varchar(255) + ); + + create table AgentBase_contact_urls_AUD ( + REV integer not null, + AgentBase_id integer not null, + contact_urls_element varchar(255) not null, + revtype tinyint, + primary key (REV, AgentBase_id, contact_urls_element) + ); + + create table Annotation ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + annotatedObj_type varchar(255), + annotatedObj_id integer not null, + linkbackurl varbinary(255), + createdby_id integer, + updatedby_id integer, + language_id integer, + annotationtype_id integer, + commentator_id integer, + primary key (id) + ); + + create table Annotation_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + linkbackurl varbinary(255), + createdby_id integer, + updatedby_id integer, + language_id integer, + annotationtype_id integer, + commentator_id integer, + primary key (id, REV) + ); + + create table Annotation_Annotation ( + Annotation_id integer not null, + annotations_id integer not null, + primary key (Annotation_id, annotations_id), + unique (annotations_id) + ); + + create table Annotation_Annotation_AUD ( + REV integer not null, + Annotation_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, Annotation_id, annotations_id) + ); + + create table Annotation_Marker ( + Annotation_id integer not null, + markers_id integer not null, + primary key (Annotation_id, markers_id), + unique (markers_id) + ); + + create table Annotation_Marker_AUD ( + REV integer not null, + Annotation_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, Annotation_id, markers_id) + ); + + create table AuditEvent ( + revisionnumber integer generated by default as identity (start with 1), + timestamp bigint, + uuid varchar(255), + primary key (revisionnumber) + ); + + create table CDM_VIEW ( + id integer not null, + created timestamp, + uuid varchar(255), + description varchar(255), + name varchar(255), + createdby_id integer, + reference_id integer, + primary key (id) + ); + + create table CDM_VIEW_CDM_VIEW ( + CDM_VIEW_id integer not null, + superviews_id integer not null, + primary key (CDM_VIEW_id, superviews_id), + unique (superviews_id) + ); + + create table Collection ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + code varchar(255), + codestandard varchar(255), + name varchar(255), + townorlocation varchar(255), + createdby_id integer, + updatedby_id integer, + institute_id integer, + supercollection_id integer, + primary key (id) + ); + + create table Collection_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + code varchar(255), + codestandard varchar(255), + name varchar(255), + townorlocation varchar(255), + createdby_id integer, + updatedby_id integer, + institute_id integer, + supercollection_id integer, + primary key (id, REV) + ); + + create table Collection_Annotation ( + Collection_id integer not null, + annotations_id integer not null, + primary key (Collection_id, annotations_id), + unique (annotations_id) + ); + + create table Collection_Annotation_AUD ( + REV integer not null, + Collection_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, Collection_id, annotations_id) + ); + + create table Collection_Extension ( + Collection_id integer not null, + extensions_id integer not null, + primary key (Collection_id, extensions_id), + unique (extensions_id) + ); + + create table Collection_Extension_AUD ( + REV integer not null, + Collection_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, Collection_id, extensions_id) + ); + + create table Collection_Marker ( + Collection_id integer not null, + markers_id integer not null, + primary key (Collection_id, markers_id), + unique (markers_id) + ); + + create table Collection_Marker_AUD ( + REV integer not null, + Collection_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, Collection_id, markers_id) + ); + + create table Collection_Media ( + Collection_id integer not null, + media_id integer not null, + primary key (Collection_id, media_id) + ); + + create table Collection_Media_AUD ( + REV integer not null, + Collection_id integer not null, + media_id integer not null, + revtype tinyint, + primary key (REV, Collection_id, media_id) + ); + + create table Collection_OriginalSource ( + Collection_id integer not null, + sources_id integer not null, + primary key (Collection_id, sources_id), + unique (sources_id) + ); + + create table Collection_OriginalSource_AUD ( + REV integer not null, + Collection_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, Collection_id, sources_id) + ); + + create table Collection_Rights ( + Collection_id integer not null, + rights_id integer not null, + primary key (Collection_id, rights_id), + unique (rights_id) + ); + + create table Collection_Rights_AUD ( + REV integer not null, + Collection_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, Collection_id, rights_id) + ); + + create table DefinedTermBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + uri varchar(255), + orderindex integer, + iso639_1 varchar(2), + iso639_2 varchar(3), + symmetric bit, + transitive bit, + defaultcolor varchar(255), + supportscommontaxonname bit, + supportsdistribution bit, + supportsindividualassociation bit, + supportsquantitativedata bit, + supportstaxoninteraction bit, + supportstextdata bit, + pointapproximation_errorradius integer, + pointapproximation_latitude double, + pointapproximation_longitude double, + validperiod_end varchar(255), + validperiod_start varchar(255), + iso3166_a2 varchar(2), + createdby_id integer, + updatedby_id integer, + kindof_id integer, + partof_id integer, + vocabulary_id integer, + level_id integer, + pointapproximation_referencesystem_id integer, + shape_id integer, + type_id integer, + primary key (id) + ); + + create table DefinedTermBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + uri varchar(255), + createdby_id integer, + updatedby_id integer, + kindof_id integer, + partof_id integer, + vocabulary_id integer, + iso639_1 varchar(2), + iso639_2 varchar(3), + orderindex integer, + pointapproximation_errorradius integer, + pointapproximation_latitude double, + pointapproximation_longitude double, + validperiod_end varchar(255), + validperiod_start varchar(255), + level_id integer, + pointapproximation_referencesystem_id integer, + shape_id integer, + type_id integer, + supportscommontaxonname bit, + supportsdistribution bit, + supportsindividualassociation bit, + supportsquantitativedata bit, + supportstaxoninteraction bit, + supportstextdata bit, + iso3166_a2 varchar(2), + defaultcolor varchar(255), + symmetric bit, + transitive bit, + primary key (id, REV) + ); + + create table DefinedTermBase_Continent ( + DefinedTermBase_id integer not null, + continents_id integer not null, + primary key (DefinedTermBase_id, continents_id) + ); + + create table DefinedTermBase_Continent_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + continents_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, continents_id) + ); + + create table DefinedTermBase_Media ( + DefinedTermBase_id integer not null, + media_id integer not null, + primary key (DefinedTermBase_id, media_id), + unique (media_id) + ); + + create table DefinedTermBase_Media_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + media_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, media_id) + ); + + create table DefinedTermBase_RecommendedModifierEnumeration ( + DefinedTermBase_id integer not null, + recommendedmodifierenumeration_id integer not null, + primary key (DefinedTermBase_id, recommendedmodifierenumeration_id), + unique (recommendedmodifierenumeration_id) + ); + + create table DefinedTermBase_RecommendedModifierEnumeration_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + recommendedmodifierenumeration_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, recommendedmodifierenumeration_id) + ); + + create table DefinedTermBase_Representation ( + DefinedTermBase_id integer not null, + representations_id integer not null, + primary key (DefinedTermBase_id, representations_id), + unique (representations_id) + ); + + create table DefinedTermBase_Representation_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + representations_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, representations_id) + ); + + create table DefinedTermBase_StatisticalMeasure ( + DefinedTermBase_id integer not null, + recommendedstatisticalmeasures_id integer not null, + primary key (DefinedTermBase_id, recommendedstatisticalmeasures_id) + ); + + create table DefinedTermBase_StatisticalMeasure_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + recommendedstatisticalmeasures_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, recommendedstatisticalmeasures_id) + ); + + create table DefinedTermBase_SupportedCategoricalEnumeration ( + DefinedTermBase_id integer not null, + supportedcategoricalenumerations_id integer not null, + primary key (DefinedTermBase_id, supportedcategoricalenumerations_id), + unique (supportedcategoricalenumerations_id) + ); + + create table DefinedTermBase_SupportedCategoricalEnumeration_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + supportedcategoricalenumerations_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, supportedcategoricalenumerations_id) + ); + + create table DefinedTermBase_WaterbodyOrCountry ( + DefinedTermBase_id integer not null, + waterbodiesorcountries_id integer not null, + primary key (DefinedTermBase_id, waterbodiesorcountries_id) + ); + + create table DefinedTermBase_WaterbodyOrCountry_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + waterbodiesorcountries_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, waterbodiesorcountries_id) + ); + + create table DerivationEvent ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + timeperiod_end varchar(255), + timeperiod_start varchar(255), + createdby_id integer, + updatedby_id integer, + actor_id integer, + type_id integer, + primary key (id) + ); + + create table DerivationEvent_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + timeperiod_end varchar(255), + timeperiod_start varchar(255), + createdby_id integer, + updatedby_id integer, + actor_id integer, + type_id integer, + primary key (id, REV) + ); + + create table DerivationEvent_Annotation ( + DerivationEvent_id integer not null, + annotations_id integer not null, + primary key (DerivationEvent_id, annotations_id), + unique (annotations_id) + ); + + create table DerivationEvent_Annotation_AUD ( + REV integer not null, + DerivationEvent_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, DerivationEvent_id, annotations_id) + ); + + create table DerivationEvent_Marker ( + DerivationEvent_id integer not null, + markers_id integer not null, + primary key (DerivationEvent_id, markers_id), + unique (markers_id) + ); + + create table DerivationEvent_Marker_AUD ( + REV integer not null, + DerivationEvent_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, DerivationEvent_id, markers_id) + ); + + create table DescriptionBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + createdby_id integer, + updatedby_id integer, + taxon_fk integer, + taxonName_fk integer, + primary key (id) + ); + + create table DescriptionBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + createdby_id integer, + updatedby_id integer, + taxonName_fk integer, + taxon_fk integer, + primary key (id, REV) + ); + + create table DescriptionBase_Annotation ( + DescriptionBase_id integer not null, + annotations_id integer not null, + primary key (DescriptionBase_id, annotations_id), + unique (annotations_id) + ); + + create table DescriptionBase_Annotation_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, annotations_id) + ); + + create table DescriptionBase_Extension ( + DescriptionBase_id integer not null, + extensions_id integer not null, + primary key (DescriptionBase_id, extensions_id), + unique (extensions_id) + ); + + create table DescriptionBase_Extension_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, extensions_id) + ); + + create table DescriptionBase_Feature ( + DescriptionBase_id integer not null, + descriptivesystem_id integer not null, + primary key (DescriptionBase_id, descriptivesystem_id) + ); + + create table DescriptionBase_Feature_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + descriptivesystem_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, descriptivesystem_id) + ); + + create table DescriptionBase_GeoScope ( + DescriptionBase_id integer not null, + geoscopes_id integer not null, + primary key (DescriptionBase_id, geoscopes_id) + ); + + create table DescriptionBase_GeoScope_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + geoscopes_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, geoscopes_id) + ); + + create table DescriptionBase_Marker ( + DescriptionBase_id integer not null, + markers_id integer not null, + primary key (DescriptionBase_id, markers_id), + unique (markers_id) + ); + + create table DescriptionBase_Marker_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, markers_id) + ); + + create table DescriptionBase_OriginalSource ( + DescriptionBase_id integer not null, + sources_id integer not null, + primary key (DescriptionBase_id, sources_id), + unique (sources_id) + ); + + create table DescriptionBase_OriginalSource_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, sources_id) + ); + + create table DescriptionBase_ReferenceBase ( + DescriptionBase_id integer not null, + descriptionsources_id integer not null, + primary key (DescriptionBase_id, descriptionsources_id) + ); + + create table DescriptionBase_ReferenceBase_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + descriptionsources_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, descriptionsources_id) + ); + + create table DescriptionBase_Rights ( + DescriptionBase_id integer not null, + rights_id integer not null, + primary key (DescriptionBase_id, rights_id), + unique (rights_id) + ); + + create table DescriptionBase_Rights_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, rights_id) + ); + + create table DescriptionBase_Scope ( + DescriptionBase_id integer not null, + scopes_id integer not null, + primary key (DescriptionBase_id, scopes_id) + ); + + create table DescriptionBase_Scope_AUD ( + REV integer not null, + DescriptionBase_id integer not null, + scopes_id integer not null, + revtype tinyint, + primary key (REV, DescriptionBase_id, scopes_id) + ); + + create table DescriptionBase_SpecimenOrObservationBase ( + descriptions_id integer not null, + describedspecimenorobservations_id integer not null, + primary key (descriptions_id, describedspecimenorobservations_id) + ); + + create table DescriptionBase_SpecimenOrObservationBase_AUD ( + REV integer not null, + descriptions_id integer not null, + describedspecimenorobservations_id integer not null, + revtype tinyint, + primary key (REV, descriptions_id, describedspecimenorobservations_id) + ); + + create table DescriptionElementBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + orderrelevant bit, + name varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + feature_id integer, + indescription_id integer, + language_id integer, + area_id integer, + status_id integer, + associatedspecimenorobservation_id integer, + unit_id integer, + taxon2_id integer, + format_id integer, + primary key (id) + ); + + create table DescriptionElementBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + feature_id integer, + indescription_id integer, + name varchar(255), + language_id integer, + unit_id integer, + orderrelevant bit, + associatedspecimenorobservation_id integer, + taxon2_id integer, + area_id integer, + status_id integer, + format_id integer, + primary key (id, REV) + ); + + create table DescriptionElementBase_Annotation ( + DescriptionElementBase_id integer not null, + annotations_id integer not null, + primary key (DescriptionElementBase_id, annotations_id), + unique (annotations_id) + ); + + create table DescriptionElementBase_Annotation_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, annotations_id) + ); + + create table DescriptionElementBase_LanguageString ( + DescriptionElementBase_id integer not null, + multilanguagetext_id integer not null, + primary key (DescriptionElementBase_id, multilanguagetext_id), + unique (multilanguagetext_id) + ); + + create table DescriptionElementBase_LanguageString_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + multilanguagetext_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, multilanguagetext_id) + ); + + create table DescriptionElementBase_Marker ( + DescriptionElementBase_id integer not null, + markers_id integer not null, + primary key (DescriptionElementBase_id, markers_id), + unique (markers_id) + ); + + create table DescriptionElementBase_Marker_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, markers_id) + ); + + create table DescriptionElementBase_Media ( + DescriptionElementBase_id integer not null, + media_id integer not null, + primary key (DescriptionElementBase_id, media_id) + ); + + create table DescriptionElementBase_Media_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + media_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, media_id) + ); + + create table DescriptionElementBase_Modifier ( + DescriptionElementBase_id integer not null, + modifiers_id integer not null, + primary key (DescriptionElementBase_id, modifiers_id) + ); + + create table DescriptionElementBase_Modifier_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + modifiers_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, modifiers_id) + ); + + create table DescriptionElementBase_ModifyingText ( + DescriptionElementBase_id integer not null, + modifyingtext_id integer not null, + modifyingtext_mapkey_id integer not null, + primary key (DescriptionElementBase_id, modifyingtext_mapkey_id), + unique (modifyingtext_id) + ); + + create table DescriptionElementBase_ModifyingText_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + modifyingtext_id integer not null, + modifyingtext_mapkey_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, modifyingtext_id, modifyingtext_mapkey_id) + ); + + create table DescriptionElementBase_StateData ( + DescriptionElementBase_id integer not null, + states_id integer not null + ); + + create table DescriptionElementBase_StateData_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + states_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, states_id) + ); + + create table DescriptionElementBase_StatisticalMeasurementValue ( + DescriptionElementBase_id integer not null, + statisticalvalues_id integer not null, + primary key (DescriptionElementBase_id, statisticalvalues_id), + unique (statisticalvalues_id) + ); + + create table DescriptionElementBase_StatisticalMeasurementValue_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + statisticalvalues_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, statisticalvalues_id) + ); + + create table DeterminationEvent ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + timeperiod_end varchar(255), + timeperiod_start varchar(255), + preferredflag bit not null, + createdby_id integer, + updatedby_id integer, + actor_id integer, + identifiedunit_id integer, + modifier_id integer, + taxon_id integer, + primary key (id) + ); + + create table DeterminationEvent_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + timeperiod_end varchar(255), + timeperiod_start varchar(255), + preferredflag bit, + createdby_id integer, + updatedby_id integer, + actor_id integer, + identifiedunit_id integer, + modifier_id integer, + taxon_id integer, + primary key (id, REV) + ); + + create table DeterminationEvent_Annotation ( + DeterminationEvent_id integer not null, + annotations_id integer not null, + primary key (DeterminationEvent_id, annotations_id), + unique (annotations_id) + ); + + create table DeterminationEvent_Annotation_AUD ( + REV integer not null, + DeterminationEvent_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, DeterminationEvent_id, annotations_id) + ); + + create table DeterminationEvent_Marker ( + DeterminationEvent_id integer not null, + markers_id integer not null, + primary key (DeterminationEvent_id, markers_id), + unique (markers_id) + ); + + create table DeterminationEvent_Marker_AUD ( + REV integer not null, + DeterminationEvent_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, DeterminationEvent_id, markers_id) + ); + + create table DeterminationEvent_ReferenceBase ( + DeterminationEvent_id integer not null, + setofreferences_id integer not null, + primary key (DeterminationEvent_id, setofreferences_id) + ); + + create table DeterminationEvent_ReferenceBase_AUD ( + REV integer not null, + DeterminationEvent_id integer not null, + setofreferences_id integer not null, + revtype tinyint, + primary key (REV, DeterminationEvent_id, setofreferences_id) + ); + + create table Extension ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + extendedObj_type varchar(255), + extendedObj_id integer not null, + value varchar(255), + createdby_id integer, + updatedby_id integer, + type_id integer, + primary key (id) + ); + + create table Extension_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + value varchar(255), + createdby_id integer, + updatedby_id integer, + type_id integer, + primary key (id, REV) + ); + + create table FeatureNode ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + createdby_id integer, + updatedby_id integer, + feature_id integer, + parent_fk integer, + primary key (id) + ); + + create table FeatureNode_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + createdby_id integer, + updatedby_id integer, + feature_id integer, + parent_fk integer, + primary key (id, REV) + ); + + create table FeatureTree ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + uri varchar(255), + descriptionseparated bit not null, + createdby_id integer, + updatedby_id integer, + root_id integer, + primary key (id) + ); + + create table FeatureTree_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + uri varchar(255), + descriptionseparated bit, + createdby_id integer, + updatedby_id integer, + root_id integer, + primary key (id, REV) + ); + + create table FeatureTree_Representation ( + FeatureTree_id integer not null, + representations_id integer not null, + primary key (FeatureTree_id, representations_id), + unique (representations_id) + ); + + create table FeatureTree_Representation_AUD ( + REV integer not null, + FeatureTree_id integer not null, + representations_id integer not null, + revtype tinyint, + primary key (REV, FeatureTree_id, representations_id) + ); + + create table GatheringEvent ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + timeperiod_end varchar(255), + timeperiod_start varchar(255), + absoluteelevation integer, + absoluteelevationerror integer, + collectingmethod varchar(255), + distancetoground integer, + distancetowatersurface integer, + exactlocation_errorradius integer, + exactlocation_latitude double, + exactlocation_longitude double, + createdby_id integer, + updatedby_id integer, + actor_id integer, + exactlocation_referencesystem_id integer, + locality_id integer, + primary key (id) + ); + + create table GatheringEvent_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + timeperiod_end varchar(255), + timeperiod_start varchar(255), + absoluteelevation integer, + absoluteelevationerror integer, + collectingmethod varchar(255), + distancetoground integer, + distancetowatersurface integer, + exactlocation_errorradius integer, + exactlocation_latitude double, + exactlocation_longitude double, + createdby_id integer, + updatedby_id integer, + actor_id integer, + exactlocation_referencesystem_id integer, + locality_id integer, + primary key (id, REV) + ); + + create table GatheringEvent_Annotation ( + GatheringEvent_id integer not null, + annotations_id integer not null, + primary key (GatheringEvent_id, annotations_id), + unique (annotations_id) + ); + + create table GatheringEvent_Annotation_AUD ( + REV integer not null, + GatheringEvent_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, GatheringEvent_id, annotations_id) + ); + + create table GatheringEvent_DefinedTermBase ( + GatheringEvent_id integer not null, + collectingareas_id integer not null, + primary key (GatheringEvent_id, collectingareas_id) + ); + + create table GatheringEvent_DefinedTermBase_AUD ( + REV integer not null, + GatheringEvent_id integer not null, + collectingareas_id integer not null, + revtype tinyint, + primary key (REV, GatheringEvent_id, collectingareas_id) + ); + + create table GatheringEvent_Marker ( + GatheringEvent_id integer not null, + markers_id integer not null, + primary key (GatheringEvent_id, markers_id), + unique (markers_id) + ); + + create table GatheringEvent_Marker_AUD ( + REV integer not null, + GatheringEvent_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, GatheringEvent_id, markers_id) + ); + + create table GenBankAccession ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + accessionnumber varchar(255), + uri varchar(255), + createdby_id integer, + updatedby_id integer, + primary key (id) + ); + + create table GenBankAccession_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + accessionnumber varchar(255), + uri varchar(255), + createdby_id integer, + updatedby_id integer, + primary key (id, REV) + ); + + create table GrantedAuthorityImpl ( + id integer not null, + created timestamp, + uuid varchar(255), + authority varchar(255), + createdby_id integer, + primary key (id), + unique (authority) + ); + + create table HomotypicalGroup ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + createdby_id integer, + updatedby_id integer, + primary key (id) + ); + + create table HomotypicalGroup_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + createdby_id integer, + updatedby_id integer, + primary key (id, REV) + ); + + create table HomotypicalGroup_Annotation ( + HomotypicalGroup_id integer not null, + annotations_id integer not null, + primary key (HomotypicalGroup_id, annotations_id), + unique (annotations_id) + ); + + create table HomotypicalGroup_Annotation_AUD ( + REV integer not null, + HomotypicalGroup_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, HomotypicalGroup_id, annotations_id) + ); + + create table HomotypicalGroup_Marker ( + HomotypicalGroup_id integer not null, + markers_id integer not null, + primary key (HomotypicalGroup_id, markers_id), + unique (markers_id) + ); + + create table HomotypicalGroup_Marker_AUD ( + REV integer not null, + HomotypicalGroup_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, HomotypicalGroup_id, markers_id) + ); + + create table HybridRelationship ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit not null, + ruleconsidered varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id) + ); + + create table HybridRelationship_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit, + ruleconsidered varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id, REV) + ); + + create table HybridRelationship_Annotation ( + HybridRelationship_id integer not null, + annotations_id integer not null, + primary key (HybridRelationship_id, annotations_id), + unique (annotations_id) + ); + + create table HybridRelationship_Annotation_AUD ( + REV integer not null, + HybridRelationship_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, HybridRelationship_id, annotations_id) + ); + + create table HybridRelationship_Marker ( + HybridRelationship_id integer not null, + markers_id integer not null, + primary key (HybridRelationship_id, markers_id), + unique (markers_id) + ); + + create table HybridRelationship_Marker_AUD ( + REV integer not null, + HybridRelationship_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, HybridRelationship_id, markers_id) + ); + + create table IdentificationKey_Taxon ( + identificationKey_fk integer not null, + taxon_fk integer not null, + primary key (identificationKey_fk, taxon_fk) + ); + + create table IdentificationKey_Taxon_AUD ( + REV integer not null, + identificationKey_fk integer not null, + taxon_fk integer not null, + revtype tinyint, + primary key (REV, identificationKey_fk, taxon_fk) + ); + + create table IndividualAssociation_LanguageString ( + DescriptionElementBase_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + primary key (DescriptionElementBase_id, description_mapkey_id), + unique (description_id) + ); + + create table IndividualAssociation_LanguageString_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, description_id, description_mapkey_id) + ); + + create table InstitutionalMembership ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + department varchar(255), + period_end varchar(255), + period_start varchar(255), + role varchar(255), + createdby_id integer, + updatedby_id integer, + institute_id integer, + person_id integer, + primary key (id) + ); + + create table InstitutionalMembership_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + department varchar(255), + period_end varchar(255), + period_start varchar(255), + role varchar(255), + createdby_id integer, + updatedby_id integer, + institute_id integer, + person_id integer, + primary key (id, REV) + ); + + create table LSIDAuthority ( + id integer not null, + created timestamp, + uuid varchar(255), + authority varchar(255), + authoritywsdl longvarchar, + port integer not null, + server varchar(255), + url varchar(255), + createdby_id integer, + primary key (id), + unique (authority) + ); + + create table LSIDAuthority_namespaces ( + LSIDAuthority_id integer not null, + namespaces_element varchar(255), + namespaces_mapkey varchar(255), + primary key (LSIDAuthority_id, namespaces_mapkey) + ); + + create table LanguageString ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + createdby_id integer, + updatedby_id integer, + language_id integer, + primary key (id) + ); + + create table LanguageString_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + createdby_id integer, + updatedby_id integer, + language_id integer, + primary key (id, REV) + ); + + create table LanguageString_Annotation ( + LanguageString_id integer not null, + annotations_id integer not null, + primary key (LanguageString_id, annotations_id), + unique (annotations_id) + ); + + create table LanguageString_Annotation_AUD ( + REV integer not null, + LanguageString_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, LanguageString_id, annotations_id) + ); + + create table LanguageString_Marker ( + LanguageString_id integer not null, + markers_id integer not null, + primary key (LanguageString_id, markers_id), + unique (markers_id) + ); + + create table LanguageString_Marker_AUD ( + REV integer not null, + LanguageString_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, LanguageString_id, markers_id) + ); + + create table Locus ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + name varchar(255), + createdby_id integer, + updatedby_id integer, + primary key (id) + ); + + create table Locus_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + description varchar(255), + name varchar(255), + createdby_id integer, + updatedby_id integer, + primary key (id, REV) + ); + + create table Marker ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + flag bit not null, + markedObj_type varchar(255), + markedObj_id integer not null, + createdby_id integer, + updatedby_id integer, + markertype_id integer, + primary key (id) + ); + + create table Marker_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + flag bit, + createdby_id integer, + updatedby_id integer, + markertype_id integer, + primary key (id, REV) + ); + + create table Media ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + mediacreated date, + citationmicroreference varchar(255), + createdby_id integer, + updatedby_id integer, + artist_id integer, + citation_id integer, + primary key (id) + ); + + create table MediaRepresentation ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + mimetype varchar(255), + suffix varchar(255), + createdby_id integer, + updatedby_id integer, + media_id integer, + primary key (id) + ); + + create table MediaRepresentationPart ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + size integer, + uri varchar(255), + duration integer, + height integer, + width integer, + createdby_id integer, + updatedby_id integer, + representation_id integer not null, + sortIndex integer, + primary key (id) + ); + + create table MediaRepresentationPart_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + size integer, + uri varchar(255), + createdby_id integer, + updatedby_id integer, + representation_id integer, + duration integer, + height integer, + width integer, + primary key (id, REV) + ); + + create table MediaRepresentation_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + mimetype varchar(255), + suffix varchar(255), + createdby_id integer, + updatedby_id integer, + media_id integer, + primary key (id, REV) + ); + + create table MediaRepresentation_MediaRepresentationPart_AUD ( + REV integer not null, + representation_id integer not null, + id integer not null, + sortIndex integer not null, + revtype tinyint, + primary key (REV, representation_id, id, sortIndex) + ); + + create table Media_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + mediacreated date, + createdby_id integer, + updatedby_id integer, + artist_id integer, + citationmicroreference varchar(255), + citation_id integer, + primary key (id, REV) + ); + + create table Media_Annotation ( + Media_id integer not null, + annotations_id integer not null, + primary key (Media_id, annotations_id), + unique (annotations_id) + ); + + create table Media_Annotation_AUD ( + REV integer not null, + Media_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, Media_id, annotations_id) + ); + + create table Media_DefinedTermBase ( + Media_id integer not null, + geoscopes_id integer not null, + primary key (Media_id, geoscopes_id) + ); + + create table Media_DefinedTermBase_AUD ( + REV integer not null, + Media_id integer not null, + geoscopes_id integer not null, + revtype tinyint, + primary key (REV, Media_id, geoscopes_id) + ); + + create table Media_Description ( + Media_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + primary key (Media_id, description_mapkey_id), + unique (description_id) + ); + + create table Media_Description_AUD ( + REV integer not null, + Media_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + revtype tinyint, + primary key (REV, Media_id, description_id, description_mapkey_id) + ); + + create table Media_LanguageString ( + Media_id integer not null, + title_id integer not null, + title_mapkey_id integer not null, + primary key (Media_id, title_mapkey_id), + unique (title_id) + ); + + create table Media_LanguageString_AUD ( + REV integer not null, + Media_id integer not null, + title_id integer not null, + title_mapkey_id integer not null, + revtype tinyint, + primary key (REV, Media_id, title_id, title_mapkey_id) + ); + + create table Media_Marker ( + Media_id integer not null, + markers_id integer not null, + primary key (Media_id, markers_id), + unique (markers_id) + ); + + create table Media_Marker_AUD ( + REV integer not null, + Media_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, Media_id, markers_id) + ); + + create table Media_Rights ( + Media_id integer not null, + rights_id integer not null, + primary key (Media_id, rights_id) + ); + + create table Media_Rights_AUD ( + REV integer not null, + Media_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, Media_id, rights_id) + ); + + create table Media_Sequence ( + Media_id integer not null, + usedsequences_id integer not null, + primary key (Media_id, usedsequences_id), + unique (usedsequences_id) + ); + + create table Media_Sequence_AUD ( + REV integer not null, + Media_id integer not null, + usedsequences_id integer not null, + revtype tinyint, + primary key (REV, Media_id, usedsequences_id) + ); + + create table Media_TaxonBase ( + Media_id integer not null, + coveredtaxa_id integer not null, + primary key (Media_id, coveredtaxa_id), + unique (coveredtaxa_id) + ); + + create table Media_TaxonBase_AUD ( + REV integer not null, + Media_id integer not null, + coveredtaxa_id integer not null, + revtype tinyint, + primary key (REV, Media_id, coveredtaxa_id) + ); + + create table NameRelationship ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit not null, + ruleconsidered varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id) + ); + + create table NameRelationship_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit, + ruleconsidered varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id, REV) + ); + + create table NameRelationship_Annotation ( + NameRelationship_id integer not null, + annotations_id integer not null, + primary key (NameRelationship_id, annotations_id), + unique (annotations_id) + ); + + create table NameRelationship_Annotation_AUD ( + REV integer not null, + NameRelationship_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, NameRelationship_id, annotations_id) + ); + + create table NameRelationship_Marker ( + NameRelationship_id integer not null, + markers_id integer not null, + primary key (NameRelationship_id, markers_id), + unique (markers_id) + ); + + create table NameRelationship_Marker_AUD ( + REV integer not null, + NameRelationship_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, NameRelationship_id, markers_id) + ); + + create table NomenclaturalStatus ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + ruleconsidered varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + type_id integer, + primary key (id) + ); + + create table NomenclaturalStatus_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + ruleconsidered varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + type_id integer, + primary key (id, REV) + ); + + create table NomenclaturalStatus_Annotation ( + NomenclaturalStatus_id integer not null, + annotations_id integer not null, + primary key (NomenclaturalStatus_id, annotations_id), + unique (annotations_id) + ); + + create table NomenclaturalStatus_Annotation_AUD ( + REV integer not null, + NomenclaturalStatus_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, NomenclaturalStatus_id, annotations_id) + ); + + create table NomenclaturalStatus_Marker ( + NomenclaturalStatus_id integer not null, + markers_id integer not null, + primary key (NomenclaturalStatus_id, markers_id), + unique (markers_id) + ); + + create table NomenclaturalStatus_Marker_AUD ( + REV integer not null, + NomenclaturalStatus_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, NomenclaturalStatus_id, markers_id) + ); + + create table OriginalSource ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + idinsource varchar(255), + idnamespace varchar(255), + sourcedObj_type varchar(255), + sourcedObj_id integer not null, + createdby_id integer, + updatedby_id integer, + citation_id integer, + primary key (id) + ); + + create table OriginalSource_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + idinsource varchar(255), + idnamespace varchar(255), + createdby_id integer, + updatedby_id integer, + citation_id integer, + primary key (id, REV) + ); + + create table OriginalSource_Annotation ( + OriginalSource_id integer not null, + annotations_id integer not null, + primary key (OriginalSource_id, annotations_id), + unique (annotations_id) + ); + + create table OriginalSource_Annotation_AUD ( + REV integer not null, + OriginalSource_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, OriginalSource_id, annotations_id) + ); + + create table OriginalSource_Marker ( + OriginalSource_id integer not null, + markers_id integer not null, + primary key (OriginalSource_id, markers_id), + unique (markers_id) + ); + + create table OriginalSource_Marker_AUD ( + REV integer not null, + OriginalSource_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, OriginalSource_id, markers_id) + ); + + create table PermissionGroup ( + id integer not null, + created timestamp, + uuid varchar(255), + name varchar(255), + createdby_id integer, + primary key (id), + unique (name) + ); + + create table PermissionGroup_GrantedAuthorityImpl ( + PermissionGroup_id integer not null, + grantedauthorities_id integer not null, + primary key (PermissionGroup_id, grantedauthorities_id) + ); + + create table Person_Keyword ( + person_fk integer not null, + keyword_fk integer not null, + primary key (person_fk, keyword_fk) + ); + + create table Person_Keyword_AUD ( + REV integer not null, + person_fk integer not null, + keyword_fk integer not null, + revtype tinyint, + primary key (REV, person_fk, keyword_fk) + ); + + create table ReferenceBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + hasproblem bit not null, + nomenclaturallyrelevant bit not null, + problemends integer not null, + problemstarts integer not null, + uri varchar(255), + datepublished_end varchar(255), + datepublished_start varchar(255), + title varchar(255), + pages varchar(255), + series varchar(255), + volume varchar(255), + address varchar(255), + annote varchar(255), + booktitle varchar(255), + chapter varchar(255), + edition varchar(255), + editor varchar(255), + eprint varchar(255), + howpublished varchar(255), + institution varchar(255), + journal varchar(255), + month varchar(255), + note varchar(255), + number varchar(255), + organization varchar(255), + publisher varchar(255), + reporttype varchar(255), + school varchar(255), + year varchar(255), + placepublished varchar(255), + seriespart varchar(255), + isbn varchar(255), + issn varchar(255), + createdby_id integer, + updatedby_id integer, + authorteam_id integer, + injournal_id integer, + crossref_id integer, + type_id integer, + inseries_id integer, + inbook_id integer, + inproceedings_id integer, + institution_id integer, + school_id integer, + primary key (id) + ); + + create table ReferenceBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + hasproblem bit, + nomenclaturallyrelevant bit, + problemends integer, + problemstarts integer, + uri varchar(255), + createdby_id integer, + updatedby_id integer, + authorteam_id integer, + datepublished_end varchar(255), + datepublished_start varchar(255), + title varchar(255), + address varchar(255), + annote varchar(255), + booktitle varchar(255), + chapter varchar(255), + edition varchar(255), + editor varchar(255), + eprint varchar(255), + howpublished varchar(255), + institution varchar(255), + journal varchar(255), + month varchar(255), + note varchar(255), + number varchar(255), + organization varchar(255), + pages varchar(255), + publisher varchar(255), + reporttype varchar(255), + school varchar(255), + series varchar(255), + volume varchar(255), + year varchar(255), + crossref_id integer, + type_id integer, + placepublished varchar(255), + institution_id integer, + school_id integer, + issn varchar(255), + injournal_id integer, + inproceedings_id integer, + inbook_id integer, + seriespart varchar(255), + inseries_id integer, + isbn varchar(255), + primary key (id, REV) + ); + + create table ReferenceBase_Annotation ( + ReferenceBase_id integer not null, + annotations_id integer not null, + primary key (ReferenceBase_id, annotations_id), + unique (annotations_id) + ); + + create table ReferenceBase_Annotation_AUD ( + REV integer not null, + ReferenceBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, ReferenceBase_id, annotations_id) + ); + + create table ReferenceBase_Extension ( + ReferenceBase_id integer not null, + extensions_id integer not null, + primary key (ReferenceBase_id, extensions_id), + unique (extensions_id) + ); + + create table ReferenceBase_Extension_AUD ( + REV integer not null, + ReferenceBase_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, ReferenceBase_id, extensions_id) + ); + + create table ReferenceBase_Marker ( + ReferenceBase_id integer not null, + markers_id integer not null, + primary key (ReferenceBase_id, markers_id), + unique (markers_id) + ); + + create table ReferenceBase_Marker_AUD ( + REV integer not null, + ReferenceBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, ReferenceBase_id, markers_id) + ); + + create table ReferenceBase_Media ( + ReferenceBase_id integer not null, + media_id integer not null, + primary key (ReferenceBase_id, media_id) + ); + + create table ReferenceBase_Media_AUD ( + REV integer not null, + ReferenceBase_id integer not null, + media_id integer not null, + revtype tinyint, + primary key (REV, ReferenceBase_id, media_id) + ); + + create table ReferenceBase_OriginalSource ( + ReferenceBase_id integer not null, + sources_id integer not null, + primary key (ReferenceBase_id, sources_id), + unique (sources_id) + ); + + create table ReferenceBase_OriginalSource_AUD ( + REV integer not null, + ReferenceBase_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, ReferenceBase_id, sources_id) + ); + + create table ReferenceBase_Rights ( + ReferenceBase_id integer not null, + rights_id integer not null, + primary key (ReferenceBase_id, rights_id), + unique (rights_id) + ); + + create table ReferenceBase_Rights_AUD ( + REV integer not null, + ReferenceBase_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, ReferenceBase_id, rights_id) + ); + + create table RelationshipTermBase_inverseRepresentation ( + DefinedTermBase_id integer not null, + inverserepresentations_id integer not null, + primary key (DefinedTermBase_id, inverserepresentations_id), + unique (inverserepresentations_id) + ); + + create table RelationshipTermBase_inverseRepresentation_AUD ( + REV integer not null, + DefinedTermBase_id integer not null, + inverserepresentations_id integer not null, + revtype tinyint, + primary key (REV, DefinedTermBase_id, inverserepresentations_id) + ); + + create table Representation ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + abbreviatedlabel varchar(255), + label varchar(255), + createdby_id integer, + updatedby_id integer, + language_id integer, + primary key (id) + ); + + create table Representation_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + abbreviatedlabel varchar(255), + label varchar(255), + createdby_id integer, + updatedby_id integer, + language_id integer, + primary key (id, REV) + ); + + create table Representation_Annotation ( + Representation_id integer not null, + annotations_id integer not null, + primary key (Representation_id, annotations_id), + unique (annotations_id) + ); + + create table Representation_Annotation_AUD ( + REV integer not null, + Representation_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, Representation_id, annotations_id) + ); + + create table Representation_Marker ( + Representation_id integer not null, + markers_id integer not null, + primary key (Representation_id, markers_id), + unique (markers_id) + ); + + create table Representation_Marker_AUD ( + REV integer not null, + Representation_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, Representation_id, markers_id) + ); + + create table Rights ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + abbreviatedtext varchar(255), + uri varchar(255), + createdby_id integer, + updatedby_id integer, + language_id integer, + agent_id integer, + type_id integer, + primary key (id) + ); + + create table Rights_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + text longvarchar, + abbreviatedtext varchar(255), + uri varchar(255), + createdby_id integer, + updatedby_id integer, + language_id integer, + agent_id integer, + type_id integer, + primary key (id, REV) + ); + + create table Rights_Annotation ( + Rights_id integer not null, + annotations_id integer not null, + primary key (Rights_id, annotations_id), + unique (annotations_id) + ); + + create table Rights_Annotation_AUD ( + REV integer not null, + Rights_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, Rights_id, annotations_id) + ); + + create table Rights_Marker ( + Rights_id integer not null, + markers_id integer not null, + primary key (Rights_id, markers_id), + unique (markers_id) + ); + + create table Rights_Marker_AUD ( + REV integer not null, + Rights_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, Rights_id, markers_id) + ); + + create table Sequence ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + barcode bit not null, + citationmicroreference varchar(255), + datesequenced date, + length integer, + sequence varchar(255), + createdby_id integer, + updatedby_id integer, + locus_id integer, + publishedin_id integer, + primary key (id) + ); + + create table Sequence_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + barcode bit, + citationmicroreference varchar(255), + datesequenced date, + length integer, + sequence varchar(255), + createdby_id integer, + updatedby_id integer, + locus_id integer, + publishedin_id integer, + primary key (id, REV) + ); + + create table Sequence_Annotation ( + Sequence_id integer not null, + annotations_id integer not null, + primary key (Sequence_id, annotations_id), + unique (annotations_id) + ); + + create table Sequence_Annotation_AUD ( + REV integer not null, + Sequence_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, annotations_id) + ); + + create table Sequence_Extension ( + Sequence_id integer not null, + extensions_id integer not null, + primary key (Sequence_id, extensions_id), + unique (extensions_id) + ); + + create table Sequence_Extension_AUD ( + REV integer not null, + Sequence_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, extensions_id) + ); + + create table Sequence_GenBankAccession ( + Sequence_id integer not null, + genbankaccession_id integer not null, + primary key (Sequence_id, genbankaccession_id), + unique (genbankaccession_id) + ); + + create table Sequence_GenBankAccession_AUD ( + REV integer not null, + Sequence_id integer not null, + genbankaccession_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, genbankaccession_id) + ); + + create table Sequence_Marker ( + Sequence_id integer not null, + markers_id integer not null, + primary key (Sequence_id, markers_id), + unique (markers_id) + ); + + create table Sequence_Marker_AUD ( + REV integer not null, + Sequence_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, markers_id) + ); + + create table Sequence_Media ( + Sequence_id integer not null, + chromatograms_id integer not null, + primary key (Sequence_id, chromatograms_id), + unique (chromatograms_id) + ); + + create table Sequence_Media_AUD ( + REV integer not null, + Sequence_id integer not null, + chromatograms_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, chromatograms_id) + ); + + create table Sequence_OriginalSource ( + Sequence_id integer not null, + sources_id integer not null, + primary key (Sequence_id, sources_id), + unique (sources_id) + ); + + create table Sequence_OriginalSource_AUD ( + REV integer not null, + Sequence_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, sources_id) + ); + + create table Sequence_ReferenceBase ( + Sequence_id integer not null, + citations_id integer not null, + primary key (Sequence_id, citations_id), + unique (citations_id) + ); + + create table Sequence_ReferenceBase_AUD ( + REV integer not null, + Sequence_id integer not null, + citations_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, citations_id) + ); + + create table Sequence_Rights ( + Sequence_id integer not null, + rights_id integer not null, + primary key (Sequence_id, rights_id), + unique (rights_id) + ); + + create table Sequence_Rights_AUD ( + REV integer not null, + Sequence_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, Sequence_id, rights_id) + ); + + create table SpecimenOrObservationBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + individualcount integer, + accessionnumber varchar(255), + catalognumber varchar(255), + collectorsnumber varchar(255), + fieldnotes varchar(255), + fieldnumber varchar(255), + createdby_id integer, + updatedby_id integer, + lifestage_id integer, + sex_id integer, + collection_id integer, + derivationevent_id integer, + storedunder_id integer, + preservation_id integer, + gatheringevent_id integer, + primary key (id) + ); + + create table SpecimenOrObservationBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + individualcount integer, + createdby_id integer, + updatedby_id integer, + lifestage_id integer, + sex_id integer, + fieldnotes varchar(255), + fieldnumber varchar(255), + gatheringevent_id integer, + accessionnumber varchar(255), + catalognumber varchar(255), + collectorsnumber varchar(255), + collection_id integer, + derivationevent_id integer, + storedunder_id integer, + preservation_id integer, + primary key (id, REV) + ); + + create table SpecimenOrObservationBase_Annotation ( + SpecimenOrObservationBase_id integer not null, + annotations_id integer not null, + primary key (SpecimenOrObservationBase_id, annotations_id), + unique (annotations_id) + ); + + create table SpecimenOrObservationBase_Annotation_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, annotations_id) + ); + + create table SpecimenOrObservationBase_DerivationEvent ( + originals_id integer not null, + derivationevents_id integer not null, + primary key (originals_id, derivationevents_id) + ); + + create table SpecimenOrObservationBase_DerivationEvent_AUD ( + REV integer not null, + originals_id integer not null, + derivationevents_id integer not null, + revtype tinyint, + primary key (REV, originals_id, derivationevents_id) + ); + + create table SpecimenOrObservationBase_Extension ( + SpecimenOrObservationBase_id integer not null, + extensions_id integer not null, + primary key (SpecimenOrObservationBase_id, extensions_id), + unique (extensions_id) + ); + + create table SpecimenOrObservationBase_Extension_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, extensions_id) + ); + + create table SpecimenOrObservationBase_LanguageString ( + SpecimenOrObservationBase_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + primary key (SpecimenOrObservationBase_id, description_mapkey_id), + unique (description_id) + ); + + create table SpecimenOrObservationBase_LanguageString_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, description_id, description_mapkey_id) + ); + + create table SpecimenOrObservationBase_Marker ( + SpecimenOrObservationBase_id integer not null, + markers_id integer not null, + primary key (SpecimenOrObservationBase_id, markers_id), + unique (markers_id) + ); + + create table SpecimenOrObservationBase_Marker_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, markers_id) + ); + + create table SpecimenOrObservationBase_Media ( + SpecimenOrObservationBase_id integer not null, + media_id integer not null, + primary key (SpecimenOrObservationBase_id, media_id) + ); + + create table SpecimenOrObservationBase_Media_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + media_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, media_id) + ); + + create table SpecimenOrObservationBase_OriginalSource ( + SpecimenOrObservationBase_id integer not null, + sources_id integer not null, + primary key (SpecimenOrObservationBase_id, sources_id), + unique (sources_id) + ); + + create table SpecimenOrObservationBase_OriginalSource_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, sources_id) + ); + + create table SpecimenOrObservationBase_Rights ( + SpecimenOrObservationBase_id integer not null, + rights_id integer not null, + primary key (SpecimenOrObservationBase_id, rights_id), + unique (rights_id) + ); + + create table SpecimenOrObservationBase_Rights_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, rights_id) + ); + + create table SpecimenOrObservationBase_Sequence ( + SpecimenOrObservationBase_id integer not null, + sequences_id integer not null, + primary key (SpecimenOrObservationBase_id, sequences_id), + unique (sequences_id) + ); + + create table SpecimenOrObservationBase_Sequence_AUD ( + REV integer not null, + SpecimenOrObservationBase_id integer not null, + sequences_id integer not null, + revtype tinyint, + primary key (REV, SpecimenOrObservationBase_id, sequences_id) + ); + + create table StateData ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + createdby_id integer, + updatedby_id integer, + state_id integer, + primary key (id) + ); + + create table StateData_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + createdby_id integer, + updatedby_id integer, + state_id integer, + primary key (id, REV) + ); + + create table StateData_DefinedTermBase ( + StateData_id integer not null, + modifiers_id integer not null, + primary key (StateData_id, modifiers_id), + unique (modifiers_id) + ); + + create table StateData_DefinedTermBase_AUD ( + REV integer not null, + StateData_id integer not null, + modifiers_id integer not null, + revtype tinyint, + primary key (REV, StateData_id, modifiers_id) + ); + + create table StateData_LanguageString ( + StateData_id integer not null, + modifyingtext_id integer not null, + modifyingtext_mapkey_id integer not null, + primary key (StateData_id, modifyingtext_mapkey_id), + unique (modifyingtext_id) + ); + + create table StateData_LanguageString_AUD ( + REV integer not null, + StateData_id integer not null, + modifyingtext_id integer not null, + modifyingtext_mapkey_id integer not null, + revtype tinyint, + primary key (REV, StateData_id, modifyingtext_id, modifyingtext_mapkey_id) + ); + + create table StatisticalMeasurementValue ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + value float not null, + createdby_id integer, + updatedby_id integer, + type_id integer, + primary key (id) + ); + + create table StatisticalMeasurementValue_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + value float, + createdby_id integer, + updatedby_id integer, + type_id integer, + primary key (id, REV) + ); + + create table StatisticalMeasurementValue_DefinedTermBase ( + StatisticalMeasurementValue_id integer not null, + modifiers_id integer not null, + primary key (StatisticalMeasurementValue_id, modifiers_id), + unique (modifiers_id) + ); + + create table StatisticalMeasurementValue_DefinedTermBase_AUD ( + REV integer not null, + StatisticalMeasurementValue_id integer not null, + modifiers_id integer not null, + revtype tinyint, + primary key (REV, StatisticalMeasurementValue_id, modifiers_id) + ); + + create table SynonymRelationship ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit not null, + partial bit not null, + proparte bit not null, + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id) + ); + + create table SynonymRelationship_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit, + partial bit, + proparte bit, + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id, REV) + ); + + create table SynonymRelationship_Annotation ( + SynonymRelationship_id integer not null, + annotations_id integer not null, + primary key (SynonymRelationship_id, annotations_id), + unique (annotations_id) + ); + + create table SynonymRelationship_Annotation_AUD ( + REV integer not null, + SynonymRelationship_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, SynonymRelationship_id, annotations_id) + ); + + create table SynonymRelationship_Marker ( + SynonymRelationship_id integer not null, + markers_id integer not null, + primary key (SynonymRelationship_id, markers_id), + unique (markers_id) + ); + + create table SynonymRelationship_Marker_AUD ( + REV integer not null, + SynonymRelationship_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, SynonymRelationship_id, markers_id) + ); + + create table TaxonBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + doubtful bit not null, + taxonomicchildrencount integer, + createdby_id integer, + updatedby_id integer, + taxonName_fk integer, + sec_id integer, + taxonomicparentcache_id integer, + primary key (id) + ); + + create table TaxonBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + doubtful bit, + createdby_id integer, + updatedby_id integer, + taxonName_fk integer, + sec_id integer, + taxonomicchildrencount integer, + taxonomicparentcache_id integer, + primary key (id, REV) + ); + + create table TaxonBase_Annotation ( + TaxonBase_id integer not null, + annotations_id integer not null, + primary key (TaxonBase_id, annotations_id), + unique (annotations_id) + ); + + create table TaxonBase_Annotation_AUD ( + REV integer not null, + TaxonBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, TaxonBase_id, annotations_id) + ); + + create table TaxonBase_Extension ( + TaxonBase_id integer not null, + extensions_id integer not null, + primary key (TaxonBase_id, extensions_id), + unique (extensions_id) + ); + + create table TaxonBase_Extension_AUD ( + REV integer not null, + TaxonBase_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, TaxonBase_id, extensions_id) + ); + + create table TaxonBase_Marker ( + TaxonBase_id integer not null, + markers_id integer not null, + primary key (TaxonBase_id, markers_id), + unique (markers_id) + ); + + create table TaxonBase_Marker_AUD ( + REV integer not null, + TaxonBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, TaxonBase_id, markers_id) + ); + + create table TaxonBase_OriginalSource ( + TaxonBase_id integer not null, + sources_id integer not null, + primary key (TaxonBase_id, sources_id), + unique (sources_id) + ); + + create table TaxonBase_OriginalSource_AUD ( + REV integer not null, + TaxonBase_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, TaxonBase_id, sources_id) + ); + + create table TaxonBase_Rights ( + TaxonBase_id integer not null, + rights_id integer not null, + primary key (TaxonBase_id, rights_id), + unique (rights_id) + ); + + create table TaxonBase_Rights_AUD ( + REV integer not null, + TaxonBase_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, TaxonBase_id, rights_id) + ); + + create table TaxonInteraction_LanguageString ( + DescriptionElementBase_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + primary key (DescriptionElementBase_id, description_mapkey_id), + unique (description_id) + ); + + create table TaxonInteraction_LanguageString_AUD ( + REV integer not null, + DescriptionElementBase_id integer not null, + description_id integer not null, + description_mapkey_id integer not null, + revtype tinyint, + primary key (REV, DescriptionElementBase_id, description_id, description_mapkey_id) + ); + + create table TaxonNameBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit not null, + titleCache varchar(255), + appendedphrase varchar(255), + fullTitleCache varchar(330), + hasproblem bit not null, + nomenclaturalmicroreference varchar(255), + problemends integer not null, + problemstarts integer not null, + protectedfulltitlecache bit not null, + authorshipcache varchar(255), + genusoruninomial varchar(255), + infragenericepithet varchar(255), + infraspecificepithet varchar(255), + namecache varchar(255), + protectedauthorshipcache bit, + protectednamecache bit, + specificepithet varchar(255), + nameapprobation varchar(255), + subgenusauthorship varchar(255), + anamorphic bit, + binomhybrid bit, + hybridformula bit, + monomhybrid bit, + trinomhybrid bit, + cultivarname varchar(255), + acronym varchar(255), + breed varchar(255), + originalpublicationyear integer, + publicationyear integer, + createdby_id integer, + updatedby_id integer, + homotypicalgroup_id integer, + nomenclaturalreference_id integer, + rank_id integer, + basionymauthorteam_id integer, + combinationauthorteam_id integer, + exbasionymauthorteam_id integer, + excombinationauthorteam_id integer, + primary key (id) + ); + + create table TaxonNameBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + lsid_authority varchar(255), + lsid_lsid varchar(255), + lsid_namespace varchar(255), + lsid_object varchar(255), + lsid_revision varchar(255), + protectedtitlecache bit, + titleCache varchar(255), + appendedphrase varchar(255), + fullTitleCache varchar(330), + hasproblem bit, + nomenclaturalmicroreference varchar(255), + problemends integer, + problemstarts integer, + protectedfulltitlecache bit, + createdby_id integer, + updatedby_id integer, + homotypicalgroup_id integer, + nomenclaturalreference_id integer, + rank_id integer, + acronym varchar(255), + authorshipcache varchar(255), + genusoruninomial varchar(255), + infragenericepithet varchar(255), + infraspecificepithet varchar(255), + namecache varchar(255), + protectedauthorshipcache bit, + protectednamecache bit, + specificepithet varchar(255), + basionymauthorteam_id integer, + combinationauthorteam_id integer, + exbasionymauthorteam_id integer, + excombinationauthorteam_id integer, + nameapprobation varchar(255), + subgenusauthorship varchar(255), + anamorphic bit, + binomhybrid bit, + hybridformula bit, + monomhybrid bit, + trinomhybrid bit, + breed varchar(255), + originalpublicationyear integer, + publicationyear integer, + cultivarname varchar(255), + primary key (id, REV) + ); + + create table TaxonNameBase_Annotation ( + TaxonNameBase_id integer not null, + annotations_id integer not null, + primary key (TaxonNameBase_id, annotations_id), + unique (annotations_id) + ); + + create table TaxonNameBase_Annotation_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, annotations_id) + ); + + create table TaxonNameBase_Extension ( + TaxonNameBase_id integer not null, + extensions_id integer not null, + primary key (TaxonNameBase_id, extensions_id), + unique (extensions_id) + ); + + create table TaxonNameBase_Extension_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + extensions_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, extensions_id) + ); + + create table TaxonNameBase_HybridRelationship ( + TaxonNameBase_id integer not null, + hybridrelationships_id integer not null, + primary key (TaxonNameBase_id, hybridrelationships_id), + unique (hybridrelationships_id) + ); + + create table TaxonNameBase_HybridRelationship_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + hybridrelationships_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, hybridrelationships_id) + ); + + create table TaxonNameBase_Marker ( + TaxonNameBase_id integer not null, + markers_id integer not null, + primary key (TaxonNameBase_id, markers_id), + unique (markers_id) + ); + + create table TaxonNameBase_Marker_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, markers_id) + ); + + create table TaxonNameBase_NomenclaturalStatus ( + TaxonNameBase_id integer not null, + status_id integer not null, + primary key (TaxonNameBase_id, status_id), + unique (status_id) + ); + + create table TaxonNameBase_NomenclaturalStatus_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + status_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, status_id) + ); + + create table TaxonNameBase_OriginalSource ( + TaxonNameBase_id integer not null, + sources_id integer not null, + primary key (TaxonNameBase_id, sources_id), + unique (sources_id) + ); + + create table TaxonNameBase_OriginalSource_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + sources_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, sources_id) + ); + + create table TaxonNameBase_Rights ( + TaxonNameBase_id integer not null, + rights_id integer not null, + primary key (TaxonNameBase_id, rights_id), + unique (rights_id) + ); + + create table TaxonNameBase_Rights_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + rights_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, rights_id) + ); + + create table TaxonNameBase_TypeDesignationBase ( + TaxonNameBase_id integer not null, + typedesignations_id integer not null, + primary key (TaxonNameBase_id, typedesignations_id) + ); + + create table TaxonNameBase_TypeDesignationBase_AUD ( + REV integer not null, + TaxonNameBase_id integer not null, + typedesignations_id integer not null, + revtype tinyint, + primary key (REV, TaxonNameBase_id, typedesignations_id) + ); + + create table TaxonRelationship ( + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit not null, + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id) + ); + + create table TaxonRelationship_AUD ( + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + doubtful bit, + createdby_id integer, + updatedby_id integer, + citation_id integer, + relatedfrom_id integer, + relatedto_id integer, + type_id integer, + primary key (id, REV) + ); + + create table TaxonRelationship_Annotation ( + TaxonRelationship_id integer not null, + annotations_id integer not null, + primary key (TaxonRelationship_id, annotations_id), + unique (annotations_id) + ); + + create table TaxonRelationship_Annotation_AUD ( + REV integer not null, + TaxonRelationship_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, TaxonRelationship_id, annotations_id) + ); + + create table TaxonRelationship_Marker ( + TaxonRelationship_id integer not null, + markers_id integer not null, + primary key (TaxonRelationship_id, markers_id), + unique (markers_id) + ); + + create table TaxonRelationship_Marker_AUD ( + REV integer not null, + TaxonRelationship_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, TaxonRelationship_id, markers_id) + ); + + create table TermVocabulary ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + uri varchar(255), + termsourceuri varchar(255), + createdby_id integer, + updatedby_id integer, + primary key (id) + ); + + create table TermVocabulary_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + uri varchar(255), + termsourceuri varchar(255), + createdby_id integer, + updatedby_id integer, + primary key (id, REV) + ); + + create table TermVocabulary_Representation ( + TermVocabulary_id integer not null, + representations_id integer not null, + primary key (TermVocabulary_id, representations_id), + unique (representations_id) + ); + + create table TermVocabulary_Representation_AUD ( + REV integer not null, + TermVocabulary_id integer not null, + representations_id integer not null, + revtype tinyint, + primary key (REV, TermVocabulary_id, representations_id) + ); + + create table TypeDesignationBase ( + DTYPE varchar(31) not null, + id integer not null, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + notdesignated bit not null, + conservedtype bit, + lectotype bit, + rejectedtype bit, + createdby_id integer, + updatedby_id integer, + citation_id integer, + homotypicalgroup_id integer, + typename_id integer, + typespecimen_id integer, + typestatus_id integer, + primary key (id) + ); + + create table TypeDesignationBase_AUD ( + DTYPE varchar(31) not null, + id integer not null, + REV integer not null, + revtype tinyint, + created timestamp, + uuid varchar(255), + updated timestamp, + citationmicroreference varchar(255), + originalnamestring varchar(255), + notdesignated bit, + createdby_id integer, + updatedby_id integer, + citation_id integer, + homotypicalgroup_id integer, + conservedtype bit, + lectotype bit, + rejectedtype bit, + typename_id integer, + typespecimen_id integer, + typestatus_id integer, + primary key (id, REV) + ); + + create table TypeDesignationBase_Annotation ( + TypeDesignationBase_id integer not null, + annotations_id integer not null, + primary key (TypeDesignationBase_id, annotations_id), + unique (annotations_id) + ); + + create table TypeDesignationBase_Annotation_AUD ( + REV integer not null, + TypeDesignationBase_id integer not null, + annotations_id integer not null, + revtype tinyint, + primary key (REV, TypeDesignationBase_id, annotations_id) + ); + + create table TypeDesignationBase_Marker ( + TypeDesignationBase_id integer not null, + markers_id integer not null, + primary key (TypeDesignationBase_id, markers_id), + unique (markers_id) + ); + + create table TypeDesignationBase_Marker_AUD ( + REV integer not null, + TypeDesignationBase_id integer not null, + markers_id integer not null, + revtype tinyint, + primary key (REV, TypeDesignationBase_id, markers_id) + ); + + create table TypeDesignationBase_TaxonNameBase ( + TypeDesignationBase_id integer not null, + typifiednames_id integer not null, + primary key (TypeDesignationBase_id, typifiednames_id) + ); + + create table TypeDesignationBase_TaxonNameBase_AUD ( + REV integer not null, + TypeDesignationBase_id integer not null, + typifiednames_id integer not null, + revtype tinyint, + primary key (REV, TypeDesignationBase_id, typifiednames_id) + ); + + create table User ( + id integer not null, + created timestamp, + uuid varchar(255), + accountnonexpired bit not null, + accountnonlocked bit not null, + credentialsnonexpired bit not null, + emailaddress varchar(255), + enabled bit not null, + password varchar(255), + username varchar(255), + createdby_id integer, + primary key (id), + unique (username) + ); + + create table User_GrantedAuthorityImpl ( + User_id integer not null, + grantedauthorities_id integer not null, + primary key (User_id, grantedauthorities_id) + ); + + create table User_PermissionGroup ( + members_id integer not null, + groups_id integer not null, + primary key (members_id, groups_id) + ); + + alter table Address + add constraint FK1ED033D4132A2FE8 + foreign key (location_referencesystem_id) + references DefinedTermBase; + + alter table Address + add constraint FK1ED033D4EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Address + add constraint FK1ED033D42687715A + foreign key (country_id) + references DefinedTermBase; + + alter table Address + add constraint FK1ED033D45BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Address_AUD + add constraint FK115657A534869AAE + foreign key (REV) + references AuditEvent; + + create index agentTitleCacheIndex on AgentBase (titleCache); + + alter table AgentBase + add constraint FK1205D356EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table AgentBase + add constraint FK1205D356A830578 + foreign key (ispartof_id) + references AgentBase; + + alter table AgentBase + add constraint FK1205D3565BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table AgentBase_AUD + add constraint FK29CC662734869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_Address + add constraint FK1EDFF7EB50751EC5 + foreign key (contact_addresses_id) + references Address; + + alter table AgentBase_Address + add constraint FK1EDFF7EB86EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_Address_AUD + add constraint FK3D28383C34869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_AgentBase + add constraint FK4D34EDAD1C0E9907 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_AgentBase + add constraint FK4D34EDADE9E535F9 + foreign key (teammembers_id) + references AgentBase; + + alter table AgentBase_AgentBase_AUD + add constraint FKA8A87CFE34869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_Annotation + add constraint FK44D5F7D886EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_Annotation + add constraint FK44D5F7D81E403E0B + foreign key (annotations_id) + references Annotation; + + alter table AgentBase_Annotation_AUD + add constraint FK771279A934869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_DefinedTermBase + add constraint FK6665C77D9A161BED + foreign key (types_id) + references DefinedTermBase; + + alter table AgentBase_DefinedTermBase + add constraint FK6665C77D8D9AB196 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_DefinedTermBase_AUD + add constraint FKA737EECE34869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_Extension + add constraint FK8E1E5676927DE9DF + foreign key (extensions_id) + references Extension; + + alter table AgentBase_Extension + add constraint FK8E1E567686EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_Extension_AUD + add constraint FK11AE594734869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_Marker + add constraint FK365D5D6386EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_Marker + add constraint FK365D5D63777265A1 + foreign key (markers_id) + references Marker; + + alter table AgentBase_Marker_AUD + add constraint FKE40621B434869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_Media + add constraint FKE8FC5D9BC2C29593 + foreign key (media_id) + references Media; + + alter table AgentBase_Media + add constraint FKE8FC5D9B86EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_Media_AUD + add constraint FK323A45EC34869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_OriginalSource + add constraint FK7F410D753BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table AgentBase_OriginalSource + add constraint FK7F410D7586EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_OriginalSource_AUD + add constraint FKB48F78C634869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_Rights + add constraint FK3F514B0086EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_Rights + add constraint FK3F514B00C13F7B21 + foreign key (rights_id) + references Rights; + + alter table AgentBase_Rights_AUD + add constraint FK4FDFF8D134869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_contact_emailaddresses + add constraint FK4BD2B08E86EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_contact_emailaddresses_AUD + add constraint FKCAF7E75F34869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_contact_faxnumbers + add constraint FK52E1AD9586EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_contact_faxnumbers_AUD + add constraint FK88A308E634869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_contact_phonenumbers + add constraint FKC171CC2486EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_contact_phonenumbers_AUD + add constraint FKDDD347F534869AAE + foreign key (REV) + references AuditEvent; + + alter table AgentBase_contact_urls + add constraint FK9A9643EC86EFC5D4 + foreign key (AgentBase_id) + references AgentBase; + + alter table AgentBase_contact_urls_AUD + add constraint FK1CE69BBD34869AAE + foreign key (REV) + references AuditEvent; + + alter table Annotation + add constraint FK1A21C74FDF299D00 + foreign key (annotationtype_id) + references DefinedTermBase; + + alter table Annotation + add constraint FK1A21C74FEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Annotation + add constraint FK1A21C74FE7692740 + foreign key (commentator_id) + references AgentBase; + + alter table Annotation + add constraint FK1A21C74F5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Annotation + add constraint FK1A21C74FE8D36B00 + foreign key (language_id) + references DefinedTermBase; + + alter table Annotation_AUD + add constraint FK1A6BB5A034869AAE + foreign key (REV) + references AuditEvent; + + alter table Annotation_Annotation + add constraint FKC99DFE3F994CCE20 + foreign key (Annotation_id) + references Annotation; + + alter table Annotation_Annotation + add constraint FKC99DFE3F1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table Annotation_Annotation_AUD + add constraint FKB212F49034869AAE + foreign key (REV) + references AuditEvent; + + alter table Annotation_Marker + add constraint FKB17EAF4A994CCE20 + foreign key (Annotation_id) + references Annotation; + + alter table Annotation_Marker + add constraint FKB17EAF4A777265A1 + foreign key (markers_id) + references Marker; + + alter table Annotation_Marker_AUD + add constraint FK68CE281B34869AAE + foreign key (REV) + references AuditEvent; + + alter table CDM_VIEW + add constraint FKC5DE8EF8765B124B + foreign key (reference_id) + references ReferenceBase; + + alter table CDM_VIEW + add constraint FKC5DE8EF8EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table CDM_VIEW_CDM_VIEW + add constraint FK230A885F7208BB38 + foreign key (superviews_id) + references CDM_VIEW; + + alter table CDM_VIEW_CDM_VIEW + add constraint FK230A885FC00D1213 + foreign key (CDM_VIEW_id) + references CDM_VIEW; + + create index collectionTitleCacheIndex on Collection (titleCache); + + alter table Collection + add constraint FKF078ABECEB38EFF + foreign key (supercollection_id) + references Collection; + + alter table Collection + add constraint FKF078ABEEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Collection + add constraint FKF078ABE16B9CA77 + foreign key (institute_id) + references AgentBase; + + alter table Collection + add constraint FKF078ABE5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Collection_AUD + add constraint FKD6D4298F34869AAE + foreign key (REV) + references AuditEvent; + + alter table Collection_Annotation + add constraint FKEA970F70EB62BE9A + foreign key (Collection_id) + references Collection; + + alter table Collection_Annotation + add constraint FKEA970F701E403E0B + foreign key (annotations_id) + references Annotation; + + alter table Collection_Annotation_AUD + add constraint FKA0CE054134869AAE + foreign key (REV) + references AuditEvent; + + alter table Collection_Extension + add constraint FKF68FEBDE927DE9DF + foreign key (extensions_id) + references Extension; + + alter table Collection_Extension + add constraint FKF68FEBDEEB62BE9A + foreign key (Collection_id) + references Collection; + + alter table Collection_Extension_AUD + add constraint FK1306FAAF34869AAE + foreign key (REV) + references AuditEvent; + + alter table Collection_Marker + add constraint FKF0CA00FBEB62BE9A + foreign key (Collection_id) + references Collection; + + alter table Collection_Marker + add constraint FKF0CA00FB777265A1 + foreign key (markers_id) + references Marker; + + alter table Collection_Marker_AUD + add constraint FK89C7394C34869AAE + foreign key (REV) + references AuditEvent; + + alter table Collection_Media + add constraint FK7320E703EB62BE9A + foreign key (Collection_id) + references Collection; + + alter table Collection_Media + add constraint FK7320E703C2C29593 + foreign key (media_id) + references Media; + + alter table Collection_Media_AUD + add constraint FK9AABDB5434869AAE + foreign key (REV) + references AuditEvent; + + alter table Collection_OriginalSource + add constraint FKA8FC990DEB62BE9A + foreign key (Collection_id) + references Collection; + + alter table Collection_OriginalSource + add constraint FKA8FC990D3BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table Collection_OriginalSource_AUD + add constraint FK37EB785E34869AAE + foreign key (REV) + references AuditEvent; + + alter table Collection_Rights + add constraint FKF9BDEE98EB62BE9A + foreign key (Collection_id) + references Collection; + + alter table Collection_Rights + add constraint FKF9BDEE98C13F7B21 + foreign key (rights_id) + references Rights; + + alter table Collection_Rights_AUD + add constraint FKF5A1106934869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase + add constraint FK2E340A6636C6F6F6 + foreign key (pointapproximation_referencesystem_id) + references DefinedTermBase; + + alter table DefinedTermBase + add constraint FK2E340A66EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table DefinedTermBase + add constraint FK2E340A6688206484 + foreign key (type_id) + references DefinedTermBase; + + alter table DefinedTermBase + add constraint FK2E340A6647AF954C + foreign key (vocabulary_id) + references TermVocabulary; + + alter table DefinedTermBase + add constraint FK2E340A663B0DA0EF + foreign key (kindof_id) + references DefinedTermBase; + + alter table DefinedTermBase + add constraint FK2E340A6624AF3F70 + foreign key (level_id) + references DefinedTermBase; + + alter table DefinedTermBase + add constraint FK2E340A665BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table DefinedTermBase + add constraint FK2E340A66CC0240B6 + foreign key (shape_id) + references Media; + + alter table DefinedTermBase + add constraint FK2E340A66D040DBF0 + foreign key (partof_id) + references DefinedTermBase; + + alter table DefinedTermBase_AUD + add constraint FK86E8953734869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_Continent + add constraint FK45F60AFBE8CE10AA + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_Continent + add constraint FK45F60AFB3927C853 + foreign key (continents_id) + references DefinedTermBase; + + alter table DefinedTermBase_Continent_AUD + add constraint FKF5DE434C34869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_Media + add constraint FK6FC908ABC0DB4934 + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_Media + add constraint FK6FC908ABC2C29593 + foreign key (media_id) + references Media; + + alter table DefinedTermBase_Media_AUD + add constraint FKDD9AE8FC34869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_RecommendedModifierEnumeration + add constraint FKA72FB5AED0BDAE9B + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_RecommendedModifierEnumeration + add constraint FKA72FB5AE5255EAFD + foreign key (recommendedmodifierenumeration_id) + references TermVocabulary; + + alter table DefinedTermBase_RecommendedModifierEnumeration_AUD + add constraint FK780D5C7F34869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_Representation + add constraint FKAAC8AFE6C0DB4934 + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_Representation + add constraint FKAAC8AFE6B31C4747 + foreign key (representations_id) + references Representation; + + alter table DefinedTermBase_Representation_AUD + add constraint FKB5AE7AB734869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_StatisticalMeasure + add constraint FK6FF15DFCD0BDAE9B + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_StatisticalMeasure + add constraint FK6FF15DFCC9CD5B57 + foreign key (recommendedstatisticalmeasures_id) + references DefinedTermBase; + + alter table DefinedTermBase_StatisticalMeasure_AUD + add constraint FK3C062DCD34869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_SupportedCategoricalEnumeration + add constraint FK2170B25CD0BDAE9B + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_SupportedCategoricalEnumeration + add constraint FK2170B25C5AF2C74 + foreign key (supportedcategoricalenumerations_id) + references TermVocabulary; + + alter table DefinedTermBase_SupportedCategoricalEnumeration_AUD + add constraint FKBB04522D34869AAE + foreign key (REV) + references AuditEvent; + + alter table DefinedTermBase_WaterbodyOrCountry + add constraint FKCAF4393CE5C0F9E + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table DefinedTermBase_WaterbodyOrCountry + add constraint FKCAF43931603B036 + foreign key (waterbodiesorcountries_id) + references DefinedTermBase; + + alter table DefinedTermBase_WaterbodyOrCountry_AUD + add constraint FKD5996FE434869AAE + foreign key (REV) + references AuditEvent; + + alter table DerivationEvent + add constraint FK426BC03EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table DerivationEvent + add constraint FK426BC038524B89D + foreign key (type_id) + references DefinedTermBase; + + alter table DerivationEvent + add constraint FK426BC035BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table DerivationEvent + add constraint FK426BC033DA462D5 + foreign key (actor_id) + references AgentBase; + + alter table DerivationEvent_AUD + add constraint FKDABF305434869AAE + foreign key (REV) + references AuditEvent; + + alter table DerivationEvent_Annotation + add constraint FKEFA0D10B4AAB411A + foreign key (DerivationEvent_id) + references DerivationEvent; + + alter table DerivationEvent_Annotation + add constraint FKEFA0D10B1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table DerivationEvent_Annotation_AUD + add constraint FKA197815C34869AAE + foreign key (REV) + references AuditEvent; + + alter table DerivationEvent_Marker + add constraint FKE412C8164AAB411A + foreign key (DerivationEvent_id) + references DerivationEvent; + + alter table DerivationEvent_Marker + add constraint FKE412C816777265A1 + foreign key (markers_id) + references Marker; + + alter table DerivationEvent_Marker_AUD + add constraint FK8ED0FAE734869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase + add constraint FKFF4D58CDEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table DescriptionBase + add constraint FKFF4D58CDDA93512F + foreign key (taxonName_fk) + references TaxonNameBase; + + alter table DescriptionBase + add constraint FKFF4D58CD5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table DescriptionBase + add constraint FKFF4D58CDDE9A3DE3 + foreign key (taxon_fk) + references TaxonBase; + + alter table DescriptionBase_AUD + add constraint FK7456581E34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_Annotation + add constraint FKF3AD3201F1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_Annotation + add constraint FKF3AD32011E403E0B + foreign key (annotations_id) + references Annotation; + + alter table DescriptionBase_Annotation_AUD + add constraint FK15FE775234869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_Extension + add constraint FKD5D2B32DF1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_Extension + add constraint FKD5D2B32D927DE9DF + foreign key (extensions_id) + references Extension; + + alter table DescriptionBase_Extension_AUD + add constraint FK79E7827E34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_Feature + add constraint FK58ACF564F1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_Feature + add constraint FK58ACF5649AE62C6 + foreign key (descriptivesystem_id) + references DefinedTermBase; + + alter table DescriptionBase_Feature_AUD + add constraint FKA4D7D13534869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_GeoScope + add constraint FK3ADD7CD5D86445CE + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_GeoScope + add constraint FK3ADD7CD586D04E74 + foreign key (geoscopes_id) + references DefinedTermBase; + + alter table DescriptionBase_GeoScope_AUD + add constraint FK63A5382634869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_Marker + add constraint FK6132140CF1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_Marker + add constraint FK6132140C777265A1 + foreign key (markers_id) + references Marker; + + alter table DescriptionBase_Marker_AUD + add constraint FK92DD5BDD34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_OriginalSource + add constraint FK1E2D0B1EF1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_OriginalSource + add constraint FK1E2D0B1E3BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table DescriptionBase_OriginalSource_AUD + add constraint FKDC8279EF34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_ReferenceBase + add constraint FK76188CAAF1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_ReferenceBase + add constraint FK76188CAA45AB7BBA + foreign key (descriptionsources_id) + references ReferenceBase; + + alter table DescriptionBase_ReferenceBase_AUD + add constraint FK687A557B34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_Rights + add constraint FK6A2601A9F1DDBFAB + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_Rights + add constraint FK6A2601A9C13F7B21 + foreign key (rights_id) + references Rights; + + alter table DescriptionBase_Rights_AUD + add constraint FKFEB732FA34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_Scope + add constraint FKB9257C42D86445CE + foreign key (DescriptionBase_id) + references DescriptionBase; + + alter table DescriptionBase_Scope + add constraint FKB9257C42951A5D40 + foreign key (scopes_id) + references DefinedTermBase; + + alter table DescriptionBase_Scope_AUD + add constraint FK75D5B91334869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionBase_SpecimenOrObservationBase + add constraint FKDE29CD8033B8A841 + foreign key (descriptions_id) + references DescriptionBase; + + alter table DescriptionBase_SpecimenOrObservationBase + add constraint FKDE29CD805C9E3461 + foreign key (describedspecimenorobservations_id) + references SpecimenOrObservationBase; + + alter table DescriptionBase_SpecimenOrObservationBase_AUD + add constraint FKF1B33B5134869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase + add constraint FK38FE767134AF0E81 + foreign key (indescription_id) + references DescriptionBase; + + alter table DescriptionElementBase + add constraint FK38FE76716561D9B1 + foreign key (associatedspecimenorobservation_id) + references SpecimenOrObservationBase; + + alter table DescriptionElementBase + add constraint FK38FE7671EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table DescriptionElementBase + add constraint FK38FE767110A80E07 + foreign key (unit_id) + references DefinedTermBase; + + alter table DescriptionElementBase + add constraint FK38FE76716D0D7A56 + foreign key (format_id) + references DefinedTermBase; + + alter table DescriptionElementBase + add constraint FK38FE76715E9914B8 + foreign key (status_id) + references DefinedTermBase; + + alter table DescriptionElementBase + add constraint FK38FE76714220AFEB + foreign key (feature_id) + references DefinedTermBase; + + alter table DescriptionElementBase + add constraint FK38FE76719803512F + foreign key (citation_id) + references ReferenceBase; + + alter table DescriptionElementBase + add constraint FK38FE76715BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table DescriptionElementBase + add constraint FK38FE76719108D9B + foreign key (taxon2_id) + references TaxonBase; + + alter table DescriptionElementBase + add constraint FK38FE76711C3C3FF7 + foreign key (area_id) + references DefinedTermBase; + + alter table DescriptionElementBase + add constraint FK38FE7671E8D36B00 + foreign key (language_id) + references DefinedTermBase; + + alter table DescriptionElementBase_AUD + add constraint FKF3803C234869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_Annotation + add constraint FK7EE5E5DD3B8BB609 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_Annotation + add constraint FK7EE5E5DD1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table DescriptionElementBase_Annotation_AUD + add constraint FK2BC1DD2E34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_LanguageString + add constraint FKC753F137ACF5F60B + foreign key (multilanguagetext_id) + references LanguageString; + + alter table DescriptionElementBase_LanguageString + add constraint FKC753F137C086B46F + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_LanguageString_AUD + add constraint FK2D26AB8834869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_Marker + add constraint FK1CB715E83B8BB609 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_Marker + add constraint FK1CB715E8777265A1 + foreign key (markers_id) + references Marker; + + alter table DescriptionElementBase_Marker_AUD + add constraint FK1E160FB934869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_Media + add constraint FK21F70076C2C29593 + foreign key (media_id) + references Media; + + alter table DescriptionElementBase_Media + add constraint FK21F700763B8BB609 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_Media_AUD + add constraint FK5522034734869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_Modifier + add constraint FK97E0D105E0960EC4 + foreign key (modifiers_id) + references DefinedTermBase; + + alter table DescriptionElementBase_Modifier + add constraint FK97E0D1053B8BB609 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_Modifier_AUD + add constraint FK2982F45634869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_ModifyingText + add constraint FK522D90C7F05D08D4 + foreign key (modifyingtext_id) + references LanguageString; + + alter table DescriptionElementBase_ModifyingText + add constraint FK522D90C73B8BB609 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_ModifyingText + add constraint FK522D90C79682414B + foreign key (modifyingtext_mapkey_id) + references DefinedTermBase; + + alter table DescriptionElementBase_ModifyingText_AUD + add constraint FK6C06031834869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_StateData + add constraint FK592D6F6D987CC6A4 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_StateData + add constraint FK592D6F6D15153604 + foreign key (states_id) + references StateData; + + alter table DescriptionElementBase_StateData_AUD + add constraint FK1D0A1EBE34869AAE + foreign key (REV) + references AuditEvent; + + alter table DescriptionElementBase_StatisticalMeasurementValue + add constraint FK8AF511C2D883945E + foreign key (statisticalvalues_id) + references StatisticalMeasurementValue; + + alter table DescriptionElementBase_StatisticalMeasurementValue + add constraint FK8AF511C28F213219 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table DescriptionElementBase_StatisticalMeasurementValue_AUD + add constraint FK2DE8E9334869AAE + foreign key (REV) + references AuditEvent; + + alter table DeterminationEvent + add constraint FK1DB2497EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table DeterminationEvent + add constraint FK1DB2497378D1BD + foreign key (modifier_id) + references DefinedTermBase; + + alter table DeterminationEvent + add constraint FK1DB2497DE9A3E39 + foreign key (taxon_id) + references TaxonBase; + + alter table DeterminationEvent + add constraint FK1DB24974B251DAD + foreign key (identifiedunit_id) + references SpecimenOrObservationBase; + + alter table DeterminationEvent + add constraint FK1DB24975BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table DeterminationEvent + add constraint FK1DB24973DA462D5 + foreign key (actor_id) + references AgentBase; + + alter table DeterminationEvent_AUD + add constraint FKA0252EE834869AAE + foreign key (REV) + references AuditEvent; + + alter table DeterminationEvent_Annotation + add constraint FKB74F03F76BE0BFDA + foreign key (DeterminationEvent_id) + references DeterminationEvent; + + alter table DeterminationEvent_Annotation + add constraint FKB74F03F71E403E0B + foreign key (annotations_id) + references Annotation; + + alter table DeterminationEvent_Annotation_AUD + add constraint FKAFDA5E4834869AAE + foreign key (REV) + references AuditEvent; + + alter table DeterminationEvent_Marker + add constraint FK5C475102777265A1 + foreign key (markers_id) + references Marker; + + alter table DeterminationEvent_Marker + add constraint FK5C4751026BE0BFDA + foreign key (DeterminationEvent_id) + references DeterminationEvent; + + alter table DeterminationEvent_Marker_AUD + add constraint FK567F2DD334869AAE + foreign key (REV) + references AuditEvent; + + alter table DeterminationEvent_ReferenceBase + add constraint FK6248EEF43EF09CD5 + foreign key (setofreferences_id) + references ReferenceBase; + + alter table DeterminationEvent_ReferenceBase + add constraint FK6248EEF46BE0BFDA + foreign key (DeterminationEvent_id) + references DeterminationEvent; + + alter table DeterminationEvent_ReferenceBase_AUD + add constraint FK25BC82C534869AAE + foreign key (REV) + references AuditEvent; + + alter table Extension + add constraint FK52EF3C1FEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Extension + add constraint FK52EF3C1FAD392BD3 + foreign key (type_id) + references DefinedTermBase; + + alter table Extension + add constraint FK52EF3C1F5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Extension_AUD + add constraint FK92D2427034869AAE + foreign key (REV) + references AuditEvent; + + alter table FeatureNode + add constraint FK4CEED9F8E0AD2C03 + foreign key (parent_fk) + references FeatureNode; + + alter table FeatureNode + add constraint FK4CEED9F8EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table FeatureNode + add constraint FK4CEED9F84220AFEB + foreign key (feature_id) + references DefinedTermBase; + + alter table FeatureNode + add constraint FK4CEED9F85BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table FeatureNode_AUD + add constraint FK25AD4BC934869AAE + foreign key (REV) + references AuditEvent; + + alter table FeatureTree + add constraint FK4CF19F94EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table FeatureTree + add constraint FK4CF19F94B7892921 + foreign key (root_id) + references FeatureNode; + + alter table FeatureTree + add constraint FK4CF19F945BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table FeatureTree_AUD + add constraint FK355BE36534869AAE + foreign key (REV) + references AuditEvent; + + alter table FeatureTree_Representation + add constraint FK8C458F847C496CB + foreign key (FeatureTree_id) + references FeatureTree; + + alter table FeatureTree_Representation + add constraint FK8C458F8B31C4747 + foreign key (representations_id) + references Representation; + + alter table FeatureTree_Representation_AUD + add constraint FKECAB4AC934869AAE + foreign key (REV) + references AuditEvent; + + alter table GatheringEvent + add constraint FK6F1286F3F55AFD89 + foreign key (exactlocation_referencesystem_id) + references DefinedTermBase; + + alter table GatheringEvent + add constraint FK6F1286F38B455EC6 + foreign key (locality_id) + references LanguageString; + + alter table GatheringEvent + add constraint FK6F1286F3EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table GatheringEvent + add constraint FK6F1286F35BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table GatheringEvent + add constraint FK6F1286F33DA462D5 + foreign key (actor_id) + references AgentBase; + + alter table GatheringEvent_AUD + add constraint FK3EC034434869AAE + foreign key (REV) + references AuditEvent; + + alter table GatheringEvent_Annotation + add constraint FK76DDD01BF95F225A + foreign key (GatheringEvent_id) + references GatheringEvent; + + alter table GatheringEvent_Annotation + add constraint FK76DDD01B1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table GatheringEvent_Annotation_AUD + add constraint FK351E786C34869AAE + foreign key (REV) + references AuditEvent; + + alter table GatheringEvent_DefinedTermBase + add constraint FK69D9A11A7C34B6D6 + foreign key (collectingareas_id) + references DefinedTermBase; + + alter table GatheringEvent_DefinedTermBase + add constraint FK69D9A11AF95F225A + foreign key (GatheringEvent_id) + references GatheringEvent; + + alter table GatheringEvent_DefinedTermBase_AUD + add constraint FKB3BBB1EB34869AAE + foreign key (REV) + references AuditEvent; + + alter table GatheringEvent_Marker + add constraint FK7B49CF26777265A1 + foreign key (markers_id) + references Marker; + + alter table GatheringEvent_Marker + add constraint FK7B49CF26F95F225A + foreign key (GatheringEvent_id) + references GatheringEvent; + + alter table GatheringEvent_Marker_AUD + add constraint FK160DF9F734869AAE + foreign key (REV) + references AuditEvent; + + alter table GenBankAccession + add constraint FK86C1DBF8EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table GenBankAccession + add constraint FK86C1DBF85BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table GenBankAccession_AUD + add constraint FK5A2F4DC934869AAE + foreign key (REV) + references AuditEvent; + + alter table GrantedAuthorityImpl + add constraint FKB05CF928EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table HomotypicalGroup + add constraint FK7DECCC18EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table HomotypicalGroup + add constraint FK7DECCC185BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table HomotypicalGroup_AUD + add constraint FKE4252DE934869AAE + foreign key (REV) + references AuditEvent; + + alter table HomotypicalGroup_Annotation + add constraint FK7A0351D6BFEAE500 + foreign key (HomotypicalGroup_id) + references HomotypicalGroup; + + alter table HomotypicalGroup_Annotation + add constraint FK7A0351D61E403E0B + foreign key (annotations_id) + references Annotation; + + alter table HomotypicalGroup_Annotation_AUD + add constraint FK41E6A4A734869AAE + foreign key (REV) + references AuditEvent; + + alter table HomotypicalGroup_Marker + add constraint FK97D36661BFEAE500 + foreign key (HomotypicalGroup_id) + references HomotypicalGroup; + + alter table HomotypicalGroup_Marker + add constraint FK97D36661777265A1 + foreign key (markers_id) + references Marker; + + alter table HomotypicalGroup_Marker_AUD + add constraint FK19337BB234869AAE + foreign key (REV) + references AuditEvent; + + alter table HybridRelationship + add constraint FK9033CE745831BDC3 + foreign key (relatedfrom_id) + references TaxonNameBase; + + alter table HybridRelationship + add constraint FK9033CE7469ABE292 + foreign key (relatedto_id) + references TaxonNameBase; + + alter table HybridRelationship + add constraint FK9033CE74EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table HybridRelationship + add constraint FK9033CE7455F241D4 + foreign key (type_id) + references DefinedTermBase; + + alter table HybridRelationship + add constraint FK9033CE749803512F + foreign key (citation_id) + references ReferenceBase; + + alter table HybridRelationship + add constraint FK9033CE745BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table HybridRelationship_AUD + add constraint FK9C2BA24534869AAE + foreign key (REV) + references AuditEvent; + + alter table HybridRelationship_Annotation + add constraint FK2C7E7DFA59832240 + foreign key (HybridRelationship_id) + references HybridRelationship; + + alter table HybridRelationship_Annotation + add constraint FK2C7E7DFA1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table HybridRelationship_Annotation_AUD + add constraint FKACE71ECB34869AAE + foreign key (REV) + references AuditEvent; + + alter table HybridRelationship_Marker + add constraint FKCEF2448559832240 + foreign key (HybridRelationship_id) + references HybridRelationship; + + alter table HybridRelationship_Marker + add constraint FKCEF24485777265A1 + foreign key (markers_id) + references Marker; + + alter table HybridRelationship_Marker_AUD + add constraint FKCBAEA7D634869AAE + foreign key (REV) + references AuditEvent; + + alter table IdentificationKey_Taxon + add constraint FKD847ADDC996CD055 + foreign key (identificationKey_fk) + references Media; + + alter table IdentificationKey_Taxon + add constraint FKD847ADDCDE9A3DE3 + foreign key (taxon_fk) + references TaxonBase; + + alter table IdentificationKey_Taxon_AUD + add constraint FKEEF18DAD34869AAE + foreign key (REV) + references AuditEvent; + + alter table IndividualAssociation_LanguageString + add constraint FKB5C75EC02BEBA58D + foreign key (description_id) + references LanguageString; + + alter table IndividualAssociation_LanguageString + add constraint FKB5C75EC084FF3EDF + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table IndividualAssociation_LanguageString + add constraint FKB5C75EC028459272 + foreign key (description_mapkey_id) + references DefinedTermBase; + + alter table IndividualAssociation_LanguageString_AUD + add constraint FKB1A62C9134869AAE + foreign key (REV) + references AuditEvent; + + alter table InstitutionalMembership + add constraint FK3C8E1FF9EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table InstitutionalMembership + add constraint FK3C8E1FF9AAC1B820 + foreign key (person_id) + references AgentBase; + + alter table InstitutionalMembership + add constraint FK3C8E1FF916B9CA77 + foreign key (institute_id) + references AgentBase; + + alter table InstitutionalMembership + add constraint FK3C8E1FF95BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table InstitutionalMembership_AUD + add constraint FK847A94A34869AAE + foreign key (REV) + references AuditEvent; + + alter table LSIDAuthority + add constraint FK759DB881EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table LSIDAuthority_namespaces + add constraint FKB04948F64FFCFD94 + foreign key (LSIDAuthority_id) + references LSIDAuthority; + + alter table LanguageString + add constraint FKB5FDC9A9EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table LanguageString + add constraint FKB5FDC9A95BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table LanguageString + add constraint FKB5FDC9A9E8D36B00 + foreign key (language_id) + references DefinedTermBase; + + alter table LanguageString_AUD + add constraint FK896AFAFA34869AAE + foreign key (REV) + references AuditEvent; + + alter table LanguageString_Annotation + add constraint FK8400DFA51E403E0B + foreign key (annotations_id) + references Annotation; + + alter table LanguageString_Annotation + add constraint FK8400DFA537998500 + foreign key (LanguageString_id) + references LanguageString; + + alter table LanguageString_Annotation_AUD + add constraint FKD3BAB2F634869AAE + foreign key (REV) + references AuditEvent; + + alter table LanguageString_Marker + add constraint FK8DA633B0777265A1 + foreign key (markers_id) + references Marker; + + alter table LanguageString_Marker + add constraint FK8DA633B037998500 + foreign key (LanguageString_id) + references LanguageString; + + alter table LanguageString_Marker_AUD + add constraint FK2331098134869AAE + foreign key (REV) + references AuditEvent; + + alter table Locus + add constraint FK462F1BEEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Locus + add constraint FK462F1BE5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Locus_AUD + add constraint FK5224108F34869AAE + foreign key (REV) + references AuditEvent; + + alter table Marker + add constraint FK88F1805AEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Marker + add constraint FK88F1805AD64DC020 + foreign key (markertype_id) + references DefinedTermBase; + + alter table Marker + add constraint FK88F1805A5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Marker_AUD + add constraint FKB951F12B34869AAE + foreign key (REV) + references AuditEvent; + + alter table Media + add constraint FK46C7FC4EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Media + add constraint FK46C7FC4C2445443 + foreign key (artist_id) + references AgentBase; + + alter table Media + add constraint FK46C7FC49803512F + foreign key (citation_id) + references ReferenceBase; + + alter table Media + add constraint FK46C7FC45BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table MediaRepresentation + add constraint FK1966BDB1EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table MediaRepresentation + add constraint FK1966BDB1C2C29593 + foreign key (media_id) + references Media; + + alter table MediaRepresentation + add constraint FK1966BDB15BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table MediaRepresentationPart + add constraint FK67A45544E3818E37 + foreign key (representation_id) + references MediaRepresentation; + + alter table MediaRepresentationPart + add constraint FK67A45544EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table MediaRepresentationPart + add constraint FK67A455445BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table MediaRepresentationPart_AUD + add constraint FKA75C411534869AAE + foreign key (REV) + references AuditEvent; + + alter table MediaRepresentation_AUD + add constraint FK67AAAB0234869AAE + foreign key (REV) + references AuditEvent; + + alter table MediaRepresentation_MediaRepresentationPart_AUD + add constraint FK3544378734869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_AUD + add constraint FKF70B2B9534869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_Annotation + add constraint FKA020DAAAC2C29593 + foreign key (Media_id) + references Media; + + alter table Media_Annotation + add constraint FKA020DAAA1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table Media_Annotation_AUD + add constraint FK99ABA37B34869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_DefinedTermBase + add constraint FK96F1D7EB8A6C9D18 + foreign key (Media_id) + references Media; + + alter table Media_DefinedTermBase + add constraint FK96F1D7EB86D04E74 + foreign key (geoscopes_id) + references DefinedTermBase; + + alter table Media_DefinedTermBase_AUD + add constraint FK994A183C34869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_Description + add constraint FK368283E1C2C29593 + foreign key (Media_id) + references Media; + + alter table Media_Description + add constraint FK368283E12BEBA58D + foreign key (description_id) + references LanguageString; + + alter table Media_Description + add constraint FK368283E128459272 + foreign key (description_mapkey_id) + references DefinedTermBase; + + alter table Media_Description_AUD + add constraint FK6817D93234869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_LanguageString + add constraint FK353DB784A0A6EDCE + foreign key (title_mapkey_id) + references DefinedTermBase; + + alter table Media_LanguageString + add constraint FK353DB784C2C29593 + foreign key (Media_id) + references Media; + + alter table Media_LanguageString + add constraint FK353DB784A1CA19B1 + foreign key (title_id) + references LanguageString; + + alter table Media_LanguageString_AUD + add constraint FK68FA835534869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_Marker + add constraint FKD21E7935C2C29593 + foreign key (Media_id) + references Media; + + alter table Media_Marker + add constraint FKD21E7935777265A1 + foreign key (markers_id) + references Marker; + + alter table Media_Marker_AUD + add constraint FK3F51048634869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_Rights + add constraint FKDB1266D2C2C29593 + foreign key (Media_id) + references Media; + + alter table Media_Rights + add constraint FKDB1266D2C13F7B21 + foreign key (rights_id) + references Rights; + + alter table Media_Rights_AUD + add constraint FKAB2ADBA334869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_Sequence + add constraint FK61D09FC3282B64 + foreign key (Media_id) + references Media; + + alter table Media_Sequence + add constraint FK61D09FCF29B4761 + foreign key (usedsequences_id) + references Sequence; + + alter table Media_Sequence_AUD + add constraint FK3C7BD9CD34869AAE + foreign key (REV) + references AuditEvent; + + alter table Media_TaxonBase + add constraint FK1ABD49E07C3D0017 + foreign key (coveredtaxa_id) + references TaxonBase; + + alter table Media_TaxonBase + add constraint FK1ABD49E08A6C9D18 + foreign key (Media_id) + references Media; + + alter table Media_TaxonBase_AUD + add constraint FK857187B134869AAE + foreign key (REV) + references AuditEvent; + + alter table NameRelationship + add constraint FK5E5108316CDFF85 + foreign key (relatedfrom_id) + references TaxonNameBase; + + alter table NameRelationship + add constraint FK5E5108328482454 + foreign key (relatedto_id) + references TaxonNameBase; + + alter table NameRelationship + add constraint FK5E51083EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table NameRelationship + add constraint FK5E51083AF619DE3 + foreign key (type_id) + references DefinedTermBase; + + alter table NameRelationship + add constraint FK5E510839803512F + foreign key (citation_id) + references ReferenceBase; + + alter table NameRelationship + add constraint FK5E510835BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table NameRelationship_AUD + add constraint FK743F44D434869AAE + foreign key (REV) + references AuditEvent; + + alter table NameRelationship_Annotation + add constraint FK2E38AC8B7B4CB560 + foreign key (NameRelationship_id) + references NameRelationship; + + alter table NameRelationship_Annotation + add constraint FK2E38AC8B1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table NameRelationship_Annotation_AUD + add constraint FKD1D59CDC34869AAE + foreign key (REV) + references AuditEvent; + + alter table NameRelationship_Marker + add constraint FKE3E463967B4CB560 + foreign key (NameRelationship_id) + references NameRelationship; + + alter table NameRelationship_Marker + add constraint FKE3E46396777265A1 + foreign key (markers_id) + references Marker; + + alter table NameRelationship_Marker_AUD + add constraint FKCD68D66734869AAE + foreign key (REV) + references AuditEvent; + + alter table NomenclaturalStatus + add constraint FK1FFEC88BEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table NomenclaturalStatus + add constraint FK1FFEC88B7029BD9F + foreign key (type_id) + references DefinedTermBase; + + alter table NomenclaturalStatus + add constraint FK1FFEC88B9803512F + foreign key (citation_id) + references ReferenceBase; + + alter table NomenclaturalStatus + add constraint FK1FFEC88B5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table NomenclaturalStatus_AUD + add constraint FKFB2DB8DC34869AAE + foreign key (REV) + references AuditEvent; + + alter table NomenclaturalStatus_Annotation + add constraint FKE6E91F838D2CB1D4 + foreign key (NomenclaturalStatus_id) + references NomenclaturalStatus; + + alter table NomenclaturalStatus_Annotation + add constraint FKE6E91F831E403E0B + foreign key (annotations_id) + references Annotation; + + alter table NomenclaturalStatus_Annotation_AUD + add constraint FK6A3D3D434869AAE + foreign key (REV) + references AuditEvent; + + alter table NomenclaturalStatus_Marker + add constraint FK2F5128E8D2CB1D4 + foreign key (NomenclaturalStatus_id) + references NomenclaturalStatus; + + alter table NomenclaturalStatus_Marker + add constraint FK2F5128E777265A1 + foreign key (markers_id) + references Marker; + + alter table NomenclaturalStatus_Marker_AUD + add constraint FK8619495F34869AAE + foreign key (REV) + references AuditEvent; + + alter table OriginalSource + add constraint FK229A496CEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table OriginalSource + add constraint FK229A496C9803512F + foreign key (citation_id) + references ReferenceBase; + + alter table OriginalSource + add constraint FK229A496C5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table OriginalSource_AUD + add constraint FK506BE13D34869AAE + foreign key (REV) + references AuditEvent; + + alter table OriginalSource_Annotation + add constraint FK5B3FF802DC2DCA20 + foreign key (OriginalSource_id) + references OriginalSource; + + alter table OriginalSource_Annotation + add constraint FK5B3FF8021E403E0B + foreign key (annotations_id) + references Annotation; + + alter table OriginalSource_Annotation_AUD + add constraint FK4ACC54D334869AAE + foreign key (REV) + references AuditEvent; + + alter table OriginalSource_Marker + add constraint FKCF52028DDC2DCA20 + foreign key (OriginalSource_id) + references OriginalSource; + + alter table OriginalSource_Marker + add constraint FKCF52028D777265A1 + foreign key (markers_id) + references Marker; + + alter table OriginalSource_Marker_AUD + add constraint FKFA7021DE34869AAE + foreign key (REV) + references AuditEvent; + + alter table PermissionGroup + add constraint FK629941D0EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table PermissionGroup_GrantedAuthorityImpl + add constraint FK5311437CA0971A3 + foreign key (PermissionGroup_id) + references PermissionGroup; + + alter table PermissionGroup_GrantedAuthorityImpl + add constraint FK53114371857F6C2 + foreign key (grantedauthorities_id) + references GrantedAuthorityImpl; + + alter table Person_Keyword + add constraint FK5F559EFF13A443BE + foreign key (keyword_fk) + references DefinedTermBase; + + alter table Person_Keyword + add constraint FK5F559EFFAAC1B7CA + foreign key (person_fk) + references AgentBase; + + alter table Person_Keyword_AUD + add constraint FK6D8C355034869AAE + foreign key (REV) + references AuditEvent; + + create index ReferenceBaseTitleCacheIndex on ReferenceBase (titleCache); + + alter table ReferenceBase + add constraint FK8F034C9C1A488155 + foreign key (inbook_id) + references ReferenceBase; + + alter table ReferenceBase + add constraint FK8F034C9CEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table ReferenceBase + add constraint FK8F034C9C403E17F4 + foreign key (institution_id) + references AgentBase; + + alter table ReferenceBase + add constraint FK8F034C9CCCE9AAE2 + foreign key (inseries_id) + references ReferenceBase; + + alter table ReferenceBase + add constraint FK8F034C9CD893F6E6 + foreign key (crossref_id) + references ReferenceBase; + + alter table ReferenceBase + add constraint FK8F034C9CAEC3B8B8 + foreign key (school_id) + references AgentBase; + + alter table ReferenceBase + add constraint FK8F034C9CE3A02620 + foreign key (type_id) + references DefinedTermBase; + + alter table ReferenceBase + add constraint FK8F034C9CE87E60BF + foreign key (inproceedings_id) + references ReferenceBase; + + alter table ReferenceBase + add constraint FK8F034C9CE019003F + foreign key (injournal_id) + references ReferenceBase; + + alter table ReferenceBase + add constraint FK8F034C9C697665E + foreign key (authorteam_id) + references AgentBase; + + alter table ReferenceBase + add constraint FK8F034C9C5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table ReferenceBase_AUD + add constraint FK8D3FCC6D34869AAE + foreign key (REV) + references AuditEvent; + + alter table ReferenceBase_Annotation + add constraint FKC97616D2F443DB5A + foreign key (ReferenceBase_id) + references ReferenceBase; + + alter table ReferenceBase_Annotation + add constraint FKC97616D21E403E0B + foreign key (annotations_id) + references Annotation; + + alter table ReferenceBase_Annotation_AUD + add constraint FK60368BA334869AAE + foreign key (REV) + references AuditEvent; + + alter table ReferenceBase_Extension + add constraint FK81E1703C927DE9DF + foreign key (extensions_id) + references Extension; + + alter table ReferenceBase_Extension + add constraint FK81E1703CF443DB5A + foreign key (ReferenceBase_id) + references ReferenceBase; + + alter table ReferenceBase_Extension_AUD + add constraint FKD723200D34869AAE + foreign key (REV) + references AuditEvent; + + alter table ReferenceBase_Marker + add constraint FK6888095DF443DB5A + foreign key (ReferenceBase_id) + references ReferenceBase; + + alter table ReferenceBase_Marker + add constraint FK6888095D777265A1 + foreign key (markers_id) + references Marker; + + alter table ReferenceBase_Marker_AUD + add constraint FK68A640AE34869AAE + foreign key (REV) + references AuditEvent; + + alter table ReferenceBase_Media + add constraint FK3D2F4A61C2C29593 + foreign key (media_id) + references Media; + + alter table ReferenceBase_Media + add constraint FK3D2F4A61F443DB5A + foreign key (ReferenceBase_id) + references ReferenceBase; + + alter table ReferenceBase_Media_AUD + add constraint FK25FD5FB234869AAE + foreign key (REV) + references AuditEvent; + + alter table ReferenceBase_OriginalSource + add constraint FK68651F6F3BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table ReferenceBase_OriginalSource + add constraint FK68651F6FF443DB5A + foreign key (ReferenceBase_id) + references ReferenceBase; + + alter table ReferenceBase_OriginalSource_AUD + add constraint FK6905FDC034869AAE + foreign key (REV) + references AuditEvent; + + alter table ReferenceBase_Rights + add constraint FK717BF6FAF443DB5A + foreign key (ReferenceBase_id) + references ReferenceBase; + + alter table ReferenceBase_Rights + add constraint FK717BF6FAC13F7B21 + foreign key (rights_id) + references Rights; + + alter table ReferenceBase_Rights_AUD + add constraint FKD48017CB34869AAE + foreign key (REV) + references AuditEvent; + + alter table RelationshipTermBase_inverseRepresentation + add constraint FK98592F33ECEEF4AF + foreign key (DefinedTermBase_id) + references DefinedTermBase; + + alter table RelationshipTermBase_inverseRepresentation + add constraint FK98592F33473FB677 + foreign key (inverserepresentations_id) + references Representation; + + alter table RelationshipTermBase_inverseRepresentation_AUD + add constraint FK5D248B8434869AAE + foreign key (REV) + references AuditEvent; + + alter table Representation + add constraint FK9C4724EDEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Representation + add constraint FK9C4724ED5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Representation + add constraint FK9C4724EDE8D36B00 + foreign key (language_id) + references DefinedTermBase; + + alter table Representation_AUD + add constraint FK294D143E34869AAE + foreign key (REV) + references AuditEvent; + + alter table Representation_Annotation + add constraint FK371091E147E8AE60 + foreign key (Representation_id) + references Representation; + + alter table Representation_Annotation + add constraint FK371091E11E403E0B + foreign key (annotations_id) + references Annotation; + + alter table Representation_Annotation_AUD + add constraint FK36EEE73234869AAE + foreign key (REV) + references AuditEvent; + + alter table Representation_Marker + add constraint FK560063EC47E8AE60 + foreign key (Representation_id) + references Representation; + + alter table Representation_Marker + add constraint FK560063EC777265A1 + foreign key (markers_id) + references Marker; + + alter table Representation_Marker_AUD + add constraint FKD640BBBD34869AAE + foreign key (REV) + references AuditEvent; + + alter table Rights + add constraint FK91E56DF7F7976FC5 + foreign key (agent_id) + references AgentBase; + + alter table Rights + add constraint FK91E56DF7EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Rights + add constraint FK91E56DF7E6D2886A + foreign key (type_id) + references DefinedTermBase; + + alter table Rights + add constraint FK91E56DF75BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Rights + add constraint FK91E56DF7E8D36B00 + foreign key (language_id) + references DefinedTermBase; + + alter table Rights_AUD + add constraint FK252BC84834869AAE + foreign key (REV) + references AuditEvent; + + alter table Rights_Annotation + add constraint FK27CB1E97C13F7B21 + foreign key (Rights_id) + references Rights; + + alter table Rights_Annotation + add constraint FK27CB1E971E403E0B + foreign key (annotations_id) + references Annotation; + + alter table Rights_Annotation_AUD + add constraint FKF98828E834869AAE + foreign key (REV) + references AuditEvent; + + alter table Rights_Marker + add constraint FKB739BBA2C13F7B21 + foreign key (Rights_id) + references Rights; + + alter table Rights_Marker + add constraint FKB739BBA2777265A1 + foreign key (markers_id) + references Marker; + + alter table Rights_Marker_AUD + add constraint FKC6FB487334869AAE + foreign key (REV) + references AuditEvent; + + create index sequenceTitleCacheIndex on Sequence (titleCache); + + alter table Sequence + add constraint FK544ADBE1EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table Sequence + add constraint FK544ADBE1B982A103 + foreign key (publishedin_id) + references ReferenceBase; + + alter table Sequence + add constraint FK544ADBE12DBE1F1F + foreign key (locus_id) + references Locus; + + alter table Sequence + add constraint FK544ADBE15BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table Sequence_AUD + add constraint FK39F4313234869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_Annotation + add constraint FK1010BA6D1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table Sequence_Annotation + add constraint FK1010BA6DD57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_Annotation_AUD + add constraint FKCB4FE9BE34869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_Extension + add constraint FK7BE66D41927DE9DF + foreign key (extensions_id) + references Extension; + + alter table Sequence_Extension + add constraint FK7BE66D41D57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_Extension_AUD + add constraint FK1CA8129234869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_GenBankAccession + add constraint FK8F69809615C4EF35 + foreign key (genbankaccession_id) + references GenBankAccession; + + alter table Sequence_GenBankAccession + add constraint FK8F698096D57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_GenBankAccession_AUD + add constraint FKC717736734869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_Marker + add constraint FK3D22B278777265A1 + foreign key (markers_id) + references Marker; + + alter table Sequence_Marker + add constraint FK3D22B278D57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_Marker_AUD + add constraint FKAF40E44934869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_Media + add constraint FK8E5D91E666ACA7EC + foreign key (chromatograms_id) + references Media; + + alter table Sequence_Media + add constraint FK8E5D91E6D57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_Media_AUD + add constraint FK20025CB734869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_OriginalSource + add constraint FKD37E7D8A3BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table Sequence_OriginalSource + add constraint FKD37E7D8AD57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_OriginalSource_AUD + add constraint FKCDBCD65B34869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_ReferenceBase + add constraint FK18D91CBE7291F8A + foreign key (citations_id) + references ReferenceBase; + + alter table Sequence_ReferenceBase + add constraint FK18D91CBED57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_ReferenceBase_AUD + add constraint FK998CBB8F34869AAE + foreign key (REV) + references AuditEvent; + + alter table Sequence_Rights + add constraint FK4616A015C13F7B21 + foreign key (rights_id) + references Rights; + + alter table Sequence_Rights + add constraint FK4616A015D57FFDD5 + foreign key (Sequence_id) + references Sequence; + + alter table Sequence_Rights_AUD + add constraint FK1B1ABB6634869AAE + foreign key (REV) + references AuditEvent; + + create index specimenOrObservationBaseTitleCacheIndex on SpecimenOrObservationBase (titleCache); + + alter table SpecimenOrObservationBase + add constraint FK21CA3272C8505DB + foreign key (preservation_id) + references DefinedTermBase; + + alter table SpecimenOrObservationBase + add constraint FK21CA3272EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table SpecimenOrObservationBase + add constraint FK21CA32727CC340C5 + foreign key (storedunder_id) + references TaxonNameBase; + + alter table SpecimenOrObservationBase + add constraint FK21CA3272EB62BE9A + foreign key (collection_id) + references Collection; + + alter table SpecimenOrObservationBase + add constraint FK21CA3272E17C9A6B + foreign key (sex_id) + references DefinedTermBase; + + alter table SpecimenOrObservationBase + add constraint FK21CA32728C750E27 + foreign key (lifestage_id) + references DefinedTermBase; + + alter table SpecimenOrObservationBase + add constraint FK21CA32724AAB411A + foreign key (derivationevent_id) + references DerivationEvent; + + alter table SpecimenOrObservationBase + add constraint FK21CA3272F95F225A + foreign key (gatheringevent_id) + references GatheringEvent; + + alter table SpecimenOrObservationBase + add constraint FK21CA32725BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table SpecimenOrObservationBase_AUD + add constraint FKF3D3D74334869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_Annotation + add constraint FK365E4F3C3B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_Annotation + add constraint FK365E4F3C1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table SpecimenOrObservationBase_Annotation_AUD + add constraint FK34187F0D34869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_DerivationEvent + add constraint FK20132036BD59A1AD + foreign key (derivationevents_id) + references DerivationEvent; + + alter table SpecimenOrObservationBase_DerivationEvent + add constraint FK2013203654C216AA + foreign key (originals_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_DerivationEvent_AUD + add constraint FKA4A8430734869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_Extension + add constraint FKE03B82923B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_Extension + add constraint FKE03B8292927DE9DF + foreign key (extensions_id) + references Extension; + + alter table SpecimenOrObservationBase_Extension_AUD + add constraint FK7AE0176334869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_LanguageString + add constraint FKCFAA93163B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_LanguageString + add constraint FKCFAA93162BEBA58D + foreign key (description_id) + references LanguageString; + + alter table SpecimenOrObservationBase_LanguageString + add constraint FKCFAA931628459272 + foreign key (description_mapkey_id) + references DefinedTermBase; + + alter table SpecimenOrObservationBase_LanguageString_AUD + add constraint FK38B45E734869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_Marker + add constraint FK8E6106C73B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_Marker + add constraint FK8E6106C7777265A1 + foreign key (markers_id) + references Marker; + + alter table SpecimenOrObservationBase_Marker_AUD + add constraint FKD58E791834869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_Media + add constraint FK4EEBF7B73B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_Media + add constraint FK4EEBF7B7C2C29593 + foreign key (media_id) + references Media; + + alter table SpecimenOrObservationBase_Media_AUD + add constraint FK8457720834869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_OriginalSource + add constraint FK3C4712D93B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_OriginalSource + add constraint FK3C4712D93BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table SpecimenOrObservationBase_OriginalSource_AUD + add constraint FKCA8C2C2A34869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_Rights + add constraint FK9754F4643B8A5ABA + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_Rights + add constraint FK9754F464C13F7B21 + foreign key (rights_id) + references Rights; + + alter table SpecimenOrObservationBase_Rights_AUD + add constraint FK4168503534869AAE + foreign key (REV) + references AuditEvent; + + alter table SpecimenOrObservationBase_Sequence + add constraint FKBBF27B0E7EE2770E + foreign key (SpecimenOrObservationBase_id) + references SpecimenOrObservationBase; + + alter table SpecimenOrObservationBase_Sequence + add constraint FKBBF27B0E35B10F24 + foreign key (sequences_id) + references Sequence; + + alter table SpecimenOrObservationBase_Sequence_AUD + add constraint FK392E71DF34869AAE + foreign key (REV) + references AuditEvent; + + alter table StateData + add constraint FKFB1697BBEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table StateData + add constraint FKFB1697BB682A4E4B + foreign key (state_id) + references DefinedTermBase; + + alter table StateData + add constraint FKFB1697BB5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table StateData_AUD + add constraint FKDA6A700C34869AAE + foreign key (REV) + references AuditEvent; + + alter table StateData_DefinedTermBase + add constraint FK107321E28E7BF9AB + foreign key (StateData_id) + references StateData; + + alter table StateData_DefinedTermBase + add constraint FK107321E2E0960EC4 + foreign key (modifiers_id) + references DefinedTermBase; + + alter table StateData_DefinedTermBase_AUD + add constraint FK7C978EB334869AAE + foreign key (REV) + references AuditEvent; + + alter table StateData_LanguageString + add constraint FK93FFD2AD8E7BF9AB + foreign key (StateData_id) + references StateData; + + alter table StateData_LanguageString + add constraint FK93FFD2ADF05D08D4 + foreign key (modifyingtext_id) + references LanguageString; + + alter table StateData_LanguageString + add constraint FK93FFD2AD9682414B + foreign key (modifyingtext_mapkey_id) + references DefinedTermBase; + + alter table StateData_LanguageString_AUD + add constraint FK1578E1FE34869AAE + foreign key (REV) + references AuditEvent; + + alter table StatisticalMeasurementValue + add constraint FK2DCE0290EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table StatisticalMeasurementValue + add constraint FK2DCE02904C428112 + foreign key (type_id) + references DefinedTermBase; + + alter table StatisticalMeasurementValue + add constraint FK2DCE02905BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table StatisticalMeasurementValue_AUD + add constraint FKBB16686134869AAE + foreign key (REV) + references AuditEvent; + + alter table StatisticalMeasurementValue_DefinedTermBase + add constraint FK686C42B75C9F4F2B + foreign key (StatisticalMeasurementValue_id) + references StatisticalMeasurementValue; + + alter table StatisticalMeasurementValue_DefinedTermBase + add constraint FK686C42B7E0960EC4 + foreign key (modifiers_id) + references DefinedTermBase; + + alter table StatisticalMeasurementValue_DefinedTermBase_AUD + add constraint FKFEBA3D0834869AAE + foreign key (REV) + references AuditEvent; + + alter table SynonymRelationship + add constraint FKF483ADB34BAC703F + foreign key (relatedfrom_id) + references TaxonBase; + + alter table SynonymRelationship + add constraint FKF483ADB3F8991B9D + foreign key (relatedto_id) + references TaxonBase; + + alter table SynonymRelationship + add constraint FKF483ADB3EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table SynonymRelationship + add constraint FKF483ADB380924EEC + foreign key (type_id) + references DefinedTermBase; + + alter table SynonymRelationship + add constraint FKF483ADB39803512F + foreign key (citation_id) + references ReferenceBase; + + alter table SynonymRelationship + add constraint FKF483ADB35BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table SynonymRelationship_AUD + add constraint FK8AEBCA0434869AAE + foreign key (REV) + references AuditEvent; + + alter table SynonymRelationship_Annotation + add constraint FKF494F15B260A8379 + foreign key (SynonymRelationship_id) + references SynonymRelationship; + + alter table SynonymRelationship_Annotation + add constraint FKF494F15B1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table SynonymRelationship_Annotation_AUD + add constraint FKD3E2F9AC34869AAE + foreign key (REV) + references AuditEvent; + + alter table SynonymRelationship_Marker + add constraint FK7A439066260A8379 + foreign key (SynonymRelationship_id) + references SynonymRelationship; + + alter table SynonymRelationship_Marker + add constraint FK7A439066777265A1 + foreign key (markers_id) + references Marker; + + alter table SynonymRelationship_Marker_AUD + add constraint FK93C51B3734869AAE + foreign key (REV) + references AuditEvent; + + create index taxonBaseTitleCacheIndex on TaxonBase (titleCache); + + alter table TaxonBase + add constraint FK9249B49BEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table TaxonBase + add constraint FK9249B49BDA93512F + foreign key (taxonName_fk) + references TaxonNameBase; + + alter table TaxonBase + add constraint FK9249B49B7C7B5AED + foreign key (taxonomicparentcache_id) + references TaxonBase; + + alter table TaxonBase + add constraint FK9249B49B5E4A2F85 + foreign key (sec_id) + references ReferenceBase; + + alter table TaxonBase + add constraint FK9249B49B5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table TaxonBase_AUD + add constraint FK37041CEC34869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonBase_Annotation + add constraint FK41ED09739C9D39 + foreign key (TaxonBase_id) + references TaxonBase; + + alter table TaxonBase_Annotation + add constraint FK41ED09731E403E0B + foreign key (annotations_id) + references Annotation; + + alter table TaxonBase_Annotation_AUD + add constraint FK8C145C434869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonBase_Extension + add constraint FKF961257B927DE9DF + foreign key (extensions_id) + references Extension; + + alter table TaxonBase_Extension + add constraint FKF961257B9C9D39 + foreign key (TaxonBase_id) + references TaxonBase; + + alter table TaxonBase_Extension_AUD + add constraint FK71381DCC34869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonBase_Marker + add constraint FK5CDB747E9C9D39 + foreign key (TaxonBase_id) + references TaxonBase; + + alter table TaxonBase_Marker + add constraint FK5CDB747E777265A1 + foreign key (markers_id) + references Marker; + + alter table TaxonBase_Marker_AUD + add constraint FKE11D334F34869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonBase_OriginalSource + add constraint FK10EFD9903BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table TaxonBase_OriginalSource + add constraint FK10EFD9909C9D39 + foreign key (TaxonBase_id) + references TaxonBase; + + alter table TaxonBase_OriginalSource_AUD + add constraint FKFB74BF6134869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonBase_Rights + add constraint FK65CF621BC13F7B21 + foreign key (rights_id) + references Rights; + + alter table TaxonBase_Rights + add constraint FK65CF621B9C9D39 + foreign key (TaxonBase_id) + references TaxonBase; + + alter table TaxonBase_Rights_AUD + add constraint FK4CF70A6C34869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonInteraction_LanguageString + add constraint FK579A1DC02BEBA58D + foreign key (description_id) + references LanguageString; + + alter table TaxonInteraction_LanguageString + add constraint FK579A1DC086C86FE0 + foreign key (DescriptionElementBase_id) + references DescriptionElementBase; + + alter table TaxonInteraction_LanguageString + add constraint FK579A1DC028459272 + foreign key (description_mapkey_id) + references DefinedTermBase; + + alter table TaxonInteraction_LanguageString_AUD + add constraint FK9E016B9134869AAE + foreign key (REV) + references AuditEvent; + + create index taxonNameBaseTitleCacheIndex on TaxonNameBase (titleCache); + + alter table TaxonNameBase + add constraint FKB4870C6EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table TaxonNameBase + add constraint FKB4870C62B4FEDD6 + foreign key (basionymauthorteam_id) + references AgentBase; + + alter table TaxonNameBase + add constraint FKB4870C64AC9C024 + foreign key (nomenclaturalreference_id) + references ReferenceBase; + + alter table TaxonNameBase + add constraint FKB4870C6B14B73EF + foreign key (combinationauthorteam_id) + references AgentBase; + + alter table TaxonNameBase + add constraint FKB4870C6BFEAE500 + foreign key (homotypicalgroup_id) + references HomotypicalGroup; + + alter table TaxonNameBase + add constraint FKB4870C662AD57A2 + foreign key (excombinationauthorteam_id) + references AgentBase; + + alter table TaxonNameBase + add constraint FKB4870C67F90DF03 + foreign key (exbasionymauthorteam_id) + references AgentBase; + + alter table TaxonNameBase + add constraint FKB4870C65BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table TaxonNameBase + add constraint FKB4870C6D7BE55A0 + foreign key (rank_id) + references DefinedTermBase; + + alter table TaxonNameBase_AUD + add constraint FK5CA2CB9734869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_Annotation + add constraint FK9E7794688C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_Annotation + add constraint FK9E7794681E403E0B + foreign key (annotations_id) + references Annotation; + + alter table TaxonNameBase_Annotation_AUD + add constraint FKB6734E3934869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_Extension + add constraint FKC28EE7E6927DE9DF + foreign key (extensions_id) + references Extension; + + alter table TaxonNameBase_Extension + add constraint FKC28EE7E68C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_Extension_AUD + add constraint FK8F98B2B734869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_HybridRelationship + add constraint FK371B728D2D57C7D5 + foreign key (hybridrelationships_id) + references HybridRelationship; + + alter table TaxonNameBase_HybridRelationship + add constraint FK371B728DCDE98DD2 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_HybridRelationship_AUD + add constraint FK800191DE34869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_Marker + add constraint FK39E3C1F38C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_Marker + add constraint FK39E3C1F3777265A1 + foreign key (markers_id) + references Marker; + + alter table TaxonNameBase_Marker_AUD + add constraint FK3DA7BE4434869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_NomenclaturalStatus + add constraint FK560BA7926615E90D + foreign key (status_id) + references NomenclaturalStatus; + + alter table TaxonNameBase_NomenclaturalStatus + add constraint FK560BA7928C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_NomenclaturalStatus_AUD + add constraint FK9215BC6334869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_OriginalSource + add constraint FKBEA1E2053BAB2414 + foreign key (sources_id) + references OriginalSource; + + alter table TaxonNameBase_OriginalSource + add constraint FKBEA1E2058C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_OriginalSource_AUD + add constraint FKF753855634869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_Rights + add constraint FK42D7AF90C13F7B21 + foreign key (rights_id) + references Rights; + + alter table TaxonNameBase_Rights + add constraint FK42D7AF908C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_Rights_AUD + add constraint FKA981956134869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonNameBase_TypeDesignationBase + add constraint FKC0D6BBB5C7DF530C + foreign key (typedesignations_id) + references TypeDesignationBase; + + alter table TaxonNameBase_TypeDesignationBase + add constraint FKC0D6BBB58C85CF94 + foreign key (TaxonNameBase_id) + references TaxonNameBase; + + alter table TaxonNameBase_TypeDesignationBase_AUD + add constraint FKBB24070634869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonRelationship + add constraint FK7482BA02E71EF6CE + foreign key (relatedfrom_id) + references TaxonBase; + + alter table TaxonRelationship + add constraint FK7482BA02F8991B9D + foreign key (relatedto_id) + references TaxonBase; + + alter table TaxonRelationship + add constraint FK7482BA02EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table TaxonRelationship + add constraint FK7482BA02F11BD77B + foreign key (type_id) + references DefinedTermBase; + + alter table TaxonRelationship + add constraint FK7482BA029803512F + foreign key (citation_id) + references ReferenceBase; + + alter table TaxonRelationship + add constraint FK7482BA025BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table TaxonRelationship_AUD + add constraint FKA0DE16D334869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonRelationship_Annotation + add constraint FK82C86DAC1E403E0B + foreign key (annotations_id) + references Annotation; + + alter table TaxonRelationship_Annotation + add constraint FK82C86DAC2BD180D9 + foreign key (TaxonRelationship_id) + references TaxonRelationship; + + alter table TaxonRelationship_Annotation_AUD + add constraint FKE86DE57D34869AAE + foreign key (REV) + references AuditEvent; + + alter table TaxonRelationship_Marker + add constraint FK69FBDD37777265A1 + foreign key (markers_id) + references Marker; + + alter table TaxonRelationship_Marker + add constraint FK69FBDD372BD180D9 + foreign key (TaxonRelationship_id) + references TaxonRelationship; + + alter table TaxonRelationship_Marker_AUD + add constraint FK21F8978834869AAE + foreign key (REV) + references AuditEvent; + + alter table TermVocabulary + add constraint FK487AA692EF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table TermVocabulary + add constraint FK487AA6925BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table TermVocabulary_AUD + add constraint FKA6ED3B6334869AAE + foreign key (REV) + references AuditEvent; + + alter table TermVocabulary_Representation + add constraint FKA408B63A258E060 + foreign key (TermVocabulary_id) + references TermVocabulary; + + alter table TermVocabulary_Representation + add constraint FKA408B63AB31C4747 + foreign key (representations_id) + references Representation; + + alter table TermVocabulary_Representation_AUD + add constraint FK681B370B34869AAE + foreign key (REV) + references AuditEvent; + + alter table TypeDesignationBase + add constraint FK8AC9DCAE2FB99E97 + foreign key (typestatus_id) + references DefinedTermBase; + + alter table TypeDesignationBase + add constraint FK8AC9DCAEEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table TypeDesignationBase + add constraint FK8AC9DCAE94DB044A + foreign key (typespecimen_id) + references SpecimenOrObservationBase; + + alter table TypeDesignationBase + add constraint FK8AC9DCAEBFEAE500 + foreign key (homotypicalgroup_id) + references HomotypicalGroup; + + alter table TypeDesignationBase + add constraint FK8AC9DCAE9803512F + foreign key (citation_id) + references ReferenceBase; + + alter table TypeDesignationBase + add constraint FK8AC9DCAE4CB0F315 + foreign key (typename_id) + references TaxonNameBase; + + alter table TypeDesignationBase + add constraint FK8AC9DCAE5BE3EC03 + foreign key (updatedby_id) + references AgentBase; + + alter table TypeDesignationBase_AUD + add constraint FK243C037F34869AAE + foreign key (REV) + references AuditEvent; + + alter table TypeDesignationBase_Annotation + add constraint FK4D73278044E9E6D4 + foreign key (TypeDesignationBase_id) + references TypeDesignationBase; + + alter table TypeDesignationBase_Annotation + add constraint FK4D7327801E403E0B + foreign key (annotations_id) + references Annotation; + + alter table TypeDesignationBase_Annotation_AUD + add constraint FK88BF955134869AAE + foreign key (REV) + references AuditEvent; + + alter table TypeDesignationBase_Marker + add constraint FKB914A10B44E9E6D4 + foreign key (TypeDesignationBase_id) + references TypeDesignationBase; + + alter table TypeDesignationBase_Marker + add constraint FKB914A10B777265A1 + foreign key (markers_id) + references Marker; + + alter table TypeDesignationBase_Marker_AUD + add constraint FKECA3515C34869AAE + foreign key (REV) + references AuditEvent; + + alter table TypeDesignationBase_TaxonNameBase + add constraint FKF61156F54D901A92 + foreign key (typifiednames_id) + references TaxonNameBase; + + alter table TypeDesignationBase_TaxonNameBase + add constraint FKF61156F544E9E6D4 + foreign key (TypeDesignationBase_id) + references TypeDesignationBase; + + alter table TypeDesignationBase_TaxonNameBase_AUD + add constraint FK4F1F024634869AAE + foreign key (REV) + references AuditEvent; + + alter table User + add constraint FK285FEBEF7921F6 + foreign key (createdby_id) + references AgentBase; + + alter table User_GrantedAuthorityImpl + add constraint FKA2FB64FCCF9BC520 + foreign key (User_id) + references User; + + alter table User_GrantedAuthorityImpl + add constraint FKA2FB64FC1857F6C2 + foreign key (grantedauthorities_id) + references GrantedAuthorityImpl; + + alter table User_PermissionGroup + add constraint FKDD33C17CDA9DCB5F + foreign key (groups_id) + references PermissionGroup; + + alter table User_PermissionGroup + add constraint FKDD33C17C887E3D12 + foreign key (members_id) + references User; diff --git a/cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml b/cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml new file mode 100644 index 0000000000..20600d748e --- /dev/null +++ b/cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml index 494de0d2b0..d1054082d2 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml @@ -8,27 +8,25 @@ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx - http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> - - - + http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> + + - + + + - - + @@ -55,5 +53,7 @@ + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/PUBLIC.xsd b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/PUBLIC.xsd index 4853b8fcab..a3ee9787ca 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/PUBLIC.xsd +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/PUBLIC.xsd @@ -1,3109 +1,3222 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + - - + + + + - - + + + + - - - - - - - - - - - - - - - - - + + + + - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + + + + + + + + + + + - - + + + + + + + + - - - - - - - - + + + + - - - + + - - + + + + + + + + + - - - - + + - - - - - - + - - - - + - + - - + + + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + - - + - - - - - - - - + + + - - - - + + - + + + - + - + - + - + - - - - + + + + + - - + + - + + + - - - + + + + + + + - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + - - - - - - - - - - + - - + + - - - - - - - - - - - - - + + + + + + + - - - - - - - + - - - - - - + + - - + - - - - - - - + + + - + + - + + - - - - + - - - - - + + + - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - + + + - - - - + + - - + - - - - - - - - + + + - - - - - + + + - - - - - + + + + - + - - - - - - - - - - - - + + + - - - - - - - - - + + + + + - - - + - - - - + - - - + + - - - + - - - - + + + + + + + + + + + + + + - - - - + + - - - - - - - - - - - - - - - - - + + - + + + + + + + + + + - - - - - - - - - - - - - + + + - - - + + + - + + - - - - - - - + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - + + + - - - + + + + + + + + + - + + + - + - - + + - + + - - - - - - + + + + + + + - - - + + + + + + + + - - - - - - + + + - - - + + + - - + - + + - + + - - - - - - - - - - - + + + - - - + + + - - - + - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - + - + + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + + - - - + + + - - + + + + + + + + + + - - - - - - - - - - - + + + + - + + + + - - + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + - - - - + + + + + + - - - + + + + - - + - - - + + + - - - - + + - - + - - - - - - + + + - + + - + + - + - - - - - + - - - - - - - - - + - + - - - - - - + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + + + + + + - + - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + - + + - - - + + + - - - + - + - - - + + + + - - - - - - + - - - - - - - - - - + + - + + - + - - + - - + - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + - - - - + + + + + - - - - - - - - - - - - - - - + + - - + - - - - - + + - - + + - + + + + - - + + + - + + - - + + - - - - - - - - - + + - - - + + + - - - + + + + + + + + + + + - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - + + + + + + + + - - - + - - - - - + + + + + + - + - - - + - - - - + + + + + + + + + - - - - - + + + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - + + - - - + - - - - - - - - - - - + + + - - - + + + + + + + + - - - - - - - + - - - - + + - + + + + + + - - - - - - - + + + + + + + + + + - + + + + - - + + + + + - - - + + + + + + + + + + - - + - + + + + - - + - - - - + + + - + - + + + + - + + - + - + + + - - + + - - - - + + - - - - + + + + + + - + - + + - + + + - - - + + + + + + + + + + + + + + + + + - + + + + + - - - + + + - + + - + + - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + - - - - - + + + + - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - + + + + - - - - + + - - - - - - - - + + + - - - + + + - - - - - - - + - - - - + - - - + + + - + + + + - - - - - - - - - - - - - - - - - + + + - - - + - + + + - + + + + - - - - - - - - - + + - + + + + + + + - + + + + - - + + + + + - - - + + + + + + + + + + + + - - - + + - - - - + + + + + - + + - - - - - - - - - - - + + - - - - - - - - - + + + - - - + + + + - - + + - - - - - + - - - - + + - - - + - - - - - - + + + + - - - + + + + + - - - + + + - - - - - - - - + + + - - - - + + + + - + + + + + - - - - - - - - - + + - - - - - - + + - - - - - - - + + + + + + + + + + + + - - + - + + + - - - - - - + + + - - + + + + + - - - - - + + + + - - - - + + + - - - + + + + + - - + + + + + + + + + + + + + - + + + + - - - - - - - - - - + - + + + + + + + + + - + + + + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + + - - - + - - - - - - + + + - - - + + + - - - - - - - - - - - - - - - - - + + - - - + + + - + + + - + + + + - + + + - - - - - - - - + + - - - - + + + + + - - + + + - - - - - - - + + + + + + + - + - + - + + + + + + + - - - + + + + - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - - - - - - - + - + + + + - + + + + + + + - + + + - - + + + + + + - - - - + + + + + - - - - - + + - - - - - - - - + + + + + + + + - + + + + - - - - + + + + + + + - - + + + + + + - - + + - - - - - - - + - - - + + + - - - + + - - - + + - - - - - - - - + + + + - - - + + + - - - - + + - - + + + + - - - - - - - - - - - - + + + + - - - - - - - - - - - + + + - - - - + - - + - - - - - - - - - + + - - - - + - + + + + + - + - + + + - + + - - - - + + + - - - - - - - - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + - + - - - + - + - - - - - - - - - - - - + - + - + - + + + + + + - - - - - + + + - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + + + - - - - - - - - - - - - - - - - - - + + + - + + + + - + + - + - - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - + + + + - - - + + + - + + - - - - - - - - - + + + - - - - - + + + - - - - + + + + - - - - - + - - + + + + + + - - - + + + - - - + + + + + + - - - - - + + + - - - + + + - + - - - - - - - - - - - - - - - + + + + + - - - + + + + - + + + + + + + + - + + - - - - + + + - - - - - + + + - - + + + - - - - - - - - - - - + + - - - - + + - - - - + + + - - - - - + + + - - - - + + - - + + + + + + + + - + + + - - - + + + + + + + - + + + + + + + - + + + + + - - - + + + + + + + + - + - - + + + + + + + + + - + + - - - - + - - - + + + - + - - + + + + - - - - - - - + + + + + + + + + - - - - + + - - - + - - - - - - - - - - - - - + - - + - - - - + - - + + - - - - + + + + + + + + + + + + + + + + + + + - - + + + + + + - + + + - - - - - - + - - - - - - - - - - - - - - - - - - - + - - + + - - - - + + + + - - + + + + + - - - - - - - - - - - + + - + + + + + + + - - - - - + + + - - - - - - - - + + + + - - + - - - + + + + - - - - - - - + + + - - - + - - - - + + + + + - - + - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - + + + + + + - - - - - - - - - - - - - + + + - + + + - - - - - - - - - - - - - - + + + - - - - - - - + - - - - - - - - - + + - - - - - - - + - - - + - - - + - - - - - - + + + + - - - - - - - - + - + + - - + + + - + + - - - - - - - - + - - - - + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - + + + + + - + + - - - - + + + + + - - - + + + + - - - - + + - - - - - - - - + + - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + - - - - - - - + + - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + + + - - - - - - - - - - + + + + + + - + + - + + - - - + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testDelete-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testDelete-result.xml new file mode 100644 index 0000000000..9b187c47a4 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testDelete-result.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testExists.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testExists.xml new file mode 100644 index 0000000000..891b0444ba --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testExists.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testFind.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testFind.xml new file mode 100644 index 0000000000..4287fd3a89 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testFind.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave-result.xml new file mode 100644 index 0000000000..d4b7b69560 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave-result.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave.xml new file mode 100644 index 0000000000..c9ff2b1875 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testSave.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testUpdate-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testUpdate-result.xml new file mode 100644 index 0000000000..b9eb88fedb --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.testUpdate-result.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.xml index 92ccf462a2..916cc76f1c 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImplTest.xml @@ -1,20 +1,37 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.xml index 808b186341..dc4aeab07c 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.xml @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSave-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSave-result.xml index 2e16887d99..e43d39eb25 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSave-result.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSave-result.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.xml index 75efd7db38..af43c9d18c 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.xml @@ -1,11 +1,19 @@ - - + + + + + - + + + - - + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.xml index cd6475c22e..bde84a8029 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.xml @@ -1,19 +1,36 @@ - - - - + + + + + + + + + - - - + + + + + + + + - + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd index f52c69e28e..4aa666af1c 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd @@ -1,3781 +1,3781 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.xsd b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.xsd index 080be9d410..2e478db262 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.xsd +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.xsd @@ -4,348 +4,359 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + - - - + + + - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testAddChild-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testAddChild-result.xml new file mode 100644 index 0000000000..b4a9783cbd --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testAddChild-result.xml @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testDelete-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testDelete-result.xml new file mode 100644 index 0000000000..c15b888bd8 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testDelete-result.xml @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFind.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFind.xml new file mode 100644 index 0000000000..7c2a02b387 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFind.xml @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFindDeleted.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFindDeleted.xml new file mode 100644 index 0000000000..fd69186284 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFindDeleted.xml @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml index 19cd668cab..64b7e0b45d 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml @@ -37,14 +37,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + @@ -80,9 +125,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -121,6 +204,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -151,4 +272,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cdmlib-persistence/src/test/resources/log4j.properties b/cdmlib-persistence/src/test/resources/log4j.properties new file mode 100644 index 0000000000..ae6eae8584 --- /dev/null +++ b/cdmlib-persistence/src/test/resources/log4j.properties @@ -0,0 +1,90 @@ +### ************ APPENDER ***********************************### + +### direct log messages to stdout ### +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n + +### direct messages to file hibernate.log ### +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.File=target/hibernate.log +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n + + +### ************* LOG LEVELS *********************************### + +### set log levels - for more verbose logging change 'info' to 'debug' ### + +log4j.rootLogger=warn,stdout +log4j.logger.org.dbunit=error +log4j.logger.org.hibernate.search.engine.DocumentBuilderContainedEntity=error +log4j.logger.org.hibernate.search.impl.SearchFactoryImpl=error + ### *** CDM *** ### + +#log4j.logger.eu.etaxonomy.cdm = info +#log4j.logger.eu.etaxonomy.cdm.database.init = debug + + + ### *** SPRING ************ ### +#log4j.logger.org.springframework.transaction = warn +#log4j.logger.org.springframework.orm.hibernate3.SessionFactoryUtils = info +#log4j.logger.org.springframework.orm.hibernate3 = info +#log4j.logger.org.springframework.FileSystemXmlApplicationContext = warn +#log4j.logger.org.springframework.core.io.support = info + + + ### ***HIBERNATE ************ ### + +#log4j.logger.org.hibernate=warn, file +#log4j.logger.org.hibernate.tool.hbm2ddl.SchemaExport = error +#log4j.logger.org.hibernate.engine.LoadContexts = error +# +#log4j.logger.org.hibernate.envers.event.AuditEventListener = debug, file + +### No warnings as thrown by SQLServer +#log4j.logger.org.hibernate.cfg = warn + +### No warnings as thrown by SQLServer +#log4j.logger.org.hibernate.util.JDBCExceptionReporter = error + +### log HQL query parser activity +#log4j.logger.org.hibernate.hql.ast.AST=debug + +### log just the SQL +#log4j.logger.org.hibernate.SQL=TRACE + +### log JDBC bind parameters ### +#log4j.logger.org.hibernate.type=TRACE + +### log schema export/update ### +#log4j.logger.org.hibernate.tool.hbm2ddl=warn + +### log HQL parse trees +#log4j.logger.org.hibernate.hql=debug + +### log cache activity ### +#log4j.logger.org.hibernate.cache=debug + +### log transaction activity +#log4j.logger.org.hibernate.transaction=debug + +### log JDBC resource acquisition +#log4j.logger.org.hibernate.jdbc=info + +### enable the following line if you want to track down connection ### +### leakages when using DriverManagerConnectionProvider ### +#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace + + ### *** Profiling Logger ************ ### + +#log4j.logger.org.springframework.aop.interceptor.PerformanceMonitorInterceptor=TRACE, profiling +### Profiling output +#log4j.appender.profiling=org.apache.log4j.RollingFileAppender +#log4j.appender.profiling.File=profiling.log +#log4j.appender.profiling.MaxFileSize=1024KB +#log4j.appender.profiling.MaxBackupIndex=1 +#log4j.appender.profiling.layout=org.apache.log4j.PatternLayout +#log4j.appender.profiling.layout.conversionPattern=%d,%p,%m%n + diff --git a/cdmlib-persistence/test.xml b/cdmlib-persistence/test.xml index 1d48c4fa7f17c6abb44188a1d525ffea09e1690b..4fba1ebfb4af2ac4bd67e4b602fe847271db3c1d 100644 GIT binary patch literal 2523259 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 z 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:=m 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%0DITBiyFl+>2Yo_V~|DvV8xV6KWl1`vQ*R4|?t) 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�c1Y}0 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 literal 987871 zcmcHC+mamDktOW=c?uYB`leG8hm44fw$}Vcfe@Q5Qd09EwdO_^N1y~$0gWnM zyeO$66H&;GiPV^lS|ml%YnO)~mM>ra@BiOluU|d+etLU*_4?+Q|C0YA` zx_SP~fBEj)U+)h8^8fvx|Ml-UlGvgQ}r zCr`fnF8+tpej4^=-R;WhFzohuUGKU>x!;w2f7lO2Uv*>cfBXB-9{*<*Rr$%2Z@>8V z%V$qNefl2^`Hx>b{l$O&;>qW)$N6pd<0nsk|Ml;_efE?s%m2~c+jr9^XMTzz`KK7` zZm9P4?l9DTio>wqwSAlK_F13jRWoGO@Xt-Kfu^`U7h9A?vT|z@9DZ- zR}SNDD5kt=$FU#V?qh#|ui^*zW_aDdnm+PJ_;%{9fBu{~Z`yC5E%tMlRqZbC59MxO z&4*n-l-+J>s{L3rRa4d+}7ztERrH`!@b!`?0@^?{2Q{qwU>~PoBPh^=f)PJ^AwW%@|Sh zqk`1Q&vZ!rnTo?)cU@QQrmURAsWRWS!&K~=eCp<^9>%HnOdt1wd~y9|dVAHqy68{j zWz!t47_z#p3t!Bhuk8( z?=#~4fBre#&6o4-vroVJ>e*MndiM1<_kSv1rk#|(q4?Opq5RmtVgIpzLv{Q&{PwrM z`}Wgszxds67YX&xpFR8a7r&KspMCw+uRi_e+43(v`|od`{q~!a|NU2=e*K$gUoZb> zUp@Qmi%*w-;&)$v@%b0O{q)Oke)rwiPmlhI{=$EJ`}eBkALe{qEz&kw+wAjf*X7EU z{Wwm$t{CcFmigMNeb&^yNS@$Je!O3P^5yHd)Af_9H@EMupNy|xy?*=T_Ui6QcRk(x z>yzR2&FwVYO?U6!KIz7*H&?fV6!~O&btT08{b`SXisV}4kd0Z^7vru}I_>t|SnUpF zC!O!hajfUO91}D7{ZH{<@2+nD=iT(=`P=UMtFimnC;#)VyMEF=dGmIRHxElPaC*956^kjT@vKUbK4bByC>N-lWvx@)?=Iz+)E zyzi_1uB-P#$TU~OlvSCalK#tnc6a4juDf?{uWo+S86?#6DJMrhPZiea2-Rs*YFRreqn{Il2dpUneF3p;HRv9{Zdi&bf#=qw7-Eh_WpU0p1`MaFnJsCOTWnAaafBPhb>A!!S{_EdT*y7Lp zoYnr3r2g?ee%#;xkDT@Y`1k)Kh5bMN{r|{l4}bs932E_@-v8_Z@y~zZB%7c6`$VSY z-}m?TdivQ{fBwT4&;IyxH2eD>{rT_zS_k>{`-Y{N-ilefqoKe*5XuZ-2JrB>(>%Cit?udH$|@{f&>8Kb>GWH|~KW=O(&t@8h-M)@Ku9{jk#i7`h zheM+U8udki2YkrbvD5c&G4>=AK5lGQ9;PmDrd?L=yWPH+i(M=G?dE>a|Bp^(KfT949KE`DR+mt>HT3o7DKtu4^z}=A9~rLd$-NllbrDZ zV-;LOU*x;VtM2x5FMAw@YS;I5KSY_HfFuU-Kjw!G{~>;Aa0jlys!i+%jwRlkiU zs@wM(t2t8<>nhq3JE zC{#XVtU6wO>F?RZ4qZ^zw)Q=n6 z7KiT8m%xs$#yL z3SibW#jX~)vZ>9xp?Q5{-ruR)wXZgNU zw*cfu{nc(?^5jD{=l*a$RINYm=QVqmulw@t*4ItWXXPwx!u8$K03y;i%hfOc8lk3ften0Q>Ix4Yx$anoD zE|k;0DF#1CzhATV`KzV9&tI8hZSjR7Ijbb2b%SHVwsE z+?|emclu$Y?-t2%V%w5imvmvY^~3IWw(Q|%9eOrCTFuln;%;6!A>VE-j;`I$IN1f8HAQmw?$L? zXMNBU-oD<5FqO%9MdE?1Rzl_J5|O;s+7?ecM$ zyABC#h^pf~Uzm?N;Q8&w$|kVlv@fkL^foUN4*Mpeb^~3HkHSKO_tF|pl@wYq|7v2QvXH#5A&S$e!P&CGk8Eii) z8*!n+dCK=yTi0_lnOCp)!ty)29y!J)Ym@WYnCGB7grKQ9h_urIc5{G*%oS*VfSrPK zSF9b6YVzmPR(q2(S~Eds27$om#&ZoGc74P#jpdM)dF9hP7Z+~3+l{ZAp3zKmFs=@} zQEeV|qX;o8dNUtbgF1!)cg}PB?rxj45!chcvr*v6JJaBP8sy);gFiR>0qm4b6J%e% zx#qdI-!Falc58pOPtIx8JeNfP&s-s@gqbf?N}PSs)#Wtzt?B-X?;cq@Y{Z%N$r-KQ zPg&k^RfGfR{$6zhlrDEwF*FTchDn8g*84f)2*sPbt@bA8G(#z~oqUFc02UA(b8##m zcG-O2Urfa~uX)4rb;n!Z;+8nJPtIujQQue?PFBX0a)dVR0D9h)`>Aa7lw;oq$@CPt z=>)C^T&#P$u^!te=d}GEj=P_7(^IVEJr*w~t)$xt`bJ?zybtwhh)YV)NhTyMqqtK^*4b54sD;EyWE%xKy^F=a!U7l*!Ucu9V) zzIl1QG3r*yIW4c|rYwsCD!kwSzJrT&hJm|UVFu`J4%RPLzO&`q4&BB+A{J%R>KnX@ zd`7eg^H^J}db@pIDt(*54>A=HhcnhyK0KUB;oF_Y=p+i*r%o?bceMPR?g)0u+A()WV*om}|$e zpTN+?fcjXsZC;$6MIfJV^n~Pm*4Ek3_m%#)i)G9La$}t-hlRv6b=V)~RRlW5=?^jN zy4yI7sFO3Al`=zVz5w@tn0GRSnrzq&*))%RYpgPhFz?0OrL{LdY~(b>ydyCx3Fx|^Hmh##V;JOy$Cf*s%n2o6 zz*uT=QG?7bYjV&uJcy@1??ZS4Jferh(c)2o{RtQ*&C3l^!?=XQH_*<6(M&{^v~)T>eKDC%C_Y^=1lv($K6|jnt-rX(V*KX*>sGFSCf+AS97J_kXL|yBDg2E)~*484b4!!tn%|K&i zqqWI7t;@<;X)fx5c3Io%flbtQW8iyc?8dEYIe7WD-R;J=jo)9I?~=S2E$(Y{nnG>f z*|_d!931t{p=gZW=T%nI|GZn;YlC##>mHJG+My>k&;l1mh(3Gqid(SQ&WDCq2#KmA z<9skO^fy~yH#w&nl2mhn8Z_r7Qh+CMtkqD|BTbI%&!BVSe%kuF{vB!F zkYU+Wxld~-V^Ue$?ZRlXJCiq6*Ov+f8ldeD z;{j6Mg(p}{+V!e+q_R$_*-hn3k_hT)W^>~&W{c-DM(Y3=oh@v_Mil5-jyL0kYg9)e6tau4EEO${#A z*v>_UGn9avD|a?o>pjxmcA7!CCBVjbHF{q}7KCl>#0YjI7f_7(8dvD%X!>{a+8=JR zH#w^rSC^0w=zbX+t0Vz}z>jp%j(w9AqtVrx=Z0S1LzejQ_1lg1rf0ROqyngsLi>Af7W}} zzO?4|@VYO%jkDl9RDIIix2XynGh>W^V@WZ$m0^ zYC!XLvc_@0$gZ~xKc2{uw$nV5^=k8AO1=NSN4@3CpptF*+VV(6Y42O@30UOF{Px2m z7k43`7`Topd(&{~EE5>tGkE#FS6hpmJWI}NLzkCDKJ$b=YO<-q;2xEfjh(f68i8oB zCGtUYuU~Gg(DNAGrM+%njm8sjv0j>p5$niY$X@NA(cs8-=C3Q}KG$VDd~VOTik)CB zr5Ze0ilDwQnP4OD?qTO}GTR4zZHC#*T{Vnr(d_nrmIil09ogo;$?0uBqp;+-H>1gk z;ToD#Uurdnf#ijhK{WH6|Gs*?Ih-YDH@ddG)MkocyC=AY0D(`QPz^hq!@en+-~3S@J-&EE+;aZoOG6{c3FcaVoe-yS`6fC{K^{+_(0@EnoL#i1}=b56Srrwm`%U)|-cNk3B|x#%Q-{&ZO!5Fy_r!FnxT!wOG%S z^IO|?h}?VWxIoCjk~YPh<_rgp2=92mr*y8^dHHT5s|<53^<(QS1J47xKs&1=sS+X% zv<<3DBx5Vsz~D9LVd)Ih&1Q3xvzuU0P;o@kn>w)pq$cn*BhZtjvZBsBSl5-omWLhT#FK|rxZ(U<{xA-oW6b3T<7|5%|&eGgBTN$#{ z6;fZfn;gxkt*zN(4ni+zy&c5f{m@S~S0swFtQb~Q?xo_Meutt+pRaHo$OCO-8Se=KxTDZ*ed9{(hTe`#T zYk#=Sdy{k945+3Gd)U=*5z!YxwjY71!@-z^zKG2=Km2>qVQKE%ZRD1bnoE7(YVf#? z72JZe`q=Q{+5_AHnx4TWDUFP4(RXR?&A2u8rfZDAb!;s8#PTNgt4J6FqQIya^jeBg z(yG_W^gGe(q3(4(V52*f;$>RwweK|^LS_|&Y7Ah5*Z?bVKNBJ#AM_z86Ysgh{Q;SO zi0O5k1>e$jMv94G9^N^|zpqX>V=zdaELBctuc{k}^@_pE_r2cSXr{}IRBfdIgN^hD z{rvtOVYjNZ%O(t{5(h%MJ7exoTZyuHy3Pp2dz4dxDE=P)OK1Y?D^N+}yusnXJ9_#_W>}Q3W2o?+|Gqf-;BJS_A6#;N z16A7(=CIb;ys*XxuY^Mox*h7?(#_DHi@$GPY<}P5{8o(4@L-y$$fD8QBSiHy)krpg zq7bK{zvuem>mN3fd-L$Qv~Z?XGl)0FGz|o#DkMY)WR2FTGvh-#2(dN&o;xhP_xa{z zoGv%g8(~)A>0B8!_j%xyvfzwp@&dg3A*!n4=j zcWLeq-R9R7;M2TUEjb_bl{k{3XW>c$^PO?=&N^E?Ws^GkESdiLhpn+UU2$Y=r}5_!@*YGjA}tp&E7V(z z)EvaJHC$(Uw|w8e`=5>3Eu_HH9Kzai3Z?E#2smc-n38|^Mwa&*;dU&IgpofUJT&E0 z?rCpY!}YOIWR0sHF(Lv}BXFr7v{mnYZ2ghJ{pMmlU3#P;&0dW1gPjnqyo+8jaHEAy z1P*(v$DUgo!@m4}=@KtDi{huNj~EnZgmJ_NNP}ixXaGeR63wIa@&Q{i7%K0*@Nksh zhRrmibO91F4fZZ=wNY|W{T85V)Z{L7bc_irvi{>5l)8N1=W*q36SkACKvK;H#tan3 zW@DC`uuBUu+W~zEOP8}%taH6Z7ZkK@<|b!1B)+Mh)VyY{++kLtwc2Dl2?ZURmVm}t z>70Hu>mgl%1nCK<_dfK-)&d=A8_@EcBaD(o1dmk(lBF};1buSb>!xQn>%@JFnO@L1 z4w8luH;o@0TKYdF(I+_I%Ez`ecZ@6B+ssYQZc4L^)DL;vsB$Pw3ubdEXQ2NVLId*J zxz6IRn@ja{2@<8w;hs!VLC-Wo7H-I7#Jt#6wC!kE_1dQv%A60Sde?9L*wR%^- zFouLAAx&DmG{hmKL-7g*HxRpN?R|%%+II*sH=C=5WS+&$O z&cxr>u|u})b4$i0`2)(Y_Z5G=@9aOcKjvC^)-hxwl8i@9k#fH=<^m2cyAt zbwPoo%;J4(>|Y|;=JFIS53#!brS&av@Qx~K3hUj<60`dmKz@2;kr}5ZHv9hxecJx zldr=ina6lvdAO$nl_rhgjzq3Y2Ul>OcQ2RJR^8T4-V12 z+*+NbYm?Lt(F1RSzZHY5IWC*I6J%}(Qnv~l!bK}Dyfk;-3`E79;It2JQtdj3D(Vi{ zarZzJ|Aki@CYx{Dm>$;5jjI%k_r2Z9Nj)UzH-{74AHaK{O(Xt_2XUo>cD}tw4QJm| zvN`j|l42)}a7XRlPocbrf(14t{vwyJ_oWGhLsA zT(jXI3!MoPAzVPUuW1q8=0ec9W_wQOy5n&(qdHxn1olwWgK~#XiBi3YgQyLaQS2g6 z$%ssF_I&HBcblU_a(<(GI~%mQU}N#h>uQj}I>cZ|XyBvfloS~A9ZCQu zGw(ZWjt=P>CG&v?Oay!n8G$I#!M1U(KEwH(GhAh#+&Ob^{%31l($N4B_#6jbcPiu3{ zIBxdfz4K;dCtaolN2{wGXN;H|a z7?jmB=Dyv`dT5h#o75(1!F7zf8A&8JHZ?W%2Lr=CpZcj4wL8>;@6HBcysi~_Cyr?Dcw#j>^6Xg{>h^kLU1n21)!eD5W}CXv zS3*x|Iz!Fu04UR2>Ve}Boa!^L+i$%qNGK`QT*q)-6*UgZVpUhu6Cv0B&8P^TOG3%( zZTvD#TyH(MQlx8?*aUEZTKKAn@afrXWZ?`b(meU(Lo;GoDHHSLpv9>`jetM7>Fufb4DbBEU(Cz?gNMoC8E`~H0q>XkXAN)mso z(-WgU_~HhNcW1nJxZa4F6OZJd`=F z-)>|}Qm;(?+$hqRSz#QKJ_$ztn7$T&6ibur9r zV?ugSG4M&8T9JxtYgswH5^5`sC7$!%yRGD{B2Uh3)NyqUz+T;%o?^z#Fms&=!dPiQ zF>ka^Bs8##GQfG-C63u?baPPG^W&0MvQ)pWo^O0jLoV7S~4{@ z>TzTbhkS1^d#(wZw+d1e>FOkn7O0){5_5&|9bi;=uXr|3diVTL9?lL2Uv6#Si*$7o zeqaF5+qf|MrLF$M$k7`~+uCb%&hix=rAijpi5PV6R^< z%pFS8wyA@kuHLZtNgMo7==}6<<8Z~WB-P-GzO1+2 zvJxF$kmGwW_{HW%GhLxXT~?MreziFopF1)7Vt7M{ArgqHrip~^iothBrR3f1M#R@# zFZG4~Hy|&4+^xrq# zMy^?ru2C{qL8kV!riA>rHOT5i|C^4WPtmHA9n%&6U79<**hoAq(lttqFa73iigi`2 zl}0A+$mcp^-!?Pm0AO;h+2%ac5=7?66;Z-@Bs$%iUILa*?i5 z;=ZdRCKj*8`-z2_SvnxWy1fVT;ENLMIPBj8Z0ADypPKg5Eb@mof0bndisQ=P49e=lG6dUG)Q z7=;q6f~~^^j?TrjO@q-BT8fJX+G02f`uCY&cDwZ?sUv5psn`gBLb8E2ra)9@;S5+t zs)&wuZqZPZTdN)ZN_60%*!k;L?L+6+QVpgMg)I_N&w>BrLYc*5=!g!ko7?FXBGx{( z@%yF0Xai4%^K+TwO&x63AF#aZ0!_Q$O-^+za_G(|S|V{PfY<_@H&sUL!OI>Lfe z5iQ;7RkZ%dfBUPA8X85qMu{Ecb{<12cMOTXgZTx)Sxf!>>|2~?BaAh2(b65RueQE# zxy$H;h9pATM>mP4Y=B=Pis!mZgT0y6$wglnixqYl&Z0ax4RZ6IPG&*@JV}=1fIGwV5?7xxI?y>zynV)OtU%lJ>y2<@p zgM?i6XgVclm6FlG)xVCN08ydq)?rt73F9jCgF9S}Tfypdosz<#o&#y<_{iL?`o5&TQoUDskQd;Rzikqdj8mFvh`Qb-I;-7IyRE(N(%iRO6}VheNHtf} zQ$nK*V>`-bdkg-&*GA!?Y#N|@M#*R`886Mf{&8z6PFE>8)FXfaJngQO?ilc7GYLlpt+c2{ANos=eB`v=aii&UPG{JYRrl(^~fyXDJ^( zw&~U%Zu{7hbDJ1ob=2v2Lat(Od}l;eRF;Ns8I=lWnb(3@T=#k~xZezy)XCVSP)0We z7%2_&UlKqJmMrGB^27iti#TT-;^phDlect@5*))3OO_kxQAOX*3hb!VWVdUHFUu2CYsYTQxI z3|Wi-azrCLc?#iyD0roF!?0a3`0mKyyUirpbd?f|qaY{HL*~kb=>-V5H!wu=tKF+4 zV?@(t#o*Y4e)!;S68vOi~ zKip<;a)zVO=O!hD#NKOUIGat#iF+QR3nFnuI_zA^_{*EEC$aLr!;uFMo3}2~l}bw20l+1V3m3${(fNXXrbVW3R=b+zGUV!o zfTcTJ-E18Pq$`ym%DTj&u^{*m?`w&nM^Q!t2DFX^lr<>N?^O`tun!;Ht8TOZCTBPb z_9V-R-9fHJh)nU*hA>P?;*9cL>(Jub2lw{f(%`q7E8y6pO6%W{%L<^Lakq2RF&|Q% zRZ0r7@YI1SSkKw{@%3ghLAq9nOh$Ui!IOafVtyPVLCS~;!NgQ7FrKx7{YFT5aEP0J zE4wdUtHgdIN-|}2OWl%kk8yOb^+2J`hBu8aj=kc+w?{SF?X^GL6oJ#VNtEULj()UVTg16JGWceCv(@0_9OueH-Zfbq?TMB?vw7Z*w24P90-~(^ zG;1!gbci=wFJ#frPyOK3JNWdKy|G5hHd}3Xq0g0MuuImYqzj-qJxuavt?$O!2&<-&d5@EK9 z8=foA?8Z7*D3-sMFqY>2v{ibkNLMOx^QZwqlEpME<_xihPIy0V|CJ>wJIHUX0-lfX zoq01^IpieL+`+ZlSX#g@3e^t_(y*w3GZ#(M%!3?)-hSqNhZjF?_1@&{=JUsuJ^80dDIfUe6e*mD_yN* zY{=@=vu#-6OPB2AUl(`Kiy>qXOQ6~+!z60R2bbu+7o#^t;B>tbiVqM~L4i`P7!mMa zUt7a)K-#qq689DlS6+B&?we_A%NYduv2Qp_RxGT z9Y24&wZlkPD?vwQ6|c4X7L*usIQL;mN7WXG;A*8fyz;sc!xrxFcC-H`XE-S8FyzSg zE*SXgTx^1{(%;B8`|KTiI`KsR>8e+)r8*li*4S zn%$?|2JbvnH6VMgjJynVWgg2c`Pp1f;NwAVvI+QpL*0 zc6B8BeARCZW@Wl!iD*kLjsytt4DTy47zqT=dTiq~cQw+jUNLz2zWr9RvLm#q@7t)9 z?aZqla+i5mjD#M$tC#NWSry5N08~`c=^6Bg6_8^6_ff&HCM4UqierTEWH!>;V^@Vf z!5UDq^xf{w##G@bc&fRU-SouPG=Y#lH7nCGJBC-gcP%XUgLRxUzWd|WL|mrpl{g=Q zJ0kP;`-ry&gz7SV1ANM%c^)zme8ll_U&F+w#+j2)92TVTSS7t{Y3vEiUumFZrp<1V-&OE5OLD&q4K@i zs??`|Nj2CF?i!dH&G7xXN<&UltzNj8OV`kCzMYlDybaORP01o%vt+=~$)#O_cOgn# z2dTCL^wA@rS8T02o78#lCFAAmzS;^!A-$!(Zi7>8r^$_gdC%O~7HM+}djt?;_`-`1 z=fc_TH4^2v*GdE;E~M!5ag_r+d}Bqou1C6;8JWpmx{mNdMenVzSP%6ccJSb z`s#m0UsGdyZzCp1oLnwQ*RYC!8 zGu2>qCy z;A(VQ3QEbIR6HKXK+A9Ch2N;n7caayS)}Wh?5l|$5J%7onQQin2$K7b6*}ugwXZkD z5*pu&zOfAVVDPwAM4?RAEtzIldEy{pQ3p3Fl!A~^9lN$b;`XjMv3gSGrz3-Zieu87 zB5=BH2`QMo>Cug>Gk9Tpr}pOYmT{L+#GN%LS7j=e?|b(nRCSxV$@z_ebCD0s)x-s} zgr#aWWIyPyeXW`z$cjTO%^kN=a}KQ`MTFPTYHOi%@W8MhHs36 z4w>GqkF7U{-cTUgjB+(f`zkN0Kl0vw>)g0Z*DR^s4>@F!j$@(4MXx9*gE={9G>qx@ zW=3b+;r87|=5LvVe{0YOzz$YCWu>{pn{ZWhV+>s z1@F{qV_XcEklt2a_wGnj<8E{1o32@+c9^Ss)?uKit`Wx0v915Su3@YPdS_=px0|i3 zb-h?>Dpu!MTTta>aW>lMN-D-OvqaX$wau*Qn{$;}x7mBs6-#g;YrC2UdkZFoD4t4o z7sv4B^zwzi{t$ipdmr1)QEt20y0MAXlKQ^)W_3CXTL8u^2egNSL7a_E(P6ZE3T9n1 zSblgY)o*^>TI{5&mbfwI_<7t1a8}&p0_Y3fu_)3vd0#d(A&NDqdTB0LXk&IuS1p;1 z0iie{{$T?LSQ7t@;RF3MNR%ap)gkv4BHF|IUTxI^cXc$?Ayf`_9b*&}I&#)Ty!2eE zeWe@=-IQMEwfq(&od<)bH~w%_^&7O;w1jL5TN|;EAhp=UAz}kEE;0`X>j0s)0x((e z;Oiq+_4QT}g)&{a1lV_glo7HCelk^+Ae;qujj&D%8bdKi81Kc1<@;X!W%K){XSl3~ zPLcspHuB&(NHEUk?J`ggdF7!tOFU!l-DY$$U9}|7NmTE}UCbTzna@wcaE?r5@Z1y4 zht&xD@`vU74x7Qg(Ai7#-#!rDVC}T~V4A_x)skX`6BtfAsVe%omHa_>n72~6C@7_x z>o(;;+X&~du-fE23n*&zxsk>*pvC%K=S(hN_vJgt>Za(Bu2_-*QnBh|e~jZIZ$TcS zK8tfmx*~ni{@llQy}8v)S1cg}(~nc!3b;=fqq)2~2f;qJ0=fyuXn(HN?6)cs=wMQv zfkGppB`V-{OeNzO8TX`&!0UTzD;mu?#x`es_jao@BWha?7Nf`(Qz0A@t)@hryJ$Qbz7T|2YvkV?ku=_H zU6Dp5O?3z2)VV_<)Zoz#Ik9})H&~wdlL(V^j@%45^SNEe4WCW#`w@C2WS^^9E0nt% z61bW7oye^di^7;3+!GHJEE zL3dR%ZaBrt7_8d*`8_+T6NJ&uj5OAehZp|jLnHKJ+By|VS1d8~(MC|;0A<~apVxnptyL)q4i!@0iV#nxQ_ z8t@w-*yQbPfHM1IE!6mrVlda>G*S$MxGVgxaI&(``D}h7?6FESJxXK;3 zu0;yHYX-m8Y&-WlR2sZZ4X}dP7ce!tbj0bnP+1v`HYn6WGsr+NQiWSP-w~E1xQKW zv+FBMv4>R(%+h~f#(K`C-XdM8#0q!Zj{%|%aP482s|d7J%_+AS@GYiBmcd6 zvz0`Uu2nLr&z=3$77tPG*tW5A3@@>fl~I8v_Yi&ddmr5LeSZpi-=_CXS1Q3S!%2-} z;>K3|*Zjggd50r1CuNE{P_;GxeSYM>&);s87X*N&)@SZ6G&L@fSQZo`>y9F@RykIi z96!fdKdb?LFK?GG{Bo;wu8rYTgLyAc08X2;31gO6qI)BHHkO5I$gJh;>A&0U@9USC z*1gR(#^@CZXq|H+_F<8fM@29$YJtH;kzjQ}Wcj+!C&J*{{5KhyEIZU*XH0jrFvSN% zNg}Vh3yOFpEnRE!XS<8*&3xaFP%0UUkVu%2)I*10MD-;x={|EWGj}z~?X$S=%}-m) zophxV97CKEnoE71Gnd9g2(yLsBt&h*Ju}N#31UFqWZAeNBR4CA6l`nJH>5Kj>a*9ePqxi}ld;Lpp&^Hfm^t_2ui2Z;A+B-A%!-C` z@_)|Nzt@}j)Uh9&79BFb{k$-`%IcthJDwM}M7%Gml#;zrPpoyvQ9nMs@4J`$W7GSl zE0q)kGp0D*Lz_>|umT$da3ndSHwR8*=ynd<`C)UiNY^RJ24F*+FvT&G-6q!!;#9DG z!t4-h^cj3|<%4^7bcx~JPg}9Gbe$5*(KTfiiLDIz(HyJ9niD8BAM*}9hREw0{_wpR z_TUiTU+JN@IYe@Pb6p5cC(1}u6;_j2=`AjhmeUDYlBG;=&LR5fj<%VboZsAQcbE>~ zuy@l9{-D2b;KGF&+x@YEla0fgL(E5q4d$z@D|#V_ofaYHidd93m=fD8py5H`MNwKI z6fevLnsPRv4O@kQ{2r6d?OaXEfxSa+o`pz&(1m9dS$WKqX;@rb>x1R`_2#*8x>AYt z8&|p=*upC(8V4!G4*um?fNyeQ`=wzLZh#Q4L_*yX;<=Df=_HrvaX?G^oU>KC^3o6NZ zY-3aynmbWW3JZnvnPKBGmI zIt-!W-0bb{`;GfpCMBun&Q_quiGT*gPrAsWe+xQS6WTCCQ;}Rb7ae~3>tDCNZgTe~ zPYg{hPfWIUbr-YhcZ%Alq*(&r8M4?fcrO{>9)VG}0k&^*hve*rpVKt-wss>9wdx@R z25U-OMgc%pQj^_u?tSOC8=E03VX5vwgaW){I;eFAmSCWUaJdpfn6nz)X*$=EaWIP> z;=|q5#_mGXm1=OI0E-wQAjGYUoZdrAb18OOplPx+`p$|&1YGuD@Y}6=8uxPJY1J>X z00|(eZ3trO-T@ph9P7s_%g&*Tm~yQce0OBFw?m6QpHrn&?H8&HWw3*kVAjEc$|uxic0)xTCR94K3P;oGCV zfZMHm0d%QS4JJ5R%#8{XC0ULugg1ACx%5P8gZSu}$7z=Lg4)u9Uv1@{VO^w}OO8)} zfy_55e8gb$p*FKTRG4p3gP7*|?D>-yTlKj1AE8;|x)g8(;J1&daS2502ds7X8Hxtn zXLK)`fADqtC?~dkZpj(0BZLY;3%Yt7M~Z{7tsTQ17^=5^PLW{M+*e2O;nmi?EEmvH z-NAA8uCF!mm{1JPA??sKZ7q1x^-2aZui^pmJvPVdN#L2o0 zYi{*Qz|t9RgJ!ZRv!yGQw2^J0PP;-Tmf5W0^fk&xVXF*Bro($Umnh!8d$ZNt$waBfrzQqds<4~~B(Y5Bklre9C!}8HVRkN*z3n!R0rcUi-b*3ZG~156*Z_H$_Nv}Y`xf*JOARGtZEYKN`MP&k z-*0q>bfpqh3|deUnTAKAh=RwJMU8xpnnEe_FimT?`qJF%trxP)qEcTs(*?E0D!Y1! z*R3oZ6Q#wOBMwB*#x;r6GBRNF2k-6PZmoOMwMuI1^0*kZ`bu}3_GM_55L2+x0F^X< zafa$#W*c5?1xiBGKdo*kf{tNXSKSb`dL5g_xx?+gL0C!Vx@i!?KG;?KxRrAT98WbD zpQx}RX3{3_#>^syEcZ3LpJVpf!FN{7y*ru;-EF0Tllf0I7}`%J%o&-SED8T5XVlG# zvjc7AO4f+0iYo>$y?1!KHCd!lK_6H{N5FKvf;P|H6AziBksh1jzEjQCO z$(XbtcTlJqxJ@QnzPYoU$zkjDyn89uwCG@M!9s~UY2-X3SrAz{gdlvSxrbM0mj3;& z-ir>m@0Ra-yBU>C*D5LPDYS&tcLdF%*a_*SO5HvcSu@IP+T=BZm*$c*-sleLN+lC5 zioBp&Lr`6l8Jb4!B0;1)a2+>IRc9;j`|^nM@N%mXtz%rN9~^3=?hMlx6Fg7{p4_!S zsB#9XJBAJQJ=a;xTUGjK38$JnI^|^}9_Pivo4ze(@W8`#{oyS(Qg?NxYM$89W_<4`RkGP)R6jXC>9EHF$bZ zn?EFr;lR`o3Cb=nJs(+9ox&DPs)kh;|OrL@H+ zMs`@$f|;3oOo(jh)p+Z67^buCa201ZH>Ki_P${8k;x~^^-QE+FF-sg9Gh>0-nD5&-nf`#bT zg`$`AN8U8L4p+XWwf7AQ)PqA@Z@qt`#Z7%*5{>>}EI`r-i(*oy0G@!+l*E#S(cM}= zTbhg8zV&^Rd$+Eomk@Q1(`ekm{KqP!WA*t-ByQ4?%smb0O!?Rl%a%}84<$JOoyEKB63D&<#5h_pKsMrCij&3 zxw&``^9N4b4Dz~Wv6@Zggf$m!W;Wzme~tq4{2H5JQ#ec4D#^03Ml;hJyS(g8Z60ff zeRyUpr6DX%>bX+A+p6_I2qE=#9s2~ON1d||f}FeJp+QTMAkQ?#wbP}m>-|3-(d&N< zQN(TUo1EP&D^PsVTaHy6L<(@79)UPP1EK_?#2uWKbi9nd{pQXsU8`g$+_9xQ5L0-M zY$IASRzegs&Zuyqah?6xhBsTQvvj4BKI6LN8so0KV)9_d-HjS$H*rj`tT)|b$nVv@ z7Gh}`3yt#J=QiAKMIO?%N(#urfkpxX zZHVU95qslq>Ao{Agi}{A>@(i`m$#eEP43;$h#CMo9iv(ncKk$Oz@#;ekDanO(jHWV z_uOGV!hPqr{%~7#NX~8e7Y+lEPj-BR|7Ldd+#9oAILCD_SJAt6Ew{Zsx*Pp^t7s#{ zE;ar-Ep)(|R-MsHmfbM>WDC=lo|aJuo^0zigO9@5*5w6?2&v}gZD~Un0hO**NCVwp z2(S`c9o+6gNOeHOkN%!REX{qnIh-}g*)4AX)Yf6eT#IgSNw=m3Fr~U-JQxucR>)S& zjr)lYy~UgD@0*<6T&i@npa!IlL4T=Z+pX5o_b{r=GQdG?ykc;4KMw|XKW@AmZJ?g& z5N_8xz6{O*lyL|GuV#d?sCR%@mZVEe=T{6~n)}1nQ^EeFspe9jFrk3$X?vs#GLFg} zG74l<-L}AV7VuWg{mT&;^_RHXzA2!ktCjRF3iSlw5x{jsl;kWhl-Q`vR6)#pT=3OF zVQkzyIK1rha zQ?d?7P%0ZeTSSVs#oFmh;t6qIQxS3Ib#I?btfl6?^5yfXsjuCXj_ z+0BWpvpSPq9K6^R8`70Z_5eK-LNgX4tWYX(?k}{s>NzhBW*dyubI$N`t1PB+EA>;e z3=P>4cAF-4E!;q-%4PI6y4bGVQJ)1#|AV3Ihpp=MYL--U?LWKcX7y1Zh+;j4geYe` zB6BEf50N^XieGGQh0>KuXe-g_qfcJB!@+@F2XMO7xfYYzs*{e@4rgBX`Nz*RpT54i zGw!Jb94q&#&)*V=;}r@v=wgbBQ}~G zY_##i{nx_A8E#LDl>^=rxOHRD8JyV6*(u`9;%Ds5ue_t6x6#HAw_FPw<1n@5Ib@2c zOZJ#Tah8JCG@6@!z!m!iH)#30=A|2L{BR~(*htig5E&(r@j#4MXjhTgjKM6QLwu%i zFL&J^y~0KtKb(FRHaaA0>Jby0po002OeNje3GBC;^HGZnKN!`Pr`+rJDPuGPENZj($_KeNLFFt9YXh{3$d zAJxD9^QXlxKY7pi^25RXapRLS(XsKqbzfDY@x0`pV|;RovOeh+pGy=NZP5mNgz^3z z{~Y6!bJwx)_ioeAewGBc@!S397@wTf{^2(FFaO~4uFVw(i$BD39_FgYJ}+hbGmJ;K zOU=k@#uMgKi=Q=K1pDV0pPU9UOs7se_Os9b{PKy$OA-GZ`QXmdE7zJh zBSEluaroxgZTvg_ImRa^&VLwxALl>Hc)#6$j`7JE^&dX}@y7eE{yD~r1ZgGovGH2z z`$Mez1h)xV_tNxqD<)2D zsjrBelDQ?}%8t(?&U2D!|M=^RnSVwUW#Rj?{>NEVW8QnoTQ`h=ptccm~JCmHv<|9d&}lXI?h3R738WYfpu*hncA?`5_W3$2<< zQ~AX%z_Ix!IrqCiUC#XEtV`vrb0XF%3(!|{Yn;`>Ekzzk1}Xc=cEGyx#8hq>_rLq* za^@#@w#EVny*Tq%HTd{4!9!GEgB#$0O#SWZmyBmvv(zoL2KxI5BAKaeoLg zg6y2mu)}RH>_7ns;7ydc_6BN1W#*>wf$6 za^@#zT{=I5tspZYi&r8~T<58&4qI|Wqwe<2QbzLl^-r?yx0j3iXM|rCpYGgXZko57 zvnlnlUsRlqXv(^Ul~O#I`LTLGgr}B~=i9F@_xj0McghQwEDVu6wNKY|8FMc+L|M+x zEV}#VsO`G*L_j?<|8n*I8DW^k>pOTc5+QJAzR+@!L=2?CEh=9uWielX3Fsr{pJd%{ zzrEb+Cud!`$=KVRJ_}){=x>oCV!J3a=Wzw2>N`%dmbOB~?&$S@cRBNuvo6v>$Zy-% zLJf^EB=f7$eV^t~VP-eh{Fu3F{z=yT_BR(Z|BQ^x!g;LA=ClFiDXInNR53-h4MR^; zsY$54u4AaQYW_*q{q}NM_l&H}(tJWJQ;n+cTwstAV&LB**tnhU{yWu^`H=xD4#SD_ ze0jOoPtLkEaiNi!+Fk#&MaR4V66@V zUbA>0KV**vJw7%?dn5P;8?U##_=xkIX5Gv6x@Saa7Um;GJ75GFtTP)EXnFw>@}SzG zd)dtQ971@jzJHo^|MPOr<8w>vwz8R;9gJsZYd@yWebA&iPcSsh%jK?xvg}dO5Q4@> z&hy91nV+0>p=>0wU5?iliaZ&PNgp@FM zWd7wM&t6nWa~@2@Ilw4aI%4s3P%9fr;9zi}9GxFk@sVCP)K!nnzg*-wBX_fSeL$wr z&+-xdM#-k-I@D;lEp-#TW_|CYk>@1qesj5c|BU?2!hHQy2hHpavtorZciLNr4rLqg z$2tdI+;n)vc}}wKH=kWB@|+RFS(raGpc2bQyP!Vnwk&c0*FtEqDWGk$lbw&GtvDmH zbe=CSS8<*Z$61)K)2g{R=|3|@7^jtS2jF#E2=bK$T;hd~`Tj}PefG`eUOzeOT9eq1 zorSf!jPo@I%Zo7E1Ej%~ZkK9@`)#t7q9Kn;bou(9U(o#ItXm#t0bq?Cf zgzK;9rpJv_5VVq~AcNXT8CV}hdw(!7X*B?&X zn&ry6O>VwB0(-pjs_&m>-OB~eGeSHI^QWvv(M2l-b((EWkU~q;N;aC5RdX0DrmoMn zOkPfW|8lMR8Cjl%`3KruWzOTPA$C!NLgjFW^#|YX?93iYgHLqz^-r_z{GK0L`Pe(H~p8E}KWj6Rswoy#D17<};!_i`Q?d?LnA{di9tA_WWWe z9CNd1GMo~;fX51EdLzf?KfPSqs*TJd*xuk*yFbkLD_VdU8uqZIgZQnKZ8<$+{z=yT=5kp#X#Huv zFR9k8^Xfa{hVR>V4$FrS_-RJ^J^=D{PQ$&*?9uCgd$E!&j(Vq=Pl3GbMx{cR#Zh^5UNEnokSm-}?j2m&q4A1Ni!df(G_CSGrK&@R!;mk8@<;A?wh(UPxzx+hup50?v^ zX9R*4=DSE~se>L{eh5X4*>1F*Xs_S5S>@h=eo=s2HUA{*{{C{#6C9j0-}mNm-)q<* zV2eD~O!0ZJVkW!YsLN(Y3#sCxf;rY&m(KI$1z$fo>o#$|DMWxr&ad0@-&%AkTA$7y zx6QPFY_^rhw0&v*Z!Q=2&&UZaoCi<>NycQD=?Os^LQcq)-d)i-+p2NN@p>L{o|CNm z&E-JCGvY!E^DWXjF5naxFffh;`gE1bAkVTk@SQ2>EtLL_oF^9Km#_czA1@a7&xj2z z%$HgVcMdDce-U|TIME0dc}8TI+^sE=?vH%BF|Ix`|GUeXpPY4@v7viRDU^a1pak^} z(m=7UsGJ|j<92et4pR}1JTd=ry>6YHb=_7X{^wc^_J}e$ZkBg$Ack(8dsj0EsD8}+ zldSvo!3|s0Gcwyk$K%-dPqOZRU9Mz1BUH37 zAHg`1x@lt5av9@WR|}F`>!wN`)7oU7UpvgSJ3GB`T_*b z7ImLgC#+cyU(u#kkUrAuhIG%7`IoCWo8+upnGNxsPQ4%3I9!JyML_y)ph}_5J;=b1 z#Qpep9GQQ)UiXZs(c<-$%QTEEhTg9y?gwgFQ|Fx0 zBPd(smLv23bh*froOR275c;w9J+)pJI8Hz$WI2@nK?&9dJd(CTyXDCI%b{#%sDqOCFqKRSCAkF_gNR~?yu!L-FM)0{_%?D&V(o4PenH%cLw zRL>gT(p_cZtV7p6_WCDT_xG3UbGE zX<>c|5iAXY5I3V_lf&RVzF)G`GX`^p3hWbIHUA{*{_b+E`Wd;Uh51un){_H0MnZ8u zvBD|rsoceQ(N4>Og2eDh+6pvd={&!^T)lrreraJowH?lbM3@`U`E(^P!?4_vM`>zz3jUB`X^cUx0fS>#YiFT^=(7XdF~jDQ{Xz> z#?o#Z+l%(p$xFh=PV$-CqvWC{~g-%O>kC=awb-%h`+)vKBgctzHR&V657|ppq;xOFa za0paL%Cw#qm%xq?=IFwXUjJgwLyt7|^_|;;iX)HLp}J`GIP^@c&q%8z!^;4Bl9m7_vpGWV zpoPadWy)j+u1w`d>jwceDA(G-Pw<+SI-cr0amjUG27Rg-q~6%`?#RNp zY}Ac*aI&~S_=x!@S@)}pQLyXa)~7j76Jq1BI58s*iabiT5T5lFwD%_x_X_Gq%sENks(~Q5LTiczwgTmpFRz1$eADRDO7jvF;Z7NWjOF5u@ z7jM0OEPs%Nacd7jjI!B~(N22g^-r_z#b#Sd;MCX8oStvu@-zmCaGCiJK#4K0tv}yx z){cwoWyhcHY1X~mr<<-#6)SVL>@nEv=K6GP{v8gO0d@}{RRlC>g+226r&;%6y>1RtHRODJt=^A~>?7a*!{vNGIqO!=OOBIO-410F zKyD(9-ot!E6MWP*&mW_q#?0%;{6AgJ{N$`#LlQ7~oBuyqx*Ty{?>V903srt;N!x(%I4<*axG*I-O$fk(J9lbl8tx|6&lW8@Z{z zPsA*@Pmj~!fOW8`V4Q`^A$0zTEan>CM;2b4V>mJYVzaF}^h44k^=k(_n& zIF!ZxZBInaqq>LlsCn`(M<}c-Am?MwbCPwxycoWJudR^gJYqY52e4zH<Bif!C)jgcd1|`mqYvy|cq32NuW@ zotS^Qf;s#$?e*s#?@?{Go5nczT_NQi=n?KRb0Iv!W;U{Zsn zJ%g(eS%$v+Ga+U+W2`9D7Dnps**{V+pK4Qm`K!yBpPY3K5NQy4eV21Z9)xVII`a$n z8|+mKuJ%1<{z=yT@^U3xx;E7zBxmDzH7<7G`*Dt`3@WXS^{LSXBXq7iPh|F^Pxo>d zXVfE!zE7b9M(7CIAsXKJLEJnto|tCGdO|kr5p^WR(y{r!xm?W?)nJ^I?N-D4*(p! zfX6D%SVKNC|8jvdU7HHwF1u%tJ4D3%++an`gVSJjE_cOn$je9Ox~JMyzxn;eB2Q=} zr#X*~9OsU`*39@m0)}dhK97YEbFElp4Djq^&?Rj-2OWlnh&{sjqKYH_p$8^0@!l$3?q7lXcJD`^W=JIx_!a zv#mN1ur%kXO8p?k;vMFW@KZXLY^q+EQcGB#Uf%T-YtD13P4%CbYgYn)Of#RT0XmX9 zaxOD+o?t_|B&gS|5j%UE2)^M*%sKma7ncj1>DpAIx&{velOgY;K^OcFg+FX2TsGSWlENc# zKPu5>;QZphF6KPx+EjUv2M>58cvQNrf(Lbl(K;pIT)hlE-#>yd2Y7g7{^e?(bZx5E z^@G|Cca)3(N=P=~(^9o0GSQR8%L?L8kNEyc*8SpgbKT$@q(z=C>km!ggS8nNj4*5} z2vw=|9VV+QO{E@v#Qc-2`^Du*0m1f2Gauj1%8*ajI|In$XTUL0KUXzYMqiBCu-+`5 zN>hDtxlVnboOB(VaC+R~4|+UN?l&>o@+E|f=oE0<5RBH9tQCx*rRV?0cbEHclXI>` z`=O8X-ensL6mjJl##Yz>oSVsA;?nKHs+vJq1!f}$;rb-(`7=tZuKiI%& zC_Uv)f>y&LJ7=w5@6p>|4jfO{r5ft`uyn=VU*@7N^qZ0%8I^UtxHG}Vh;+K&Va02f0Azh<8q~Dx+oRSGMeTdI#|Tbi~$LzEv)Pshq{(w z^T4=$-TISk`yZF9G}ASyT7a@Wbn$+G>gaLtXvIoeA6Dq%*U|-JWX*Fa>}*$9j_$n*mF||NM^^i}&e@RF0aFEel1A3?}Pl z75XDg&9#*p`?PF=3bXq5r-D?UUohq*=h{k(WtI+%g7HAbX#}(-gy-OzXld(XsvcPr zjh&dIx4)p@C+FG%cxI;w=P0L#p;wISV4B>0+jXdfH4)eKIw$u3j;z02rI0R1RfM#- zJ8ZkTLBX?fX~Q`BbP8egf9-HtoLKjqlU)1x?=R=~$=&TZcBn3D;>KqSSmyHm09*qu z7ehe}3|zQw{YkF<{Bi|;x)_y<3_>P`zL7a#C$l2j<2A&+01F84WNbSWyzWfTDv^t>eM9B}@@ zqEl1~RSB+|ZBMUz&PlHQ{Bn45u+7qXtACun)|1G!ni5ouxRQkHZb>e5Ro1iBsSwrY zm*d@~3sET)%nA`0D9rk5OUNwN)VPD`jJotgNsDUz?N4&;XP3it(signI!uxf0Ao|e>v;ZC8$bQoG@ae7Y`U8v)U*TU2`NzSo)eN46XN8rwUY` zU(k9{F3s=tf-M_M*I))iL>de#WT){4JT|kGt}sPefBTbM`|Hc)+H?Ub$|FePI8p{! zJg1Hs1Y~wcj*zwxl@%_uZv9EF{q^N?ZMy!{p*xhFOCIWCk!BBjLN&Em-?(gJzlPp# zCw{H@y~|R5lDl>+!%>)~YOQGrE^F4GbE-Y{?AwdQ`$&XoF^9r*##qJa$gIu z;ql?Bx`>;KZvRdS zhk@vnV2|qfi024vOY6V+!{w~^Z%p(1a?pM|@=mQLw0CGe8hRp|QcdraIhD1h^=uXG z+tT`Hmt)zb%TB=)+h5hqvc370$;3M(guXp+OpIt8Ar;APv`0M2X{8YEPSygh}(9-6r z(roq>+2!h-0C>~hzN#m;-a{=S zv;J%&B{o>e7mQAMn1A}qoo{HRN;?&tdU`p2UAo{DHU-HJ7!*ROY(=<_K5kR&P)?1l zTz&+qty_Q6*FOEz(k|?C?VFNA-l_~IAlYl(g!Q`5_TWdZ0<`u!Z3=_*fQokyZi?K*qpx z$g7cak2Ty9MR16nf=6)7Q?aS1m#fm!#io#Rs&NJ%&vDaWzc+nw*#;s~)`ziavY7_t zy62qa+NYO`Iq6zc4)$4lJeRN{&3|a&=C+)D%Ud z41go%n7^s-=jaTzxiwMcibfpL$Rl6vNv?f*xyjE*C{5{Nbx?-m2Qn#pn?FB`w7SP~g0o?fm> zOV^pgqX;=EJxO-o*P?`*^b7j1w4$sgmsHks?WxSv)5}%J=`vGO@DW_g-8m)UtEK-> zF#^ryaL`s!dT|qP9SIET+tFA1-pQCcYDbvZ1Ty&~My5a)$&9yv=J+>>Lxk zm0Wu&GWGOgJcTA*WU7T#l0@;r#_>DzZ@-7yr*F5Jm*Io?2Z_*W}ic*&9>B7x+m44=>wXwl%(%BxG%Eistu3fYK zB-j4tVij_eE-;nhi_V!Nn-&Jt_e9AopbS~m_eLj$TWtM$Zx!(7QOvm*o&$$T_4~^D z1Nq4rra(#4>6c)**dyrnw$Nia#i`KMw?CDadU~;$A$%;=dMg5*JFG#$k9coKlAx)x zUpP_5w#IQ~^vElobE+=&^kS7l6a7$H%n9ve(?J+i8Hh;m6fk*%@KVOPGR@&50zs$Z zQop$vPXUQI)%t7{6nn1XN{z1;WK0_iO|2l#n!6*kw??`C_9waaSN}hI_u6CGah-Yo zeSZo;@6YtUUw~EvMUlo3uqZW2X{=YqzRnnJOAXmQ7=Qcuty7fhRB}gUWM)ha+@#$m z)J2<&jEo&?#ahq$KgHfwrr2^}ZV+YyxnPZVggYBugX$K`VM)jp{qe^D;a$p=e?cuN7C4%uE?ePjwKYk;7R47d@m zyTt0B#M(a;-23brvZ-vzB&N$eh6X&SUbL{Ck9h1GVK_eK>%D&xYrih`I>Cj_{c6c` zsG}%ccnn6TKl;v_gn1rx6KO;sWv^9rPpML0d|N8NM<2~yJ#UL8`r$W70=*N6CiQz~ zh>~}xb)oBVy}mJ@LZ!Yamnp;R&8)vXM-k91LsZ?b@FE(9_iX#(&UuQI`l4K(laG|rV;~|j zYQ=}u>RHo771qsfelq4%2j$Gmul6ZX>WhM3ZFa0h4xc3or%NW-)kxuvywRC3$>Jsv zz6;kig{MHNFTO8!a`J&v6XLwNNHqnVc6Uyw>WD*Pkb}!RKY%3xPkzdi`l4Kpna`8* z>K+XUnCT}biu0lZzKB+I$P7>YJ_NDrlk+sz7VBG$fqKfja|YgOht8&Re?(a%(8)(D z$25Pq>6W)`B=T2Z?UPvhMX}D$_yU@gNls2uuKF2=(p$u{s+D85h?IJ6A?;1vm``Hu z7sWIpbgbEX@8s}g<&5G9=-dNhc^Pt;nzcdM`4VehSHR=b`Y6ZzW4W(3JJ!OV;8S~B z-Al3NlLmWFZ$SV+6WB+XkTIZshiUlc=0sm15+{WQzQ%59oqR zz^+o_bA4k*Ncm{*%T=TDNm8TvS^Zi&&TB`f-^q(1Bv(rpoyldIe z&x-aSzN|nubp^eM>(xJb*S;%vW9DO|7|;!)!rDmjgMDsK0v+(h` ze^)M3$fro@?eK6RW?bulox^LZ=ja)d!s5m90zH$g_9v_VeX*0150Szho6qo*a`SkV zFERTtDaso6VXf0_E7yzblk+6jzAKmC=QE_n%~wmTKnoi-+#sv6G_CUrM!Blcl6?-> ztA7$}-<8YK@)1%}c#}QYU1s4`0s{#_6(#hJ2YM#TJjuoN>Yv2gci)yfIoYxHJnrPi z&a7J~d4adxIpjJgB#PX##?rce*SggngVnoo1(AGyR6CHV_gc)V#S&z~UFP9*BC6kJ z##Hi^VK2A-Nu+)E-^%TL_Nx|f5+lcaYPcB56Hvkz-IREsZ0sTYL}6NYk>&U|e6;iB zO0fCtD4bye7jnkB5BK50+i*F3!K$wf;6E%@0{8hO&b}-6rj5E|-pj;?xf4U_n;3tH z1mDy~sC1|-NEBT7bAkl%G|ZMu(DJ!a;V~~q@R(Axlp*VwsDI!vt@R0Fnr@qTJbZL) z%4InD)TpJ_q?#6x+gU~o&8YOsyphX7jel|~Dl~~2;Kz&qvRs0b&y3P?SO)cNJ8#~h zVyf{J7)3gViME(|2sf0~pxZh|Iiwq=!Fl%;By!7- zcmCarTPEKwfBNtK8DIYDm*X>psP2D@CHy}AS4}+bBy#=D5US@l%Nf8Bv59owo&iFaFDyU;W+J-+cAu_g{Vcn=jsd z_th`H{Qi%>`|4M}d|cnB!{+1q4m}(7cFO<3cA9WUdvzeFS;-}&TO7bIFYlN_fBpJC z{Rn+nUohkj23st#!|c-K;EJOJZJM4Z#q5d>ZSzHNiBs_U^?f?{J**GnR{@R?`<#P* zH?nt{S8^HNJZ;2uW`)BIV%Qo>A~2B67D6i^heX83c}e;$65ykkoY z_J!#B_3Qg|2zyvx2X%OkVL0zokomARRpg;go=khvR%=IGr_3R%e)amEfh|3(?^u+Y zjFFqh3uci=i1b);udriKPbUa9_VWBi&hz^9`M5rj0z9s7#YR;Wz8w-6W$h3b?+zh5 zO#HT!M_CLaUVI-Aao>({3+ zmAAfdWZ3!@Oe-{!LJJHV9H;GML%SbAn7h7TqW1Or_4(oQ)+YgNDx+Cun*zyg!#wBJ zCJu5R4Q%+k7|p->{k|oB#No(WpLQHmf-rdLRe3bjjZ%ii7ppa1tm5&o`)6IP?=A5o zKCZm=HCPHtX7MBsO=HW-VqR4RYbIVJE2$+VZ;317^}pZj_z}#%<|F~>`zW&V{g%ln zb(4m)g2^Vazy3Z#X8ii~WycRn2=XO%i(?!@E`UURbKqEHU&}d-y7xfLE_Cl8e0ahb+~iPp!ODsP{?U?H~0x zM=d2q?v-IyfBAic82I(;%Z?w0%gy;C*s;@8c~BlyaMRgE127xGw~t`?dVOz+AJ0I5 z9^#ww&9QDCC+ptJ59;tST1*nqcl8@&c&)&8y}q}^k7qDH59{l~)ntPD)=a*yFUDhZ z_$QIW+k_x3asS1O=k>qe?D#Q)Y-yX#=8|L3msw;OYDj1H?lj--W?Zfds_~qB{ra-w zhr(igj%)%>##-VpYA=Ddz8I2=*~CF}IxZLHW!Lv}RGD7?`^}CY z0)|$t8p+uOT7L0qm>Y8lHKkQemRe!_a{r=)_xkl^$B(F=*+X5bDVRkK!XAdFDzdyr zlh$PIc76Ur{`%_mJp;vg`2EWM&OQXL>@}RfPH3}Gv<>Awb+W-Vczyn&`270yWycR7 zHWMLAkQyJ(-%L;$OlfnbdfwCOhVHNL=cr7+etp^R4;*v?0)^43(FE&uzgqL&_jG~E zmPnY}$MyMpOZ<2SUGwn!b@dSqQoRc!;ztlc7YfvvU#X-nfMp4kL3E{Fzkk{B1D3ts z+Gt8>_`h$XOaB0GT{Yfs_$UcpOG5R?qpQ5t1An5Fu>+ACuN|sme-!q_>hu<$> zk>-eTKKO!=V#Mz^Djh3q5O4~kj_$g?7CNEVuP-}(cw3sY^|S=K@;-|3a?L|8VIcMp zf|Fmk3$A{@Z;2nzz*-*m&$CE3ifB%HYJDyg&lbK1%YoBKaK9WJ1*f1f>?{CwCBbFcE#zwd-V#5a!J<6upDSb-7bC0Qan4`k5yyVR zmtv?)otzHfyuM#T;`sXg%Z?w*-r%ldH%}t1?^o&Gm7^TkcY8B#%c&T1xqnf1d;R*d zSYwBg4p%t(9?=A7;834({ z`ZgUc>T9<$=0)_6RI|^R9=*V!DOtN?DzCnKFXciNF&l`VMLSL=IA z{CEZv@~}PtL-Vup`;M+s{%592J;q3nDtX5$n}RN}zPH4WXFwni>(f<@R8;*wUcFs- zmC$9ye^T2xV?H)f-;J>R`t#><%8PG)tHyHlr@eP$|8#1gex-xzx&|EAZcL28z9oD- z!}568zHx+6slXWcGkIQO-U)9CZSzQ)sw+`Tu1j_Dbm#>4KNrc7%XU9kcXLAOY0 z+(&!c%-Qiunmm24pXP6f9PZTI-HY;BJA~(#C!ETL-zy3;e~fXa*&ql#5-7zt1P-Gd zxyw6G`k=#|Jjq8DHi9M;Xol0vjb&3f9$hyE-w-$MD&4#jd=fA$!u}#lFF8U8T zHno;2^e#|jL;JR5qi2GX6w8HoNmTGwE~TR;2uTNhKJ z(shw3zGcCm4n7YHHpXX_M#qf{#21GA!z@JUkOzUv>xy~rpLKO4etZMGVZqM;D;^eX zYRZO28)}f@l48t&#C5IePgZ*$-^huaCr! zv(2~c@TY^=!-C-&WFZ&`RDR0yHZ(-&n;5HJUzrh1v6z3He!gYBpN?t|>#a6+p^?Np z7}`ae_-1qzHVFN+-rDfKzW(NZoR7X`y?%*#2V!oIb25x@qjd4fahdQuZ-*OQj*x7o z7p4C4K>RpCeam`3U2c2WUyc!5NQ$HhYO0zKI$a=^szpHxPyxZxn~#>5BobC3~kU#%vQ#HpA^>x;r#A8 zox@}%{VuJ)SnrQ>+P9pC>=>st;ii@Gz%jWWj=&qK$KH%@!!bmr#2#np8PbTR5$Fr8Xa8U;&nN!XoP!)4Dqnug}D-s5Fu@F>++ou;Sf^H zd+yp(hC#wiN{j=ovFUvo_Pl6-S{2>v3h6eGlVs8hv0C^?gw;OE^ z=i_jlHi@DSZQ^`RxY7mm;7Lp#KAi|Zv*hd`2jC3KPqbv9!=*Opv90>!gjT*d^z75& zxIDx`nJBvC>^NtG+aVN9=6UY2FptX^WyVCS22UpUg|%JW6Y+~Iy5#Io=UyB83Zlit zKs?v=lxEenTQ!b{C#cF+3Ucz}WbJJSBRkriT5&q)^9}P!eMZCUz4z86<~4QKdOjz1 z`N!$n+m@Ui@c3}*miY2U|MmWYBXTouqgL2gEIHdq)-MjmMZf87OU{1S`PSrVf!IP% zQUxQXUSoC*C%9FJpfpPmw=P;xZ(DM9*sHOBjU#)@kpR0fq!kh)0fpFR^rL8KTpx_c zTuOd^&rlm4?&X0+u4W!oKw}yU)lz0Wv&uj!G1G210siLtVEj0Bd($pIgKBtKGF`zD zFm9Kel(?gVfQQi~iab;Cmdkr$a5`vjMRz&-fyeij4pyNQG1NP{c0;dX9$dqUbsBT8 z3E!ZLBE{Qw+4;*$krjfp+T3qdGen2bUsf{>w~ZO%rihB(lsL=&xacltN585+Hvkw? z6Ysh>%dnKX>2aWadk!-+&-Ga@9Q{J1nYYWhu@YmSA9Sfu!n;n6L9wsd$$8Zakmu3$ zk_$(_XP^rYpI=`a&8UIAJe-~7o_>ory8-}KgfhlfQ&(Isxp4FgDRJH|0~k%Nw_cez zU|xMdOUXnLx1-MuLoEBeT=I|06>t0cvV))HE+!+q_!py{dTHi&QJxx2-rk_EnsTCf#p}8IF-!zdj3o*^kb9Axq|ba<@} zO-Tnih*9LF5YDH3Kbi?X%*z!Qj(pGH6CPF^l1?VlWb9FwXY%b-@MR8ZqLRzV80YZ& zy4d5wfiHfOd0!qUb%@R|l8)(_J2RN=Sv;||(UE=p3a$$+g^;Lucvvxhj4MI&AM?-7f~3+4Iv+YrJ+B*xit)M_ zP&n#^lSSUC(9Q0vT9yfR@5}3S8dn-`q{wEEd%9K{xID)%4tn4H`=9>&r+@#KZx0m= zUA%w&zy9feJd`hDSTJwJP$eNsCV;~mil&XLc%j!D2q6^=>2DJ}0H@-+KmO)7Uw!}W z*T4SNFVE$l|J6_S{kQMF`R?oQzy1UK#1DV;Bx4#sUE+A=$I1?j&D@!~)6fycqfV!| zxEzf;98r3nXV>F;eQEpC&;Mg(M^EoCIumlmiot-JJ#>sp(HiYsYddwD6ui^<`v2g^ z`rrS3{mVb?sWX@zVJAN7=wdXjqzuj=`(3arGrPuzYV$C>mfV^bx4%Dq%}+Ib`V4;Z zr+S7I@o;+u^UyTZEK!K0-GK~}1u#u5iTBDtwYW|vU-@Od>8El&^6m>^+G7MPnUh5n z?6n#uWeZOzqOC?e&(MkJ86L5A7bn} zQU$*#Axg>EdxN><*m~cMFw>WZPuTd(KT~#Eaj3FL(838pMqy0B!<06c&8`5p9e2{k z<Vawo%6A0P!?R@9JqfhR_5?AmAknX(g#D8wkt6nXSZP-;egi@>f4qfovTQl>~X}W%F zzA}|~!_SnRNK9ts27>sTmXq|TiKK55qtMAP($O|qonHQyo=qf5|C+M12v%!)z=p-P zh)^C+n%A1Cis2iGG1oi7jLRSC<1C`g!TWysfByWZL=y1~&g9|bVV9g+5bKXVT<{Qd z-Fd)(>$(o(&UMxwU;aoj&iZgc{P<_OejXCVNlB46SYI(D36j>V z;LK4|ki@ctPyAFLU*(_Wr^?PFrWtwxEQ(cIi0#7Dd#%jJsHRCGnAt-xT>q|Kd6~cI zmzAALFi`4Yx>P9cuR}d0!$`_lO+B2*Fid`;+HrB6hrr_D2xgZk-t=Q-XA`1pAjdTO z?rz8|8vR%y*D^;}ceScw!V4lq7!N&-_z8gOYi;+xhNH zT^R688q1#YvcN^x9Aung#Rz%ZB?dM^e)hS4s_eXC@3&zNHz#FovYP?Lho%A`V%QNa|`340pm4qVa_`qz9#5*6Y53;b`yu1?WwuKSH2S8atl6# zyLmW+V+fA6;Nym2s{F#U7qQvMm3(PF_lht4<>em2l84{c=ePv}oSIj9;U;EAUndy~ zKbqfhUm%;3RpCP@w*&bkeyY!(UyRxLMRoMp4PNroC{A_UuZ*U<+l?WpudfO-TjHns zIKTKTzpL!@0*7`WYN8X;F^F4GHC@r-ruB5{F)>pMH^PhbA`~p2`vhiZ7Y&<;mgCEf zRLco8u@Cr+MMG%TJAyd-i5Fx2adz=}Zo%yI;xyFX4@URe%?N!UlY-u$%485cikj2% ziHV(uU)JaOv9j|E!awRd5}6+T&W}Z6;883Wq@pr`0J(l#H#$RH_3&eTjxQ@}CwaGE zg9VI;BU*){K!@xSZJqJvhr;pEB|kRj`RdF1{P{&d1M+?_L=LkPeFFwn!Dm%O2Xb7k3jWvv;XMPm|vlu}QhpP%vk~qg5e(|gNIJx*N zKa>k9?>EJEnm?38X$bQl<9&W-Od^mYR-fmnsqafb=}ta{CUMQ zc&CTsH_)}zJJFtT$Y_step5y;;8(zFSX}HwB2xYTkXB6DX+?eP$mMig?uEG14Q_nYM}|NZ#OgGlKa=+wihBebm7#??Sl5rf(RopLqYcH`TVzeRKK;nI7$ z*Y&3>%0FIKb}G>7TDWqRSvz$u!U&Dq8W6fcrEC=Un&m;^@#bY^2XiJVt+Bqzn_BY$ zf{jS1RlM4#!7!^g_Bnibr@eVu+2MF*-777Gj8ZY?d(wa}7uj{2{heks| zaxY2rqB!?QN*yVSn}EbWaD6Q+QLm`M|J! z?aKcC_`i>T{$X158Gh8mO$I0+n~9Uw2flV-lw#&bB%N?2;iu)=PVGhd=KMWf=`;3U zf7`>4R+=3>PD5QQCL)wT%uiKDIc6^$puaZY4fUzHez{V|vA{~_XQ)ySdunYvO9Q|h zYZAQ!>CF=Pwl#G-A*5@vTxX9CRFRct2aJldA$uGZCe>(F8P5`_g$^CBx&_#5N|sQgZba@7!E!+@++^fTn-$YPTsy!0_RFun{ra0PzxoIMc7;}& z9ae(db2g$Kn>BmN>>vz5n2*MPWU``JV@(%dl+#;ePqU*;qejXaZomQznQK*ten>n- zd^9}=iDok6a;5g7$V#(=PCKzjkD$YmUc82^1_3{mNQZ3;K6qm?_;RJrSCN%w2cZp= z619y8s|&kHU>BQ_MID^O4Wj}(>vvVAkf9TnijLC3(^3jlv6#JOO_P+e;vcpl2 zNs63r$CgP_3!^DT6P+X=JMfqbDj430Jm{5sr=pWxY9f3#i-)Ly9Yh*v%4U;5HY*1u zhLs-tA3p7;U&w1$mmPKvprt){mFx+9BrKFduI+sQ3eIiEkZ%7$C*c;@t3oABWseQ%$4?Bqy8g`6z-JN+wP0lXY}v%s-sA?|%Qg-~IO6@4x%?Z-4Wf z-+uG`yMOrYH{ZPb&4(G2zyAF%zy8iR$``-?{_Ed<^S1$%zy3`D>gzvz{pIi9{r$V| zzWeR3zkYZ5zxCgK|L&Xbzy99e{KHpYzWe^&kNz?DfBV&t(__h0?P_wWBN zub;`!j4eLd&`-y~hYg)TNahAx%kR?>42vheSmI!-hqbk!uMeb`zwXITa6>;Gt{*mZ zq+r==*%^%((WT^)fqXb+Rc=Yy`oK@~Z#T|Qctby(RXl8H5AJWYLIt!AH2gRio~)4K zkuRIz`jBdTxFmnV8~W+w=V3z;rb(Qg(B5lI@&oe(aL((iX9IOG+2Yso{0V)3OZ|1f z{};SMKb@aF?B@}7{ve3n7Qe5g>X92C?If8Q4TZ~ zP!Uai$bx^m8~O|%?_opt5J5_U*#SrAaYHvU2Z%SPAEe95GH3aKLi-7C=%?Qrj~mL! z7Q^E{@-7W!nqxkcOlQ+Hq}*X@{7^dh32$ijLy6YT`z&A$(-6~4F`P9=UeAPHk+j;$ z`+vSesoip4p8GzK2lLGg&6TVPeCF=34PUJ>wl)A^Kj-zo)G5y0(77TA-GP!=9t%oU zn0t9{3Q81*M7%2~=FcY-sw;OxRoljW-iV^LFQTYPxC9~qao7?Mhop^S*C@_<%pOXuQWzg(4^c$#W~iOk>E|eKL$hB>^wKd9!*;GUFam?5rmbOMYbS0; z3nkj{^Hbi2X1|owvRha*+c^LZ_{I%{Wm!^Qz8Alp*A%8rDWiC-k}DKv+H6K zy_i`I_|&R~M-t>pT6)6?_g!pVQg^71n{)rY(uFUbo@e|_MP6yS3Ql$T=A#90Cw z1|fZZ<9_}iH2dqL;6LVuWc>dVhS zh982`L21kH)qArY)R&|2DOKW#Y~XiVLWlSuvHuBgX!b)%f3r~)p|YR`ku?cV0Ibnd z1|4(@99(~Yj`H&}faZr2x)`Vmgx9Sx^%j&H8@d`Xt@V=N8)MG?t!e0!3-&)q+VnSd z>JKWaHv6e05aA~(hkyimd!At;3iWyG_nkkQsXUG>e>D zF`{Im2LlX2^-xJm9Fq9B3oko6hvhoR%P*$SH!}!2`eBb|w?Q5V@)}UK^TT!VWVii| z!pqLi6d63uCXEyy z@hI74M@i#3`$+2RkZ8)QBj0iL^{t)OVVG!qo7Bu=6}7>#yZsF7`5{Ug^qaM5gV`Ef z?&@yU5|aqWVE}Y)8+i@UpX`PcG10B(g2DjoL_JIe_Y14Tw=O$BN_vOgA&qSy4(O<2#?6+mJD)WVwr-4R z{OjE=9wj4>$g9ZFfo#y2Mz$$w+$7$T3({^p6Na&2pj3~^d%Jj)?6ad}TN@Z8tu&zA z2{%;0(52pzj))0D5y$T$vD+86hi^P2&tQxnqU3(ArmO{-8m`XEJpiTdYI7*`i$Nzn z9@_99-y|2-hi_eWc9c}4p-eXeu#mEZ93z_D=IQmkn1V62AG%byi8YoDH$!%mAQ1aX6tAlFKe0C7&Sj zxF^dy7dD7*JtWyta-DX7D^llUJS=-tdRPZn;Q`)ts-2jnPVRQ`x8#r=B{!^tI%b8; z%M0#a@t_RAPYrD$B^)wxlF=2Mp~7c7J4)_{_W+K>tzANYQnzvvGG07q0}+x}<4+$n zd{1tY;%~_zJ4zbSVt=Qy9w2&WI{@K0z%gPuFNc|WTBOvyT|7$00C!%L#GuBc9!T|7z#i6d{>tUxOEq+U0pidxsB=2Iej;;j8L9_+1} zHnrPT@wenNSl)*Vkp1~!ls!Dpac;Wd4hfKSv&akIs>a=zN?Zd4QudP^v!mpA!no>n z7%er2Bpo!})j$rR4JlFW_+(WoCy5E_!pqK%lBaUnQQ2*`9=*D0R8Qc$>%3w;`$Y9X z|E$ZzH99wim!18V^Z@J4Cya2wG5WO!XM116UbP{1fIUbzK>}4>c-h%el3`yvH;%P& z_oxBl*m3wG#OzOOmda#HoyxbX;!*M$^6kSX$u|>OloDbOPiEta?rje;s$I8s zOrGuHQF6?VlI#YL_3mYL_z+PY1^2B#ZrYCL(9{gbl8>_BkQ6>7*-_FHcdtiXeeQ4a z?L*ZPidX&Nn3^yH1rc=?u0P4*Q8F;OdEusF1Us9-=3yGn=m$X;t29xv-G=%+C0ap) zzg~9nC>bcNyk++?Z0Xc-JIQ=xfVwy{PT{T6>T_gv4&T?Q6dT3TXXF{S?86snIBQxe z&#_vw!wXnjVfHff0&bo9S>1KL{vzjKHI+Tt&#+@3SFN}m_6TYt9%5Z|%v^tNZGgUg ztvN!}*N+6wMa5U09U{GQ4@g8Oc>!wIJJsDALFl~@$ddckp})Sg=kUWSyw}+ga-^iL zCZ(PFj5lz5YNa07D|L85Z7di?o6FB}4qi~x3ZS*C?@89?j9*GPW5HiJsT zIUe>}MNO#{%XF#xV;U44wmP-f#iQdh1lEUDn?py#bV0Li(?zHyBp$met-TzI;$c#d zO6+y<;P?z-^;Y+7r~M9S@EwiJ2vhT4pRgi zmFgkh>wGll9>HAs602<+h9=rzSE~;HsIqs+Gqlu)y&i)+N>~v{a`}_FaJ!D?M3SNV zJ3y8miJLEepM_VQ{eDDp1(a0IHn$-*(l|t`hKb*T7NU)y?3aj*@$D2|b#`pzb4j~J zfzh1d3}iUZ`xkFg8Gf9AL+5(Ft}#%>6km0AY#b^gIgf*zhNSyC3?IE0)#cZTFDxq= z(I;`Pi^s;GNakg#kO$l9WdK7LQD)J%UT|Y>&93eMb-b@*>T4_>8zV=^TQ!}9k1^u- zou$`lLCP?w=o#LSVKm)TrA|ok*cka(-l{iVhO0`Hmlx6+^J>}OAgu310&_n=!bRKX z^5!cZ8zcA4TQyW~y)%DOc``8H9Z)VTOuf_NRBImqET-;|;<51=ChWs~t=G7#lvPsG zUZbY>sxfB~UbzC}x+$k6+G2COmkQr}*|CuT0~eAV>CSUrrW*ZqR@ruaaqYon4G$=i z$D%OAVBuBQnzy+}gqES5>NzSQ`gmP$$5$xjKo@hu-55}9*RS+BDgi||+p@Exqe22+ zJL8+PiZ|F0M9#C(w$bZ=@nh2&CF`s2G490D%gzpu8?smH9*Or0SwQ0kp_&`+x$D83 zk{mGcbc`xj>1Aif$AbW)Hb9~T?@>Sm6@EMvmf;h{!i%xe16b?hvt2qqIwaWv@}$LP zSwO4ZcPo|dse(OE#K`CcmELW4YF=n(w&W2ON*$_gheStj<&#Rfy^YjGuExz7 zzPtcS2T8k~9VLeeT0-IaHV%QJ$Dj9t#MoV7tJO)U7E|?{=yMj{?Pqwl4=ITW+Eyub zx`Ey)o}mtDKkC@5XH#v*Jo(eab3MAsrI(!@CE0Osd7^jbCL|Nl-T*|z0BEaP2HxSL zKCqHLy0@c;UwYZuQ4;vF*B$U2TRa`fbsUn-MAJMR?Y7JQK;y5^_E0`bhO8s+ldMNa z0S}xNRlFjpTfKc@=@=Kc;M-dRU6ELJ`6wA~jCsrMTh)^M`Zz$bLFFQL*R>X--O?$>+CA8XGT-kvAXv)lnNJN#Y z5{IOGlnn7>-XS68(vOKjJ##6MZ&Suc!L?!w*D)HQd`T_4e3T5SY2LD_Y`K-HopG?2 zxbhH-Ix)&+#~MhdW)d^6cRMt*g%3$SJhDAdW_TiaiW$_SyinRfeAhZPVPo!XyXWp# zIY}s#OD{V+N@{%dT1+wK5r<@gav^k9kz&x)9%I$2^dxq>e3T5)dgdWP)K|js1ZJqG zBt`Nv#n`{_I1ZwIGaadAmyeS9xWV=0BplY7d|ahcr_K$F#_rb6@#8FHY0*EvJS63# zWIohyoXEK()|Ne6_7ZZgR{d<+961$$WI4E~zGma6|a)kXWp0t7*Ma zt!1saLUH*@EW3P^%m>t+8e)pUE#8;!(&z_?xo&mPzzlT~#6U45mR&wd=40U0(s&Gv zYTL$>9TKk_5&;j&t@C}7&S~r=mR&wd=EK&ycJ7&(aII7$@p3o!8x#1xOH+qBHu^b< zR4OI{OW)hsQIaUM8oBgFoi#eYtmPqk$hkVomrWJcTmE{tWB#)6vh&GdwZ06-fh43S zzU@p)XzXb=MbR6$f!TFJV(!6Ne%aYkavsg=@js$4BI5F%)MB4#b^4tgreZpTyqnnV z@=-FMg0=Q5!x?qfa7tIYq->Ck$VpC(o26Y48xpUZu6&ftXHD%a`Hr5*uTq4M`nGoU zy(CCXC)gNiinQ!1+;rumWIoY}Zh`t;)soYcR7x3>cfepal1J{!>}hn-B$i!1O6GHu zPFUW%a-cf>6jN=aCx@NN6CE7&fzWDPfmr> zs%7IHyqA%<%*XRwRY_94o8p)qC6DYVIm|{0`Dm)=go2KEkzB`%c-q%q+??wv;ZQvn z$LzcZ4&}XWj%GC6VGzq$isyR^BcO1s+QV>Bg$ExtB_xU8XyM@AWk*SK>y%y8TxOK* zc5qZ?C0E%Ap*ggX_f6v7E{@r;+u3i)bv&18qQRAu#Op@I)eu|+ccx?-?u3DM_3D$1 z+p6?#yHoQHN$UwrXapJ+Jyi-A`F7h5H*WFkLugSF*|l!1j}2t73&w6 zK3EkieUjSP*pbw@Jy3wlq!!JuBl+uS!`V0r!BZsakwSxA*D-ERNaHa<&tByNyP-(6R!eb>0fy z?vNm4oHwoZrmfClExY_%GM}?!ztG$x!;2@Aq`AJaI4$He-cKImTXGck6vuvs`3J-SHmM!ostG)tt z%mF9R0AM9Dz~Y!47hraj98Iye6Sx zac6O9(l@-`Esc%bB?KU!yridEPs@yaC zOx=WuWtWeV`J5e^k+G?$jKBjT-&Rrc43-f3dG=~BM;3{~Swe{>cDsC(%;)UDi_t+Z_poTUjTgoQ?Jm{_9Vq;qqxy7tNXkda ze9jI@)Vv;dj8POEw(wlp(Sp3@d8Nw;_f&bOIA({4IXg-o%ET1~i4z?Phrv6?gWcFo z-}gwplN)m{K>-gLdwW zrJ{RWf0D&9JC>atC4uPRJd7(>rV!$ppqK{4i6ZJDNtw~orX`kLK1$|uc2F>mx}Q1| zo+N-&4Fq*Pg+rrKg)Bc+(%Qtb%SXw4&JJ`GO{)t~ z@=-G8z4C(lLi$$=l*)g1L0t%Ug7T)=szmSi&^C$0HB>!?gL^(_XJRRTc0q(h0+P7m z7MexGLd8C)>$+K%&|O_c$(Rx>z3l9YYd_b>ZQKR=#?YjR3I+N}QZ=X`R}G9P?a}43 zNsWsyJ0G-DHOp#XMU+GYkGCX+!)X#^oM~f_^t!FOJ|w2!%P%`SO3wS?*;Vbg{qCBL zvKXvw9QkzS7lXNOOpfz^8=3PRI?xo`hsZAvgN%^YeDHhM+DSM3>cDk`kSGQGut4VVH}1nC6VFQ8FL6L%uy|oYIp_?86x#*=++)`jTCR)Fd%UK=fcn%kOr6lw2mb z7%3g~Zj0S*^QCJSDL$sUH&0gy_W=&PnpoJ8i4FZ6rvfF~#Bnyr)ut zoDDs?t`j}rb$LfrEx+vSC<%uff)}-@iEsx1#_OhWW=`fjJcLaWC3uSvYo(WshLHP7 zdLx)s7A5CZlMKZ$<|V;76&t7t8!2G|Bs!I6@317yUG`}-RW79lNM!DicvY^Q^n3C` zpqFAs6%yR546r<=Hy~+_}pp zz&%LM0ZBG0fxCCfteqh6I5`-obasiHBk9i8G>2tkr8b0G;__@4kCJyQ|o@_GSQe4G#_DW5K5j19)b%H{NfK zwb${T3VFHP#iJy+LGH5Wqg9`jxCYM4O(N#-8U;h>U4B%g{(kCg7mt#XjNE0{W|+Bq zsh$M_wOeP8c0<^=u&hHBB^4bK!M!|t2Usb0*~`_Dq+!C`W#dD7N~*(?h595L?J^~ZeY7I+k=!q`F9A#rJJ0Uw)#V^0?>?rB|vU}I)-JDUnjEdT% z0O5&qLb8)x9x)7ab#Iqv@6@$(ml-7&NP&j1YldwVCBr10XxK z?d&K?d>d4^a2O3QN%%i~Nl}s!DNG3*7ITNhZkLaeFJSL*ab@78)6U|{gECl`qqUDS z_&K^4)j=ZP4rOQQPcl17s)uYN*gZ;Q_#|lk%1NAU=47WHFtC4nJ$D0|Reag`>>Vz9 zOM~i0Q5=9K6+d!+BdU$|S%go%?$_!agtGF>&W@7Ec`gkT3FE>ckW_%^$a^cwY7H;u zh9{hV*40fC8u7x1mQ>2}E|*t*?mU-)W?)d?Ni4g3l+0)E7zH*m=@RKXfKC=Y5MIgrSaiwO+3nC-nej-%xCX7AcTOy?s9R&*;a5k2+%cv5h&(S z$sv&emS^t(E9IVTSDvU61#JQ&86bxZs5jDF&1_78;5Q{Q!1C-JIGx;Ox8v^lF2j=ZmJngzBrc+6*${&*Kw`6Nvg|)oI^)R;5nMDwIR2@8wl?O3L6=4&f zWcer=FOs|qPNSMSSDIX>C z**o$+tvb^bj&fvx+NqKeFJeTBDyCcJs6JigB<0yV>|}G#HaBP_RQ7cZiGwKVPMNT) z!@FGt6X*!vHL>jSZ^?Z2PT1M-`-L|jV}!Y(E#}w0Vo0*&md5VfixbN(A0_kII~(ZV ze19AuWC-rj#@4Y8AnL%FVDD3NHzr?-f0Ds7%ew&GZ{`dQkZk$Ku+mjlxJR1+t+1ba={TFH3`JD%3#W~ zceFKfcU!A>T311at**0;=fGLbDJN}Z0DNql&o!~z<)dUidk2zQb6h@v2Bj0&LwXED5Udt^vdhhq^WtV5~ z)cNe4l~~d0LQz~(rkTkKA51yPi46$!t8|=*l2IKf{3y$3@0i}JP6RK~-23ZB=It|7 zDE5r(`O>mYNbPp{D4EaRi9zKR_LMX?njqTP%#uM#o9Nvz?$LrLZ`BIk05uZ3T|P?Yvv*u}3&0qX-WX?_lqX8Y zL`S5z)vl~YetEs@^6VXEUAZ?2ak=?Dd0%}mT?VZfD%YK&2%+k#1e=lylxOeM`RtuA z&~0{2_GOe$$w{2;7BsRxTq=Y2F=R<%x64P#eD)4=R{~-MhuH|9PZG^xs${P^tY|{I z?#-6yCWMNj@V%YS-eE33Gvc0ZRSb7hIH2Y##w(^RUA?l60Z>cqcKIlo&))GsXX1om z-QXUCRDdVQNT`OQQICf=Fr->y+2x~TK6?klx~h&CrEP=Zz*Ev8ai{dtNp-$7bTEkv zF!WfZ4~cV^my>uf?#3os=ze!!N7qVr9;M5gD?Q14%m5^IyL^-kjb7fePh+Ti7k)R? z!4Laa3JOD2fN()mt)@ zouv;+_FHo4`2nvJP1mt_xi1_xmWEW|Ab#yNp8!!4H%WQ+PMy!*iR8L95KQ4P#U~lT z-H7LHFla`_gLV{CC0Dy$p1o6t;wJBGYcdfknn~@}Fd#6DC2>_TY1<73a~&KT|E$Yp zmyeS9?44b|nqwXD%N?x@IEGN?<0N*a(pZ2UQi|g8?43HFy>smS&Xl`n9?j>Fb)f7d zWDb%35!P|3NMH=7^6Z^DpS?rsvOq)j;A1i78RpUaG0h?m1P1D(7Y@!s;M?NsRr>S)xIiGx{35i=wb*YfNgp(6K? z^h1m(OQj5G1;s1W@~3=?v1E5P&ES!fx&X^Z$(Uu#JKINhf-g!!+|Ql~oBHM2j%t9k z#AHZXP9cT7xVOjh>>U)V++_obB33K^$pYmhF~PTn!odrt0_hxOD%Zi?Sby=e9g!_> zx0zG0k7jpGP#3}sG<@z9E^mmBYFf~awrd@r(^G!gezAGWUZ5qG3fs+LaiUue8!Y&2 z`B={b%e63(P8^c*Z^?Z2PUPE@mM_|v$_}Ir_6{-eZ9xzMKr(%u@J$d|%kQ?kHgC6& zP-sI4M8!4EwxKu}{4=yt$`;rYRiaQlMwg-Ry`9hAY1Am0$3!;)D5zsRrJLZ1WAMqX z!j4qIIB`hIN6CEl4jpa~xM^Gm+%cY`bbu2}&r_9zif4eHcVk>$faRlPyteZW2^P%M z?gmradvHGy$YvEEZ-r*m-juOK5`4LAw^ivwk{u-*Sso6%GSnb@MGT@`49BvCxT~hv zn3gzjm&-06B||Bhx7#KV4A+?JT#+rkZnRTvv;)p)tzjBGAnaW)yF7b``$6uq+bEMD zwhHMHZaO!KAma%&c#t<2x1nM?`e*}Nl{de8F zVP#SLZ0ECgxYtcO9~wI5H z)%cxDqp{i;hrYVE%d>aP;pHxS+D!u!{DC0^qLXW_j}xJ;Ar;t-?$a12^6m2M9Sqjo zWgDFhb3;eNxN<~E#kATR-nKLG##Y`^QL;RHr;c}CUX*MpF7+wa!S8`xsT=9J54@&$0awJK^>UcDUo=T#d|EM0=QA`#$H1{@s=#l-jRyt?luh! z|6e*{bj}DjUS^U$5gr~3fqOSplE}Bqvv+WNbC<2E(6pP7Za`9bCxC|Fbj0%-k{o=z z73xHkEYIFy@{zl2db)KG5j|(XRIqonQ#ZAFKJOk6WY8|g>kF_vd#A}~?|4R5JZdA{ z(9$V(2MRFU8qZdrjLe};C9YA`Et`|*Cg$$;?9P+&>3Xb4X?Kvdp=DGXM?mc* zcDwjnvWZH6-UYa_8SM|uMb8<%o6xvIXdogGHvo?z&(DdRBpz#}cRM>u3h9~#a@Ok3 z-}ZcjR@SC;MwI8d*_{bSF;-9cWoJjpVToy9RjHo4c<2C4r=IF0)M|hw(3e;?i9=HS zE!pI=ciO5t7iDZN6|0=2k#BRH)TSK5;|b8PJuL4kl`7BPF;kU$wyOoof6-3mk|0V3 z7GagjdMjv@X`-=DNL+yB**pA#a+kfE2Riq#T@IR5x7-zh+|~~8c2N9jkpm`n+mBQD zlgwxDu*IC&tI3__5c$K^nR1F2Jm}cU`;~mrcXD}1ioYeXByxAV-IV%v>OW23DDP;u zPo6u`;9EzN``Bcu-S+3DcRTwn>E0fyL-QIsJjy#9?YxRDTOv;SpgEbCDT4tnzic~^ z7j8^%>=p-q* z_s61n9W5t=pSRxVGQ0!ON2&=@p1spVvYB_b4Xc=+4Q`=fPrJ<=SexC05?Y?14xD>W z1o!gn9SwrqWiy1M4;W2?V6)3f8t*Y8XgBzxKiSK-6RJyc-r|R($&Qk}{LknZd$pKj z?nanPs5)hnh7h_p@1!Gj9d63Acba_mPTzBmt{4V#Jrr&lah-OwF{=fs2Qoj3IEiJK zkCOT9ou0n+G+iwT(f{Z=q0$7Ae0z5n_L$3comzJJD4EaR0qbHi;I?j?5FOQF({ndQ z4^f()ALoQba1W>F!ofYCy>q}9Dp5MjZ4}d}0dE9fM3^H^zHU_IUP&C1@^8s}_71x~ ztr{BWZ9GKDA9R3H6vL@7ULNtOs#Hu;mEP^_C|UExNx?42f`y<*iI)>>VAwo=j>-W%my5+#cE?N|&`l>;Nxt_HjR7ExSB>=Wb=0x7%BA zm^^PliFMlb+)XK{uE_xX|2vOkPxr*K%fBV_**j}suc)O|hS_Iza|HJtghHKo1SWGo zrt<9=wk>><bb943UH__Nbv#DF0U`Z^6Z@^pS=T=u@1*BxSK%$7zkt01 zFEJQHuvjexFLx3ztX#ppG9h;`PfbmNlxOcW`RttzhshXf07+VpvN6o;PE{$TKSXXh ztyfQCx64P#eD==S4LmzpCR9Sa-QMq`aHc*drkJ2ph7%HrYq)cjJ|x*uQW<+7F51Kw znhdaCa(_@gmCOZq(I}-Ut;BAZkCH=nl*BeVI57vGMDo`W^~c!@cwqk8H{of#+SRMwF3;XE zyPmsj?_FYnsJQMiQc-cKShr|7u{|8!<;E!!H%WQ+4n0NgvOytv!+5mUhw^ZD$XV}2 zsw2`?v}lCR#G@?ySqp!XAvw(ZB>T>P#avdvcI>v&l>6hn)p$0m+773oL{%yZ5v7-% z{gzz3$v7^HG|b`rZtmGO#U#lK z3%goN@^015kiIfwTLsJpT69aKQsvn@P0V}ceUi9RF{Xl1OlvFLG%>wQ>EDke8&q}v zAoWR>kCOT9ogl%OIV8+rr6%0OvJuDbEW^$upc9jLCd8Cr>6;`wN>VVy3!Uw<_e|(X z7!b^$Z)?w{=P;g-a?Tpcvv-<&_D)!z!z^k<624frI@-c`ODaXgNJiS6@z1&l?n8O@ zPLt2xIVU=_4ZcB?jBz1;CS=iiH(U4)nQ^*TZ!ec!K1#+^blxYqg0y46v@8zwtx*N& zNoMs2fOc&ic_6-2Vz$zARvd!7jrRrT#ac`=}F*Pc8rA*fRxEWhmRx1{JrMfnI^57~lwWps#r2Sj7z#S$~p;yRRP?+~fxE}NqvF0p#fyavd6 zR^K)Ye3~iqK07p3@rx6?T|P=i1k2m)Fi@*U)LiOeb&?K*LJEb~B(N(0nj25$BoT=V z-z53$9UmgqFgoX9aGc0LKpzAGH2+{L8*Ew^^^mI!usnN5zdU!h=Or|`L=7F?TKZVkCOT9oq;`In56Oq2|&}Vu?mfVv)6Pp zL1qlYT^Ae()JuPo2nV@mo4u~8it>)($cU0Aw1D+gT!C#icxA3%V!+iQDbLD{i3_kid#BB3?;!qd`=RT>vNq1P4&~CW9AJZjfa7Jq z6K~1j*Oxxq*->&(Q_ys$#HciY@8}70%N;_UX~`aWjNT-1NF1Kh%l4ILrcw-VrW&Gi zCwRG!iMs$d`8NCqD{P^ENiDm0lx(AmmA7n4fz^9mzCEz2P~VQ(1fI3tkhA`EzufB~ zm-lw@DB0$-cj|*F1sJMYR6O4eJkbFf9VfbEWl{}mAD8LXvdgn~OvL8y_HqpTn-EZY z@cWoeP*&rUL9ULr4aGJWW|_7#0|mwzDH!vKWtWeV zp@_^|_Rt!th*VpZNqw7*pk@0{nm7Z^u1esMsBf2N@7zI;dCTUJfel0m-M7IfS-gH{ zuQ4Zu5k0~eW#F|k4Vv{4FuTHDg9-n zy7b>+H=bB_`6&4U_Kq1W%_XXBau`w4!)EO?uQ`!wDzVMt5RzDS`6!vs-eD`bnnjRr z0~h)v)#m378IU@#fA%J>Md1rYVJaNgqzbP5?t$%hN|^mTl9z% zyInp?=CgO^rd7?M{zFGoaTU^U3tn1K#Jhz$!$+BTl$B@iw9#PziHk}ZJf~%Y) zI%tIx*O+C@+wJOTTQ5e_SP|Dvg1AWzSK+wLV!Y&4vHN=2<=Hz{lDlk)R7JoeuCsK~ zbLT)${HM@E9>d?xIfDn6R@oC+n1`Mi)Jbq$Rd*ET6E{hD z_6~$g?rt*~q!*ao16$OiO%{<=H!JK6__tm~wL)&_0lu(9N4pC9)$h)+g(m8CTCmcX_sp_a)nW z_Rh&gvg!55D*ZgcU7bW06(*CkG0S8^HC1sf&)#W6;huK^^8XlTX|>iE>UKwr5rR6O z~ciPyAyhDN$ZfehaOitwjL_?JbUNfl*`-gt@6rU@c@s5V$?hWW!kFXFsovE zM-I#y6E{iRR;714yW$G_=WaH*Tw@^UCIk?*4u_3lM35xrIitjXc}U8?CG*)k@IW<9 z1|c*Ek5AH-tx&Ilqv;nPrLn|BP7;y0^ls;paYSV;j7lZpz;1O#a5b zdV9Is<=>J)M$9|ggJ&*duNYyDCP-xl+e=bx0yxj(>(KraMl)T#^f&HCl9m*L^*FdeFLaN|U zp1nf|oV#p~MY*d(vO)LDw`cV!=BYOt-HCfe7#b(a^5xk(Z9aRaKgeIa%7CQqVp0Ez z?7Y1}Ngl1ip;4Rf`T{J^-XWRH-EGHrkeh}k!>FX9ag_f8XESh0KYXt#MllUZr!#yT2bs)=nHw!E+XLsW`iJYW7d#BB3@2srQ znNN8FcY(vwL@>dpgKeu1j|QW0sbX4r_D2X(U)`q0s`JBNqDm;V&5I+ zt`13g_KxCM?ru8}P#$rjG1(mwnKyDneRC~$aDZFnEZ2vmJbS0jXYXLpVVxV^Tfm^0LTb#jJbS0jXYUwfugBhiq|tEqc57-}U(ZSDw4%85xJVK=NqP2; zuPgVE5c_#B!lhMb_}zrZnlVoRjc~g@4UzYU8{_h9myeS9>>b3NyZ48&m3T{PS);*F zL#uwexq-aeIZ@sz&)(sUmb=^J4Etm<5;7>-saOJL#T82!BPlpAofIb%yX`kxINap3 zcWNcTF>qKDe{^rjBd%=WM%AYm$H2*!aP1Q@sBb&TBB<0yVcl2Q1Avvqq=4hfq1c{R5twOy{$Xrou z(0Sq1C6?{*6yEK8_744R#Q}~MS9)!?8TL@-%C}K3SJ1s)z)38-{97`gy~C^I9C}xW zeHA4)wfUg48&yz6V;)Tsleo9bvv=B<8^}8(kmd$C?Xd~wsJMFAcuUR*`2dGT_vbTa zelO2<`6!vs-jP9p>6ux!das)m5EW{QRDdUl?Us!vjM0bk>>ab2xx3w(!EYEy->}EL zZbsH{!M47c5^@7#;sbspcDsC(%xCZDk1@X_6=;mLtCNsPP4ToGs&Ilekb?!6Sa$g+ zna|##;ezj~s4nl=a8{%q3@U1XLG?Ppv?ul3F}GIw0(5EReUikMl(?f3+OfE|tIg|X z3crepPSoSwkCeK%%SXwWWz1W4-8P28wZ?X!PRrJzWSHe_kK|p8SEfmY%R|zaXYasK z=Pp}&zNe)-0!nPRRq3O2S=|6573=pPW?Uz(oU)4_l6>}#U4^^UK9E<3#?{&v8I-25 zk-o46W`~p5?ebAFpS?5ehT&)xssBQD-h{0kmpG6CUn87`SK9Rj*vE8t;ZO1f?44z( zsTmkGLLJ#{lOP1S8hlMZ(aVF1Z>d94K1$}ZcgX$5$+aO$27Qsk19(u}Bq~)Jt;aA# zL**j4_vP6;Z4g}YZW7Z#yfsvYSJ}12Mi=-ntO~8-IqdeH5^qWEzw(D9yW+}c6p<6Y z0Y=^)b9oI#aYJ6B*$(6%wW-8zmyeRc4$0eXN=J=UK4qvzAv%glp-_wthJY8oz_ie* zvt2$)#wcefWd=oC@S%|#b7n9!)L&Wv-@`fs$$c;Hg<)$1oLFRvRfs8@?>iLqOt*a1%Lw;l%X??45xopjXeSwx9s+s#1!9qu0#< zlNIgNO*FjR?ebAFpS>d=;cO$m@CAu{+ez^Ru3)ANni;BHj)a+=AGP#ugC^#Fl47@R z2hma8#N_o5eFfby*$KrO2N{66>n?C#p1mX3{oZKeTz`^LXDq$!Z1v9435VqJKFL6I8njjel%n*NfHTx| zRD0syF3;ZaEX>{QWmJ}D`^vm2#)YU$>^6-W4N}d^Qrag7|mxvMA{P8g*>$?Uh}IGltodN&8F zRLkc1z$x9uau?H?3O;0GzaxUcPzvw&}eMqjNEMI7c@@!C^Jh z=P#^6kauV{uAA5N1;sDGP>tm+dto=fRZ80fErYYoMtZ@EB!ouG&}UG6NbPp{D4EaR zAs!(*3Py1lR1juF;>s0{vP2W!e)mz~x(YX;H7p!%^4U8cxudp07`TVhe{hq~=yEo3 zg-f=%swNLf`6wCs)4W5{FaY65Hs4$*@w#E3C@(fI663>KC>a&~+_UYCfLbZ#Ch;OnUJoPefPL&q8SBF zn>Zxp**jf6dk4q$WK(9$Gb(?U9Z{0xRi=0vQhZ$nqmzfD`BwPhtjz41^5E?&N0|xuN&i@3J#SmpWs`0rven4+gk3+yFAXR%VCG*)k!Z!y3k4G~@F2Geja|FQQnzMD_{wsH6@l^K1$}ZcO<7(OEq%qXcJ^VKI=p1srMvv-UHk(O&&v*U3{LIDF`$dmL06+lGbhLd

llmY2A;q{H>$61kJw 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 Zm(8DE^;o?X{^Q?^^f`Shpa1h;{y&o+pGyD$ -- 2.34.1

!GKj+_fht4OR}_ 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