From: ben.clark Date: Wed, 25 Feb 2009 12:49:23 +0000 (+0000) Subject: Committing large number of changes relating to versioning implementation (#108) X-Git-Tag: 3.0.3~2652 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/597358de3619e60a9b1e3a4ea41e4252d58486d4?ds=sidebyside Committing large number of changes relating to versioning implementation (#108) --- 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 1d48c4fa7f..4fba1ebfb4 100644 Binary files a/cdmlib-persistence/test.xml and b/cdmlib-persistence/test.xml differ