merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 21 Oct 2014 12:58:38 +0000 (12:58 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 21 Oct 2014 12:58:38 +0000 (12:58 +0000)
173 files changed:
.gitattributes
cdmlib-commons/pom.xml
cdmlib-ext/pom.xml
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/bci/BciSchemaAdapter.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/dc/DublinCoreSchemaAdapter.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/openurl/MobotOpenUrlResponseSchemaAdapter.java
cdmlib-ext/src/test/java/eu/etaxonomy/cdm/ext/ipni/IpniServiceTest.java
cdmlib-ext/src/test/resources/dbscripts/001-cdm.h2.sql
cdmlib-io/pom.xml
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/IRdfMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/in/GbifReferenceCsv2CdmConverter.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaReferenceExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/DataSet.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupDocumentImportNoComponent.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupModsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupNomenclatureImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/reference/endnote/in/EndNoteImportBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/reference/endnote/in/EndnoteRecordsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDDataSetImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206ImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206XMLFieldGetter.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenCdmExcelImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenSythesysExcelImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXModsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXModsExtractor.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfReferenceImport.java
cdmlib-io/src/main/resources/schema/cdm/reference.xsd
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/stream/ExcelStreamImportTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/SpecimenImportConfiguratorTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/test/function/TestDatabase.java
cdmlib-io/src/test/resources/dbscripts/001-cdm.h2.sql
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/ReferenceTest.xml
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/TaxonNameTest.xml
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/TaxonTest.xml
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/specimen/abcd206/in/SpecimenImportConfiguratorTest.xml
cdmlib-model/pom.xml
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/agent/AgentBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/agent/Contact.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/agent/Team.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/GrantedAuthorityImpl.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Group.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IIdentifiableEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Identifier.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/LanguageString.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermType.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/User.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/VocabularyEnum.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/package-info.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/IdentifiableMediaEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/metadata/CdmMetaData.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/DnaQuality.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/DnaSample.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/Primer.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/DerivedUnit.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReference.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Reference.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceFactory.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Classification.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Taxon.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityConstraintViolation.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityValidationResult.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/SeverityType.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/View.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/common/TermDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ArticleDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/InRefDefaultCacheStrategyBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/JournalDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/NomRefDefaultCacheStrategyBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ReferenceDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImpl.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/CRUDEventType.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/Severity.java [new file with mode: 0644]
cdmlib-model/src/main/resources/terms/IdentifierType.csv [new file with mode: 0644]
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/ArticleDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/BookDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/BookSectionDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/GenericDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/match/DefaultMatchStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/merge/DefaultMergeStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImplTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/strategy/TestBookDefaultCacheStrategies.java
cdmlib-persistence/pom.xml
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/AuditedSchemaUpdaterStepBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnAdder.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ISchemaUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ISchemaUpdaterStep.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ITermUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ITermUpdaterStep.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/IUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MapTableCreator.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MnTableCreator.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableCreator.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/UpdaterBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_33_331.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/TermUpdater_31_33.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/SchemaUpdater_331_34.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/TermUpdater_33_34.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/UsernameConstraintUpdater.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImpl.java
cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/FullCoverageDataGenerator.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/hibernate/CacheStrategyGeneratorTest.java
cdmlib-persistence/src/test/resources/dbscripts/001-cdm.h2.sql
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-with_auditing_info.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/hibernate/replace/ReferringObjectMetadataFactoryTest.testReplaceToOneProperty-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/hibernate/replace/ReferringObjectMetadataFactoryTest.xml
cdmlib-print/pom.xml
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/RemoteXMLEntityFactory.java
cdmlib-print/src/main/resources/stylesheets/mediawiki/multipages.xsl
cdmlib-print/src/main/resources/stylesheets/pdf/caryophyllales.xsl
cdmlib-print/src/main/resources/stylesheets/pdf/flore-afrique-centrale.xsl
cdmlib-remote-webapp/ide/eclipse/cdmlib-remote-webapp - profile.launch
cdmlib-remote-webapp/ide/eclipse/cdmlib-remote-webapp - run.launch
cdmlib-remote-webapp/pom.xml
cdmlib-remote-webapp/src/test/resources/log4j.properties
cdmlib-remote/pom.xml
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DescriptionController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DescriptionListPortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DescriptionPortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NamePortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/OccurrencePortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ReferenceController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ReferencePortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonPortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonPortalListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/dto/NameCatalogueController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/ReferenceBaseBeanProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/vaadin/components/DemoTaxonTable.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/vaadin/components/TaxonTableDTO.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/vaadin/uiset/redlist/views/BfnView.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/vaadin/uiset/redlist/views/DashBoardView.java
cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml
cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/tdwg/mappings-deep.xml
cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/tdwg/mappings-shallow.xml
cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java
cdmlib-services/pom.xml
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/DerivateHierarchyDTO.java [new file with mode: 0644]
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/CommonServiceImplTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/OccurenceServiceTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/Datasource.java
cdmlib-services/src/test/resources/dbscripts/001-cdm.h2.sql
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/CommonServiceImplTest.xml
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/StatisticsServiceImplTest2.xml
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.xml
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/TransmissionEngineDistributionTest.xml
pom.xml

index 7115efc8efe02fdb354b31443831b06680f2ae14..1aa3132eee6c7dcc67e68fc10d4be3bb6f2edbe0 100644 (file)
@@ -749,6 +749,7 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ITreeNode.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IVersionableEntity.java -text svneol=unset#text/plain
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Identifier.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/LSID.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/LSIDAuthority.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/LSIDWSDLLocator.java -text
@@ -852,6 +853,7 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/metadata/PreferencePredicate.j
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/metadata/PreferenceSubject.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/Amplification.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/Cloning.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/DnaQuality.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/DnaSample.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/PhylogeneticTree.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/Primer.java -text
@@ -949,10 +951,12 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationship.java -
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationshipType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/package-info.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/package.html -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityConstraintViolation.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityValidationResult.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/SeverityType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/AuditEvent.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/AuditEventRecord.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/AuditEventRecordImpl.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/View.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/context/AuditEventContext.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/context/AuditEventContextHolder.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/context/AuditEventContextHolderStrategy.java -text
@@ -1030,8 +1034,10 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/SpecimenTypeParser.j
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/TaxonNameParserHistory.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/TimePeriodParser.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/location/CoordinateConverter.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/CRUDEventType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/Level2.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/Level3.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/Severity.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/ValidationException.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/annotation/BasionymsMustShareEpithetsAndAuthors.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/annotation/ChildTaxaMustBeLowerRankThanParent.java -text
@@ -1073,6 +1079,7 @@ cdmlib-model/src/main/resources/terms/ExtensionType.csv -text
 cdmlib-model/src/main/resources/terms/Feature.csv -text
 cdmlib-model/src/main/resources/terms/FormerCountries -text
 cdmlib-model/src/main/resources/terms/HybridRelationshipType.csv -text
+cdmlib-model/src/main/resources/terms/IdentifierType.csv -text
 cdmlib-model/src/main/resources/terms/InstitutionType.csv -text
 cdmlib-model/src/main/resources/terms/Language.csv -text
 cdmlib-model/src/main/resources/terms/MarkerType.csv -text
@@ -1314,6 +1321,9 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaU
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SpecimenMediaMoverUpdater.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/TermUpdater_31_33.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/TermVocabularyRepresentationUpdater.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/SchemaUpdater_331_34.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/TermUpdater_33_34.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/UsernameConstraintUpdater.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/IAlternativeSpellingSuggestionParser.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/IMethodCache.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/MethodCacheImpl.java -text
@@ -2271,6 +2281,7 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/TaxonDeletionC
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/TaxonNodeDeletionConfigurator.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/TermDeletionConfigurator.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/description/TransmissionEngineDistribution.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/DerivateHierarchyDTO.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/DistributionInfoDTO.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/IncludedTaxaDTO.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/exception/DataChangeNoRollbackException.java -text
index 123b0e32661e217f541118e5b92ffbef81100ca0..4519ba9f38574578530378bc3fb34c4ffbe2eedb 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>cdmlib-parent</artifactId>
-    <version>3.3.8-SNAPSHOT</version>
+    <version>3.4.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
   </parent>
   
index f87c9f5ed1942baee51d98084d4e46e85992abbf..3aab66aac79670497f8b1eb191c56621ad5dc2bf 100644 (file)
@@ -6,7 +6,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>cdmlib-parent</artifactId>
-           <version>3.3.8-SNAPSHOT</version>
+           <version>3.4.0-SNAPSHOT</version>
                <relativePath>../pom.xml</relativePath>
        </parent>
 
index 5a16755327d151653ab1c0b3b51ab06a10c8b671..d97c7c29a4fabc96a1cb543ab7fc129a28fa63d3 100644 (file)
@@ -174,9 +174,9 @@ public class BciSchemaAdapter extends SchemaAdapterBase<Reference>{
                                        reference.setPublisher(text);\r
                                }\r
                                if(dcFieldName.equals(DC_CREATOR)){\r
-                                       TeamOrPersonBase authorTeam = new Team();\r
-                                       authorTeam.setTitleCache(text, true);\r
-                                       reference.setAuthorTeam(authorTeam);\r
+                                       TeamOrPersonBase authorship = new Team();\r
+                                       authorship.setTitleCache(text, true);\r
+                                       reference.setAuthorship(authorship);\r
                                }\r
                                \r
                        }\r
index b248324ade911f4341c1e61a422c09c2d76c42d1..bf77e4a9684cd369a545ff18854abdee5d45a8a8 100644 (file)
@@ -175,9 +175,9 @@ public class DublinCoreSchemaAdapter extends SchemaAdapterBase<Reference>{
                                        reference.setPublisher(text);\r
                                }\r
                                if(dcFieldName.equals(DC_CREATOR)){\r
-                                       TeamOrPersonBase authorTeam = new Team();\r
-                                       authorTeam.setTitleCache(text, true);\r
-                                       reference.setAuthorTeam(authorTeam);\r
+                                       TeamOrPersonBase authorship = new Team();\r
+                                       authorship.setTitleCache(text, true);\r
+                                       reference.setAuthorship(authorship);\r
                                }\r
                                \r
                        }\r
index a35c1fd8c8e1685edcfe871f6b3f5f88502e5e35..37d00782356ec19a0577892cb57f3293e25bf7ea 100644 (file)
@@ -389,7 +389,7 @@ public class IpniService  implements IIpniService{
                String author = valueMap.get(PUBLICATION_AUTHOR_TEAM);\r
                if (StringUtils.isNotBlank(author)){\r
                        Team team = Team.NewTitledInstance(author, author);\r
-                       ref.setAuthorTeam(team);\r
+                       ref.setAuthorship(team);\r
                }\r
                \r
                //remarks\r
@@ -399,12 +399,12 @@ public class IpniService  implements IIpniService{
 \r
 \r
                String tl2AuthorString = valueMap.get(TL2_AUTHOR);\r
-               if (ref.getAuthorTeam() == null){\r
+               if (ref.getAuthorship() == null){\r
                        Team tl2Author = Team.NewTitledInstance(tl2AuthorString, null);\r
-                       ref.setAuthorTeam(tl2Author);\r
+                       ref.setAuthorship(tl2Author);\r
                }else{\r
                        //TODO parse name, \r
-                       ref.getAuthorTeam().setTitleCache(tl2AuthorString, true);\r
+                       ref.getAuthorship().setTitleCache(tl2AuthorString, true);\r
                        ref.addAnnotation(Annotation.NewInstance(tl2AuthorString, AnnotationType.EDITORIAL(), Language.ENGLISH()));\r
                }\r
 \r
index 20649528db802ea28d310987175479ca5a0cdc3e..5488dee9f922e54890429be8e5b4abe4aac64d13 100644 (file)
@@ -157,7 +157,7 @@ public class MobotOpenUrlResponseSchemaAdapter extends SchemaAdapterBase<Referen
                OpenUrlReference reference = null;\r
                \r
                ResponseStatus status = null;\r
-               Team authorTeam = null;\r
+               Team authorship = null;\r
                String message = null;\r
                \r
                String elementName = null;\r
@@ -175,7 +175,7 @@ public class MobotOpenUrlResponseSchemaAdapter extends SchemaAdapterBase<Referen
                        } else if (status != null && qName.equals(OPENURL_RESPONSE_CITATION)) {\r
                                reference = new OpenUrlReference();\r
                        } else if (reference != null && qName.equals(AUTHORS)) {\r
-                               authorTeam = Team.NewInstance();\r
+                               authorship = Team.NewInstance();\r
                        } else if (reference != null && qName.equals(SUBJECTS)) {\r
                                //TODO implement, but no equivalent in the cdm model                    \r
                        } else {\r
@@ -192,8 +192,8 @@ public class MobotOpenUrlResponseSchemaAdapter extends SchemaAdapterBase<Referen
                                referenceList.add(reference);\r
                                reference = null;\r
                        } else if (reference != null && qName.equals(AUTHORS)) {\r
-                               reference.setAuthorTeam(authorTeam);\r
-                               authorTeam = null;\r
+                               reference.setAuthorship(authorship);\r
+                               authorship = null;\r
                        } else if (reference != null && qName.equals(SUBJECTS)) {\r
                                //TODO implement, but no equivalent in the cdm model            \r
                        }else {\r
@@ -310,10 +310,10 @@ public class MobotOpenUrlResponseSchemaAdapter extends SchemaAdapterBase<Referen
                                        }\r
                                }\r
                                \r
-                               // --- Reference.authorTeam --- //\r
-                               if(authorTeam != null && reference != null){\r
+                               // --- Reference.authorship --- //\r
+                               if(authorship != null && reference != null){\r
                                        if(elementNameToStore.equals("String")){\r
-                                               authorTeam.addTeamMember(Person.NewTitledInstance(trimmedText));\r
+                                               authorship.addTeamMember(Person.NewTitledInstance(trimmedText));\r
                                        }\r
                                }\r
                                \r
index 3d58b49eee27a51b14dda3e4bf9cf24666ae7d6b..5572391871f82a4136168e7cbbb3b06e280daf56 100644 (file)
@@ -188,7 +188,7 @@ public class IpniServiceTest {
                        refList = service1.getPublications("Flora Europaea [ed. 2]", null, services, config);\r
                        Assert.assertEquals("There should be exactly 1 result for 'Flora Europaea [ed. 2]'", 1, refList.size());\r
                        ref = refList.get(0);\r
-                       Assert.assertEquals("", "Tutin, Thomas Gaskell", ref.getAuthorTeam().getTitleCache());\r
+                       Assert.assertEquals("", "Tutin, Thomas Gaskell", ref.getAuthorship().getTitleCache());\r
                        \r
                        \r
        //              for (Reference ref : refList){\r
index bf373e815b6e838da50f045133f49503512122a6..2c82f6cc916aac29e3fb4f072513bc3a5c8ae910 100644 (file)
@@ -185,6 +185,20 @@ CREATE CACHED TABLE PUBLIC.AGENTBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER(
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.AGENTBASE_MARKER(
     AGENTBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -485,6 +499,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION(
     PROTECTEDTITLECACHE BOOLEAN NOT NULL,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -507,6 +524,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_AUD(
     PROTECTEDTITLECACHE BOOLEAN,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -540,6 +560,22 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_CREDIT_AUD;
+
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+       DESCRIPTION_ID INTEGER NOT NULL,
+       DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    DESCRIPTION_ID INTEGER NOT NULL,
+    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION_AUD;
+
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION(
     CLASSIFICATION_ID INTEGER NOT NULL,
     EXTENSIONS_ID INTEGER NOT NULL
@@ -552,6 +588,32 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_MARKER(
     CLASSIFICATION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -674,6 +736,20 @@ CREATE CACHED TABLE PUBLIC.COLLECTION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER(
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.COLLECTION_MARKER(
     COLLECTION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -922,6 +998,22 @@ CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD;
+                                                                                                     
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER(
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MARKER(
     DEFINEDTERMBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1180,6 +1272,22 @@ CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER(
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_FEATURE(
     DESCRIPTIONBASE_ID INTEGER NOT NULL,
     DESCRIPTIVESYSTEM_ID INTEGER NOT NULL
@@ -1504,6 +1612,69 @@ CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY(
+    ID INTEGER NOT NULL,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY_AUD(
+    ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY_AUD;
+CREATE CACHED TABLE PUBLIC.ENTITYVALIDATIONRESULT(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    VALIDATEDENTITYID INTEGER,
+    VALIDATEDENTITYUUID VARCHAR(36),
+    VALIDATEDENTITYCLASS VARCHAR(255),
+    USERFRIENDLYDESCRIPTION VARCHAR(255),
+    USERFRIENDLYTYPENAME VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CRUDEVENTTYPE VARCHAR(24)
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYVALIDATIONRESULT;
+CREATE CACHED TABLE PUBLIC.ENTITYCONSTRAINTVIOLATION(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    PROPERTYPATH VARCHAR(255),
+    USERFRIENDLYFIELDNAME VARCHAR(255),
+    INVALIDVALUE VARCHAR(255),
+    SEVERITY VARCHAR(24),
+    MESSAGE VARCHAR(255),
+    VALIDATOR VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    ENTITYVALIDATIONRESULT_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYCONSTRAINTVIOLATION;
 CREATE CACHED TABLE PUBLIC.EXTENSION(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
@@ -1658,6 +1829,20 @@ CREATE CACHED TABLE PUBLIC.FEATURETREE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER(
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.FEATURETREE_MARKER(
     FEATURETREE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1808,7 +1993,7 @@ CREATE CACHED TABLE PUBLIC.GRANTEDAUTHORITYIMPL(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    AUTHORITY VARCHAR(255),
+    AUTHORITY VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.GRANTEDAUTHORITYIMPL;
@@ -1922,6 +2107,34 @@ CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING(
     DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER_AUD(
+       ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING_AUD(
     REV INTEGER NOT NULL,
     DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,
@@ -2387,6 +2600,20 @@ CREATE CACHED TABLE PUBLIC.MEDIA_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER(
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.MEDIA_LANGUAGESTRING(
     MEDIA_ID INTEGER NOT NULL,
     TITLE_ID INTEGER NOT NULL,
@@ -2689,7 +2916,7 @@ CREATE CACHED TABLE PUBLIC.PERMISSIONGROUP(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    NAME VARCHAR(255),
+    NAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.PERMISSIONGROUP;
@@ -2828,6 +3055,20 @@ CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER(
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_MARKER(
     POLYTOMOUSKEY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -2919,10 +3160,11 @@ CREATE TABLE PRIMER (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+       SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER,
     PRIMARY KEY (ID)
 );
 CREATE TABLE PRIMER_AUD (
@@ -2931,10 +3173,11 @@ CREATE TABLE PRIMER_AUD (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+    SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER
 );
 
 CREATE TABLE PRIMER_ANNOTATION (
@@ -2988,7 +3231,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     PROBLEMSTARTS INTEGER NOT NULL,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -2999,7 +3241,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3038,7 +3280,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     PROBLEMSTARTS INTEGER,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -3049,7 +3290,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3093,6 +3334,20 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER(
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.REFERENCE_MARKER(
     REFERENCE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -3441,6 +3696,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3454,7 +3710,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE;
 CREATE INDEX PUBLIC.SPECIMENOROBSERVATIONBASETITLECACHEINDEX ON PUBLIC.SPECIMENOROBSERVATIONBASE(TITLECACHE);
@@ -3481,6 +3738,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3494,7 +3752,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_AUD;
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION(
@@ -3547,6 +3806,22 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER(
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING(
     SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
     DEFINITION_ID INTEGER NOT NULL,
@@ -3852,6 +4127,20 @@ CREATE CACHED TABLE PUBLIC.TAXONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER(
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONBASE_MARKER(
     TAXONBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4045,6 +4334,20 @@ CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER(
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_MARKER(
     TAXONNAMEBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4305,6 +4608,20 @@ CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER(
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_MARKER(
     TERMVOCABULARY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4427,7 +4744,7 @@ CREATE CACHED TABLE PUBLIC.USERACCOUNT(
     EMAILADDRESS VARCHAR(255),
     ENABLED BOOLEAN NOT NULL,
     PASSWORD VARCHAR(255),
-    USERNAME VARCHAR(255),
+    USERNAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER,
     PERSON_ID INTEGER
 );
@@ -5906,7 +6223,7 @@ ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT
 ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORTEAM_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK48AC64334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
 ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B7C7B5AED FOREIGN KEY(TAXONOMICPARENTCACHE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB50751EC5 FOREIGN KEY(CONTACT_ADDRESSES_ID) REFERENCES PUBLIC.ADDRESS(ID) NOCHECK;
index 2ac9a72d1bde92c34570f468b3797ae33d6269bb..37143b54831157d25cf3ab53c40a3866631841d7 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>cdmlib-parent</artifactId>
-               <version>3.3.8-SNAPSHOT</version>
+               <version>3.4.0-SNAPSHOT</version>
                <relativePath>../pom.xml</relativePath>
        </parent>
 
index 9f7d03ecbe8e259d97681b5044d3a7268970b877..dae723470d9697b229ef1f87cb091a83a41e90d2 100644 (file)
@@ -1,8 +1,5 @@
 package eu.etaxonomy.cdm.io.common.mapping;\r
 \r
-import org.jdom.Content;\r
-import org.jdom.Element;\r
-\r
 import com.hp.hpl.jena.rdf.model.Resource;\r
 import com.hp.hpl.jena.rdf.model.Statement;\r
 \r
index 6b8d46c765ee5dfebe26e53c7e6a7e3ed83b0994..a7781c7d0dd7e67a9b635921663f6a1e05038a2e 100644 (file)
@@ -89,7 +89,7 @@ public class GbifReferenceCsv2CdmConverter extends PartitionableConverterBase<Dw
 \r
                //author\r
                TeamOrPersonBase<?> author = handleCreator(strCreator);\r
-               reference.setAuthorTeam(author);\r
+               reference.setAuthorship(author);\r
                //date\r
                TimePeriod publicationDate = handleDate(strDate);\r
                reference.setDatePublished(publicationDate);\r
@@ -141,7 +141,7 @@ public class GbifReferenceCsv2CdmConverter extends PartitionableConverterBase<Dw
                                if (taxon.getName() != null && reference != null && taxon.getName().isInstanceOf(NonViralName.class)){\r
                                        NonViralName<?> nvn = CdmBase.deproxy(taxon.getName(), NonViralName.class);\r
                                        String taxonAuthor = nvn.getAuthorshipCache();\r
-                                       String refAuthor = reference.getAuthorTeam().getNomenclaturalTitle();\r
+                                       String refAuthor = reference.getAuthorship().getNomenclaturalTitle();\r
                                        Integer combYear = null;\r
                                        Integer origYear = null;\r
                                        if (nvn.isInstanceOf(ZoologicalName.class)){\r
index 2a8f7780b27aebdfd552cfe338879dac6dfa7330..510cd0926a5c1e48cf0ac580505337e514aa9e4d 100644 (file)
@@ -115,7 +115,7 @@ public class DwcaReferenceExport extends DwcaExportBase {
                //TODO microreference\r
                record.setBibliographicCitation(reference.getTitleCache());\r
                record.setTitle(reference.getTitle());\r
-               record.setCreator(reference.getAuthorTeam());\r
+               record.setCreator(reference.getAuthorship());\r
                record.setDate(reference.getDatePublished());\r
                record.setSource(reference.getInReference()==null?null:reference.getInReference().getTitleCache());\r
                \r
index aabbe23289bafdcde2d3195dbdd25d9a4accb4e1..de600edd042ba344065200788a5efd75ecd34e1c 100644 (file)
@@ -386,7 +386,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                                String value = sourceMap.get(type);\r
                                                if (type.equals(SourceType.Author)){\r
                                                        TeamOrPersonBase<?> author = getAuthorAccordingToConfig(value, state);\r
-                                                       ref.setAuthorTeam(author);\r
+                                                       ref.setAuthorship(author);\r
                                                }else if (type.equals(SourceType.Title)) {\r
                                                        ref.setTitle(value);\r
                                                }else if (type.equals(SourceType.Year)) {\r
index 7e369a264a7fa290e92586ec18a4305d3386c791..f4f98c6b52db59c245e1be37a5b671290c8eeb8e 100644 (file)
@@ -254,7 +254,7 @@ public class DataSet {
       @XmlElement(name = "Taxon", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = Taxon.class),\r
       @XmlElement(name = "Synonym", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0", type = Synonym.class)\r
     })\r
-    protected List<TaxonBase> taxonBases = new ArrayList<TaxonBase>();\r
+    protected List<TaxonBase<?>> taxonBases = new ArrayList<TaxonBase<?>>();\r
 \r
     @XmlElementWrapper(name = "Media")\r
     @XmlElements({\r
@@ -603,7 +603,7 @@ public class DataSet {
      *     {@link Collection<TaxonBase> }\r
      *     \r
      */\r
-    public void addTaxonBases(Collection<TaxonBase> value) {\r
+    public void addTaxonBases(Collection<TaxonBase<?>> value) {\r
        this.taxonBases.addAll(value);\r
     }\r
 \r
@@ -615,7 +615,7 @@ public class DataSet {
      *     {@link List<TaxonBase> }\r
      *     \r
      */\r
-    public List<TaxonBase> getTaxonBases() {\r
+    public List<TaxonBase<?>> getTaxonBases() {\r
        return taxonBases;\r
     }\r
 \r
@@ -627,7 +627,7 @@ public class DataSet {
      *     {@link List<TaxonBase> }\r
      *     \r
      */\r
-    public void setTaxonBases(List<TaxonBase> value) {\r
+    public void setTaxonBases(List<TaxonBase<?>> value) {\r
         this.taxonBases = value;\r
     }\r
 \r
index a9d4e19c9cbf9e8cb805ab2bc3edaf96e19fc33d..7ad5e717a1368422fed955935e41a6b39267f3e8 100644 (file)
@@ -13,7 +13,6 @@ import java.io.File;
 import java.net.URI;\r
 import java.net.URISyntaxException;\r
 import java.util.Collection;\r
-import java.util.Iterator;\r
 import java.util.List;\r
 \r
 import org.apache.log4j.Logger;\r
@@ -257,10 +256,12 @@ public class JaxbImport extends CdmIoBase<JaxbImportState> implements ICdmIO<Jax
                // Need to get the taxa and the synonyms here.\r
                try {\r
                        if (jaxbImpConfig.isDoTaxa() == true) {\r
-                               if ((taxonBases = dataSet.getTaxonBases()).size() > 0) {\r
-                                       logger.info("Taxon bases: " + taxonBases.size());\r
-                                       Iterator <TaxonBase> taxBases = taxonBases.iterator();\r
-                                       getTaxonService().save(taxonBases);\r
+                               if ( dataSet.getTaxonBases().size() > 0) {\r
+                                       List taxa = dataSet.getTaxonBases();\r
+                                       dataSet.getTaxonBases();\r
+                                       logger.info("Taxon bases: " + taxa.size());\r
+                                       taxa.iterator();\r
+                                       getTaxonService().save(taxa);\r
                                        /*while (taxBases.hasNext()){\r
                                                getTaxonService().save(taxBases.next());\r
                                        }*/\r
index 6831645b427cf311c58d88c5e2f28d33e14f7d9d..ad8dd2f5c602b87a1272eb7583e6580376695ae1 100644 (file)
@@ -454,7 +454,7 @@ public class MarkupDocumentImportNoComponent extends MarkupImportBase {
                        Reference<?> sec = ReferenceFactory.newBookSection();\r
                        sec.setTitle(taxonTitle);\r
                        TeamOrPersonBase<?> author = createAuthor(writer.writer);\r
-                       sec.setAuthorTeam(author);\r
+                       sec.setAuthorship(author);\r
                        sec.setInReference(state.getConfig().getSourceReference());\r
                        taxon.setSec(sec);\r
                        registerFootnotes(state, sec, writer.footnotes);\r
index a21f2db4a8c05f1374f5875514e70a83dcfdc505..357cc646a74b4e40c98450ccf6e74dabec715f7e 100644 (file)
@@ -164,13 +164,13 @@ public class MarkupModsImport extends MarkupImportBase {
                                        fireUnexpectedAttributeValue(parent, "type", type);  //currently we handle only "personal"\r
                                }else{\r
                                        Person person = Person.NewInstance();\r
-                                       TeamOrPersonBase<?> author = modsRef.getAuthorTeam();\r
+                                       TeamOrPersonBase<?> author = modsRef.getAuthorship();\r
                                        if (author == null){\r
-                                               modsRef.setAuthorTeam(person);\r
+                                               modsRef.setAuthorship(person);\r
                                        }else if (author.isInstanceOf(Person.class)){\r
                                                Team team = Team.NewInstance();\r
                                                team.addTeamMember(person);\r
-                                               modsRef.setAuthorTeam(team);\r
+                                               modsRef.setAuthorship(team);\r
                                        }else {\r
                                                CdmBase.deproxy(author, Team.class).addTeamMember(person);\r
                                        }\r
index fceea131d83d402946d611be63102e0de8433216..688f6474f5f9b15239e4fb9a2f54413e29a7810d 100644 (file)
@@ -792,7 +792,7 @@ public class MarkupNomenclatureImport extends MarkupImportBase {
                        \r
                        if (state.getConfig().isUseEditorAsInAuthorWhereNeeded()){\r
                                TeamOrPersonBase<?> inAuthor = createAuthor(editors);\r
-                               book.setAuthorTeam(inAuthor);\r
+                               book.setAuthorship(inAuthor);\r
                                editors = null;\r
                        }\r
                } else if (refType == RefType.Book){\r
@@ -848,12 +848,12 @@ public class MarkupNomenclatureImport extends MarkupImportBase {
                if (isBlank(authorStr)){\r
                        if (refType != RefType.LatestUsed){\r
                                author = state.getLatestAuthorInHomotype();\r
-                               reference.setAuthorTeam(author);\r
+                               reference.setAuthorship(author);\r
                        }\r
                }else{\r
                        author = createAuthor(authorStr);\r
                        state.setLatestAuthorInHomotype(author);\r
-                       reference.setAuthorTeam(author);\r
+                       reference.setAuthorship(author);\r
                }\r
                \r
 \r
@@ -968,7 +968,7 @@ public class MarkupNomenclatureImport extends MarkupImportBase {
 \r
                // TODO type\r
                TeamOrPersonBase<?> author = createAuthor(authorStr);\r
-               reference.setAuthorTeam(author);\r
+               reference.setAuthorship(author);\r
 \r
                //title\r
                reference.setTitle(titleStr);\r
index 6313bdeb3e3ccc482901d25627d0c90e246ff9ab..ae7618685bc5b0f88bfb113c510a4265691d5b56 100644 (file)
@@ -9,38 +9,11 @@
 \r
 package eu.etaxonomy.cdm.io.reference.endnote.in;\r
 \r
-import static eu.etaxonomy.cdm.io.common.ImportHelper.OBLIGATORY;\r
-import static eu.etaxonomy.cdm.io.common.ImportHelper.OVERWRITE;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.HashSet;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
 import org.apache.log4j.Logger;\r
-import org.jdom.Content;\r
 import org.jdom.Element;\r
 import org.jdom.Namespace;\r
-import org.jdom.Text;\r
 \r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.common.ResultWrapper;\r
-import eu.etaxonomy.cdm.common.XmlHelp;\r
 import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
-import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
-import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.ImportHelper;\r
-import eu.etaxonomy.cdm.io.common.MapWrapper;\r
-import eu.etaxonomy.cdm.io.tcsrdf.CdmSingleAttributeXmlMapperBase;\r
-import eu.etaxonomy.cdm.model.agent.Team;\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.reference.IGeneric;\r
-import eu.etaxonomy.cdm.model.reference.Reference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -50,98 +23,6 @@ import eu.etaxonomy.cdm.model.reference.ReferenceType;
 public abstract class EndNoteImportBase  extends CdmImportBase<EndnoteImportConfigurator, EndnoteImportState> {\r
        private static final Logger logger = Logger.getLogger(EndNoteImportBase.class);\r
 \r
-       protected static Namespace nsTcom = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/Common#");\r
-       protected static Namespace nsTn = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/TaxonName#");\r
-       protected static Namespace nsTgeo = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/GeographicRegion#");\r
-       protected static Namespace nsTc = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/TaxonConcept#");\r
-       protected static Namespace nsTpub = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/PublicationCitation#");\r
-       protected static Namespace nsTpalm = Namespace.getNamespace("http://wp5.e-taxonomy.eu/import/palmae/common");\r
-       \r
-       protected abstract void doInvoke(EndnoteImportState state);\r
-\r
-       \r
-//     /* (non-Javadoc)\r
-//      * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
-//      */\r
-//     @Override\r
-//     protected boolean doInvoke(IImportConfigurator config, \r
-//                     Map<String, MapWrapper<? extends CdmBase>> stores){ \r
-//             TcsXmlImportState state = ((TcsXmlImportConfigurator)config).getState();\r
-//             state.setConfig((TcsXmlImportConfigurator)config);\r
-//             return doInvoke(state);\r
-//     }\r
-       \r
-       \r
-       protected boolean makeStandardMapper(Element parentElement, CdmBase ref, Set<String> omitAttributes, CdmSingleAttributeXmlMapperBase[] classMappers){\r
-               if (omitAttributes == null){\r
-                       omitAttributes = new HashSet<String>();\r
-               }\r
-               boolean result = true;  \r
-               for (CdmSingleAttributeXmlMapperBase mapper : classMappers){\r
-                       Object value = getValue(mapper, parentElement);\r
-                       //write to destination\r
-                       if (value != null){\r
-                               String destinationAttribute = mapper.getDestinationAttribute();\r
-                               if (! omitAttributes.contains(destinationAttribute)){\r
-                                       result &= ImportHelper.addValue(value, ref, destinationAttribute, mapper.getTypeClass(), OVERWRITE, OBLIGATORY);\r
-                               }\r
-                       }\r
-               }\r
-               return true;\r
-       }\r
-       \r
-       private Object getValue(CdmSingleAttributeXmlMapperBase mapper, Element parentElement){\r
-               String sourceAttribute = mapper.getSourceAttribute();\r
-               Namespace sourceNamespace = mapper.getSourceNamespace(parentElement);\r
-               Element child = parentElement.getChild(sourceAttribute, sourceNamespace);\r
-               if (child == null){\r
-                       return null;\r
-               }\r
-               if (child.getContentSize() > 1){\r
-                       logger.warn("Element is not String");\r
-               }\r
-               Object value = child.getTextTrim();\r
-               return value;\r
-       }\r
-       \r
-       protected boolean checkAdditionalContents(Element parentElement, CdmSingleAttributeXmlMapperBase[] classMappers, CdmSingleAttributeXmlMapperBase[] operationalMappers, CdmSingleAttributeXmlMapperBase[] unclearMappers){\r
-               List<Content> additionalContentList = new ArrayList<Content>();\r
-               List<Content> contentList = parentElement.getContent();\r
-               List<CdmSingleAttributeXmlMapperBase> mapperList = new ArrayList<CdmSingleAttributeXmlMapperBase>();\r
-               \r
-               mapperList.addAll(Arrays.asList(classMappers));\r
-               mapperList.addAll(Arrays.asList(operationalMappers));\r
-               mapperList.addAll(Arrays.asList(unclearMappers));\r
-               \r
-               for(Content content: contentList){\r
-                       boolean contentExists = false;\r
-                       if (content instanceof Element){\r
-                               for (CdmSingleAttributeXmlMapperBase mapper : mapperList){\r
-                                       if (mapper.mapsSource(content, parentElement)){\r
-                                               contentExists = true;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               \r
-                       }else if (content instanceof Text){\r
-                               //empty Text\r
-                               if (((Text)content).getTextNormalize().equals("")){\r
-                                       contentExists = true;\r
-                               }else{\r
-                                       //\r
-                               }\r
-                       }\r
-                       \r
-                       if (contentExists == false){\r
-                               additionalContentList.add(content);\r
-                       }\r
-               }\r
-               for (Content additionalContent : additionalContentList){\r
-                       logger.warn("Additional content: " +  additionalContent);\r
-               }\r
-               return (additionalContentList.size() == 0);\r
-       }\r
-       \r
        protected Element getXmlElement(EndnoteImportConfigurator tcsConfig){\r
                Element root = tcsConfig.getSourceRoot();\r
                \r
@@ -161,126 +42,4 @@ public abstract class EndNoteImportBase  extends CdmImportBase<EndnoteImportConf
                \r
                return root;\r
        }\r
-       \r
-//     static public boolean checkFirstTwoFunctionElements(List<Object> objList){\r
-//             if (! (objList.get(0) instanceof TcsXmlImportConfigurator)){\r
-//                     logger.error("first method object has wrong type. Must be " + TcsXmlImportConfigurator.class.getSimpleName() + " but is " + (objList.get(0) == null ? "null": objList.get(0).getClass().getSimpleName()));\r
-//                     return false;\r
-//             }\r
-//             if (! (objList.get(1) == null) && ! (objList.get(1) instanceof Element)){\r
-//                     logger.error("first method object has wrong type. Must be " + Element.class.getSimpleName() + " but is " + (objList.get(1) == null ? "null": objList.get(1).getClass().getSimpleName()));\r
-//                     return false;\r
-//             }\r
-//             return true;\r
-//     }\r
-       \r
-       \r
-       protected boolean testAdditionalElements(Element parentElement, List<String> excludeList){\r
-               boolean result = true;\r
-               List<Element> list = parentElement.getChildren();\r
-               for (Element element : list){\r
-                       if (! excludeList.contains(element.getName())){\r
-                               logger.warn("Unknown element (" + element.getName() + ") in parent element (" + parentElement.getName() + ")");\r
-                               result = false;\r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       \r
-       protected <T extends IdentifiableEntity> T makeReferenceType(Element element, ReferenceType refType, MapWrapper<? extends T> objectMap, ResultWrapper<Boolean> success){\r
-               T result = null;\r
-               \r
-               String linkType = element.getAttributeValue("linkType");\r
-               String ref = element.getAttributeValue("ref");\r
-               if(ref == null && linkType == null){\r
-                       result = (T) ReferenceFactory.newReference(refType);\r
-                               \r
-                       if (result != null){\r
-                               String title = element.getTextNormalize();\r
-                               result.setTitleCache(title, true);\r
-                       }\r
-               }else if (linkType == null || linkType.equals("local")){\r
-                       //TODO\r
-                       result = objectMap.get(ref);\r
-                       if (result == null){\r
-                               logger.warn("Object (ref = " + ref + ")could not be found in WrapperMap");\r
-                       }\r
-               }else if(linkType.equals("external")){\r
-                       logger.warn("External link types not yet implemented");\r
-               }else if(linkType.equals("other")){\r
-                       logger.warn("Other link types not yet implemented");\r
-               }else{\r
-                       logger.warn("Unknown link type or missing ref");\r
-               }\r
-               if (result == null){\r
-                       success.setValue(false);\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       \r
-       protected Reference makeAccordingTo(Element elAccordingTo, MapWrapper<Reference> referenceMap, ResultWrapper<Boolean> success){\r
-               Reference result = null;\r
-               if (elAccordingTo != null){\r
-                       String childName = "AccordingToDetailed";\r
-                       boolean obligatory = false;\r
-                       Element elAccordingToDetailed = XmlHelp.getSingleChildElement(success, elAccordingTo, childName, elAccordingTo.getNamespace(), obligatory);\r
-\r
-                       childName = "Simple";\r
-                       obligatory = true;\r
-                       Element elSimple = XmlHelp.getSingleChildElement(success, elAccordingTo, childName, elAccordingTo.getNamespace(), obligatory);\r
-                       \r
-                       if (elAccordingToDetailed != null){\r
-                               result = makeAccordingToDetailed(elAccordingToDetailed, referenceMap, success);\r
-                       }else{\r
-                               result = ReferenceFactory.newGeneric();\r
-                               String title = elSimple.getTextNormalize();\r
-                               result.setTitleCache(title, true);\r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       \r
-       private Reference makeAccordingToDetailed(Element elAccordingToDetailed, MapWrapper<Reference> referenceMap, ResultWrapper<Boolean> success){\r
-               Reference result = null;\r
-               Namespace tcsNamespace = elAccordingToDetailed.getNamespace();\r
-               if (elAccordingToDetailed != null){\r
-                       //AuthorTeam\r
-                       String childName = "AuthorTeam";\r
-                       boolean obligatory = false;\r
-                       Element elAuthorTeam = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
-                       makeAccordingToAuthorTeam(elAuthorTeam, success);\r
-                       \r
-                       //PublishedIn\r
-                       childName = "PublishedIn";\r
-                       obligatory = false;\r
-                       Element elPublishedIn = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
-                       result = makeReferenceType(elPublishedIn, ReferenceType.Generic, referenceMap, success);\r
-                       \r
-                       //MicroReference\r
-                       childName = "MicroReference";\r
-                       obligatory = false;\r
-                       Element elMicroReference = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
-                       String microReference = elMicroReference.getTextNormalize();\r
-                       if (CdmUtils.Nz(microReference).equals("")){\r
-                               //TODO\r
-                               logger.warn("MicroReference not yet implemented for AccordingToDetailed");      \r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-\r
-       private Team makeAccordingToAuthorTeam(Element elAuthorTeam, ResultWrapper<Boolean> succes){\r
-               Team result = null;\r
-               if (elAuthorTeam != null){\r
-                       //TODO\r
-                       logger.warn("AuthorTeam not yet implemented for AccordingToDetailed");\r
-               }\r
-               return result;\r
-       }\r
-\r
-\r
-\r
 }\r
index e43910a1ce214a463870963030003efb453721c7..640e175783581e38c549ce5ca998a2f6c761b020 100644 (file)
@@ -140,7 +140,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                        Reference<?> report = ReferenceFactory.newReport();\r
                        Reference<?> webPage = ReferenceFactory.newWebPage();\r
                        Institution school = Institution.NewInstance();\r
-                       Team authorTeam = Team.NewInstance();            \r
+                       Team authorship = Team.NewInstance();            \r
                        \r
                        logger.info("start make database ...");\r
                        childName = "database";\r
@@ -292,8 +292,8 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                        String strSize = elStyle.getAttributeValue("size");\r
                                                        String author_style =  elStyle.getTextNormalize();\r
 \r
-                                                       reference.setAuthorTeam(authorTeam);\r
-                                                   authorTeam.setNomenclaturalTitle(author_style);                                               \r
+                                                       reference.setAuthorship(authorship);\r
+                                                   authorship.setNomenclaturalTitle(author_style);                                               \r
                                        }\r
                                }\r
                        }       \r
@@ -332,8 +332,8 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                        String strSize_secondary = elStyle_secondary.getAttributeValue("size");\r
                                                        String  secondary_author=  elStyle_secondary.getTextNormalize();\r
                                         \r
-                                                       reference.setAuthorTeam(authorTeam);\r
-                                                       authorTeam.setTitleCache(secondary_author, true);\r
+                                                       reference.setAuthorship(authorship);\r
+                                                       authorship.setTitleCache(secondary_author, true);\r
                                                }\r
                                        }\r
                                }\r
@@ -472,8 +472,8 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                \r
                                Contact contact =  new Contact();\r
                                Address address = Address.NewInstance();\r
-                               reference.setAuthorTeam(authorTeam);\r
-                               authorTeam.setContact(contact);          \r
+                               reference.setAuthorship(authorship);\r
+                               authorship.setContact(contact);          \r
                                contact.addAddress(address);\r
                                address.setLocality(address_style);\r
                        }\r
index d8c08550cf38db3f0b4dc30116c17f8a4fb07d63..5cf40141cb1de0f45b9d7977ea730085ca3dd8e6 100644 (file)
@@ -601,8 +601,8 @@ public class SDDDataSetImport extends CdmImportBase<SDDImportConfigurator, SDDIm
                                        team.addTeamMember(edit);\r
                                }\r
                        }\r
-                       sec.setAuthorTeam(team);\r
-                       sourceReference.setAuthorTeam(team);\r
+                       sec.setAuthorship(team);\r
+                       sourceReference.setAuthorship(team);\r
                }\r
 \r
                if (copyright != null) {\r
index 957970fadf2503c4db6c79bce88e5bb440c9b05f..ec79665c7dc5e4ea78ae9bbb916568f218602367 100644 (file)
@@ -594,8 +594,8 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                                        team.addTeamMember(edit);\r
                                }\r
                        }\r
-                       sec.setAuthorTeam(team);\r
-                       sourceReference.setAuthorTeam(team);\r
+                       sec.setAuthorship(team);\r
+                       sourceReference.setAuthorship(team);\r
                }\r
 \r
                if (copyright != null) {\r
index b0b3e96bf4bd54c81ed10ae90a5b272938b00c04..2ed6c40cd7191da56f400fdbb18060094c17a35e 100644 (file)
@@ -528,7 +528,7 @@ public class SDDDocumentBuilder {
                ElementImpl revisionData = new ElementImpl(document, REVISION_DATA);\r
 \r
                // authors\r
-               TeamOrPersonBase authors = database.getAuthorTeam();\r
+               TeamOrPersonBase authors = database.getAuthorship();\r
                // TeamOrPersonBase editors = database.getUpdatedBy();\r
 \r
                if ((authors != null)) { // || (editors != null)) {\r
index 61c99a1161b1a26f21ea5c069641f8dd518be698..27420ad6037fcb2eea5aad87012c29744b20fb38 100644 (file)
@@ -42,6 +42,7 @@ import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
@@ -67,9 +68,13 @@ import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -103,6 +108,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
 
     private Abcd206DataHolder dataHolder;
     private DerivedUnit derivedUnitBase;
+    private FieldUnit fieldUnit;
 
     private List<OriginalSourceBase<?>> associationRefs = new ArrayList<OriginalSourceBase<?>>();
     boolean associationSourcesSet=false;
@@ -128,6 +134,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
 
         dataHolder = null;
         derivedUnitBase = null;
+        fieldUnit = null;
 
         associationRefs = new ArrayList<OriginalSourceBase<?>>();
         associationSourcesSet=false;
@@ -328,6 +335,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
             // create facade
             DerivedUnitFacade derivedUnitFacade = getFacade();
             derivedUnitBase = derivedUnitFacade.innerDerivedUnit();
+            fieldUnit = derivedUnitFacade.getFieldUnit(true);
 
             /**
              * GATHERING EVENT
@@ -379,6 +387,19 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                     try {
                         media = getImageMedia(multimediaObject, READ_MEDIA_DATA);
                         derivedUnitFacade.addDerivedUnitMedia(media);
+                        if(state.getConfig().isAddMediaAsMediaSpecimen()){
+                            //add media also as specimen scan
+                            MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
+                            mediaSpecimen.setMediaSpecimen(media);
+                            DefinedTermBase specimenScanTerm = getTermService().load(UUID.fromString("acda15be-c0e2-4ea8-8783-b9b0c4ad7f03"));
+                            if(specimenScanTerm instanceof DefinedTerm){
+                                mediaSpecimen.setKindOfUnit((DefinedTerm) specimenScanTerm);
+                            }
+                            DerivationEvent derivationEvent = DerivationEvent.NewInstance(DerivationEventType.PREPARATION());
+                            derivationEvent.addDerivative(mediaSpecimen);
+                            derivedUnitFacade.innerDerivedUnit().addDerivationEvent(derivationEvent);
+                        }
+
                     } catch (MalformedURLException e) {
                         // TODO Auto-generated catch block
                         e.printStackTrace();
@@ -863,59 +884,51 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
         determinationEvent.setIdentifiedUnit(derivedUnitBase);
         derivedUnitBase.addDetermination(determinationEvent);
 
-        try {
-            if(DEBUG){
-                logger.info("NB TYPES INFO: "+ dataHolder.statusList.size());
-            }
-            for (SpecimenTypeDesignationStatus specimenTypeDesignationstatus : dataHolder.statusList) {
-                if (specimenTypeDesignationstatus != null) {
-                    if(DEBUG){
-                        logger.info("specimenTypeDesignationstatus :"+ specimenTypeDesignationstatus);
-                    }
-
-                    ICdmApplicationConfiguration cdmAppController = config.getCdmAppController();
-                    if(cdmAppController == null){
-                        cdmAppController = this;
-                    }
-                    specimenTypeDesignationstatus = (SpecimenTypeDesignationStatus) cdmAppController.getTermService().find(specimenTypeDesignationstatus.getUuid());
-                    //Designation
-                    TaxonNameBase<?,?> name = taxon.getName();
-                    SpecimenTypeDesignation designation = SpecimenTypeDesignation.NewInstance();
+        if(DEBUG){
+            logger.info("NB TYPES INFO: "+ dataHolder.statusList.size());
+        }
+        for (SpecimenTypeDesignationStatus specimenTypeDesignationstatus : dataHolder.statusList) {
+            if (specimenTypeDesignationstatus != null) {
+                if(DEBUG){
+                    logger.info("specimenTypeDesignationstatus :"+ specimenTypeDesignationstatus);
+                }
 
-                    designation.setTypeStatus(specimenTypeDesignationstatus);
-                    designation.setTypeSpecimen(derivedUnitBase);
-                    name.addTypeDesignation(designation, true);
+                ICdmApplicationConfiguration cdmAppController = config.getCdmAppController();
+                if(cdmAppController == null){
+                    cdmAppController = this;
                 }
+                specimenTypeDesignationstatus = (SpecimenTypeDesignationStatus) cdmAppController.getTermService().find(specimenTypeDesignationstatus.getUuid());
+                //Designation
+                TaxonNameBase<?,?> name = taxon.getName();
+                SpecimenTypeDesignation designation = SpecimenTypeDesignation.NewInstance();
+
+                designation.setTypeStatus(specimenTypeDesignationstatus);
+                designation.setTypeSpecimen(derivedUnitBase);
+                name.addTypeDesignation(designation, true);
             }
-        } catch (Exception e) {
-            logger.warn("PB addding SpecimenType " + e);
         }
 
         for (String[] fullReference : dataHolder.referenceList) {
-            try{
-                List<Reference> references = getReferenceService().list(Reference.class, null, null, null, null);
-
-                String strReference=fullReference[0];
-                String citationDetail = fullReference[1];
-                String citationURL = fullReference[2];
-
-                if (isNotBlank(strReference)){
-                    Reference<?> reference = null;
-                    for (Reference<?> refe: references) {
-                        if (refe.getTitleCache().equalsIgnoreCase(strReference)) {
-                            reference =refe;
-                            break;
-                        }
-                    }
-                    if (reference ==null){
-                        reference = ReferenceFactory.newGeneric();
-                        reference.setTitleCache(strReference, true);
-                        save(reference, state);
+            List<Reference> references = getReferenceService().list(Reference.class, null, null, null, null);
+
+            String strReference=fullReference[0];
+            String citationDetail = fullReference[1];
+            String citationURL = fullReference[2];
+
+            if (isNotBlank(strReference)){
+                Reference<?> reference = null;
+                for (Reference<?> refe: references) {
+                    if (refe.getTitleCache().equalsIgnoreCase(strReference)) {
+                        reference =refe;
+                        break;
                     }
-                    determinationEvent.addReference(reference);
                 }
-            } catch (Exception e) {
-                logger.warn("pv getReferenceList " + e);
+                if (reference ==null){
+                    reference = ReferenceFactory.newGeneric();
+                    reference.setTitleCache(strReference, true);
+                    save(reference, state);
+                }
+                determinationEvent.addReference(reference);
             }
         }
         save(derivedUnitBase, state);
@@ -926,6 +939,19 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
             }
 
             makeIndividualsAssociation(state, taxon, determinationEvent);
+
+            if(state.getConfig().isDeterminationOnFieldUnitLevel()){
+                DeterminationEvent fieldUnitDeterminationEvent = DeterminationEvent.NewInstance();
+                fieldUnitDeterminationEvent.setTaxon(determinationEvent.getTaxon());
+                fieldUnitDeterminationEvent.setPreferredFlag(determinationEvent.getPreferredFlag());
+                fieldUnitDeterminationEvent.setIdentifiedUnit(fieldUnit);
+                Set<Reference> references = determinationEvent.getReferences();
+                for (Reference reference : references) {
+                    fieldUnitDeterminationEvent.addReference(reference);
+                }
+                fieldUnit.addDetermination(fieldUnitDeterminationEvent);
+            }
+
             save(derivedUnitBase, state);
         }
     }
@@ -1183,12 +1209,12 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
     }
 
     /**
-     * @param derivedUnitBase2
+     * @param specimen
      * @param source
      * @return
      */
-    private boolean sourceNotLinkedToElement(DerivedUnit derivedUnitBase2, OriginalSourceBase<?> source) {
-        Set<IdentifiableSource> linkedSources = derivedUnitBase2.getSources();
+    private boolean sourceNotLinkedToElement(SpecimenOrObservationBase<?> specimen, OriginalSourceBase<?> source) {
+        Set<IdentifiableSource> linkedSources = specimen.getSources();
         for (IdentifiableSource is:linkedSources){
             Reference a = is.getCitation();
             Reference b = source.getCitation();
@@ -1648,7 +1674,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                 if (spe != null){
                     species = getTaxon(state, prefix+" "+name+" "+spe, -1, Rank.SPECIES());
                     if (preferredFlag) {
-                        parent =       saveOrUpdateClassification(subgenus, species, state);
+                        parent = saveOrUpdateClassification(subgenus, species, state);
                     }
                 }
             }
@@ -1658,7 +1684,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                 if (name != null){
                     species = getTaxon(state, prefix+" "+name, -1, Rank.SPECIES());
                     if (preferredFlag) {
-                        parent =       saveOrUpdateClassification(genus, species, state);
+                        parent = saveOrUpdateClassification(genus, species, state);
                     }
                 }
             }
@@ -1666,7 +1692,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
         if (rank.isInfraSpecific()){
             subspecies = getTaxon(state, nvname.getFullTitleCache(), -1, Rank.SUBSPECIES());
             if (preferredFlag) {
-                parent =       saveOrUpdateClassification(species, subspecies, state);
+                parent = saveOrUpdateClassification(species, subspecies, state);
             }
         }
         if (preferredFlag) {
index 39c376c7d3cf077c599a3aafb7dc64b916533048..9e5f888d5e443f100d645befdc60d572baa2d88e 100644 (file)
@@ -49,6 +49,8 @@ public class Abcd206ImportConfigurator extends ImportConfiguratorBase<Abcd206Imp
     private Map<String, Person> titleCachePerson;\r
     private String defaultAuthor="";\r
     private boolean allowReuseOtherClassifications =true;\r
+    private boolean addMediaAsMediaSpecimen = false;\r
+    private boolean determinationOnFieldUnitLevel = false;\r
 \r
 \r
     private final SpecimenUserInteraction specimenUserInteraction = new SpecimenUserInteraction();\r
@@ -60,6 +62,7 @@ public class Abcd206ImportConfigurator extends ImportConfiguratorBase<Abcd206Imp
 \r
     private URI sourceUri;\r
 \r
+\r
     @Override\r
     @SuppressWarnings("unchecked")\r
     protected void makeIoClassList(){\r
@@ -310,6 +313,24 @@ public class Abcd206ImportConfigurator extends ImportConfiguratorBase<Abcd206Imp
         return namedAreaDecisions.get(areaStr);\r
     }\r
 \r
+    /**\r
+     * @return the doAddMediaAsMediaSpecimen\r
+     */\r
+    public boolean isAddMediaAsMediaSpecimen() {\r
+        return addMediaAsMediaSpecimen;\r
+    }\r
+\r
+    public void setAddMediaAsMediaSpecimen(boolean addMediaAsMediaSpecimen) {\r
+        this.addMediaAsMediaSpecimen = addMediaAsMediaSpecimen;\r
+    }\r
+\r
+    public boolean isDeterminationOnFieldUnitLevel() {\r
+        return determinationOnFieldUnitLevel;\r
+    }\r
+\r
+    public void setDeterminationOnFieldUnitLevel(boolean determinationOnFieldUnitLevel) {\r
+        this.determinationOnFieldUnitLevel = determinationOnFieldUnitLevel;\r
+    }\r
 \r
     /**\r
      * @return the allowReuseOtherClassifications\r
index 76495f5def3c3934918f392a48cc7a809bff26ef..e42048cf79ff103b9a74e1dda59d536c82b95236 100644 (file)
@@ -601,23 +601,23 @@ public class Abcd206XMLFieldGetter {
      * @param root
      */
     protected void getGatheringPeople(Element root) {
-        NodeList group, childs, person;
         try {
-            group = root.getElementsByTagName(prefix + "GatheringAgent");
             dataHolder.gatheringAgentList = new ArrayList<String>();
+
+            NodeList group = root.getElementsByTagName(prefix + "GatheringAgent");
             for (int i = 0; i < group.getLength(); i++) {
-                childs = group.item(i).getChildNodes();
-                for (int j = 0; j < childs.getLength(); j++) {
-                    if (childs.item(j).getNodeName().equals(prefix + "Person")) {
-                        person = childs.item(j).getChildNodes();
-                        for (int k = 0; k < person.getLength(); k++) {
-                            if (person.item(k).getNodeName().equals(prefix + "FullName")) {
-                                path = person.item(k).getNodeName();
-                                getHierarchie(person.item(k));
+                NodeList children = group.item(i).getChildNodes();
+                for (int j = 0; j < children.getLength(); j++) {
+                    if (children.item(j).getNodeName().equals(prefix + "Person")) {
+                        NodeList persons = children.item(j).getChildNodes();
+                        for (int k = 0; k < persons.getLength(); k++) {
+                            if (persons.item(k).getNodeName().equals(prefix + "FullName")) {
+                                path = persons.item(k).getNodeName();
+                                getHierarchie(persons.item(k));
                                 dataHolder.knownABCDelements.add(path);
                                 path = "";
-                                if (!person.item(k).getTextContent().trim().equalsIgnoreCase("none")) {
-                                    dataHolder.gatheringAgentList.add(person.item(k).getTextContent());
+                                if (!persons.item(k).getTextContent().trim().equalsIgnoreCase("none")) {
+                                    dataHolder.gatheringAgentList.add(persons.item(k).getTextContent());
                                 }
                             }
                         }
@@ -625,6 +625,29 @@ public class Abcd206XMLFieldGetter {
 
                 }
             }
+
+            group = root.getElementsByTagName(prefix + "Gathering");
+            for (int i = 0; i < group.getLength(); i++) {
+                NodeList children = group.item(i).getChildNodes();
+                for (int j = 0; j < children.getLength(); j++) {
+                    if (children.item(j).getNodeName().equals(prefix + "Agents")) {
+                        NodeList persons = children.item(j).getChildNodes();
+                        for (int k = 0; k < persons.getLength(); k++) {
+                            if (persons.item(k).getNodeName().equals(prefix + "GatheringAgentsText")) {
+                                path = persons.item(k).getNodeName();
+                                getHierarchie(persons.item(k));
+                                dataHolder.knownABCDelements.add(path);
+                                path = "";
+                                if (!persons.item(k).getTextContent().trim().equalsIgnoreCase("none")) {
+                                    dataHolder.gatheringAgentList.add(persons.item(k).getTextContent());
+                                }
+                            }
+                        }
+                    }
+
+                }
+            }
+
         } catch (NullPointerException e) {
             dataHolder.gatheringAgentList = new ArrayList<String>();
         }
index b43d33e9b8f34e162b0986e0bef67605a054044c..5c03af50d5580236b869ab39d6905c90b4e39b58 100644 (file)
@@ -544,7 +544,7 @@ public class SpecimenCdmExcelImport  extends ExcelTaxonOrSpecimenImportBase<Spec
                        } catch (StringNotParsableException e) {
                                determinedBy = Team.NewTitledInstance(commonDetermination.determinedBy, commonDetermination.determinedBy);
                        }
-                       sec.setAuthorTeam(determinedBy);
+                       sec.setAuthorship(determinedBy);
                }
                
                //taxon
@@ -718,7 +718,7 @@ public class SpecimenCdmExcelImport  extends ExcelTaxonOrSpecimenImportBase<Spec
                        authors.add(determination.determinedBy);
                }
                TeamOrPersonBase<?> actor = getOrMakeAgent(state, authors);
-               TeamOrPersonBase<?> secAuthor = taxon.getSec() == null ? null : taxon.getSec().getAuthorTeam();
+               TeamOrPersonBase<?> secAuthor = taxon.getSec() == null ? null : taxon.getSec().getAuthorship();
                if (actor != null && secAuthor != null && secAuthor.getTitleCache().equals(actor.getTitleCache()) && secAuthor.getNomenclaturalTitle().equals(actor.getNomenclaturalTitle())) {
                        actor = secAuthor;
                }
index 6fa9283ec1ca25c7d8e541f4662be7439b27893b..7876d7c788d51f796b8770b52082dd5ca1731c15 100644 (file)
@@ -874,7 +874,7 @@ implements ICdmIO<SpecimenSynthesysExcelImportState> {
         if (ref == null){
             ref = state.getConfig().getSourceReference();
         }
-        AgentBase<?> agent= ref.getAuthorTeam();
+        AgentBase<?> agent= ref.getAuthorship();
         if (agent != null){
             if (agent.getClass().equals(Team.class)){
                 for (Person p : ((Team) agent).getTeamMembers()){
index df395cbbbbffa1288ea4becdad2d171f0afc1e90..de726dc8bf63c7d3f5ae0b3e4b7bab6697760ecd 100644 (file)
@@ -171,7 +171,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
                int PARSED = 1;\r
                Namespace nsMods = elModsName.getNamespace();\r
                List<Content> contentList = elModsName.getContent();\r
-               Team authorTeam = Team.NewInstance();\r
+               Team authorship = Team.NewInstance();\r
                \r
                //name\r
                List<Element> elNameParts = elModsName.getChildren("namePart", nsMods);\r
@@ -187,7 +187,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
                        if (elNamePart != null){\r
                                String namePart = elNamePart.getTextNormalize();\r
                                contentList.remove(elNamePart);\r
-                               authorTeam.setTitleCache(namePart, true);\r
+                               authorship.setTitleCache(namePart, true);\r
                        }\r
                        if (elNameParts.size()> 1){\r
                                logger.warn("Multiple nameparts of unexpected type");\r
@@ -200,7 +200,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
                        for (Element elNamePart: tmpNamePartList){\r
                                if (elNamePart.getAttributeValue("type").equals("family")){\r
                                        lastTeamMember = Person.NewInstance();\r
-                                       authorTeam.addTeamMember(lastTeamMember);\r
+                                       authorship.addTeamMember(lastTeamMember);\r
                                        lastTeamMember.setLastname(elNamePart.getTextNormalize());\r
                                }else if (elNamePart.getAttributeValue("type").equals("given")){\r
                                        lastTeamMember.setFirstname(elNamePart.getTextNormalize());\r
@@ -210,7 +210,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
                                contentList.remove(elNamePart);\r
                        }\r
                }\r
-               ref.setAuthorTeam(authorTeam);\r
+               ref.setAuthorship(authorship);\r
                \r
                removeEmptyContent(contentList);\r
                for (Content o: contentList){\r
index 6609181b2fae50f52d53008c4061159b8e1635f1..e9b9bc2bc38ba4a870791526cc061f96976a9c75 100644 (file)
@@ -175,25 +175,25 @@ public class TaxonXModsExtractor extends TaxonXExtractor{
                        if (ref == null){
                                logger.warn("mods:name exists but reference is null");
                        }else if (persons.size()==1){
-                ref.setAuthorTeam(persons.get(0));
+                ref.setAuthorship(persons.get(0));
             }
             else{
-                Team authorTeam = Team.NewInstance();
+                Team authorship = Team.NewInstance();
                 for (Person pers:persons){
-                    authorTeam.addTeamMember(pers);
+                    authorship.addTeamMember(pers);
                 }
 
-                if (!personMap.containsKey(authorTeam.getTitleCache()) && (authorTeam.getTeamMembers().size()>0)){
-                    UUID uuid = importer.getAgentService().saveOrUpdate(authorTeam);
-                    personMap.put(authorTeam.getTitleCache(),uuid);
+                if (!personMap.containsKey(authorship.getTitleCache()) && (authorship.getTeamMembers().size()>0)){
+                    UUID uuid = importer.getAgentService().saveOrUpdate(authorship);
+                    personMap.put(authorship.getTitleCache(),uuid);
                 }else{
-                    if(authorTeam.getTeamMembers().size()>1) {
-                       UUID uuid = personMap.get(authorTeam.getTitleCache());
-                        authorTeam =  (Team) importer.getAgentService().find(uuid);
+                    if(authorship.getTeamMembers().size()>1) {
+                       UUID uuid = personMap.get(authorship.getTitleCache());
+                        authorship =  (Team) importer.getAgentService().find(uuid);
                     }
                 }
 
-                ref.setAuthorTeam(authorTeam);
+                ref.setAuthorship(authorship);
             }
             if (editors.size()>0) {
                 ref.setEditor(StringUtils.join(editors,", "));
index 52a2c90361060f21a064f466a0d362772e663805..fab9944df81f630558c5bcd9a640c453a019beea 100644 (file)
@@ -238,9 +238,9 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                                tcsNamespace = publicationNamespace;\r
                                String strAuthorship = elPublicationCitation.getChildText(tcsElementName, tcsNamespace);\r
                                //TODO\r
-                               TeamOrPersonBase<?> authorTeam = Team.NewInstance();\r
-                               authorTeam.setTitleCache(strAuthorship, true);\r
-                               ref.setAuthorTeam(authorTeam);\r
+                               TeamOrPersonBase<?> authorship = Team.NewInstance();\r
+                               authorship.setTitleCache(strAuthorship, true);\r
+                               ref.setAuthorship(authorship);\r
 \r
                                tcsElementName = "year";\r
                                tcsNamespace = publicationNamespace;\r
index 342841f495da49948aea313d523b589d99c77789..d2fda06cdffcf1d47d65ce082dadef99f63916c9 100644 (file)
@@ -21,7 +21,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:sequence>
           <xs:element name="URI" type="xs:string" minOccurs="0"/>
           <xs:element name="IsNomenclaturallyRelevant" type="xs:boolean"/>
-          <xs:element name="AuthorTeam" type="xs:IDREF" minOccurs="0"/>
+          <xs:element name="Authorship" type="xs:IDREF" minOccurs="0"/>
           <xs:element name="Abstract" type="xs:string" minOccurs="0"/>
           <xs:element name="Title" type="xs:string" minOccurs="0"/>
           <xs:element name="Editor" type="xs:string" minOccurs="0"/>
index 081dcf3223ae274dd555c2f4aa80ac949ed0d09f..3d5b54fb8b002365b4a89c1035652f77ad09ce96 100644 (file)
@@ -227,8 +227,8 @@ public class ExcelStreamImportTest extends CdmTransactionalIntegrationTest{
 //             DescriptionElementSource source = textData.getSources().iterator().next();\r
 //             Reference ref = source.getCitation();\r
 //             assertNotNull("Citation should not be null", ref);\r
-//             assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
-//             assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorTeam().getTitleCache());\r
+//             assertNotNull("Authorship should not be null", ref.getAuthorship());\r
+//             assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorship().getTitleCache());\r
 //             assertEquals("Publication title should be 'My first book'", "My first book", ref.getTitle());\r
 //             assertEquals("Publication year should be '1987'", "1987", ref.getYear());\r
 //             TaxonNameBase nameUsedInSource = source.getNameUsedInSource();\r
@@ -251,8 +251,8 @@ public class ExcelStreamImportTest extends CdmTransactionalIntegrationTest{
 //             source = textData.getSources().iterator().next();\r
 //             ref = source.getCitation();\r
 //             assertNotNull("Citation should not be null", ref);\r
-//             assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
-//             assertEquals("Source author should be 'Theys, A.'", "Theys, A.",ref.getAuthorTeam().getTitleCache());\r
+//             assertNotNull("Authorship should not be null", ref.getAuthorship());\r
+//             assertEquals("Source author should be 'Theys, A.'", "Theys, A.",ref.getAuthorship().getTitleCache());\r
 //             assertEquals("Publication title should be 'The ultimate book'", "The ultimate book", ref.getTitle());\r
 //             assertEquals("Publication year should be '2011'", "2011", ref.getYear());\r
 //             nameUsedInSource = source.getNameUsedInSource();\r
index c098083921fdacc56e15461cb743d42d281cc296..d6b85ac1a623c13b872a079497a70c242a28ad62 100644 (file)
@@ -203,8 +203,8 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{
                DescriptionElementSource source = textData.getSources().iterator().next();\r
                Reference<?> ref = source.getCitation();\r
                assertNotNull("Citation should not be null", ref);\r
-               assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
-               assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorTeam().getTitleCache());\r
+               assertNotNull("Authorship should not be null", ref.getAuthorship());\r
+               assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorship().getTitleCache());\r
                assertEquals("Publication title should be 'My first book'", "My first book", ref.getTitle());\r
                assertEquals("Publication year should be '1987'", "1987", ref.getYear());\r
                TaxonNameBase<?,?> nameUsedInSource = source.getNameUsedInSource();\r
@@ -227,8 +227,8 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{
                source = textData.getSources().iterator().next();\r
                ref = source.getCitation();\r
                assertNotNull("Citation should not be null", ref);\r
-               assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
-               assertEquals("Source author should be 'Theys, A.'", "Theys, A.",ref.getAuthorTeam().getTitleCache());\r
+               assertNotNull("Authorship should not be null", ref.getAuthorship());\r
+               assertEquals("Source author should be 'Theys, A.'", "Theys, A.",ref.getAuthorship().getTitleCache());\r
                assertEquals("Publication title should be 'The ultimate book'", "The ultimate book", ref.getTitle());\r
                assertEquals("Publication year should be '2011'", "2011", ref.getYear());\r
                nameUsedInSource = source.getNameUsedInSource();\r
index 20b34a04be034e48efbe2ebad1ef64537cc6493f..bc3aa96c5c526e3465a448172db7fee9b5bc93ae 100644 (file)
@@ -18,12 +18,12 @@ import java.net.URL;
 \r
 import org.junit.Assert;\r
 import org.junit.Before;\r
-import org.junit.Ignore;\r
 import org.junit.Test;\r
 import org.unitils.dbunit.annotation.DataSet;\r
 import org.unitils.spring.annotation.SpringBeanByName;\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
+import eu.etaxonomy.cdm.api.service.IAgentService;\r
 import eu.etaxonomy.cdm.api.service.ICommonService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
@@ -32,6 +32,8 @@ import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.io.common.CdmApplicationAwareDefaultImport;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.model.agent.Institution;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
@@ -47,23 +49,26 @@ import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;
 public class SpecimenImportConfiguratorTest extends CdmTransactionalIntegrationTest {\r
 \r
        @SpringBeanByName\r
-       CdmApplicationAwareDefaultImport<?> defaultImport;\r
+       private CdmApplicationAwareDefaultImport<?> defaultImport;\r
 \r
        @SpringBeanByType\r
-       INameService nameService;\r
+       private INameService nameService;\r
 \r
        @SpringBeanByType\r
-       IOccurrenceService occurrenceService;\r
+       private IOccurrenceService occurrenceService;\r
 \r
        @SpringBeanByType\r
-       ITermService termService;\r
+       private ITermService termService;\r
 \r
        @SpringBeanByType\r
-    ICommonService commonService;\r
+       private ICommonService commonService;\r
 \r
        @SpringBeanByType\r
-       ITaxonNodeService taxonNodeService;\r
-       \r
+       private ITaxonNodeService taxonNodeService;\r
+\r
+       @SpringBeanByType\r
+       private IAgentService agentService;\r
+\r
        @SpringBeanByType\r
        private IReferenceService referenceService;\r
 \r
@@ -84,7 +89,7 @@ public class SpecimenImportConfiguratorTest extends CdmTransactionalIntegrationT
             Assert.fail();\r
         }\r
         assertNotNull("Configurator2 could not be created", configurator);\r
-        \r
+\r
         //test2\r
         String inputFile2 = "/eu/etaxonomy/cdm/io/specimen/abcd206/in/Campanula_ABCD_import_3_taxa_11_units.xml";\r
                URL url2 = this.getClass().getResource(inputFile2);\r
@@ -121,8 +126,12 @@ public class SpecimenImportConfiguratorTest extends CdmTransactionalIntegrationT
          */\r
         assertEquals("Number of TaxonNodes is incorrect", 3, taxonNodeService.count(TaxonNode.class));\r
         assertEquals("Number of specimen and observation is incorrect", 10, occurrenceService.count(DerivedUnit.class));\r
+        //Asch. + Mitarbeiter der Floristischen Kartierung Deutschlands\r
+        assertEquals("Number of persons is incorrect", 2, agentService.count(Person.class));\r
+        //BfN\r
+        assertEquals("Number of institutions is incorrect", 1, agentService.count(Institution.class));\r
     }\r
-       \r
+\r
 \r
        @Test\r
        @DataSet(value="SpecimenImportConfiguratorTest.doInvoke2.xml",  loadStrategy=CleanSweepInsertLoadStrategy.class)\r
@@ -142,6 +151,9 @@ public class SpecimenImportConfiguratorTest extends CdmTransactionalIntegrationT
         assertEquals("Number of TaxonNodes is incorrect", 5, taxonNodeService.count(TaxonNode.class));\r
                assertEquals("Number of derived units is incorrect", 11, occurrenceService.count(DerivedUnit.class));\r
                assertEquals("Number of field units is incorrect", 11, occurrenceService.count(FieldUnit.class));\r
-               assertEquals("Number of field units is incorrect", 1, referenceService.count(Reference.class));\r
+               assertEquals("Number of gathering agents is incorrect", 4, agentService.count(Person.class));\r
+               //BGBM\r
+               assertEquals("Number of institutions is incorrect", 1, agentService.count(Institution.class));\r
+               assertEquals("Number of references is incorrect", 1, referenceService.count(Reference.class));\r
        }\r
 }\r
index 02827ef849504b0fae2352fa91ef5bc029aa1601..bbc4f1cb803d2f81db3ea4992ffeecb594b5f578 100644 (file)
@@ -74,7 +74,7 @@ public class TestDatabase {
                TransactionStatus txStatus = appCtr.startTransaction();\r
                DataSet dataSet = buildDataSet();\r
 \r
-               appCtr.getTaxonService().save(dataSet.getTaxonBases());\r
+               appCtr.getTaxonService().save((List)dataSet.getTaxonBases());\r
 \r
                appCtr.commitTransaction(txStatus);\r
                appCtr.close();\r
@@ -175,12 +175,12 @@ public class TestDatabase {
 \r
         // references\r
                sec = ReferenceFactory.newBook();\r
-               sec.setAuthorTeam(linne);\r
+               sec.setAuthorship(linne);\r
                sec.setTitleCache("Plant Speciation", true);\r
                references.add(sec);\r
 \r
                citRef = ReferenceFactory.newDatabase();\r
-               citRef.setAuthorTeam(linne);\r
+               citRef.setAuthorship(linne);\r
                citRef.setTitleCache("BioCASE", true);\r
                references.add(citRef);\r
 \r
@@ -237,7 +237,7 @@ public class TestDatabase {
                dataSet.setTerms(terms);\r
                dataSet.setReferences(references);\r
                dataSet.setTaxonomicNames(taxonomicNames);\r
-               dataSet.setTaxonBases(taxonBases);\r
+               dataSet.setTaxonBases((List)taxonBases);\r
 \r
                return dataSet;\r
 \r
index bf373e815b6e838da50f045133f49503512122a6..2c82f6cc916aac29e3fb4f072513bc3a5c8ae910 100644 (file)
@@ -185,6 +185,20 @@ CREATE CACHED TABLE PUBLIC.AGENTBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER(
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.AGENTBASE_MARKER(
     AGENTBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -485,6 +499,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION(
     PROTECTEDTITLECACHE BOOLEAN NOT NULL,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -507,6 +524,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_AUD(
     PROTECTEDTITLECACHE BOOLEAN,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -540,6 +560,22 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_CREDIT_AUD;
+
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+       DESCRIPTION_ID INTEGER NOT NULL,
+       DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    DESCRIPTION_ID INTEGER NOT NULL,
+    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION_AUD;
+
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION(
     CLASSIFICATION_ID INTEGER NOT NULL,
     EXTENSIONS_ID INTEGER NOT NULL
@@ -552,6 +588,32 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_MARKER(
     CLASSIFICATION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -674,6 +736,20 @@ CREATE CACHED TABLE PUBLIC.COLLECTION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER(
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.COLLECTION_MARKER(
     COLLECTION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -922,6 +998,22 @@ CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD;
+                                                                                                     
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER(
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MARKER(
     DEFINEDTERMBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1180,6 +1272,22 @@ CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER(
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_FEATURE(
     DESCRIPTIONBASE_ID INTEGER NOT NULL,
     DESCRIPTIVESYSTEM_ID INTEGER NOT NULL
@@ -1504,6 +1612,69 @@ CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY(
+    ID INTEGER NOT NULL,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY_AUD(
+    ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY_AUD;
+CREATE CACHED TABLE PUBLIC.ENTITYVALIDATIONRESULT(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    VALIDATEDENTITYID INTEGER,
+    VALIDATEDENTITYUUID VARCHAR(36),
+    VALIDATEDENTITYCLASS VARCHAR(255),
+    USERFRIENDLYDESCRIPTION VARCHAR(255),
+    USERFRIENDLYTYPENAME VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CRUDEVENTTYPE VARCHAR(24)
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYVALIDATIONRESULT;
+CREATE CACHED TABLE PUBLIC.ENTITYCONSTRAINTVIOLATION(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    PROPERTYPATH VARCHAR(255),
+    USERFRIENDLYFIELDNAME VARCHAR(255),
+    INVALIDVALUE VARCHAR(255),
+    SEVERITY VARCHAR(24),
+    MESSAGE VARCHAR(255),
+    VALIDATOR VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    ENTITYVALIDATIONRESULT_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYCONSTRAINTVIOLATION;
 CREATE CACHED TABLE PUBLIC.EXTENSION(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
@@ -1658,6 +1829,20 @@ CREATE CACHED TABLE PUBLIC.FEATURETREE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER(
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.FEATURETREE_MARKER(
     FEATURETREE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1808,7 +1993,7 @@ CREATE CACHED TABLE PUBLIC.GRANTEDAUTHORITYIMPL(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    AUTHORITY VARCHAR(255),
+    AUTHORITY VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.GRANTEDAUTHORITYIMPL;
@@ -1922,6 +2107,34 @@ CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING(
     DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER_AUD(
+       ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING_AUD(
     REV INTEGER NOT NULL,
     DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,
@@ -2387,6 +2600,20 @@ CREATE CACHED TABLE PUBLIC.MEDIA_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER(
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.MEDIA_LANGUAGESTRING(
     MEDIA_ID INTEGER NOT NULL,
     TITLE_ID INTEGER NOT NULL,
@@ -2689,7 +2916,7 @@ CREATE CACHED TABLE PUBLIC.PERMISSIONGROUP(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    NAME VARCHAR(255),
+    NAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.PERMISSIONGROUP;
@@ -2828,6 +3055,20 @@ CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER(
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_MARKER(
     POLYTOMOUSKEY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -2919,10 +3160,11 @@ CREATE TABLE PRIMER (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+       SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER,
     PRIMARY KEY (ID)
 );
 CREATE TABLE PRIMER_AUD (
@@ -2931,10 +3173,11 @@ CREATE TABLE PRIMER_AUD (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+    SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER
 );
 
 CREATE TABLE PRIMER_ANNOTATION (
@@ -2988,7 +3231,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     PROBLEMSTARTS INTEGER NOT NULL,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -2999,7 +3241,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3038,7 +3280,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     PROBLEMSTARTS INTEGER,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -3049,7 +3290,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3093,6 +3334,20 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER(
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.REFERENCE_MARKER(
     REFERENCE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -3441,6 +3696,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3454,7 +3710,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE;
 CREATE INDEX PUBLIC.SPECIMENOROBSERVATIONBASETITLECACHEINDEX ON PUBLIC.SPECIMENOROBSERVATIONBASE(TITLECACHE);
@@ -3481,6 +3738,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3494,7 +3752,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_AUD;
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION(
@@ -3547,6 +3806,22 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER(
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING(
     SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
     DEFINITION_ID INTEGER NOT NULL,
@@ -3852,6 +4127,20 @@ CREATE CACHED TABLE PUBLIC.TAXONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER(
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONBASE_MARKER(
     TAXONBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4045,6 +4334,20 @@ CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER(
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_MARKER(
     TAXONNAMEBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4305,6 +4608,20 @@ CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER(
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_MARKER(
     TERMVOCABULARY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4427,7 +4744,7 @@ CREATE CACHED TABLE PUBLIC.USERACCOUNT(
     EMAILADDRESS VARCHAR(255),
     ENABLED BOOLEAN NOT NULL,
     PASSWORD VARCHAR(255),
-    USERNAME VARCHAR(255),
+    USERNAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER,
     PERSON_ID INTEGER
 );
@@ -5906,7 +6223,7 @@ ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT
 ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORTEAM_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK48AC64334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
 ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B7C7B5AED FOREIGN KEY(TAXONOMICPARENTCACHE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB50751EC5 FOREIGN KEY(CONTACT_ADDRESSES_ID) REFERENCES PUBLIC.ADDRESS(ID) NOCHECK;
index 4662dc6d86992749e6291902b1403b683d96546e..7edad521fdaa2a84a9f99eb91b8d065254ba780b 100644 (file)
@@ -27,7 +27,7 @@
             <common:TitleCache>Godfray, 2002</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-1a634162-4db8-4d83-84b0-079730d73c51</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-1a634162-4db8-4d83-84b0-079730d73c51</reference:Authorship>\r
             <reference:Title>Challenges for taxonomy</reference:Title>\r
             <reference:Volume>417</reference:Volume>\r
             <reference:Pages>17-19</reference:Pages>\r
@@ -52,7 +52,7 @@
             <common:TitleCache>Darwin, 1859</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-b8506159-0555-4489-a74c-eb50c2062218</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-b8506159-0555-4489-a74c-eb50c2062218</reference:Authorship>\r
             <reference:Title>On the Origin of Species by Means of Natural Selection, or the Preservation of Favoured Races in the Struggle for Life</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>1859-11-24</common:Start>\r
@@ -63,7 +63,7 @@
             <common:TitleCache>Darwin, 2005</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-b8506159-0555-4489-a74c-eb50c2062218</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-b8506159-0555-4489-a74c-eb50c2062218</reference:Authorship>\r
             <reference:Title>From So Simple a Beginning: Darwin's Four Great Books (Voyage of the H.M.S. Beagle, The Origin of Species, The Descent of Man, The Expression of Emotions in Man and Animals)</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>2005-11</common:Start>\r
index bf4f8a536d9725bdd7dd9354905fac47c969cecd..f53e27976e5d3cb0086dc01c0efaef705d196427 100644 (file)
             <common:TitleCache>Linnaeus, 1758</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>true</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-5d3161eb-d227-415f-ba2a-93b8c7ddb98a</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-5d3161eb-d227-415f-ba2a-93b8c7ddb98a</reference:Authorship>\r
             <reference:Title>Syst. Nat. (Edn 10)</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>1758</common:Start>\r
             <common:TitleCache>Linnaeus, 1753</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>true</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-5d3161eb-d227-415f-ba2a-93b8c7ddb98a</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-5d3161eb-d227-415f-ba2a-93b8c7ddb98a</reference:Authorship>\r
             <reference:Title>Species Plantarum</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>1753</common:Start>\r
             <common:TitleCache>Schott, 1856</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>true</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-28e67c60-ca40-41bb-aa1c-f713efd0f235</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-28e67c60-ca40-41bb-aa1c-f713efd0f235</reference:Authorship>\r
             <reference:Title>Synopsis aroidearum complectens enumerationem sytematicam generum et ...</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>1856</common:Start>\r
             <common:TitleCache>Tutt, 1904</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>true</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-b8cd17ba-32ea-4201-85f1-63d31526ccdb</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-b8cd17ba-32ea-4201-85f1-63d31526ccdb</reference:Authorship>\r
             <reference:Title>A Natural History of the British Lepidoptera</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>1904</common:Start>\r
             <common:TitleCache>Kitching &amp; Cadiou, 2000</common:TitleCache>\r
             <common:ProtectedTitleCache>true</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>true</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-cb525bcb-3736-4fda-91f1-13dceb64466c</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-cb525bcb-3736-4fda-91f1-13dceb64466c</reference:Authorship>\r
             <reference:Title>Hawkmoths of the World: An Annotated and Illustrated Revisionary Checklist</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>2000</common:Start>\r
index 6fde2f56fd08e290dc023c43ec2cd93fbf1a3e76..2d412488bcb0c9ef662b8e6476f0b043092cad99 100644 (file)
@@ -46,7 +46,7 @@
             <common:TitleCache>Laspeyres, 1809</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>true</reference:IsNomenclaturallyRelevant>\r
-            <reference:AuthorTeam>urn-uuid-73b1c67a-b61a-4e6a-96fc-b6568c08542f</reference:AuthorTeam>\r
+            <reference:Authorship>urn-uuid-73b1c67a-b61a-4e6a-96fc-b6568c08542f</reference:Authorship>\r
             <reference:Title>Jena. allg. Lit.-Ztg</reference:Title>\r
             <reference:DatePublished>\r
                 <common:Start>1809</common:Start>\r
index d5313c4f133f905f5a9ce8626c2c74b7108a45fb..38a2cedfced4463b03859ba50c008ece301d4b70 100644 (file)
   <TAXONBASE DTYPE="Taxon" ID="3346" CREATED="2013-09-07 00:28:13.0" UUID="f3c3a9e3-92d1-4866-b2bf-35ae2ebad170" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Cichorium sec. ABCD classic" APPENDEDPHRASE="[null]" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" EXCLUDED="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" UNPLACED="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="3346" SEC_ID="3951" TAXONOMICPARENTCACHE_ID="[null]"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="3345" CREATED="2013-09-07 00:28:13.0" UUID="b40fe405-870e-4116-b717-703d5db3e323" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Cichorium calvum Asch." APPENDEDPHRASE="[null]" FULLTITLECACHE="Cichorium calvum Asch." NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="Asch." BINOMHYBRID="false" GENUSORUNINOMIAL="Cichorium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Cichorium calvum" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="calvum" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="3345" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="3675" EXBASIONYMAUTHORTEAM_ID="[null]" EXCOMBINATIONAUTHORTEAM_ID="[null]"/>
   <TAXONNAMEBASE DTYPE="NonViralName" ID="3346" CREATED="2013-09-07 00:28:13.0" UUID="bff220f2-0166-4d29-9aef-026e7fe1c3b4" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Cichorium" APPENDEDPHRASE="[null]" FULLTITLECACHE="Cichorium" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="[null]" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="3346" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="774" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]" EXBASIONYMAUTHORTEAM_ID="[null]" EXCOMBINATIONAUTHORTEAM_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3000" CREATED="2013-09-07 00:27:43.0" UUID="3a886a0e-3520-479b-ad27-f13280bf29c6" UPDATED="2013-09-07 00:27:43.703" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="DwC-A Import" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="DwC-A Import" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3001" CREATED="2013-09-07 00:27:44.0" UUID="3ddbb5ab-0651-4a0f-98d9-b7a28a870550" UPDATED="2013-09-07 00:27:44.948" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Excel Stream Import" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel Stream Import" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3002" CREATED="2013-09-07 00:27:45.0" UUID="2e2e8d37-e020-4330-b9da-55078db4fb47" UPDATED="2013-09-07 00:27:45.261" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3003" CREATED="2013-09-07 00:27:45.0" UUID="c362cc01-bdab-4408-a2a9-2e34d191642b" UPDATED="2013-09-07 00:27:45.277" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3004" CREATED="2013-09-07 00:27:45.0" UUID="cfb1f108-7f01-436c-a465-04adf7967ff3" UPDATED="2013-09-07 00:27:45.28" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3005" CREATED="2013-09-07 00:27:45.0" UUID="75d3830e-5986-4b81-9be3-31e965e71260" UPDATED="2013-09-07 00:27:45.283" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3006" CREATED="2013-09-07 00:27:45.0" UUID="c12c4a77-30af-445f-a0bf-0d80c293c096" UPDATED="2013-09-07 00:27:45.286" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3010" CREATED="2013-09-07 00:27:46.0" UUID="cf565d59-8289-4b83-9fe6-fc7a6598b966" UPDATED="2013-09-07 00:27:46.641" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Excel Taxon import" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel Taxon import" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3949" CREATED="2006-04-20 08:00:00.0" UUID="8bdbe508-5022-4833-8103-fcc59ac79fd7" UPDATED="2013-09-07 00:28:10.036" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Kevin Thiele, Gregor Hagedorn &amp; Ali Baba, " DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Kevin Thiele, Gregor Hagedorn &amp; Ali Baba, " PROTECTEDABBREVTITLECACHE="false" REFTYPE="DB" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="3670" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3950" CREATED="2013-09-07 00:28:10.0" UUID="06372db8-ded5-4686-b467-83df00a8f9f3" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Sample Citation" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="3951" CREATED="2013-09-07 00:28:10.0" UUID="db7ab9bc-bfbc-4ea3-a332-c815714b1eea" UPDATED="2013-09-07 00:28:10.864" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="ABCD classic" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="ABCD classic" ABBREVTITLE="[null]" ABBREVTITLECACHE="ABCD classic" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3000" CREATED="2013-09-07 00:27:43.0" UUID="3a886a0e-3520-479b-ad27-f13280bf29c6" UPDATED="2013-09-07 00:27:43.703" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="DwC-A Import" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="DwC-A Import" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3001" CREATED="2013-09-07 00:27:44.0" UUID="3ddbb5ab-0651-4a0f-98d9-b7a28a870550" UPDATED="2013-09-07 00:27:44.948" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Excel Stream Import" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel Stream Import" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3002" CREATED="2013-09-07 00:27:45.0" UUID="2e2e8d37-e020-4330-b9da-55078db4fb47" UPDATED="2013-09-07 00:27:45.261" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3003" CREATED="2013-09-07 00:27:45.0" UUID="c362cc01-bdab-4408-a2a9-2e34d191642b" UPDATED="2013-09-07 00:27:45.277" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3004" CREATED="2013-09-07 00:27:45.0" UUID="cfb1f108-7f01-436c-a465-04adf7967ff3" UPDATED="2013-09-07 00:27:45.28" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3005" CREATED="2013-09-07 00:27:45.0" UUID="75d3830e-5986-4b81-9be3-31e965e71260" UPDATED="2013-09-07 00:27:45.283" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3006" CREATED="2013-09-07 00:27:45.0" UUID="c12c4a77-30af-445f-a0bf-0d80c293c096" UPDATED="2013-09-07 00:27:45.286" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Excel_34U" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="Excel_34U " ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel_34U" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3010" CREATED="2013-09-07 00:27:46.0" UUID="cf565d59-8289-4b83-9fe6-fc7a6598b966" UPDATED="2013-09-07 00:27:46.641" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Excel Taxon import" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Excel Taxon import" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3949" CREATED="2006-04-20 08:00:00.0" UUID="8bdbe508-5022-4833-8103-fcc59ac79fd7" UPDATED="2013-09-07 00:28:10.036" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Kevin Thiele, Gregor Hagedorn &amp; Ali Baba, " DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Kevin Thiele, Gregor Hagedorn &amp; Ali Baba, " PROTECTEDABBREVTITLECACHE="false" REFTYPE="DB" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="3670" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3950" CREATED="2013-09-07 00:28:10.0" UUID="06372db8-ded5-4686-b467-83df00a8f9f3" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Sample Citation" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="3951" CREATED="2013-09-07 00:28:10.0" UUID="db7ab9bc-bfbc-4ea3-a332-c815714b1eea" UPDATED="2013-09-07 00:28:10.864" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="ABCD classic" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="ABCD classic" ABBREVTITLE="[null]" ABBREVTITLECACHE="ABCD classic" PROTECTEDABBREVTITLECACHE="false" REFTYPE="GEN" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="3000" CREATED="2013-09-07 00:27:44.0" UUID="0f3d7aed-cbf4-4930-8790-fcfce1f636b1" UPDATED="2013-09-07 00:27:44.274" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="933" INDESCRIPTION_ID="3000" AREA_ID="[null]" LANGUAGE_ID="406" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="3001" CREATED="2013-09-07 00:27:44.0" UUID="9924f1e6-c445-4aee-b5ba-fc97d7f595da" UPDATED="2013-09-07 00:27:44.278" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="933" INDESCRIPTION_ID="3001" AREA_ID="[null]" LANGUAGE_ID="406" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="3002" CREATED="2013-09-07 00:27:44.0" UUID="70b5bc2e-21df-41f8-93c7-b634865fb94d" UPDATED="2013-09-07 00:27:44.389" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="933" INDESCRIPTION_ID="3002" AREA_ID="[null]" LANGUAGE_ID="406" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
index 2561397df49ca6bba38457fd6aa59ffaf5b58529..d7544bb125d084872c500dcc808818dcf8f67b77 100644 (file)
@@ -2,7 +2,7 @@
   <parent>
     <artifactId>cdmlib-parent</artifactId>
     <groupId>eu.etaxonomy</groupId>
-    <version>3.3.8-SNAPSHOT</version>
+    <version>3.4.0-SNAPSHOT</version>
   <relativePath>../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
index 173849e7f37e0c62aca1831b4d9502b0e9e9606b..7103557512b805cdd3c00f4a2f9cb4c6587b2569 100644 (file)
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.cdm.model.agent;
 
+import java.net.URI;
 import java.util.List;
 import java.util.Set;
 
@@ -103,6 +104,7 @@ public abstract class AgentBase<S extends IIdentifiableEntityCacheStrategy> exte
                        Contact newContact = Contact.NewInstance();
                        if (create){
                                contact = newContact;
+                               this.setContact(contact);
                        }
                        return contact;
                }
@@ -120,10 +122,10 @@ public abstract class AgentBase<S extends IIdentifiableEntityCacheStrategy> exte
         * @param location
         * @see eu.etaxonomy.cdm.model.agent.Contact#addAddress(java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.location.Country, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.location.Point)
         */
-       public void addAddress(String street, String postcode, String locality,
+       public Address addAddress(String street, String postcode, String locality,
                        Country country, String pobox, String region,
                        Point location) {
-               getNewOrExistingContact(true).addAddress(street, postcode, locality, country, pobox, region,
+               return getNewOrExistingContact(true).addAddress(street, postcode, locality, country, pobox, region,
                                location);
        }
        /**
@@ -158,7 +160,7 @@ public abstract class AgentBase<S extends IIdentifiableEntityCacheStrategy> exte
         * @param url
         * @see eu.etaxonomy.cdm.model.agent.Contact#addUrl(java.lang.String)
         */
-       public void addUrl(String url) {
+       public void addUrl(URI url) {
                getNewOrExistingContact(true).addUrl(url);
        }
        /**
@@ -198,7 +200,7 @@ public abstract class AgentBase<S extends IIdentifiableEntityCacheStrategy> exte
         * @see eu.etaxonomy.cdm.model.agent.Contact#getUrls()
         */
        @Transient
-       public List<String> getUrls() {
+       public List<URI> getUrls() {
                return getNewOrExistingContact(false).getUrls();
        }
        /**
@@ -233,7 +235,7 @@ public abstract class AgentBase<S extends IIdentifiableEntityCacheStrategy> exte
         * @param url
         * @see eu.etaxonomy.cdm.model.agent.Contact#removeUrl(java.lang.String)
         */
-       public void removeUrl(String url) {
+       public void removeUrl(URI url) {
                getNewOrExistingContact(false).removeUrl(url);
        }
        
index b852dbbd4a7e642a43d232fe37e0df8a21059848..24012c5517c97479a7776a7deea0881dc643610a 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.cdm.model.agent;
 
 import java.io.Serializable;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -78,13 +79,15 @@ public class Contact implements Serializable, Cloneable {
        @XmlElement(name = "URL")
     @XmlSchemaType(name = "anyURI")
        @ElementCollection(fetch = FetchType.LAZY)
-    @Column(name = "contact_urls_element")
-       private List<String> urls;
+    @Column(name = "contact_urls_element", length=330)
+       @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})
+       private List<String> urls = new ArrayList<String>();
 
        @XmlElementWrapper(name = "PhoneNumbers", nillable = true)
        @XmlElement(name = "PhoneNumber")
        @ElementCollection(fetch = FetchType.LAZY)
     @Column(name = "contact_phonenumbers_element")
+       @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})
        private List<String> phoneNumbers;
 
        @XmlElementWrapper(name = "FaxNumbers", nillable = true)
@@ -121,7 +124,7 @@ public class Contact implements Serializable, Cloneable {
         */
        public static Contact NewInstance(String street, String postcode, String locality,
                        Country country, String pobox, String region,
-                       String email, String faxNumber, String phoneNumber, String url, Point location) {
+                       String email, String faxNumber, String phoneNumber, URI url, Point location) {
                Contact result = new Contact();
                if (country != null || StringUtils.isNotBlank(locality) || StringUtils.isNotBlank(pobox) || StringUtils.isNotBlank(postcode) ||
                                StringUtils.isNotBlank(region) || StringUtils.isNotBlank(street) ){
@@ -145,7 +148,7 @@ public class Contact implements Serializable, Cloneable {
 
 
        public static Contact NewInstance(Set<Address> addresses, List<String> emailAdresses,
-                       List<String> faxNumbers, List<String> phoneNumbers, List<String> urls) {
+                       List<String> faxNumbers, List<String> phoneNumbers, List<URI> urls) {
                Contact result = new Contact();
                if (addresses != null){
                        result.addresses = addresses;
@@ -160,7 +163,9 @@ public class Contact implements Serializable, Cloneable {
                        result.phoneNumbers = phoneNumbers;
                }
                if (urls != null){
-                       result.urls = urls;
+                       for (URI uri : urls){
+                               result.urls.add(uri.toString());
+                       }
                }
                return result;
        }
@@ -226,10 +231,11 @@ public class Contact implements Serializable, Cloneable {
                }
        }
 
-       public void addAddress(String street, String postcode, String locality,
+       public Address addAddress(String street, String postcode, String locality,
                        Country country, String pobox, String region, Point location){
                Address newAddress = Address.NewInstance(country, locality, pobox, postcode, region, street, location);
                getAddresses().add(newAddress);
+               return newAddress;
        }
 
        /**
@@ -275,18 +281,21 @@ public class Contact implements Serializable, Cloneable {
         * Returns the list of strings representing the "Uniform Resource Locators" (urls)
         * included in <i>this</i> contact.
         */
-       public List<String> getUrls(){
-               if(this.urls == null) {
-                       this.urls = new ArrayList<String>();
+       public List<URI> getUrls(){
+               List<URI> result = new ArrayList<URI>();
+               if(this.urls != null) {
+                       for (String uri : this.urls){
+                               result.add(URI.create(uri));
+                       }
                }
-               return this.urls;
+               return result;
        }
 
        /**
         * @see  #getUrls()
         */
-       public void addUrl(String url){
-               getUrls().add(url);
+       public void addUrl(URI url){
+               this.urls.add(url.toString());
        }
 
        /**
@@ -295,8 +304,8 @@ public class Contact implements Serializable, Cloneable {
         * @param  url  the url of <i>this</i> contact which should be deleted
         * @see                 #getUrls()
         */
-       public void removeUrl(String url){
-               getUrls().remove(url);
+       public void removeUrl(URI url){
+               this.urls.remove(url.toString());
        }
 
        /**
index bf359bf01e4e119e2ac663ec639a05000d8d51a2..b7dd912ae3b2190d0c8512786a54f521ff66730c 100644 (file)
@@ -75,7 +75,8 @@ public class Team extends TeamOrPersonBase<Team> {
     @XmlElement(name = "ProtectedNomenclaturalTitleCache")
        private boolean protectedNomenclaturalTitleCache = false;
 
-       //An abreviated name for the team (e. g. in case of nomenclatural authorteams). A non abreviated name for the team (e. g.
+       //An abbreviated name for the team (e. g. in case of nomenclatural authorteams). 
+    //A non abbreviated name for the team (e. g.
        //in case of some bibliographical references)
     @XmlElementWrapper(name = "TeamMembers", nillable = true)
     @XmlElement(name = "TeamMember")
index 2d4b45806ada9765c5b9845b9249318587ba744c..97f431cf927a8876bfa121fe81b2b20ed78b6e8a 100644 (file)
@@ -9,7 +9,9 @@
 \r
 package eu.etaxonomy.cdm.model.common;\r
 \r
+import javax.persistence.Column;\r
 import javax.persistence.Entity;\r
+import javax.validation.constraints.NotNull;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
 import javax.xml.bind.annotation.XmlElement;\r
@@ -17,7 +19,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.hibernate.annotations.NaturalId;\r
 import org.springframework.security.core.GrantedAuthority;\r
 \r
 @XmlAccessorType(XmlAccessType.FIELD)\r
@@ -27,11 +28,11 @@ import org.springframework.security.core.GrantedAuthority;
 public class GrantedAuthorityImpl extends CdmBase implements GrantedAuthority {\r
 \r
     private static final long serialVersionUID = 2651969425860655040L;\r
-    private static final Logger logger = Logger\r
-            .getLogger(GrantedAuthority.class);\r
+    private static final Logger logger = Logger.getLogger(GrantedAuthority.class);\r
 \r
     @XmlElement(name = "Authority")\r
-    @NaturalId\r
+    @Column(unique = true)\r
+    @NotNull\r
     private String authority;\r
 \r
     protected GrantedAuthorityImpl() {\r
@@ -42,9 +43,6 @@ public class GrantedAuthorityImpl extends CdmBase implements GrantedAuthority {
         return new GrantedAuthorityImpl();\r
     }\r
 \r
-    /* (non-Javadoc)\r
-     * @see org.springframework.security.core.GrantedAuthority#getAuthority()\r
-     */\r
     @Override\r
     public String getAuthority() {\r
         return authority;\r
index 37f5436dbcef2c126da4580a62d574e45edc60a9..0c5d0621e0a05a1f8b2707f0a039ef68935d74ba 100644 (file)
@@ -12,10 +12,12 @@ import java.util.HashSet;
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
+import javax.persistence.Column;\r
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
 import javax.persistence.ManyToMany;\r
 import javax.persistence.Table;\r
+import javax.validation.constraints.NotNull;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
 import javax.xml.bind.annotation.XmlElement;\r
@@ -28,7 +30,6 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.log4j.Logger;\r
 import org.hibernate.annotations.Cascade;\r
 import org.hibernate.annotations.CascadeType;\r
-import org.hibernate.annotations.NaturalId;\r
 import org.hibernate.search.annotations.Field;\r
 import org.hibernate.search.annotations.Indexed;\r
 import org.springframework.security.core.GrantedAuthority;\r
@@ -50,9 +51,24 @@ public class Group extends CdmBase {
     public final static UUID groupEditorUuid = UUID.fromString("22e5e8af-b99c-4884-a92f-71978efd3770");\r
     public final static UUID groupProjectManagerUuid = UUID.fromString("645191ae-32a4-4d4e-9b86-c90e0d41944a");\r
 \r
+//*********************** FACTORY *********************/\r
+\r
+    public static Group NewInstance(){\r
+        return new Group();\r
+    }\r
+\r
+    public static Group NewInstance(String name){\r
+        Group group = Group.NewInstance();\r
+        group.setName(name);\r
+        return group;\r
+    }\r
+    \r
+//**************** FIELDS ******************************/    \r
+    \r
     @XmlElement(name = "Name")\r
-    @NaturalId\r
+    @Column(unique = true)\r
     @Field\r
+    @NotNull\r
     protected String name;\r
 \r
     @XmlElementWrapper(name = "Members")\r
@@ -71,19 +87,13 @@ public class Group extends CdmBase {
     @Cascade({CascadeType.SAVE_UPDATE})\r
     protected Set <GrantedAuthority> grantedAuthorities = new HashSet<GrantedAuthority>();\r
 \r
+// ********************* CONSTRUCTOR ************************/    \r
+    \r
     protected Group(){\r
         super();\r
     }\r
 \r
-    public static Group NewInstance(){\r
-        return new Group();\r
-    }\r
-\r
-    public static Group NewInstance(String name){\r
-        Group group = Group.NewInstance();\r
-        group.setName(name);\r
-        return group;\r
-    }\r
+// *************** METHODS ***********************************/    \r
 \r
     public Set<GrantedAuthority> getGrantedAuthorities() {\r
         return grantedAuthorities;\r
index 2bddafe7761cdd3bac47a51df6dd23ae2babd429..6c38334e1db762ac814a763659881e933cfcb0c3 100644 (file)
@@ -26,7 +26,7 @@ public interface IIdentifiableEntity extends ISourceable<IdentifiableSource>, IA
 \r
     /**\r
      * Sets the title cache without changing the <code>protectCache</code> flag.<BR><BR>\r
-     * NOTE: Use with care. If this flag is <code>false</code> the <code>titleCache</code> may be \r
+     * NOTE: Use with care. If this flag is <code>false</code> the <code>titleCache</code> may be\r
      * recomputed with the next call of {@link #getTitleCache()}, which is automatically the case when\r
      * the object is persisted.\r
      * @see #setTitleCache(String, boolean)\r
@@ -34,7 +34,7 @@ public interface IIdentifiableEntity extends ISourceable<IdentifiableSource>, IA
      * @param titleCache\r
      * @deprecated this method only exists to be in line with the Java Beans Specification (JSR 220 or JSR 273) .\r
      * As it will set the {@link #isProtectedTitleCache() protected} flag to false the title cache value\r
-     * may be automatically recomputed later. There are only very rare use cases were a programmer may \r
+     * may be automatically recomputed later. There are only very rare use cases were a programmer may\r
      * want to use this method directly.\r
      * Better use {@link #setTitleCache(String, boolean)} with second parameter <code>protectCache</code>\r
      * set to <code>true</code>.\r
@@ -46,7 +46,7 @@ public interface IIdentifiableEntity extends ISourceable<IdentifiableSource>, IA
      * Sets the title cache.<BR>\r
      * NOTE: In most cases the <code>protectCache</code> argument should be set to <code>true</code>.\r
      * See comments at {@link #setTitleCache(String)}\r
-     * \r
+     *\r
      * @param titleCache the new title cache\r
      * @param protectCache the protect flag, <b>should in most cases be set to <code>true</code></b>\r
      */\r
@@ -55,7 +55,7 @@ public interface IIdentifiableEntity extends ISourceable<IdentifiableSource>, IA
     public boolean isProtectedTitleCache();\r
 \r
     public void setProtectedTitleCache(boolean protectedTitleCache);\r
-    \r
+\r
     public Set<Rights> getRights();\r
 \r
     public void addRights(Rights right);\r
@@ -80,6 +80,51 @@ public interface IIdentifiableEntity extends ISourceable<IdentifiableSource>, IA
 \r
     public void removeExtension(Extension extension);\r
 \r
+    /**\r
+     * Returns the list of {@link Identifier alternative identifiers}.\r
+     * In case the order of these identifiers is important it should be\r
+     * implemented such that the first item in the list is the most \r
+     * important/most current identifier. <BR>\r
+     * E.g. if a barcode identifier\r
+     * is more important than the accession number for a certain \r
+     * specimen, than the barcode identifier should be before the accession number.\r
+     * <BR>Or if a sample designation is the most recent of all sample designations\r
+     * than it should be the first in the list while all history designations come\r
+     * later.\r
+     * @return\r
+     */\r
+    public List<Identifier> getIdentifiers();\r
+\r
+    /**\r
+     * @see #getIdentifiers()\r
+     * @param identifier\r
+     */\r
+    public void addIdentifier(Identifier identifier);\r
+    \r
+    /**\r
+     * Adds an identifier at the given position. For use of \r
+     * <code>index</code> see {@link List#add(int, Object)} and {@link#getIdentifiers()}\r
+     * @param index the list index \r
+     * @param identifier the identifier\r
+     */\r
+    public void addIdentifier(int index, Identifier identifier);\r
+\r
+    /**\r
+     * Removes an identifier at the given position. For use of \r
+     * <code>index</code> see {@link List#add(int, Object)} and {@link#getIdentifiers()}\r
+     * @param index the list index \r
+     */\r
+    public void removeIdentifier(int index);\r
+\r
+    \r
+    /**\r
+     * Removes an identifier\r
+     * @see #getIdentifiers()\r
+     * @param identifier\r
+     */\r
+    public void removeIdentifier(Identifier identifier);\r
+\r
+\r
     /**\r
      * Overrides {@link eu.etaxonomy.cdm.model.common.CdmBase#toString()}.\r
      * This returns an String that identifies the object well without beeing necessarily unique.\r
@@ -90,6 +135,7 @@ public interface IIdentifiableEntity extends ISourceable<IdentifiableSource>, IA
      * For example: Taxon#13<b5938a98-c1de-4dda-b040-d5cc5bfb3bc0>\r
      * @see java.lang.Object#toString()\r
      */\r
+    @Override\r
     public String toString();\r
 \r
     public byte[] getData();\r
index 2c6a4e2f8a9d59cd34dd77c81dab6c6edf1fd225..b625e398861d4b0c0fec06e12d4636a84469e5b6 100644 (file)
@@ -23,6 +23,7 @@ import javax.persistence.Embedded;
 import javax.persistence.FetchType;
 import javax.persistence.MappedSuperclass;
 import javax.persistence.OneToMany;
+import javax.persistence.OrderColumn;
 import javax.persistence.Transient;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
@@ -81,9 +82,10 @@ import eu.etaxonomy.cdm.validation.Level2;
     "lsid",
     "titleCache",
     "protectedTitleCache",
-    "rights",
-    "extensions",
     "credits",
+    "extensions",
+    "identifiers",
+    "rights",
     "sources"
 })
 @Audited
@@ -147,6 +149,15 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
     @NotNull
     private Set<Extension> extensions = new HashSet<Extension>();
 
+    @XmlElementWrapper(name = "Identifiers", nillable = true)
+    @XmlElement(name = "Identifier")
+    @OrderColumn(name="sortIndex")
+    @OneToMany(fetch = FetchType.LAZY, orphanRemoval=true)
+    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})
+    @Merge(MergeMode.ADD_CLONE)
+    @NotNull
+    private List<Identifier> identifiers = new ArrayList<Identifier>();
+
     @XmlElementWrapper(name = "Sources", nillable = true)
     @XmlElement(name = "IdentifiableSource")
     @OneToMany(fetch = FetchType.LAZY, orphanRemoval=true)
@@ -217,7 +228,7 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
     @Deprecated
     @Override
     public void setTitleCache(String titleCache){
-       //TODO shouldn't we call setTitleCache(String, boolean),but is this conformant with Java Bean Specification?  
+       //TODO shouldn't we call setTitleCache(String, boolean),but is this conformant with Java Bean Specification?
        this.titleCache = getTruncatedCache(titleCache);
     }
 
@@ -305,6 +316,67 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
         getCredits().remove(index);
     }
 
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.model.common.IIdentifiableEntity#getIdentifiers()
+     */
+    @Override
+    public List<Identifier> getIdentifiers(){
+        if(this.identifiers == null) {
+            this.identifiers = new ArrayList<Identifier>();
+        }
+        return this.identifiers;
+    }
+    /**
+     * @param type
+     * @return a Set of extension value strings
+     */
+    public Set<String> getIdentifiers(DefinedTerm type){
+       return getIdentifiers(type.getUuid());
+    }
+    /**
+     * @param extensionTypeUuid
+     * @return a Set of extension value strings
+     */
+    public Set<String> getIdentifiers(UUID identifierTypeUuid){
+        Set<String> result = new HashSet<String>();
+        for (Identifier identifier : getIdentifiers()){
+            if (identifier.getType().getUuid().equals(identifierTypeUuid)){
+                result.add(identifier.getIdentifier());
+            }
+        }
+        return result;
+    }
+
+    public Identifier addIdentifier(String identifier, DefinedTerm identifierType){
+       Identifier result = Identifier.NewInstance(this, identifier, identifierType);
+       return result;
+    }
+
+     @Override
+    public void addIdentifier(int index, Identifier identifier){
+        if (identifier != null){
+               identifier.setIdentifiedObj(this);
+            getIdentifiers().add(index, identifier);
+        }
+    }
+
+    @Override
+    public void addIdentifier(Identifier identifier){
+        addIdentifier(getIdentifiers().size(), identifier);
+    }
+
+    @Override
+    public void removeIdentifier(Identifier identifier){
+        if (identifier != null){
+               identifier.setIdentifiedObj(null);
+            getIdentifiers().remove(identifier);
+        }
+    }
+    @Override
+    public void removeIdentifier(int index){
+       getIdentifiers().remove(index);
+    }
+
     @Override
     public Set<Extension> getExtensions(){
         if(extensions == null) {
@@ -410,8 +482,8 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
         addSource(source);
         return source;
     }
-    
-    
+
+
     @Override
     public IdentifiableSource addImportSource(String id, String idNamespace, Reference<?> citation, String microCitation) {
         if (id == null && idNamespace == null && citation == null && microCitation == null){
@@ -483,7 +555,7 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
                         ((BotanicalName)identifiableEntity).setNameCache(null, false);
                         specifiedNameCache = ((BotanicalName) identifiableEntity).getNameCache();
                         ((BotanicalName)identifiableEntity).setNameCache(oldNameCache, isProtected);
-                        
+
                 }
              }
 
@@ -508,7 +580,7 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
          if(this.isInstanceOf(NonViralName.class)) {
              thisNameCache = HibernateProxyHelper.deproxy(this, NonViralName.class).getNameCache();
              thisTitleCache = getTitleCache();
-             
+
              if (this instanceof BotanicalName){
                 if (((BotanicalName)this).isAutonym()){
                         boolean isProtected = false;
@@ -532,8 +604,8 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
          }
 
          // Compare name cache of taxon names
-         
-        
+
+
 
          if (!specifiedNameCache.equals("") && !thisNameCache.equals("")) {
              result = thisNameCache.compareTo(specifiedNameCache);
index a2e0a43d2d73667cac68db457ad2b377f11a5ab8..e5be0717371f5abf1094c0643d0d7944a53284e2 100644 (file)
@@ -111,16 +111,13 @@ public class IdentifiableSource extends OriginalSourceBase<IdentifiableEntity>{
        }\r
        \r
 // ********************** GETTER /SETTER *****************************/\r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.model.common.IOriginalSource#getSourcedObj()\r
-        */\r
+\r
+       @Override\r
        public IdentifiableEntity getSourcedObj() {\r
                return sourcedObj;\r
        }\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.model.common.IOriginalSource#setSourcedObj(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
-        */\r
+       @Override\r
        public void setSourcedObj(IdentifiableEntity sourcedObj) {\r
                this.sourcedObj = sourcedObj;\r
        }\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Identifier.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Identifier.java
new file mode 100644 (file)
index 0000000..68ed2f3
--- /dev/null
@@ -0,0 +1,128 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.model.common;\r
+\r
+import javax.persistence.Column;\r
+import javax.persistence.Entity;\r
+import javax.persistence.FetchType;\r
+import javax.persistence.JoinColumn;\r
+import javax.persistence.ManyToOne;\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlIDREF;\r
+import javax.xml.bind.annotation.XmlSchemaType;\r
+import javax.xml.bind.annotation.XmlType;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.annotations.Any;\r
+import org.hibernate.annotations.Index;\r
+import org.hibernate.annotations.Table;\r
+import org.hibernate.envers.Audited;\r
+import org.hibernate.envers.NotAudited;\r
+import org.hibernate.search.annotations.Field;\r
+\r
+import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 2014-06-30\r
+ */\r
+\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+@XmlType(name = "Identifier", propOrder = {\r
+    "identifier",\r
+    "type",\r
+    "identifiedObj"    \r
+})\r
+@Entity\r
+@Audited\r
+@Table(appliesTo="Identifier", indexes = { @Index(name = "identifierIndex", columnNames = { "identifier" }) })\r
+public class Identifier<T extends IdentifiableEntity<?>> extends VersionableEntity {\r
+       private static final long serialVersionUID = -798893563577142030L;\r
+       private static final Logger logger = Logger.getLogger(IdentifiableSource.class);\r
+\r
+       @XmlElement(name ="Identifier" )\r
+       @Column(length=800, name="identifier")\r
+       @Field\r
+    @NullOrNotEmpty\r
+       private String identifier;\r
+       \r
+    @XmlElement(name = "Type")\r
+    @XmlIDREF\r
+    @XmlSchemaType(name = "IDREF")\r
+    @ManyToOne(fetch = FetchType.LAZY)\r
+//    @IndexedEmbedded(depth=1)\r
+       private DefinedTerm type;\r
+\r
+    @XmlElement(name = "IdentifiedObject")\r
+    @XmlIDREF\r
+    @XmlSchemaType(name = "IDREF")\r
+    @Any(metaDef = "CdmBase",\r
+                metaColumn=@Column(name = "identifiedObj_type"),\r
+                fetch = FetchType.LAZY,\r
+                optional = false)\r
+       @JoinColumn(name = "identifiedObj_id")\r
+       @NotAudited\r
+       private T identifiedObj;\r
+    \r
+// **************************** FACTORY ******************************/    \r
+    \r
+    public static <T extends IdentifiableEntity<?>> Identifier<T> NewInstance(T entity, String identifier, DefinedTerm type){\r
+       return new Identifier<T>(entity, identifier, type);\r
+    }\r
+\r
+// ************************* CONSTRUCTOR ************************************    \r
+    \r
+    @Deprecated  //for hibernate use only\r
+    protected Identifier(){};\r
+    \r
+    public Identifier (T entity, String identifier, DefinedTerm type){\r
+       this.identifier = identifier;\r
+       this.type = type;\r
+       logger.warn("Identified object not yet implemented");\r
+//     this.identifiedObj = entity;\r
+    }\r
+\r
+    \r
+// ****************** GETTER / SETTER **********************/    \r
+    \r
+       public String getIdentifier() {\r
+               return identifier;\r
+       }\r
+\r
+\r
+       public void setIdentifier(String identifier) {\r
+               this.identifier = identifier;\r
+       }\r
+\r
+\r
+       /**\r
+        * The identifier type. E.g. DOI, LSID, Barcode, Sample Designation, ...\r
+        * @see TermType#IdentifierType \r
+        * @return\r
+        */\r
+       public DefinedTerm getType() {\r
+               return type;\r
+       }\r
+\r
+\r
+       public void setType(DefinedTerm identifierType) {\r
+               this.type = identifierType;\r
+       }\r
+       \r
+       public T getIdentifiedObj() {\r
+               return identifiedObj;\r
+       }\r
+       protected void setIdentifiedObj(T identifiedObj) {\r
+               this.identifiedObj = identifiedObj;\r
+       }\r
+       \r
+}\r
index edb4570fea1fc15a0879f6069f089475e56ccbfc..985c561edf220af6b92a01a040da953a6d6d8a1b 100644 (file)
@@ -37,9 +37,13 @@ public class LanguageString  extends LanguageStringBase implements Cloneable {
        @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(LanguageString.class);
 
+//********************* FACTORY *******************************************/   
+       
        public static LanguageString NewInstance(String text, Language language){
                return new LanguageString(text, language);
        }
+
+// ********************* CONSTRUCTOR ********************************/ 
        
        protected LanguageString() {
                super();
@@ -49,13 +53,12 @@ public class LanguageString  extends LanguageStringBase implements Cloneable {
                super(text, language);
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.common.CdmBase#toString()
-        */
+
+//*************** TO STRING ***********************************/       
        @Override
        public String toString() {
                if (text == null){
-                       return super.toString() + "null";
+                       return super.toString() + ":null";
                }else{
                        String languagePart = "";
                        if (this.language != null){
@@ -68,7 +71,8 @@ public class LanguageString  extends LanguageStringBase implements Cloneable {
                        }
                }
        }
-       
+
+// ************************ CLONE ********************************/    
        @Override
        public Object clone() throws CloneNotSupportedException {
                LanguageString result = (LanguageString)super.clone();
index 2f295e4fc42b58f2455dc6674fce10bfc078ed15..90a559d93b085a1f7115596828c550bb072858d7 100644 (file)
@@ -428,6 +428,16 @@ public enum TermType implements IEnumTerm<TermType>, Serializable{
      */\r
     @XmlEnumValue("DnaMarker")\r
     DnaMarker(UUID.fromString("7fdddb4f-b0ec-4ce0-bc28-dc94e30e8252"), "DNA Marker", "DMA", null),\r
+    \r
+    \r
+    /**\r
+     * An Identifier Type which can be used as a type in {@link Identifier#type} . It may often be a global unique identifier such as DOI, LSID, Barcode ....\r
+     * But also local identifier types such Sample Designation, Catalog Number, \r
+     * Accession Number, ... are allowed.\r
+     * {@link Identifier#type}\r
+     */\r
+    @XmlEnumValue("IdentifierType")\r
+    IdentifierType(UUID.fromString("d24eda99-0716-467f-aa1e-4c0f2b6c3922"), "Identifier", "IDE", null),\r
     ;\r
 \r
     @SuppressWarnings("unused")\r
@@ -492,6 +502,7 @@ public enum TermType implements IEnumTerm<TermType>, Serializable{
             case Stage:\r
             case KindOfUnit:\r
             case PresenceAbsenceTerm:\r
+            case IdentifierType:\r
             case DnaMarker:\r
                 return DefinedTerm.NewInstance(this, null, "Untitled", null);\r
             case Feature:\r
index 8547574e63d7d501e40f1d5e3e8957d37b6617ba..2a11a7f20f1f1bc6165cf3a4b1daff9a9e08a032 100644 (file)
@@ -13,12 +13,14 @@ import java.util.Collection;
 import java.util.HashSet;\r
 import java.util.Set;\r
 \r
+import javax.persistence.Column;\r
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
 import javax.persistence.ManyToMany;\r
 import javax.persistence.OneToOne;\r
 import javax.persistence.Table;\r
 import javax.persistence.Transient;\r
+import javax.validation.constraints.NotNull;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
 import javax.xml.bind.annotation.XmlElement;\r
@@ -32,7 +34,6 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.log4j.Logger;\r
 import org.hibernate.annotations.Cascade;\r
 import org.hibernate.annotations.CascadeType;\r
-import org.hibernate.annotations.NaturalId;\r
 import org.hibernate.envers.Audited;\r
 import org.hibernate.envers.NotAudited;\r
 import org.hibernate.search.annotations.Analyze;\r
@@ -66,10 +67,8 @@ public class User extends CdmBase implements UserDetails {
     private static final long serialVersionUID = 6582191171369439163L;\r
     private static final Logger logger = Logger.getLogger(User.class);\r
 \r
-    protected User(){\r
-        super();\r
-    }\r
-\r
+ // **************************** FACTORY *****************************************/   \r
+    \r
     public static User NewInstance(String username, String pwd){\r
         User user = new User();\r
         user.setUsername(username);\r
@@ -98,9 +97,12 @@ public class User extends CdmBase implements UserDetails {
         return user;\r
     }\r
 \r
+//***************************** Fields *********************** /\r
+    \r
     @XmlElement(name = "Username")\r
-    @NaturalId\r
+    @Column(unique = true)\r
     @Field(analyze = Analyze.NO)\r
+    @NotNull\r
     protected String username;\r
 \r
     /**\r
@@ -156,6 +158,14 @@ public class User extends CdmBase implements UserDetails {
     @Transient\r
     private Set<GrantedAuthority> authorities;  //authorities of this user and of all groups the user belongs to\r
 \r
+//***************************** Constructor *********************** /\r
+    \r
+    protected User(){\r
+        super();\r
+    }\r
+    \r
+// ***************************** METHODS ******************************/\r
+    \r
     /**\r
      * Initializes or refreshes the collection of authorities, See\r
      * {@link #getAuthorities()}\r
index 333a3e69c0dad3e2da6f4cee4bc441073ae82dd3..ddb4e5b4a3c63bc47c7204f4a787d4692bce659a 100644 (file)
@@ -91,7 +91,8 @@ public enum VocabularyEnum {
        DnaMarkerChloroplast("e572d370-a27b-40d3-974c-cb17562b59cf", DefinedTerm.class),
        PlantKindOfUnit("5167c47b-7726-4dba-b02f-dafb7629481b", DefinedTerm.class),
        SpecimenKindOfUnit("b0344ec4-12f7-40d3-82c1-0092e9780bbd", DefinedTerm.class),
-       MediaSpecimenKindOfUnit("56f47c83-8d42-404a-88fc-03c57b560f6d", DefinedTerm.class)
+       MediaSpecimenKindOfUnit("56f47c83-8d42-404a-88fc-03c57b560f6d", DefinedTerm.class),
+       IdentifierType("67d91839-484e-4183-8b4c-6a4a80dfc066", DefinedTerm.class)
        ;
        
        
index 1d20c3b5784185d2f9b634f4e97e5a6ce543a658..ea4f54e16f1d6ea9a43e12a59eb8a3b3a07c64ee 100644 (file)
                @MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.FieldUnit", targetEntity = FieldUnit.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.DerivedUnit", targetEntity = DerivedUnit.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Reference", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Journal", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Article", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Book", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Generic", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Database", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.BookSection", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Reference", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.PrintSeries", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Proceedings", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Thesis", targetEntity = Reference.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.WebPage", targetEntity = Reference.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Synonym", targetEntity = Synonym.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Taxon", targetEntity = Taxon.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Classification", targetEntity = Classification.class),\r
index bd5ca5f4f4d950b319d71bae72c73d87304fa1d7..0140046af0fcd0d5e41681d4e1f2796086eed781 100644 (file)
@@ -143,7 +143,7 @@ public abstract class DescriptionElementBase extends AnnotatableEntity implement
     private DescriptionBase inDescription;
     
        @XmlElement(name = "TimePeriod")
-    private TimePeriod timeperiod = TimePeriod.NewInstance();;
+    private TimePeriod timeperiod = TimePeriod.NewInstance();
 
     @XmlElementWrapper(name = "Sources")
     @XmlElement(name = "DescriptionElementSource")
index dcee91fddadac2470cda9ee84c88bed67780c1e6..de2bb3f233e4833419d549f757b893e6e81b6b36 100644 (file)
@@ -55,24 +55,15 @@ public abstract class IdentifiableMediaEntity<S extends IIdentifiableEntityCache
     private Set<Media> media = new HashSet<Media>();
        
        
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.media.IMediaEntity#getMedia()
-        */
     @Override
        public Set<Media> getMedia() {
                return media;
        }
        
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.media.IMediaEntity#addMedia(eu.etaxonomy.cdm.model.media.Media)
-        */
     @Override
        public void addMedia(Media media) {
                this.media.add(media);
        }
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.media.IMediaEntity#removeMedia(eu.etaxonomy.cdm.model.media.Media)
-        */
     @Override
        public void removeMedia(Media media) {
                this.media.remove(media);
@@ -80,9 +71,6 @@ public abstract class IdentifiableMediaEntity<S extends IIdentifiableEntityCache
        
 //******************** CLONE **********************************************/
        
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.common.IdentifiableEntity#clone()
-        */
        @Override
        public Object clone() throws CloneNotSupportedException{
                IdentifiableMediaEntity<?> result = (IdentifiableMediaEntity<?>)super.clone();
index 06fb85eefc1b0409a13b18666f4dcd8467b4557c..a6a089e1bfa758d29606608b99b586815054571a 100644 (file)
@@ -47,9 +47,9 @@ public class CdmMetaData extends CdmBase{
         * be handled by SCHEMA_VALIDATION.UPDATE\r
         * The last number represents the date of change.\r
         */\r
-//     private static final String dbSchemaVersion = "3.0.1.0.201104190000";   \r
-//     private static final String dbSchemaVersion = "3.3.0.0.201309240000";\r
-       private static final String dbSchemaVersion = "3.3.1.0.201401140000";\r
+//     private static final String dbSchemaVersion = "3.3.1.0.201401140000";\r
+       private static final String dbSchemaVersion = "3.4.0.0.201407010000";\r
+       \r
        \r
        \r
 \r
@@ -82,8 +82,9 @@ public class CdmMetaData extends CdmBase{
         * \r
         * The last number represents the date of change.\r
         */\r
-       private static final String termsVersion = "3.3.0.0.201309010000";\r
-       \r
+//     private static final String termsVersion = "3.3.0.0.201309010000";\r
+       private static final String termsVersion = "3.4.0.0.201407010000";\r
+\r
        \r
        public enum MetaDataPropertyName{\r
                DB_SCHEMA_VERSION,\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/DnaQuality.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/DnaQuality.java
new file mode 100644 (file)
index 0000000..7daa1eb
--- /dev/null
@@ -0,0 +1,212 @@
+/**
+* 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.model.molecular;
+
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.ManyToOne;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlIDREF;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.log4j.Logger;
+import org.hibernate.annotations.Type;
+import org.hibernate.envers.Audited;
+import org.hibernate.search.annotations.Analyze;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.FieldBridge;
+import org.joda.time.DateTime;
+
+import eu.etaxonomy.cdm.hibernate.search.DateTimeBridge;
+import eu.etaxonomy.cdm.jaxb.DateTimeAdapter;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.VersionableEntity;
+import eu.etaxonomy.cdm.model.description.MeasurementUnit;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+
+/**
+ * A DNA Quality describes the quality of a {@link SpecimenOrObservationType#DnaSample}
+ *  
+ * @author a.mueller
+ * @created 18-Oct-2014
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DnaQuality", propOrder = {
+       "purificationMethod",
+       "ratioOfAbsorbance260_230",
+    "ratioOfAbsorbance260_280",
+    "concentration",
+    "concentrationUnit",
+    "qualityTerm",
+    "qualityCheckDate"
+})
+@XmlRootElement(name = "DnaQuality")
+@Entity
+//@Indexed(index = "eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase")
+@Audited
+public class DnaQuality extends VersionableEntity implements Cloneable {
+       private static final long serialVersionUID = -8829069331010573654L;
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(DnaQuality.class);
+       
+// ****************** FACTORY METHOD *****************/
+       
+       /**
+        * Factory method
+        * @return
+        */
+       public static DnaQuality NewInstance(){
+               return new DnaQuality();
+       }
+
+// ************** ATTRIBUTES ****************************/     
+    
+    //TODO
+//    @XmlTransient
+//    @Transient
+//    private MaterialOrMethodEvent purificationMethod;
+    private String purificationMethod;
+
+       
+       private Double ratioOfAbsorbance260_230;
+       
+       private Double ratioOfAbsorbance260_280;
+       
+       private Double concentration;
+
+       @XmlElement(name = "Type")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+       private MeasurementUnit concentrationUnit;
+    
+       
+       @XmlElement(name = "Type")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+       private DefinedTerm qualityTerm;
+    
+    @XmlElement (name = "QualityCheckDate", type= String.class)
+    @XmlJavaTypeAdapter(DateTimeAdapter.class)
+    @Type(type="dateTimeUserType")
+    @Basic(fetch = FetchType.LAZY)
+    @Field(analyze = Analyze.NO)
+    @FieldBridge(impl = DateTimeBridge.class)
+    @Audited
+    private DateTime qualityCheckDate;
+    
+
+// ******************* CONSTRUCTOR *************************/
+       
+       /**
+        * Constructor
+        */
+       private DnaQuality() {}
+       
+//************ GETTER / SETTER  **********************************/    
+       
+
+       public String getPurificationMethod() {
+               return purificationMethod;
+       }
+
+       public void setPurificationMethod(String purificationMethod) {
+               this.purificationMethod = purificationMethod;
+       }
+
+       public Double getRatioOfAbsorbance260_230() {
+               return ratioOfAbsorbance260_230;
+       }
+
+       public void setRatioOfAbsorbance260_230(Double ratioOfAbsorbance260_230) {
+               this.ratioOfAbsorbance260_230 = ratioOfAbsorbance260_230;
+       }
+
+       public Double getRatioOfAbsorbance260_280() {
+               return ratioOfAbsorbance260_280;
+       }
+
+       public void setRatioOfAbsorbance260_280(Double ratioOfAbsorbance260_280) {
+               this.ratioOfAbsorbance260_280 = ratioOfAbsorbance260_280;
+       }
+       
+       
+    public Double getConcentration() {
+               return concentration;
+       }
+
+       public void setConcentration(Double concentration) {
+               this.concentration = concentration;
+       }
+
+       public MeasurementUnit getConcentrationUnit() {
+               return concentrationUnit;
+       }
+
+       public void setConcentrationUnit(MeasurementUnit concentrationUnit) {
+               this.concentrationUnit = concentrationUnit;
+       }
+
+       public DateTime getQualityCheckDate() {
+               return qualityCheckDate;
+       }
+
+       public void setQualityCheckDate(DateTime qualityCheckDate) {
+               this.qualityCheckDate = qualityCheckDate;
+       }
+
+       public DefinedTerm getQualityTerm() {
+               return qualityTerm;
+       }
+
+       public void setQualityTerm(DefinedTerm qualityTerm) {
+               this.qualityTerm = qualityTerm;
+       }
+
+       
+
+//*********** CLONE **********************************/        
+       
+       /** 
+        * Clones <i>this</i> dna quality. This is a shortcut that enables to
+        * create a new instance that differs only slightly from <i>this</i> dna quality
+        * by modifying only some of the attributes.<BR>
+        * @throws CloneNotSupportedException 
+        * 
+        * @see Specimen#clone()
+        * @see DerivedUnit#clone()
+        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
+        * @see java.lang.Object#clone()
+        */
+       @Override
+       public DnaQuality clone() {
+               try {
+                       DnaQuality result = (DnaQuality)super.clone();
+                       
+                       //purification method ??
+                       
+                       //no changes to: rationXXX, concentration, qualityCheckDate, qualityTerm, 
+                       return result;
+                       
+               } catch (CloneNotSupportedException e) {
+                       throw new RuntimeException(e);  //may not occur as Clonable is implemented 
+               }
+       }
+
+}
\ No newline at end of file
index aebcbae5344e9232eaa0341697f6568242c04c55..fae047fbd2c135880427e09f75000ce334af496b 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Set;
 
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
+import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.Transient;
 import javax.validation.constraints.NotNull;
@@ -33,6 +34,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
 import org.hibernate.search.annotations.ContainedIn;
 import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.IndexedEmbedded;
 
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
@@ -52,7 +54,8 @@ import eu.etaxonomy.cdm.strategy.cache.common.IdentifiableEntityDefaultCacheStra
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "DnaSample", propOrder = {
     "sequences",
-    "amplifications"
+    "amplifications",
+    "dnaQuality"
 })
 @XmlRootElement(name = "DnaSample")
 @Entity
@@ -95,6 +98,14 @@ public class DnaSample extends DerivedUnit implements Cloneable {
     @ContainedIn
     @NotNull
        private Set<Amplification> amplifications = new HashSet<Amplification>();
+       
+    @XmlElement(name = "DnaQuality", required = true)
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+    @IndexedEmbedded
+    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})
+    private DnaQuality dnaQuality;
 
 
 // ******************* CONSTRUCTOR *************************/
@@ -142,9 +153,19 @@ public class DnaSample extends DerivedUnit implements Cloneable {
        public void removeAmplification(Amplification amplification) {
                this.amplifications.remove(amplification);
        }
+       
+       public DnaQuality getDnaQuality() {
+               return dnaQuality;
+       }
 
-// ************* Convenience Getter / Setter ************/
+       public void setDnaQuality(DnaQuality dnaQuality) {
+               this.dnaQuality = dnaQuality;
+       }
        
+
+// ************* Convenience Getter / Setter ************/
+
+
        @Transient
        public Collection getStoredAt(){
                return this.getCollection();
index d3093e8b3c99087964bab57dfc27da1aa4cbb502..7e1a5939e2487d609c43f426ac26a12932a99675 100644 (file)
@@ -57,14 +57,9 @@ public class Primer extends AnnotatableEntity {
        private String label;\r
 \r
        /** @see #getSequence() */\r
+       //(see #4139)\r
        @XmlElement(name = "Sequence")\r
-    @XmlIDREF\r
-    @XmlSchemaType(name = "IDREF")\r
-    @ManyToOne(fetch=FetchType.LAZY)\r
-    @Cascade({CascadeType.SAVE_UPDATE})\r
-       //TODO the use of Sequence in this case is a bit of a overhead since you would expect\r
-       // just having a SequenceString. This may change in future (see #4139)\r
-       private Sequence sequence;\r
+       private SequenceString sequence = SequenceString.NewInstance();\r
 \r
        /** @see #getPublishedIn() */\r
        @XmlElement(name = "PublishedIn")\r
@@ -111,14 +106,17 @@ public class Primer extends AnnotatableEntity {
         * The DNA {@link Sequence} of this primer. A primer is usually a\r
         * small piece of DNA and therefore can be expressed as a sequence.\r
         */\r
-       public Sequence getSequence() {\r
+       public SequenceString getSequence() {\r
                return sequence;\r
        }\r
 \r
        /**\r
         * @see Primer#getSequence()\r
         */\r
-       public void setSequence(Sequence sequence) {\r
+       public void setSequence(SequenceString sequence) {\r
+               if (sequence == null){\r
+                       sequence = SequenceString.NewInstance();\r
+               }\r
                this.sequence = sequence;\r
        }\r
 \r
index a8c1c695d1e72222abdba9e7e39219c43a615e25..977be7b68cbb12a15c1c4d2fa390fff3c2658c2d 100644 (file)
@@ -14,6 +14,7 @@ import java.util.Set;
 
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
+import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.Transient;
@@ -67,6 +68,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
     "barcode",
        "preservation",
        "exsiccatum",
+       "originalLabelInfo",
     "specimenTypeDesignations"
 })
 @XmlRootElement(name = "DerivedUnit")
@@ -131,6 +133,10 @@ public class DerivedUnit extends SpecimenOrObservationBase<IIdentifiableEntityCa
        @Cascade(CascadeType.SAVE_UPDATE)
        @IndexedEmbedded(depth = 4)
        private DerivationEvent derivedFrom;
+       
+       @XmlElement(name = "OriginalLabelInfo")
+       @Lob
+    private String originalLabelInfo;
 
        @XmlElementWrapper(name = "SpecimenTypeDesignations")
        @XmlElement(name = "SpecimenTypeDesignation")
@@ -250,7 +256,6 @@ public class DerivedUnit extends SpecimenOrObservationBase<IIdentifiableEntityCa
                this.collection = collection;
        }
 
-
        public String getCatalogNumber() {
                return catalogNumber;
        }
@@ -278,6 +283,23 @@ public class DerivedUnit extends SpecimenOrObservationBase<IIdentifiableEntityCa
        public void setAccessionNumber(String accessionNumber) {
                this.accessionNumber = accessionNumber;
        }
+       
+
+       /**
+        * Original label information may present the exact original text
+        * or any other text which fully or partly represents the text available
+        * on the specimens label. This information may differ from the information
+        * available in the derived unit itself.
+        * @return the original label information
+        */
+       //#4218
+       public String getOriginalLabelInfo() {
+               return originalLabelInfo;
+       }
+
+       public void setOriginalLabelInfo(String originalLabelInfo) {
+               this.originalLabelInfo = originalLabelInfo;
+       }
 
        /**
         * Will be removed in future versions as semantics is not clear.
@@ -383,4 +405,5 @@ public class DerivedUnit extends SpecimenOrObservationBase<IIdentifiableEntityCa
        }
 
 
+
 }
index 61f9fd6e855f2cdfcc8a4fd48001fc3292a3e63d..9a98ce2ea9258a338f06491063de7f86edd04bd9 100644 (file)
@@ -52,12 +52,12 @@ public interface IReference extends IIdentifiableEntity, IParsable, IMergable, I
        /**\r
         * Returns the references author(s)\r
         */\r
-       public TeamOrPersonBase getAuthorTeam();\r
+       public TeamOrPersonBase getAuthorship();\r
        \r
        /**\r
         * Sets the references author(s)\r
         */\r
-       public void setAuthorTeam(TeamOrPersonBase authorTeam);\r
+       public void setAuthorship(TeamOrPersonBase authorship);\r
        \r
        /**\r
         * Returns the references title\r
index dba16ee4bafd95c304a4822234f4eeefc4e79c31..b99db029b8ff45e378ca500b42755fff56270823 100644 (file)
@@ -91,15 +91,14 @@ import eu.etaxonomy.cdm.validation.annotation.ReferenceCheck;
     "abbrevTitleCache",\r
     "protectedAbbrevTitleCache",\r
        "nomenclaturallyRelevant",\r
-    "authorTeam",\r
+    "authorship",\r
     "referenceAbstract",\r
     "title",\r
     "abbrevTitle",\r
     "editor",\r
        "volume",\r
        "pages",\r
-       "series",\r
-    "edition",\r
+       "edition",\r
     "isbn",\r
     "issn",\r
     "doi",\r
@@ -173,14 +172,6 @@ public class Reference<S extends IReferenceBaseCacheStrategy> extends Identifiab
        @Length(max = 255)\r
        protected String editor;\r
 \r
-    @XmlElement(name = "Series")\r
-    @Field\r
-    //TODO Val #3379\r
-//    @NullOrNotEmpty\r
-       @Length(max = 255)\r
-    @Deprecated //series and seriesPart are duplicates #4293 \r
-       protected String series;\r
-\r
     @XmlElement(name = "Volume")\r
     @Field\r
     //TODO Val #3379\r
@@ -327,13 +318,14 @@ public class Reference<S extends IReferenceBaseCacheStrategy> extends Identifiab
        @Merge(MergeMode.OR)\r
        private boolean nomenclaturallyRelevant;\r
 \r
-       @XmlElement(name = "AuthorTeam")\r
+       @XmlElement(name = "Authorship")\r
        @XmlIDREF\r
        @XmlSchemaType(name = "IDREF")\r
        @ManyToOne(fetch = FetchType.LAZY)\r
        @IndexedEmbedded\r
        @Cascade(CascadeType.SAVE_UPDATE)\r
-       private TeamOrPersonBase<?> authorTeam;\r
+       private TeamOrPersonBase<?> authorship;\r
+\r
 \r
 //     @XmlElement(name = "ReferenceIdentity")\r
 //     @XmlIDREF\r
@@ -668,16 +660,16 @@ public class Reference<S extends IReferenceBaseCacheStrategy> extends Identifiab
         * @see         eu.etaxonomy.cdm.model.agent.TeamOrPersonBase\r
         */\r
        @Override\r
-    public TeamOrPersonBase getAuthorTeam(){\r
-               return this.authorTeam;\r
+    public TeamOrPersonBase getAuthorship(){\r
+               return this.authorship;\r
        }\r
 \r
        /**\r
-        * @see #getAuthorTeam()\r
+        * @see #getAuthorship()\r
         */\r
        @Override\r
-    public void setAuthorTeam(TeamOrPersonBase authorTeam){\r
-               this.authorTeam = authorTeam;\r
+    public void setAuthorship(TeamOrPersonBase authorship){\r
+               this.authorship = authorship;\r
        }\r
 \r
        /**\r
@@ -1318,7 +1310,7 @@ public class Reference<S extends IReferenceBaseCacheStrategy> extends Identifiab
                try {\r
                        Reference<?> result = (Reference<?>)super.clone();\r
                        result.setDatePublished(datePublished != null? (TimePeriod)datePublished.clone(): null);\r
-                       //no changes to: title, authorTeam, hasProblem, nomenclaturallyRelevant, uri\r
+                       //no changes to: title, authorship, hasProblem, nomenclaturallyRelevant, uri\r
                        return result;\r
                } catch (CloneNotSupportedException e) {\r
                        logger.warn("Object does not implement cloneable");\r
index 066eabc2e5bfeaad7a0bba5052baf843840e5412..f8f0938f9f1d75d70442e964ef48ebfd19e7b157 100644 (file)
@@ -136,7 +136,7 @@ public class ReferenceFactory {
        public static Reference newBookSection(Reference book, Person partAuthor,\r
                        String sectionTitle, String pages) {\r
                Reference<?> bookSection = newBookSection();\r
-               bookSection.setAuthorTeam(partAuthor);\r
+               bookSection.setAuthorship(partAuthor);\r
                bookSection.setTitle(sectionTitle);\r
                bookSection.setPages(pages);\r
                return bookSection;\r
@@ -146,7 +146,7 @@ public class ReferenceFactory {
                        String title, String pages, String series, String volume, TimePeriod datePublished) {\r
                Reference<?> article = newArticle();\r
                article.setInReference(inJournal);\r
-               article.setAuthorTeam(partAuthor);\r
+               article.setAuthorship(partAuthor);\r
                article.setTitle(title);\r
                article.setPages(pages);\r
                article.setVolume(volume);\r
index 7c85e0d8b0ac9a90bf3765e5f1f615bf8c76dab2..2edf4ecc6e10903c4551bfe51ef6c7f47ce4defc 100644 (file)
 package eu.etaxonomy.cdm.model.taxon;\r
 \r
 import java.util.ArrayList;\r
+import java.util.HashMap;\r
 import java.util.HashSet;\r
 import java.util.Iterator;\r
 import java.util.List;\r
+import java.util.Map;\r
 import java.util.Set;\r
 \r
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
 import javax.persistence.JoinColumn;\r
+import javax.persistence.JoinTable;\r
+import javax.persistence.ManyToMany;\r
 import javax.persistence.ManyToOne;\r
+import javax.persistence.MapKeyJoinColumn;\r
+import javax.persistence.OneToMany;\r
 import javax.persistence.OneToOne;\r
 import javax.persistence.Transient;\r
+import javax.validation.constraints.NotNull;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
 import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlElementWrapper;\r
 import javax.xml.bind.annotation.XmlIDREF;\r
 import javax.xml.bind.annotation.XmlRootElement;\r
 import javax.xml.bind.annotation.XmlSchemaType;\r
 import javax.xml.bind.annotation.XmlType;\r
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.hibernate.annotations.Cascade;\r
 import org.hibernate.annotations.CascadeType;\r
 import org.hibernate.envers.Audited;\r
+import org.hibernate.search.annotations.Field;\r
+import org.hibernate.search.annotations.FieldBridge;\r
 import org.hibernate.search.annotations.Indexed;\r
 import org.hibernate.search.annotations.IndexedEmbedded;\r
+import org.hibernate.search.annotations.Store;\r
 \r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.hibernate.search.MultilanguageTextFieldBridge;\r
+import eu.etaxonomy.cdm.jaxb.MultilanguageTextAdapter;\r
 import eu.etaxonomy.cdm.model.common.IReferencedEntity;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.MultilanguageText;\r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
 \r
@@ -52,10 +69,12 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 @XmlAccessorType(XmlAccessType.FIELD)\r
 @XmlType(name = "Classification", propOrder = {\r
     "name",\r
+    "description",\r
     "rootNode",\r
     "reference",\r
-    "microReference"\r
-\r
+    "microReference",\r
+    "timeperiod",\r
+    "geoScopes"\r
 })\r
 @XmlRootElement(name = "Classification")\r
 @Entity\r
@@ -87,10 +106,32 @@ public class Classification extends IdentifiableEntity<IIdentifiableEntityCacheS
     @Cascade({CascadeType.SAVE_UPDATE})\r
     private Reference<?> reference;\r
 \r
-\r
-\r
     @XmlElement(name = "microReference")\r
     private String microReference;\r
+    \r
+       @XmlElement(name = "TimePeriod")\r
+    private TimePeriod timeperiod = TimePeriod.NewInstance();\r
+       \r
+    @XmlElementWrapper( name = "GeoScopes")\r
+    @XmlElement( name = "GeoScope")\r
+    @XmlIDREF\r
+    @XmlSchemaType(name="IDREF")\r
+    @ManyToMany(fetch = FetchType.LAZY)\r
+    @JoinTable(name="Classification_GeoScope")\r
+    @Cascade({CascadeType.SAVE_UPDATE})\r
+    private Set<NamedArea> geoScopes = new HashSet<NamedArea>();\r
\r
+       @XmlElement(name = "Description")\r
+       @XmlJavaTypeAdapter(MultilanguageTextAdapter.class)\r
+       @OneToMany(fetch = FetchType.LAZY, orphanRemoval=true)\r
+       @MapKeyJoinColumn(name="description_mapkey_id")\r
+    @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE })\r
+       @JoinTable(name = "Classification_Description")\r
+//     @Field(name="text", store=Store.YES)\r
+//    @FieldBridge(impl=MultilanguageTextFieldBridge.class)\r
+    private Map<Language,LanguageString> description = new HashMap<Language,LanguageString>();\r
+\r
+\r
 \r
 //     /**\r
 //      * If this classification is an alternative classification for a subclassification in\r
@@ -490,6 +531,109 @@ public class Classification extends IdentifiableEntity<IIdentifiableEntityCacheS
     public void setMicroReference(String microReference) {\r
         this.microReference = microReference;\r
     }\r
+    \r
+\r
+    /**\r
+        * The point in time, the time period or the season for which this description element \r
+        * is valid. A season may be expressed by not filling the year part(s) of the time period. \r
+        */\r
+       public TimePeriod getTimeperiod() {\r
+               return timeperiod;\r
+       }\r
+\r
+       /**\r
+        * @see #getTimeperiod()\r
+        */\r
+       public void setTimeperiod(TimePeriod timeperiod) {\r
+               if (timeperiod == null){\r
+                       timeperiod = TimePeriod.NewInstance();\r
+               }\r
+               this.timeperiod = timeperiod;\r
+       }\r
+       \r
+\r
+    /**\r
+     * Returns the set of {@link NamedArea named areas} indicating the geospatial\r
+     * data where <i>this</i> {@link Classification} is valid.\r
+     */\r
+    public Set<NamedArea> getGeoScopes(){\r
+        return this.geoScopes;\r
+    }\r
+\r
+    /**\r
+     * Adds a {@link NamedArea named area} to the set of {@link #getGeoScopes() named areas}\r
+     * delimiting the geospatial area where <i>this</i> {@link Classification} is valid.\r
+     *\r
+     * @param geoScope the named area to be additionally assigned to <i>this</i> taxon description\r
+     * @see                            #getGeoScopes()\r
+     */\r
+    public void addGeoScope(NamedArea geoScope){\r
+        this.geoScopes.add(geoScope);\r
+    }\r
+\r
+    /**\r
+     * Removes one element from the set of {@link #getGeoScopes() named areas} delimiting\r
+     * the geospatial area where <i>this</i> {@link Classification} is valid.\r
+     *\r
+     * @param  geoScope   the named area which should be removed\r
+     * @see                      #getGeoScopes()\r
+     * @see                      #addGeoScope(NamedArea)\r
+     */\r
+    public void removeGeoScope(NamedArea geoScope){\r
+        this.geoScopes.remove(geoScope);\r
+    }\r
+    \r
+       \r
+       /** \r
+        * Returns the i18n description used to describe\r
+        * <i>this</i> {@link Classification}. The different {@link LanguageString language strings}\r
+        * contained in the multilanguage text should all have the same meaning.\r
+        */\r
+       public Map<Language,LanguageString> getDescription(){\r
+               return this.description;\r
+       }\r
+       \r
+       /**\r
+        * Adds a translated {@link LanguageString text in a particular language}\r
+        * to the {@link MultilanguageText description} used to describe\r
+        * <i>this</i> {@link Classification}.\r
+        * \r
+        * @param description   the language string describing the individuals association\r
+        *                                              in a particular language\r
+        * @see                                 #getDescription()\r
+        * @see                                 #putDescription(Language, String)\r
+        * \r
+        */\r
+       public void putDescription(LanguageString description){\r
+               this.description.put(description.getLanguage(),description);\r
+       }\r
+       /**\r
+        * Creates a {@link LanguageString language string} based on the given text string\r
+        * and the given {@link Language language} and adds it to the {@link MultilanguageText multilanguage text} \r
+        * used to describe <i>this</i> {@link Classification}.\r
+        * \r
+        * @param text          the string describing the individuals association\r
+        *                                      in a particular language\r
+        * @param language      the language in which the text string is formulated\r
+        * @see                         #getDescription()\r
+        * @see                         #putDescription(LanguageString)\r
+        */\r
+       public void putDescription(Language language, String text){\r
+               this.description.put(language, LanguageString.NewInstance(text, language));\r
+       }\r
+       /** \r
+        * Removes from the {@link MultilanguageText description} used to describe\r
+        * <i>this</i>  {@link Classification} the one {@link LanguageString language string}\r
+        * with the given {@link Language language}.\r
+        *\r
+        * @param  language     the language in which the language string to be removed\r
+        *                                      has been formulated\r
+        * @see                 #getDescription()\r
+        */\r
+       public void removeDescription(Language language){\r
+               this.description.remove(language);\r
+       }\r
+    \r
 \r
     @Override\r
     public String generateTitle() {\r
@@ -536,6 +680,12 @@ public class Classification extends IdentifiableEntity<IIdentifiableEntityCacheS
                 result.addChildNode(rootNodeClone, rootNode.getReference(), rootNode.getMicroReference());\r
                 rootNodeClone.setSynonymToBeUsed(rootNode.getSynonymToBeUsed());\r
             }\r
+            \r
+            //geo-scopes\r
+            result.geoScopes = new HashSet<NamedArea>();\r
+            for (NamedArea namedArea : getGeoScopes()){\r
+                result.geoScopes.add(namedArea);\r
+            }\r
 \r
             return result;\r
 \r
index 6fa81ec7ad5722159000936f2480194357e2f664..5716e086173e66cb724e5284859ff33d513c345b 100644 (file)
@@ -82,8 +82,7 @@ import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseDefaultCacheStrategy;
     "synonymRelations",
     "relationsFromThisTaxon",
     "relationsToThisTaxon",
-    "descriptions",
-    "publish"
+    "descriptions"
 })
 @XmlRootElement(name = "Taxon")
 @Entity
@@ -95,7 +94,7 @@ import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseDefaultCacheStrategy;
     @ClassBridge(impl = TaxonRelationshipClassBridge.class)
 })
 public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>>
-            implements IRelated<RelationshipBase>, IDescribable<TaxonDescription>, IPublishable, Cloneable{
+            implements IRelated<RelationshipBase>, IDescribable<TaxonDescription>, Cloneable{
     private static final long serialVersionUID = -584946869762749006L;
     private static final Logger logger = Logger.getLogger(Taxon.class);
 
@@ -168,10 +167,6 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>>
     @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
     private int taxonomicChildrenCount;
 
-
-    @XmlAttribute(name = "publish")
-    private boolean publish = true;
-
 // ************************* FACTORY METHODS ********************************/
 
     /**
@@ -1661,24 +1656,6 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>>
         this.excluded = excluded;
     }
 
-
-    /**
-     * Returns the boolean value indicating if this taxon should be withheld (<code>publish=false</code>) or not
-     * (<code>publish=true</code>) during any publication process to the general public.
-     * This publish flag implementation is preliminary and may be replaced by a more general
-     * implementation of READ rights in future.<BR>
-     * The default value is <code>true</code>.
-     */
-    @Override
-    public boolean isPublish() {
-        return publish;
-    }
-
-    @Override
-    public void setPublish(boolean publish) {
-        this.publish = publish;
-    }
-
     /**
      * Returns the ordered list of all {@link eu.etaxonomy.cdm.model.name.HomotypicalGroup homotypical groups}
      * that contain {@link Synonym synonyms} that are heterotypic to <i>this</i> taxon.
index 29af0766fecef2716ba919291026caba71675ac4..87b5b5da63fdf5d3b079309ee4dd3ef2c4bf5b49 100644 (file)
@@ -37,6 +37,7 @@ import org.hibernate.search.annotations.Store;
 
 import eu.etaxonomy.cdm.hibernate.search.AcceptedTaxonBridge;
 import eu.etaxonomy.cdm.hibernate.search.ClassInfoBridge;
+import eu.etaxonomy.cdm.model.common.IPublishable;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
@@ -69,7 +70,8 @@ import eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynony
     "sec",
     "doubtful",
     "appendedPhrase",
-    "useNameCache"
+    "useNameCache",
+    "publish"
 })
 @Entity
 @Audited
@@ -87,7 +89,7 @@ import eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynony
             impl = AcceptedTaxonBridge.class),
     @ClassBridge(impl = eu.etaxonomy.cdm.hibernate.search.NomenclaturalSortOrderBrigde.class)
 })
-public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> extends IdentifiableEntity<S> implements Cloneable {
+public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> extends IdentifiableEntity<S> implements  IPublishable, Cloneable {
     private static final long serialVersionUID = -3589185949928938529L;
     private static final Logger logger = Logger.getLogger(TaxonBase.class);
 
@@ -135,6 +137,9 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
 
     @XmlAttribute(name= "UseNameCache")
     private boolean useNameCache = false;
+    
+    @XmlAttribute(name = "publish")
+    private boolean publish = true;
 
 
 // ************* CONSTRUCTORS *************/
@@ -245,6 +250,24 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
     public void setDoubtful(boolean doubtful){
         this.doubtful = doubtful;
     }
+    
+
+    /**
+     * Returns the boolean value indicating if this taxon should be withheld (<code>publish=false</code>) or not
+     * (<code>publish=true</code>) during any publication process to the general public.
+     * This publish flag implementation is preliminary and may be replaced by a more general
+     * implementation of READ rights in future.<BR>
+     * The default value is <code>true</code>.
+     */
+    @Override
+    public boolean isPublish() {
+        return publish;
+    }
+
+    @Override
+    public void setPublish(boolean publish) {
+        this.publish = publish;
+    }
 
     /**
      * Returns the {@link eu.etaxonomy.cdm.model.reference.Reference reference} of <i>this</i> (abstract) taxon.
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityConstraintViolation.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityConstraintViolation.java
new file mode 100644 (file)
index 0000000..57d5255
--- /dev/null
@@ -0,0 +1,178 @@
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+package eu.etaxonomy.cdm.model.validation;\r
+\r
+import javax.persistence.Entity;\r
+import javax.persistence.FetchType;\r
+import javax.persistence.ManyToOne;\r
+import javax.validation.ConstraintValidator;\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlRootElement;\r
+import javax.xml.bind.annotation.XmlType;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.annotations.Cascade;\r
+import org.hibernate.annotations.CascadeType;\r
+import org.hibernate.annotations.Type;\r
+\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.validation.Severity;\r
+\r
+/**\r
+ * An {@code EntityConstraintViolation} represents a single error resulting from the\r
+ * validation of an entity. It basically is a database model for the\r
+ * {@link ConstraintValidator} class of the javax.validation framework.\r
+ * \r
+ * @author admin.ayco.holleman\r
+ * \r
+ */\r
+\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+//@formatter:off\r
+@XmlType(name = "EntityConstraintViolation", propOrder = {\r
+               "PropertyPath",\r
+               "UserFriendlyFieldName",\r
+               "InvalidValue",\r
+               "Severity",\r
+               "Message",\r
+               "Validator",\r
+               "EntityValidationResult"\r
+})\r
+//@formatter:on\r
+@XmlRootElement(name = "EntityConstraintViolation")\r
+@Entity\r
+public class EntityConstraintViolation extends CdmBase {\r
+       private static final long serialVersionUID = 6685798691716413950L;\r
+\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(EntityConstraintViolation.class);\r
+\r
+\r
+       public static EntityConstraintViolation NewInstance(){\r
+               return new EntityConstraintViolation();\r
+       }\r
+\r
+       @XmlElement(name = "PropertyPath")\r
+       private String propertyPath;\r
+\r
+       @XmlElement(name = "UserFriendlyFieldName")\r
+       private String userFriendlyFieldName;\r
+\r
+       @XmlElement(name = "InvalidValue")\r
+       private String invalidValue;\r
+\r
+       @XmlElement(name = "Severity")\r
+       @Type(type = "eu.etaxonomy.cdm.model.validation.SeverityType")\r
+       private Severity severity;\r
+\r
+       @XmlElement(name = "Message")\r
+       private String message;\r
+\r
+       @XmlElement(name = "Validator")\r
+       private String validator;\r
+\r
+       @XmlElement(name = "EntityValidationResult")\r
+       @ManyToOne(fetch = FetchType.LAZY)\r
+       @Cascade({ CascadeType.ALL })\r
+       private EntityValidationResult entityValidationResult;\r
+\r
+\r
+       protected EntityConstraintViolation(){\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the path from the root bean to the field with the invalid value. Ordinarily\r
+        * this simply is the simple name of the field of the validated entity (see\r
+        * {@link EntityValidationResult#getValidatedEntityClass()}). Only if you have used @Valid\r
+        * annotations, and the error was in a parent or child entity, will this be a\r
+        * dot-separated path (e.g. "addresses[0].street" or "company.name").\r
+        */\r
+       public String getPropertyPath(){\r
+               return propertyPath;\r
+       }\r
+       public void setPropertyPath(String propertyPath){\r
+               this.propertyPath = propertyPath;\r
+       }\r
+\r
+\r
+       /**\r
+        * A user-friendly name for the property path.\r
+        */\r
+       public String getUserFriendlyFieldName(){\r
+               return userFriendlyFieldName;\r
+       }\r
+       public void setUserFriendlyFieldName(String userFriendlyFieldName){\r
+               this.userFriendlyFieldName = userFriendlyFieldName;\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the value that violated the constraint.\r
+        * @return\r
+        */\r
+       public String getInvalidValue(){\r
+               return invalidValue;\r
+       }\r
+\r
+       public void setInvalidValue(String invalidValue){\r
+               this.invalidValue = invalidValue;\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the severity of the constraint violation.\r
+        * \r
+        * @return\r
+        */\r
+       public Severity getSeverity(){\r
+               return severity;\r
+       }\r
+       public void setSeverity(Severity severity){\r
+               this.severity = severity;\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the error message associated with the constraint violation.\r
+        * \r
+        * @return The error message\r
+        */\r
+       public String getMessage(){\r
+               return message;\r
+       }\r
+       public void setMessage(String message){\r
+               this.message = message;\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the fully qualified class name of the {@link ConstraintValidator} responsible\r
+        * for invalidating the entity.\r
+        * \r
+        * @param validator\r
+        */\r
+       public String getValidator(){\r
+               return validator;\r
+       }\r
+       public void setValidator(String validator){\r
+               this.validator = validator;\r
+       }\r
+\r
+\r
+       public EntityValidationResult getEntityValidationResult(){\r
+               return entityValidationResult;\r
+       }\r
+       public void setEntityValidationResult(EntityValidationResult entityValidationResult){\r
+               this.entityValidationResult = entityValidationResult;\r
+       }\r
+\r
+}\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityValidationResult.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/EntityValidationResult.java
new file mode 100644 (file)
index 0000000..18d71c8
--- /dev/null
@@ -0,0 +1,195 @@
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+package eu.etaxonomy.cdm.model.validation;\r
+\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+import java.util.UUID;\r
+\r
+import javax.persistence.Column;\r
+import javax.persistence.Entity;\r
+import javax.persistence.EnumType;\r
+import javax.persistence.Enumerated;\r
+import javax.persistence.OneToMany;\r
+import javax.validation.Validator;\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlElementWrapper;\r
+import javax.xml.bind.annotation.XmlRootElement;\r
+import javax.xml.bind.annotation.XmlType;\r
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.annotations.Cascade;\r
+import org.hibernate.annotations.CascadeType;\r
+import org.hibernate.annotations.Fetch;\r
+import org.hibernate.annotations.FetchMode;\r
+import org.hibernate.annotations.Type;\r
+import org.hibernate.search.annotations.FieldBridge;\r
+\r
+import eu.etaxonomy.cdm.hibernate.search.UuidBridge;\r
+import eu.etaxonomy.cdm.jaxb.UUIDAdapter;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.validation.CRUDEventType;\r
+\r
+/**\r
+ * An {@code EntityValidationResult} models the result of validating one entity, that is,\r
+ * the outcome of calling {@link Validator#validate(Object, Class...)}. More than one\r
+ * constraint {@link EntityConstraintViolation} may be violated while validating the\r
+ * entity.\r
+ * \r
+ * @see EntityValidationResult\r
+ * \r
+ * @author ayco_holleman\r
+ * \r
+ */\r
+\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+//@formatter:off\r
+@XmlType(name = "EntityValidationResult", propOrder = {\r
+               "ValidatedEntityId",\r
+               "ValidatedEntityUuid",\r
+               "ValidatedEntityClass",\r
+               "UserFriendlyDescription",\r
+               "UserFriendlyTypeName",\r
+               "CrudEventType",\r
+               "ConstraintViolations"\r
+})\r
+//@formatter:on\r
+@XmlRootElement(name = "EntityValidationResult")\r
+@Entity\r
+public class EntityValidationResult extends CdmBase {\r
+\r
+       private static final long serialVersionUID = 9120571815593117363L;\r
+\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(EntityValidationResult.class);\r
+\r
+\r
+       public static EntityValidationResult newInstance(){\r
+               return new EntityValidationResult();\r
+       }\r
+\r
+       @XmlElement(name = "ValidatedEntityId")\r
+       private int validatedEntityId;\r
+\r
+       @XmlElement(name = "ValidatedEntityUuid")\r
+       @XmlJavaTypeAdapter(UUIDAdapter.class)\r
+       @Type(type = "uuidUserType")\r
+       @Column(length=36)  //TODO needed? Type UUID will always assure that is exactly 36\r
+    @FieldBridge(impl = UuidBridge.class)  //TODO required?\r
+       private UUID validatedEntityUuid;\r
+\r
+       @XmlElement(name = "ValidatedEntityClass")\r
+       private String validatedEntityClass;\r
+\r
+       @XmlElement(name = "UserFriendlyDescription")\r
+       private String userFriendlyDescription;\r
+\r
+       @XmlElement(name = "UserFriendlyTypeName")\r
+       private String userFriendlyTypeName;\r
+\r
+       @XmlElement(name = "CrudEventType")\r
+       @Enumerated(EnumType.STRING)\r
+       private CRUDEventType crudEventType;\r
+\r
+       @XmlElementWrapper(name = "EntityConstraintViolations")\r
+       @OneToMany(mappedBy = "entityValidationResult")\r
+       @Cascade({ CascadeType.ALL })\r
+       @Fetch(value = FetchMode.JOIN)\r
+       private Set<EntityConstraintViolation> entityConstraintViolations;\r
+\r
+\r
+       protected EntityValidationResult(){\r
+               super();\r
+       }\r
+\r
+\r
+       public int getValidatedEntityId(){\r
+               return validatedEntityId;\r
+       }\r
+\r
+\r
+       public void setValidatedEntityId(int validatedEntityId){\r
+               this.validatedEntityId = validatedEntityId;\r
+       }\r
+\r
+\r
+       public UUID getValidatedEntityUuid(){\r
+               return validatedEntityUuid;\r
+       }\r
+\r
+\r
+       public void setValidatedEntityUuid(UUID validatedEntityUuid){\r
+               this.validatedEntityUuid = validatedEntityUuid;\r
+       }\r
+\r
+\r
+       public String getValidatedEntityClass(){\r
+               return validatedEntityClass;\r
+       }\r
+\r
+\r
+       public void setValidatedEntityClass(String validatedEntityClass){\r
+               this.validatedEntityClass = validatedEntityClass;\r
+       }\r
+\r
+\r
+       public String getUserFriendlyTypeName(){\r
+               return userFriendlyTypeName;\r
+       }\r
+\r
+\r
+       public void setUserFriendlyTypeName(String userFriendlyTypeName){\r
+               this.userFriendlyTypeName = userFriendlyTypeName;\r
+       }\r
+\r
+\r
+       public CRUDEventType getCrudEventType(){\r
+               return crudEventType;\r
+       }\r
+\r
+\r
+       public void setCrudEventType(CRUDEventType crudEventType){\r
+               this.crudEventType = crudEventType;\r
+       }\r
+\r
+\r
+       public String getUserFriendlyDescription(){\r
+               return userFriendlyDescription;\r
+       }\r
+\r
+\r
+       public void setUserFriendlyDescription(String userFriendlyDescription){\r
+               this.userFriendlyDescription = userFriendlyDescription;\r
+       }\r
+\r
+\r
+       public Set<EntityConstraintViolation> getEntityConstraintViolations(){\r
+               if (entityConstraintViolations == null) {\r
+                       entityConstraintViolations = new HashSet<EntityConstraintViolation>();\r
+               }\r
+               return entityConstraintViolations;\r
+       }\r
+\r
+\r
+       public void addEntityConstraintViolation(EntityConstraintViolation ecv){\r
+               if (ecv != null) {\r
+                       getEntityConstraintViolations().add(ecv);\r
+               }\r
+       }\r
+\r
+\r
+       public void removeEntityConstraintViolation(EntityConstraintViolation ecv){\r
+               if (ecv != null) {\r
+                       getEntityConstraintViolations().remove(ecv);\r
+               }\r
+       }\r
+}\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/SeverityType.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/validation/SeverityType.java
new file mode 100644 (file)
index 0000000..4652003
--- /dev/null
@@ -0,0 +1,109 @@
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+package eu.etaxonomy.cdm.model.validation;\r
+\r
+import java.io.Serializable;\r
+import java.sql.PreparedStatement;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+\r
+import org.hibernate.HibernateException;\r
+import org.hibernate.engine.spi.SessionImplementor;\r
+import org.hibernate.usertype.UserType;\r
+\r
+import eu.etaxonomy.cdm.validation.Severity;\r
+\r
+/**\r
+ * A Hibernate {@code UserType} for persisting {@link Severity} instances.\r
+ * \r
+ * @see EntityConstraintViolation\r
+ * \r
+ * @author ayco_holleman\r
+ * \r
+ */\r
+public class SeverityType implements UserType {\r
+\r
+       @Override\r
+       public int[] sqlTypes(){\r
+               return new int[] { java.sql.Types.VARCHAR };\r
+       }\r
+\r
+\r
+       @SuppressWarnings("rawtypes")\r
+       @Override\r
+       public Class returnedClass(){\r
+               return Severity.class;\r
+               \r
+       }\r
+\r
+\r
+       @Override\r
+       public boolean equals(Object x, Object y) throws HibernateException{\r
+               if (x == null) {\r
+                       if (y == null) {\r
+                               return true;\r
+                       }\r
+                       return false;\r
+               }\r
+               if (y == null) {\r
+                       return false;\r
+               }\r
+               return ((Severity) x).equals(y);\r
+       }\r
+\r
+\r
+       @Override\r
+       public int hashCode(Object x) throws HibernateException{\r
+               return x.getClass().hashCode();\r
+       }\r
+\r
+\r
+       @Override\r
+       public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) throws HibernateException, SQLException{\r
+               String severity = rs.getString(names[0]);\r
+               return rs.wasNull() ? null : Severity.forName(severity);\r
+       }\r
+\r
+\r
+       @Override\r
+       public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session) throws HibernateException, SQLException{\r
+               st.setString(index, value == null ? null : value.toString());\r
+       }\r
+\r
+\r
+       @Override\r
+       public Object deepCopy(Object value) throws HibernateException{\r
+               return value;\r
+       }\r
+\r
+\r
+       @Override\r
+       public boolean isMutable(){\r
+               return false;\r
+       }\r
+\r
+\r
+       @Override\r
+       public Serializable disassemble(Object value) throws HibernateException{\r
+               return null;\r
+       }\r
+\r
+\r
+       @Override\r
+       public Object assemble(Serializable cached, Object owner) throws HibernateException{\r
+               return null;\r
+       }\r
+\r
+\r
+       @Override\r
+       public Object replace(Object original, Object target, Object owner) throws HibernateException{\r
+               return original;\r
+       }\r
+\r
+}\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/View.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/View.java
deleted file mode 100644 (file)
index 66825d5..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.cdm.model.view;
-
-
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-import javax.persistence.Transient;
-
-import org.apache.log4j.Logger;
-import org.hibernate.annotations.Cascade;
-import org.hibernate.annotations.CascadeType;
-
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IReferencedEntity;
-import eu.etaxonomy.cdm.model.reference.Reference;
-
-/**
- * use ARCHIVE view/dataset to maintain an archive. All members of that view will
- * never be changed
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:07:01
- */
-@Entity(name="CDM_VIEW")
-public class View extends CdmBase implements IReferencedEntity{
-       private static final long serialVersionUID = 3668860188614455213L;
-       private static final Logger logger = Logger.getLogger(View.class);
-
-       private String name;
-       private String description;
-
-       @ManyToOne(fetch = FetchType.LAZY)
-       @Cascade(CascadeType.SAVE_UPDATE)
-       private Reference<?> reference;
-
-       @OneToMany(fetch = FetchType.LAZY)
-       private final Set<View> superViews = new HashSet<View>();
-
-       @Transient
-       private final Set<CdmBase> members = new HashSet<CdmBase>();
-
-       @Transient
-       private final Set<CdmBase> nonMembers = new HashSet<CdmBase>();
-
-       public String getName(){
-               logger.debug("getName");
-               return this.name;
-       }
-       public void setName(String name){
-               this.name = name;
-       }
-
-       public String getDescription(){
-               return this.description;
-       }
-
-       public void setDescription(String description){
-               this.description = description;
-       }
-
-       @Override
-    @Transient
-       public Reference getCitation() {
-               return getReference();
-       }
-
-       public Reference getReference() {
-               return reference;
-       }
-
-       public void setReference(Reference reference) {
-               this.reference = reference;
-       }
-
-       public Set<View> getSuperViews() {
-               return superViews;
-       }
-
-       public void addSuperView(View superView) {
-               this.superViews.add(superView);
-       }
-       public void removeSuperView(View superView) {
-               this.superViews.remove(superView);
-       }
-
-       public Set<CdmBase> getMembers() {
-               return members;
-       }
-
-       public void addMember(CdmBase member) {
-               this.members.add(member);
-       }
-       public void removeMember(ICdmBase member) {
-               this.members.remove(member);
-       }
-
-       public Set<CdmBase> getNonMembers() {
-               return nonMembers;
-       }
-
-       public void addNonMember(CdmBase member) {
-               this.nonMembers.add(member);
-       }
-       public void removeNonMember(ICdmBase member) {
-               this.nonMembers.remove(member);
-       }
-}
\ No newline at end of file
index df9e0268a9e96bb285476454afb5c093dfca84a9..0a3f5c0a74400834398d5bd242c458757bfa36a3 100644 (file)
@@ -34,17 +34,12 @@ public class TermDefaultCacheStrategy<T extends TermBase> extends IdentifiableEn
        \r
        final static UUID uuid = UUID.fromString("9cdf52c1-bac4-4b6c-a7f9-1a87401bd8f9");\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.strategy.StrategyBase#getUuid()\r
-        */\r
        @Override\r
        protected UUID getUuid() {\r
                return uuid;\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
-        */\r
+       @Override\r
        public String getTitleCache(T term) {\r
                String result = null;\r
                if (term.getRepresentations().size() > 0) {\r
index d2799167495d8a892ca5d38f2a44d221567d1578..ec569139dfc5998c76b92c977813960f24052fb3 100644 (file)
@@ -60,7 +60,7 @@ public class ArticleDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase
                }\r
                String result =  getTitleWithoutYearAndAuthor(article, false);\r
                result = addYear(result, article, false);\r
-               TeamOrPersonBase<?> team = article.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = article.getAuthorship();\r
                result = CdmUtils.concat(" ", article.getTitle(), result);\r
                if (team != null &&  isNotBlank(team.getTitleCache())){\r
                        String authorSeparator = isNotBlank(article.getTitle())? afterAuthor : " ";\r
@@ -76,7 +76,7 @@ public class ArticleDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase
                }\r
                String result =  getTitleWithoutYearAndAuthor(article, true);\r
                result = addYear(result, article, false);\r
-               TeamOrPersonBase<?> team = article.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = article.getAuthorship();\r
                String articleTitle = CdmUtils.getPreferredNonEmptyString(article.getAbbrevTitle(), article.getTitle(), false, true);\r
                result = CdmUtils.concat(" ", articleTitle, result);  //Article should maybe left out for nomenclatural references (?)\r
                if (team != null &&  isNotBlank(team.getNomenclaturalTitle())){\r
index 630214f3498b03715131fde7c30bc5d9dcf3e411..57c6964a276d54362c1e7d69b201b234594641c3 100644 (file)
@@ -89,7 +89,7 @@ public abstract class InRefDefaultCacheStrategyBase extends NomRefDefaultCacheSt
                if (book == null){\r
                        return "";\r
                }\r
-               TeamOrPersonBase<?> team = book.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = book.getAuthorship();\r
                String result = Nz( team == null ? "" : team.getNomenclaturalTitle());\r
                if (! result.trim().equals("")){\r
                        result = result + seperator;    \r
@@ -136,7 +136,7 @@ public abstract class InRefDefaultCacheStrategyBase extends NomRefDefaultCacheSt
                }\r
                \r
                //section author\r
-               TeamOrPersonBase<?> thisRefTeam = thisRef.getAuthorTeam();\r
+               TeamOrPersonBase<?> thisRefTeam = thisRef.getAuthorship();\r
                String thisRefAuthor = "";\r
                if (thisRefTeam != null){\r
                        thisRefAuthor = CdmUtils.getPreferredNonEmptyString(thisRefTeam.getTitleCache(), thisRefTeam.getNomenclaturalTitle(), isAbbrev, true);\r
index 50750a37ef34bd79378583dc4eb8c59fab8bde9b..106a8f1a46e96faf91de6335bf1909162b188874 100644 (file)
@@ -97,7 +97,7 @@ public class JournalDefaultCacheStrategy extends StrategyBase implements IRefere
 //             result = addYear(result, journal);\r
                \r
                \r
-               TeamOrPersonBase<?> team = journal.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = journal.getAuthorship();\r
                if (team != null){\r
                        String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
                        if (StringUtils.isNotBlank(author)){\r
@@ -111,7 +111,7 @@ public class JournalDefaultCacheStrategy extends StrategyBase implements IRefere
        public String getCitation(Reference referenceBase) {\r
                StringBuilder stringBuilder = new StringBuilder();\r
                \r
-               TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = referenceBase.getAuthorship();\r
                if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){\r
                        //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());\r
                        stringBuilder.append(team.getTitleCache() + afterAuthor);\r
index 8bdb69b43af19d12bb214969e287bfa47265bf16..65b92ac55ae1be578cdeffd31d8a565adde9df05 100644 (file)
@@ -68,7 +68,7 @@ public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implem
                }\r
                String result =  getTitleWithoutYearAndAuthor(ref, isAbbrev);\r
                result = addYear(result, ref, false);\r
-               TeamOrPersonBase<?> team = ref.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = ref.getAuthorship();\r
                \r
                if (team != null){\r
                        String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
@@ -90,7 +90,7 @@ public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implem
                \r
                String nextConcat = "";\r
                \r
-               TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = referenceBase.getAuthorship();\r
                if (team != null &&  isNotBlank(team.getTitleCache())){\r
                        stringBuilder.append(team.getTitleCache() );\r
                        nextConcat = afterAuthor;\r
index 69d4ed283df3edef176cd2291873d99ee5ce8b68..19017ef2f091a6bf88676f4786816ac30b318053 100644 (file)
@@ -83,7 +83,7 @@ public class ReferenceDefaultCacheStrategy extends StrategyBase implements IRefe
                }\r
                \r
                result = addYear(result, ref);\r
-               TeamOrPersonBase<?> team = ref.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = ref.getAuthorship();\r
                if (team != null){\r
                        String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
                        if (isNotBlank(author)){\r
@@ -111,7 +111,7 @@ public class ReferenceDefaultCacheStrategy extends StrategyBase implements IRefe
        public String getCitation(Reference referenceBase) {\r
                StringBuilder stringBuilder = new StringBuilder();\r
                \r
-               TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();\r
+               TeamOrPersonBase<?> team = referenceBase.getAuthorship();\r
                if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){\r
                        //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());\r
                        stringBuilder.append(team.getTitleCache() + afterAuthor);\r
index 4a611eb471ee9bd4f8b98601e879382456ca0585..7311c1411da0dcfcb599c0a00782c4d28576050a 100644 (file)
@@ -57,8 +57,8 @@ public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase> extends Strategy
                Reference<?> sec = taxonBase.getSec();\r
                if (sec != null){\r
                        if (sec.getCacheStrategy() != null && \r
-                                       sec.getAuthorTeam() != null && \r
-                                       isNotBlank(sec.getAuthorTeam().getTitleCache()) && \r
+                                       sec.getAuthorship() != null && \r
+                                       isNotBlank(sec.getAuthorship().getTitleCache()) && \r
                                        isNotBlank(sec.getYear())){\r
                                result = sec.getCacheStrategy().getCitation(sec);\r
 //                              sec.getAuthorTeam().getTitleCache() + sec.getYear();\r
index 3fe19877ee319a5ac2dbc83201461edf78d71e39..e9c12b2f59c878aa0f52bf60ce4aee0160cb8b1d 100644 (file)
@@ -383,7 +383,7 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
            \r
            Reference<?> nomRef;\r
                if ( (nomRef = (Reference<?>)nameToBeFilled.getNomenclaturalReference()) != null ){\r
-                       nomRef.setAuthorTeam((TeamOrPersonBase<?>)nameToBeFilled.getCombinationAuthorTeam());\r
+                       nomRef.setAuthorship((TeamOrPersonBase<?>)nameToBeFilled.getCombinationAuthorTeam());\r
                }\r
        }\r
        \r
@@ -696,7 +696,7 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                        \r
                        TeamOrPersonBase<?> authorTeam = author(authorString);\r
                        IBook inBook = parseBook(bookString);\r
-                       inBook.setAuthorTeam(authorTeam);\r
+                       inBook.setAuthorship(authorTeam);\r
                        result.setInBook(inBook);\r
                }\r
                return result;\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/CRUDEventType.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/CRUDEventType.java
new file mode 100644 (file)
index 0000000..ae88bb9
--- /dev/null
@@ -0,0 +1,26 @@
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+\r
+package eu.etaxonomy.cdm.validation;\r
+\r
+/**\r
+ * The CRUD event that triggered a validation. When an entity violates some constraint, it\r
+ * might be helpful to report back to the user what type of CRUD event caused the violation.\r
+ * Note that validation may not not have been triggered by any CRUD event at all, e.g. during\r
+ * some batch-like validation process. Level-2 validation can never be triggered by a DELETE\r
+ * event, because Level-2 validation only validates the entity itself. However, a DELETE event\r
+ * <i>can</i> possibly trigger a Level-3 validation, because that disrupts the object graph the\r
+ * entity was part of.\r
+ * \r
+ * @author ayco holleman\r
+ * \r
+ */\r
+public enum CRUDEventType{\r
+       NONE, INSERT, UPDATE, DELETE\r
+}\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/Severity.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/validation/Severity.java
new file mode 100644 (file)
index 0000000..191c8e1
--- /dev/null
@@ -0,0 +1,98 @@
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/ \r
+\r
+package eu.etaxonomy.cdm.validation;\r
+\r
+import java.util.Set;\r
+\r
+import javax.validation.ConstraintViolation;\r
+import javax.validation.Payload;\r
+\r
+/**\r
+ * A class conveying the severity of a {@link ConstraintViolation}. Severity levels are\r
+ * extraneous to the javax.validation framework and can only be conveyed using generic\r
+ * {@link Payload} objects. Unfortunately, only the class of those objects is communicated\r
+ * back to the client. The class <i>is</i> the message. Concrete instances or {@code enum}\r
+ * s (an obvious choice for severity levels) cannot function as {@code Payload} objects.\r
+ * The Severity class enables you to program using true Severity instances (one for each\r
+ * level), while behind the scenes only the class of those instances is taken into\r
+ * account.\r
+ * \r
+ * @author ayco holleman\r
+ */\r
+public abstract class Severity implements Payload {\r
+\r
+       public static final Notice NOTICE = new Notice();\r
+       public static final Warning WARNING = new Warning();\r
+       public static final Error ERROR = new Error();\r
+\r
+       //@formatter:off\r
+       public static final class Notice extends Severity {};\r
+       public static final class Warning extends Severity {};\r
+       public static final class Error extends Severity {};\r
+       //@formatter:on\r
+\r
+       /**\r
+        * Get {@code Severity} object for the specified {@code String} representation. Does the\r
+        * opposite of {@link #toString()}.\r
+        * \r
+        * @param name\r
+        *            The {@code String} representation of {@code Severity} object you want.\r
+        * \r
+        * @return The {@code Severity} object\r
+        */\r
+       public static Severity forName(String name)\r
+       {\r
+               if (name.equals(Error.class.getSimpleName())) {\r
+                       return ERROR;\r
+               }\r
+               if (name.equals(Warning.class.getSimpleName())) {\r
+                       return WARNING;\r
+               }\r
+               return NOTICE;\r
+       }\r
+\r
+\r
+       /**\r
+        * Get the {@code Severity} of the specified {@code ConstraintViolation}.\r
+        * \r
+        * @param error\r
+        *            The {@code ConstraintViolation}\r
+        * \r
+        * @return The {@code Severity}\r
+        */\r
+       public static Severity getSeverity(ConstraintViolation<?> error)\r
+       {\r
+               Set<Class<? extends Payload>> payloads = error.getConstraintDescriptor().getPayload();\r
+               for (Class<? extends Payload> payload : payloads) {\r
+                       if (payload == Error.class) {\r
+                               return ERROR;\r
+                       }\r
+                       if (payload == Warning.class) {\r
+                               return WARNING;\r
+                       }\r
+                       if (payload == Notice.class) {\r
+                               return NOTICE;\r
+                       }\r
+               }\r
+               return null;\r
+       }\r
+\r
+\r
+       private Severity()\r
+       {\r
+       }\r
+\r
+\r
+       @Override\r
+       public String toString()\r
+       {\r
+               return getClass().getSimpleName();\r
+       }\r
+}\r
diff --git a/cdmlib-model/src/main/resources/terms/IdentifierType.csv b/cdmlib-model/src/main/resources/terms/IdentifierType.csv
new file mode 100644 (file)
index 0000000..93a99e5
--- /dev/null
@@ -0,0 +1,7 @@
+"67d91839-484e-4183-8b4c-6a4a80dfc066",,"Identifier Type","Identifier Type","IDE","0"\r
+"fadeba12-1be3-4bc7-9ff5-361b088d86fc",,"Sample Designation","Sample Designation","SD"\r
+"a2a67523-b56c-4463-9a50-846b56f03419",,"Unknown","Unknown","UNK"\r
+"e0c3b15f-d779-4d94-91f0-7d83888576b2",,"Barcode","Barcode","BC"\r
+"ea7ef3c4-0ff5-4b1c-9264-b0f86dc00b61",,"Accession Number","Accession Number","ACN"\r
+"664eb28f-d9b6-42f1-b8fd-b3748784e0a4",,"Digital Object Identifier","DOI","DOI"\r
+"ab402e4b-93a0-4311-a85a-696c1498b67d",,"Catalog Number","Catalog Number","CAN"
\ No newline at end of file
index 7fbafc064b7815a22a24e58e8e12dace3a819b57..48f6481db66ce0b52c1dd2567435e7e92bff7288 100644 (file)
@@ -65,7 +65,7 @@ public class TaxonTest extends EntityTestBase {
        public void setUp() throws Exception {
                Person linne =new Person("Carl", "Linné", "L.");
                sec= ReferenceFactory.newBook();
-               sec.setAuthorTeam(linne);
+               sec.setAuthorship(linne);
                sec.setTitleCache("Schönes saftiges Allgäu", true);
                misSec = ReferenceFactory.newBook();
                misSec.setTitleCache("Stupid book", true);
index b90bf3b2477f33be35cbee28b3914767a3c98de2..4c01e00b5af7476eec39797229f0c948ff6edb3b 100644 (file)
@@ -71,10 +71,10 @@ public class ArticleDefaultCacheStrategyTest {
        @Test\r
        public void testGetTitleCache(){\r
                journal1.setTitle("My journal");\r
-               journal1.setAuthorTeam(team2);\r
+               journal1.setAuthorship(team2);\r
                article1.setTitle("My article");\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(team1);\r
+               article1.setAuthorship(team1);\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("Team1, My article in My journal. 1975", article1.getTitleCache());\r
 \r
@@ -90,10 +90,10 @@ public class ArticleDefaultCacheStrategyTest {
        //set to null by setInJournal(null)\r
        public void testGetTitleCache2(){\r
                journal1.setTitle("My journal");\r
-               journal1.setAuthorTeam(team2);\r
+               journal1.setAuthorship(team2);\r
                article1.setTitle("My article");\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(team1);\r
+               article1.setAuthorship(team1);\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("Team1, My article in My journal. 1975", article1.getTitleCache());\r
 \r
@@ -106,10 +106,10 @@ public class ArticleDefaultCacheStrategyTest {
                \r
                journal1.setTitle("My journal");\r
                journal1.setTitle("M. Journ.");\r
-               journal1.setAuthorTeam(team2);\r
+               journal1.setAuthorship(team2);\r
                article1.setTitle("My article");\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(team1);\r
+               article1.setAuthorship(team1);\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
                article1.setAbbrevTitle("M. Art.");\r
                Assert.assertEquals("T., M. Art. in M. Journ. 1975", article1.getAbbrevTitleCache());  //double dot may be removed in future #3645\r
@@ -124,10 +124,10 @@ public class ArticleDefaultCacheStrategyTest {
        public void testGetNomenclaturalCitation(){\r
                journal1.setTitle("My journal");\r
                journal1.setTitle("M. J.");\r
-               journal1.setAuthorTeam(team2);\r
+               journal1.setAuthorship(team2);\r
                article1.setTitle("My article");\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(team1);\r
+               article1.setAuthorship(team1);\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("in M. J.: 55. 1975", article1.getNomenclaturalCitation(detail1));\r
                \r
@@ -146,7 +146,7 @@ public class ArticleDefaultCacheStrategyTest {
                article1.setInJournal(journal1);\r
                article1.setVolume("22");\r
                journal1.setAbbrevTitle("J. Pl. Eur.");\r
-               journal1.setAuthorTeam(team2);\r
+               journal1.setAuthorship(team2);\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
                //no ser, sect, abt\r
                Assert.assertEquals("in J. Pl. Eur. 22: 55. 1975", article1.getNomenclaturalCitation(detail1));\r
@@ -184,10 +184,10 @@ public class ArticleDefaultCacheStrategyTest {
        @Test \r
        public void testGetTitleWithoutYearAndAuthor(){\r
                journal1.setTitle("My journal");\r
-               journal1.setAuthorTeam(team2);\r
+               journal1.setAuthorship(team2);\r
                article1.setTitle("My article");\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(team1);\r
+               article1.setAuthorship(team1);\r
                article1.setVolume("34");\r
                article1.setSeriesPart("ser. 2");\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
@@ -197,12 +197,12 @@ public class ArticleDefaultCacheStrategyTest {
        @Test \r
        public void testOldExistingBugs(){\r
                journal1.setTitle("Univ. Calif. Publ. Bot.");\r
-               journal1.setAuthorTeam(null);\r
+               journal1.setAuthorship(null);\r
                \r
                Team articleAuthor = Team.NewTitledInstance("Babc. & Stebbins", "Babc. & Stebbins");\r
                article1.setTitle("");\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(articleAuthor);\r
+               article1.setAuthorship(articleAuthor);\r
                article1.setVolume("18");\r
                article1.setDatePublished(TimePeriod.NewInstance(1943));\r
                Assert.assertEquals("Babc. & Stebbins in Univ. Calif. Publ. Bot. 18. 1943", defaultStrategy.getTitleCache((Reference<?>)article1));\r
index b61fe930d12555f47c457d0cd9ca232f6c6e8d5d..f6ae4360c401dfe8e28a6bbb65a35e50e02f4ee4 100644 (file)
@@ -60,7 +60,7 @@ public class BookDefaultCacheStrategyTest {
        @Test\r
        public void testGetTitleCache(){\r
                book1.setTitle("My book");\r
-               book1.setAuthorTeam(bookTeam1);\r
+               book1.setAuthorship(bookTeam1);\r
                book1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("Unexpected title cache.", "Book Author, My book. 1975", book1.getTitleCache());\r
                \r
@@ -108,7 +108,7 @@ public class BookDefaultCacheStrategyTest {
        @Test\r
        public void testGetNomenclaturalCitation(){\r
                book1.setTitle("My book");\r
-               book1.setAuthorTeam(bookTeam1);\r
+               book1.setAuthorship(bookTeam1);\r
                book1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("My book: 55. 1975", book1.getNomenclaturalCitation(detail1));\r
                book1.setAbbrevTitle("Analect. Bot.");\r
index d1db3516dee17434eb6b065362135319dd45d6ad..ed7aaac68d38539db5b3d9565bd08cdc590eaed0 100644 (file)
@@ -66,10 +66,10 @@ public class BookSectionDefaultCacheStrategyTest {
        @Test\r
        public void testGetTitleCache(){\r
                book1.setTitle("My book");\r
-               book1.setAuthorTeam(bookTeam1);\r
+               book1.setAuthorship(bookTeam1);\r
                bookSection1.setTitle("My chapter");\r
                bookSection1.setInBook(book1);\r
-               bookSection1.setAuthorTeam(sectionTeam1);\r
+               bookSection1.setAuthorship(sectionTeam1);\r
                book1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("Unexpected title cache.", "Section Author - My chapter in Book Author, My book. 1975", bookSection1.getTitleCache());\r
                book1.setDatePublished(null);\r
@@ -98,10 +98,10 @@ public class BookSectionDefaultCacheStrategyTest {
        //set to null by setInBook(null) and others\r
        public void testGetTitleCache2(){\r
                book1.setTitle("My book");\r
-               book1.setAuthorTeam(bookTeam1);\r
+               book1.setAuthorship(bookTeam1);\r
                bookSection1.setTitle("My chapter");\r
                bookSection1.setInBook(book1);\r
-               bookSection1.setAuthorTeam(sectionTeam1);\r
+               bookSection1.setAuthorship(sectionTeam1);\r
                book1.setDatePublished(TimePeriod.NewInstance(1975));\r
                Assert.assertEquals("Unexpected title cache.", "Section Author - My chapter in Book Author, My book. 1975", bookSection1.getTitleCache());\r
                book1.setDatePublished(null);\r
@@ -120,10 +120,10 @@ public class BookSectionDefaultCacheStrategyTest {
        @Test\r
        public void testGetNomenclaturalCitation(){\r
                book1.setTitle("My book");\r
-               book1.setAuthorTeam(bookTeam1);\r
+               book1.setAuthorship(bookTeam1);\r
                bookSection1.setTitle("My chapter");\r
                bookSection1.setInBook(book1);\r
-               bookSection1.setAuthorTeam(sectionTeam1);\r
+               bookSection1.setAuthorship(sectionTeam1);\r
                book1.setDatePublished(TimePeriod.NewInstance(1975));\r
                //TODO still unclear which is correct\r
 //             Assert.assertEquals("in Book Author, My book: 55. 1975", bookSection1.getNomenclaturalCitation(detail1));\r
@@ -138,7 +138,7 @@ public class BookSectionDefaultCacheStrategyTest {
                Team bookTeam = Team.NewTitledInstance("Chaudhary S. A.(ed.)", "Chaudhary S. A.(ed.)");\r
                IBook book = ReferenceFactory.newBook();\r
                book.setTitle("Flora of the Kingdom of Saudi Arabia");\r
-               book.setAuthorTeam(bookTeam);\r
+               book.setAuthorship(bookTeam);\r
                book.setVolume("2(3)");\r
                book.setPlacePublished("Riyadh");\r
                book.setPublisher("National Herbarium");\r
@@ -148,7 +148,7 @@ public class BookSectionDefaultCacheStrategyTest {
                IBookSection bookSection = ReferenceFactory.newBookSection();\r
                bookSection.setTitle("73. Hedypnois - 87. Crepis");\r
                bookSection.setInBook(book);\r
-               bookSection.setAuthorTeam(sectionTeam);\r
+               bookSection.setAuthorship(sectionTeam);\r
                bookSection.setPages("222-251");\r
                Assert.assertEquals("Chaudhary S. A. - 73. Hedypnois - 87. Crepis in Chaudhary S. A.(ed.), Flora of the Kingdom of Saudi Arabia 2(3). 2000", bookSection.getTitleCache());\r
                \r
index 9c7d0d37613ea40f105b5cef7899b0bf72a972b7..631361bf02221439aff89dfa209dfeba3fa3a72a 100644 (file)
@@ -70,7 +70,7 @@ public class GenericDefaultCacheStrategyTest {
                generic1.setTitle("auct.");\r
                IBook book1 = ReferenceFactory.newBook();\r
                book1.setTitle("My book title");\r
-               book1.setAuthorTeam(team1);\r
+               book1.setAuthorship(team1);\r
                Reference<?> inRef = (Reference<?>)book1;\r
                generic1.setInReference(inRef);\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
@@ -82,7 +82,7 @@ public class GenericDefaultCacheStrategyTest {
        @Test\r
        public void testGetInRefWithoutInRef(){\r
                generic1.setTitle("My generic title");\r
-               generic1.setAuthorTeam(team1);\r
+               generic1.setAuthorship(team1);\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
                Assert.assertEquals("Unexpected title cache.", "My generic title: 2", generic1.getNomenclaturalCitation("2"));\r
        }\r
@@ -92,7 +92,7 @@ public class GenericDefaultCacheStrategyTest {
                generic1.setTitle("Part Title");\r
                IBook book1 = ReferenceFactory.newBook();\r
                book1.setTitle("My book title");\r
-               book1.setAuthorTeam(team1);\r
+               book1.setAuthorship(team1);\r
                Reference<?> inRef = (Reference<?>)book1;\r
                generic1.setInReference(inRef);\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
@@ -108,7 +108,7 @@ public class GenericDefaultCacheStrategyTest {
                IBook book1 = ReferenceFactory.newBook();\r
                book1.setTitle("My book title");\r
                book1.setAbbrevTitle("My bk. tit.");\r
-               book1.setAuthorTeam(team1);  //TODO handling not yet defined\r
+               book1.setAuthorship(team1);  //TODO handling not yet defined\r
                Reference<?> inRef = (Reference<?>)book1;\r
                generic1.setInReference(inRef);\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
@@ -143,14 +143,14 @@ public class GenericDefaultCacheStrategyTest {
        @Test\r
        public void testGetTitleCacheWithoutInRef(){\r
                generic1.setTitle("My generic title");\r
-               generic1.setAuthorTeam(team1);\r
+               generic1.setAuthorship(team1);\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
                Assert.assertEquals("Unexpected title cache.", "Authorteam, My generic title", generic1.getTitleCache());\r
        }\r
        \r
        @Test\r
        public void testAuthorOnly(){\r
-               generic1.setAuthorTeam(team1);\r
+               generic1.setAuthorship(team1);\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
                Assert.assertEquals("Unexpected title cache.", "Authorteam", generic1.getTitleCache());\r
                Assert.assertEquals("", generic1.getNomenclaturalCitation(null));\r
@@ -158,7 +158,7 @@ public class GenericDefaultCacheStrategyTest {
        \r
        @Test\r
        public void testYearAndAuthorOnly(){\r
-               generic1.setAuthorTeam(team1);\r
+               generic1.setAuthorship(team1);\r
                generic1.setDatePublished(TimePeriodParser.parseString("1792"));\r
                generic1.setTitleCache(null, false);  //reset cache in case aspectJ is not enabled\r
                Assert.assertEquals("Unexpected title cache.", "Authorteam, 1792", generic1.getTitleCache());   \r
@@ -167,7 +167,7 @@ public class GenericDefaultCacheStrategyTest {
        \r
        @Test\r
        public void testDoubleDotBeforeYear(){\r
-               generic1.setAuthorTeam(team1);\r
+               generic1.setAuthorship(team1);\r
                String detail = "sine no.";\r
                generic1.setAbbrevTitle("My title");\r
                generic1.setDatePublished(TimePeriodParser.parseString("1883-1884"));\r
index 5e66530ba0b591d9d1f82fd4620bf043681eb9f9..744c2f5e0bbbd96f9a5daf1454b066ffb032ea33 100644 (file)
@@ -10,6 +10,8 @@
 \r
 package eu.etaxonomy.cdm.strategy.match;\r
 \r
+import java.net.URI;\r
+\r
 import org.apache.log4j.Logger;\r
 import org.joda.time.DateTime;\r
 import org.junit.After;\r
@@ -107,7 +109,7 @@ public class DefaultMatchStrategyTest {
                annotation2 = Annotation.NewInstance(annotationString2, null);\r
                \r
                book1 = ReferenceFactory.newBook();\r
-               book1.setAuthorTeam(team1);\r
+               book1.setAuthorship(team1);\r
                book1.setTitle(title1);\r
                book1.setEdition(editionString1);\r
                book1.setVolume(volumeString1);\r
@@ -120,7 +122,7 @@ public class DefaultMatchStrategyTest {
                ((Reference<?>) book1).setNomenclaturallyRelevant(false);\r
                \r
                book2 = ReferenceFactory.newBook();\r
-               book2.setAuthorTeam(team2);\r
+               book2.setAuthorship(team2);\r
                book2.setTitle(title2);\r
                book2.setEdition(editionString2);\r
                book2.setVolume(volumeString2);\r
@@ -323,11 +325,11 @@ public class DefaultMatchStrategyTest {
                \r
                Assert.assertTrue("Equal books should match", matchStrategy.invoke(book1, book2));\r
                \r
-               book1.setAuthorTeam(person1);\r
-               book2.setAuthorTeam(person1);\r
+               book1.setAuthorship(person1);\r
+               book2.setAuthorship(person1);\r
                Assert.assertTrue("Books with same author should match", matchStrategy.invoke(book1, book2));\r
                \r
-               book2.setAuthorTeam(person2);\r
+               book2.setAuthorship(person2);\r
                Assert.assertFalse("Books with different authors should not match", matchStrategy.invoke(book1, book2));\r
                \r
                person2.setPrefix("pre1");\r
@@ -402,7 +404,7 @@ public class DefaultMatchStrategyTest {
                Assert.assertTrue("Teams should match", matchStrategy.invoke(team1, team3));\r
                \r
                String street1 = "Strasse1";\r
-               team1.setContact(Contact.NewInstance(street1, "12345", "Berlin", Country.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", "www.abc.de", Point.NewInstance(2.4, 3.2, ReferenceSystem.WGS84(), 3)));\r
+               team1.setContact(Contact.NewInstance(street1, "12345", "Berlin", Country.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", URI.create("www.abc.de"), Point.NewInstance(2.4, 3.2, ReferenceSystem.WGS84(), 3)));\r
                team2.setContact(Contact.NewInstance("Street2", null, "London", null, null, null, null, "874599873", null, null, null));\r
                Assert.assertTrue("Contacts should be ignoredin default match strategy", matchStrategy.invoke(team1, team2));\r
                \r
index 4ea4dacafc6e55e3bdf05df76fd33be4c1bdd88c..d56a135de6061f14b5582259234257bdc2c22d57 100644 (file)
@@ -10,6 +10,7 @@
 \r
 package eu.etaxonomy.cdm.strategy.merge;\r
 \r
+import java.net.URI;\r
 import java.util.HashSet;\r
 import java.util.Set;\r
 import java.util.UUID;\r
@@ -118,7 +119,7 @@ public class DefaultMergeStrategyTest {
                annotation2 = Annotation.NewInstance(annotationString2, null);\r
                \r
                book1 = ReferenceFactory.newBook();\r
-               book1.setAuthorTeam(team1);\r
+               book1.setAuthorship(team1);\r
                book1.setTitle(title1);\r
                book1.setEdition(editionString1);\r
                book1.setVolume(volumeString1);\r
@@ -131,7 +132,7 @@ public class DefaultMergeStrategyTest {
                book1.setNomenclaturallyRelevant(false);\r
                \r
                book2 = ReferenceFactory.newBook();\r
-               book2.setAuthorTeam(team2);\r
+               book2.setAuthorship(team2);\r
                book2.setTitle(title2);\r
                book2.setEdition(editionString2);\r
                book2.setVolume(volumeString2);\r
@@ -229,7 +230,7 @@ public class DefaultMergeStrategyTest {
                try {\r
                        bookMergeStrategy.setMergeMode("edition", MergeMode.SECOND);\r
                        bookMergeStrategy.setMergeMode("volume", MergeMode.NULL);\r
-                       bookMergeStrategy.setMergeMode("authorTeam", MergeMode.SECOND);\r
+                       bookMergeStrategy.setMergeMode("authorship", MergeMode.SECOND);\r
                        bookMergeStrategy.setMergeMode("created", MergeMode.SECOND);\r
                        bookMergeStrategy.setMergeMode("updated",MergeMode.NULL);\r
                        bookMergeStrategy.setMergeMode("datePublished", MergeMode.SECOND);\r
@@ -252,7 +253,7 @@ public class DefaultMergeStrategyTest {
                \r
                \r
                //CdmBase\r
-               Assert.assertSame("AuthorTeam must be the one of book2", team2, book1.getAuthorTeam());\r
+               Assert.assertSame("Authorship must be the one of book2", team2, book1.getAuthorship());\r
                Assert.assertSame("In Series must be the one of book2", printSeries2, book1.getInReference());\r
                \r
                //Transient\r
@@ -411,7 +412,7 @@ public class DefaultMergeStrategyTest {
                team1.setTitleCache("Team1", true);\r
                team1.setNomenclaturalTitle("T.1");\r
                String street1 = "Strasse1";\r
-               team1.setContact(Contact.NewInstance(street1, "12345", "Berlin", Country.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", "www.abc.de", Point.NewInstance(2.4, 3.2, ReferenceSystem.WGS84(), 3)));\r
+               team1.setContact(Contact.NewInstance(street1, "12345", "Berlin", Country.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", URI.create("www.abc.de"), Point.NewInstance(2.4, 3.2, ReferenceSystem.WGS84(), 3)));\r
                team2.setContact(Contact.NewInstance("Street2", null, "London", null, null, null, null, "874599873", null, null, null));\r
                String street3 = "Street3";\r
                team2.addAddress(street3, null, null, null, null, null, Point.NewInstance(1.1, 2.2, null, 4));\r
index 63aca9ee962b9120ff38614108423843a7356173..f9463b3e08ba19b43c4367edca77fcb9b13ece83 100644 (file)
@@ -140,7 +140,7 @@ public class NonViralNameParserImplTest {
                name = parser.parseReferencedName(strNameWith3Authors, botanicCode, speciesRank);\r
                Assert.assertFalse("No problems should exist", name.hasProblem());\r
                Assert.assertEquals("Name should not include reference part", "Abies alba Mess., L. & Mill.", name.getTitleCache());\r
-               Assert.assertEquals("Name should have authorteam with 2 authors", 3, ((Team)name.getCombinationAuthorTeam()).getTeamMembers().size());\r
+               Assert.assertEquals("Name should have authorship with 2 authors", 3, ((Team)name.getCombinationAuthorTeam()).getTeamMembers().size());\r
                Assert.assertEquals("Mess., L. & Mill., Sp. Pl., ed. 3. 1987", name.getNomenclaturalReference().getTitleCache());\r
                \r
        }\r
@@ -718,7 +718,7 @@ public class NonViralNameParserImplTest {
                assertFullRefStandard(name1);\r
                assertTrue(((Reference<?>)name1.getNomenclaturalReference()).getType().equals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book));\r
                assertEquals(fullReference, name1.getFullTitleCache());\r
-               assertTrue("Name author and reference author should be the same", name1.getCombinationAuthorTeam() == ((Reference<?>)name1.getNomenclaturalReference()).getAuthorTeam());\r
+               assertTrue("Name author and reference author should be the same", name1.getCombinationAuthorTeam() == ((Reference<?>)name1.getNomenclaturalReference()).getAuthorship());\r
                \r
                //Book Section\r
                fullReference = "Abies alba Mill. in Otto, Sp. Pl. 4(6): 455. 1987";\r
@@ -731,12 +731,12 @@ public class NonViralNameParserImplTest {
                IBookSection bookSection = (IBookSection) ref;\r
                IBook inBook = bookSection.getInBook();\r
                assertNotNull(inBook);\r
-               assertNotNull(inBook.getAuthorTeam());\r
-               assertEquals("Otto", inBook.getAuthorTeam().getTitleCache());\r
+               assertNotNull(inBook.getAuthorship());\r
+               assertEquals("Otto", inBook.getAuthorship().getTitleCache());\r
                assertEquals("Otto, Sp. Pl. 4(6)", inBook.getTitleCache());\r
                assertEquals("Sp. Pl.", inBook.getTitle());\r
                assertEquals("4(6)", inBook.getVolume());\r
-               assertTrue("Name author and reference author should be the same", name2.getCombinationAuthorTeam() == ((Reference<?>)name2.getNomenclaturalReference()).getAuthorTeam());\r
+               assertTrue("Name author and reference author should be the same", name2.getCombinationAuthorTeam() == ((Reference<?>)name2.getNomenclaturalReference()).getAuthorship());\r
                \r
                //Article\r
                fullReference = "Abies alba Mill. in Sp. Pl. 4(6): 455. 1987";\r
@@ -754,7 +754,7 @@ public class NonViralNameParserImplTest {
                assertEquals("Sp. Pl.",((Reference<?>) journal).getTitleCache());\r
                assertEquals("Sp. Pl.", journal.getTitle());\r
                assertEquals("4(6)",((IArticle)ref).getVolume());\r
-               assertTrue("Name author and reference author should be the same", name3.getCombinationAuthorTeam() == name3.getNomenclaturalReference().getAuthorTeam());\r
+               assertTrue("Name author and reference author should be the same", name3.getCombinationAuthorTeam() == name3.getNomenclaturalReference().getAuthorship());\r
                \r
                //SoftArticle - having "," on position > 4\r
                String journalTitle = "Bull. Soc. Bot.France. Louis., Roi";\r
index 823d3b2e83d8479a6d58f2089212d6f4443d95ee..0ddb58faf215fe8583b5f07066a677f1eb0da5da 100644 (file)
@@ -34,7 +34,7 @@ public class TestBookDefaultCacheStrategies {
 \r
                book.setDatePublished(TimePeriod.NewInstance(cal));\r
                Person bookAuthor = Person.NewTitledInstance("BuchAuthorTitle");\r
-               book.setAuthorTeam(bookAuthor);\r
+               book.setAuthorship(bookAuthor);\r
                book.setVolume("v 22");\r
                book.setEdition("55");\r
                System.out.println("FULL" + book.getNomenclaturalCitation("344"));\r
@@ -53,7 +53,7 @@ public class TestBookDefaultCacheStrategies {
                System.out.println("*********** ARTICLE **************");\r
                Reference<?> inJournal = ReferenceFactory.newJournal();\r
                Person journalAuthor = Person.NewTitledInstance("JournalAuthorTitle");\r
-               inJournal.setAuthorTeam(journalAuthor);\r
+               inJournal.setAuthorship(journalAuthor);\r
                inJournal.setTitle("JournalTitle");\r
                inJournal.setIssn("issn");\r
                Reference<?> article = ReferenceFactory.newArticle(inJournal, partAuthor, "artTitel", "123-456", "ser4", "55", TimePeriod.NewInstance(cal));\r
@@ -65,7 +65,7 @@ public class TestBookDefaultCacheStrategies {
                System.out.println("*********** GENERIC **************");\r
                Reference<?> generic = ReferenceFactory.newGeneric();\r
                Person genericAuthor = Person.NewTitledInstance("GenericAuthorTitle");\r
-               generic.setAuthorTeam(genericAuthor);\r
+               generic.setAuthorship(genericAuthor);\r
                generic.setTitle("GenericTitle");\r
                generic.setDatePublished(TimePeriod.NewInstance(cal));\r
                generic.setEditor("EditorString");\r
index 8ebbb006c7cefdf7c4caef9a754f5e9f09d5458b..dcdeb09a45361d08ccdb93069b69abc5b00eff15 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>cdmlib-parent</artifactId>
-               <version>3.3.8-SNAPSHOT</version>
+               <version>3.4.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
index 7c3eb87a696e28e02013e78ddbde502bc625738a..f37490816272302b63d818bdc30a9f63bf430ea2 100644 (file)
@@ -14,6 +14,12 @@ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
 /**\r
+ * Base class for a {@link ISchemaUpdaterStep schema update step} which supports automated handling \r
+ * of auditing tables.\r
+ * \r
+ * @see CdmUpdater\r
+ * @see ISchemaUpdater\r
+ * \r
  * @author a.mueller\r
  *\r
  * @param <T>\r
index 476678df4d641e16b4e7e6a6c44c7df6d621af79..eade1961d534300cb3e9e8ec76a28941a9fc4253 100644 (file)
@@ -17,11 +17,52 @@ import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.CdmDataSource;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.database.update.v31_33.SchemaUpdater_31_33;\r
-import eu.etaxonomy.cdm.database.update.v31_33.SchemaUpdater_33_331;\r
-import eu.etaxonomy.cdm.database.update.v31_33.TermUpdater_31_33;\r
+import eu.etaxonomy.cdm.database.update.v33_34.SchemaUpdater_331_34;\r
+import eu.etaxonomy.cdm.database.update.v33_34.TermUpdater_33_34;\r
+import eu.etaxonomy.cdm.model.metadata.CdmMetaData;\r
 \r
 /**\r
+ * This class launches CDM model updates.\r
+ * Currently it splits the update in model updates and defined term related updates by\r
+ * using a {@link ISchemaUpdater schema updater} and a {@link ITermUpdater}. However, this \r
+ * architecture often results in problems and therefore will be replaced by only 1 schema updater.\r
+ * Term updates will be handled differently or also by using the schema updater.\r
+ * <BR>\r
+ * For each new schema version number there usually exists 1 {@link ISchemaUpdater} which is \r
+ * represents a list of schema update steps. {@link ISchemaUpdater schema updaters} are linked\r
+ * to previous updaters which are called, if relevant, previous to the latest updater.\r
+ * So it is possible to upgrade multiple schema version steps in one call.\r
+ * <BR><BR>\r
+ * As said before each {@link ISchemaUpdater schema updater} creates a list of \r
+ * {@link ISchemaUpdaterStep update steps}.\r
+ * <BR><BR>\r
+ * {@link ISchemaUpdater} support progression monitoring with each update step being one task.\r
+ * <BR><BR>\r
+ * ATTENTION: Some steps in the schema update are not transactional by nature. E.g. adding or removing a column\r
+ * to a table in a SQL database can not be handled in a transaction. Therefore failures in\r
+ * certain steps may not lead to a complete rollback of all steps covered by a {@link ISchemaUpdater}.\r
+ * This may lead to a situation where the database becomes inconsistent.\r
+ * <BR><BR>   \r
+ * <u>HOW TO ADD A NEW UPDATER?</u><BR>\r
+ * Adding a new updater currently still needs adjustment at multiple places.\r
+ * <BR>\r
+ * <BR>1.) Increment {@link CdmMetaData} schema version number and term version number.\r
+ * <BR>2.) Create a new class instance of {@link SchemaUpdaterBase} (e.g. by copying an old one). \r
+ * <BR>3.) Update startSchemaVersion and endSchemaVersion in this new class, where startSchemaVersion\r
+ * is the old schema version and endSchemaVersion is the new schema version.\r
+ * <BR>4.) Implement {@link ISchemaUpdater#getPreviousUpdater()} and {@link ISchemaUpdater#getNextUpdater()}\r
+ * in a way that the former returns an instance of the previous schema updater and the later returns null (for now).\r
+ * <BR>5.) Go to the previous schema updater class and adjust {@link ISchemaUpdater#getNextUpdater()}\r
+ * in a way that it returns an instance of the newly created updater.\r
+ * <BR>6.) Repeat steps 2.-5. for {@link ITermUpdater}\r
+ * <BR>7.) Adjust {@link #getCurrentSchemaUpdater()} and {@link #getCurrentTermUpdater()} to return\r
+ * instances of the newly created updaters.\r
+ *  \r
+ * @see ISchemaUpdater\r
+ * @see ITermUpdater\r
+ * @see ISchemaUpdaterStep\r
+ * @see ITermUpdaterStep\r
+ * \r
  * @author a.mueller\r
  * @date 10.09.2010\r
  *\r
@@ -172,7 +213,7 @@ public class CdmUpdater {
 \r
 \r
     private ITermUpdater getCurrentTermUpdater() {\r
-        return TermUpdater_31_33.NewInstance();\r
+        return TermUpdater_33_34.NewInstance();\r
     }\r
 \r
     /**\r
@@ -180,7 +221,7 @@ public class CdmUpdater {
      * @return\r
      */\r
     private ISchemaUpdater getCurrentSchemaUpdater() {\r
-        return SchemaUpdater_33_331.NewInstance();\r
+        return SchemaUpdater_331_34.NewInstance();\r
     }\r
 \r
     /**\r
@@ -206,7 +247,7 @@ public class CdmUpdater {
             }\r
         }\r
 \r
-        ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, 3306, username, password, null);\r
+        ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, port, username, password, null);\r
         boolean success = myUpdater.updateToCurrentVersion(dataSource, null);\r
         System.out.println("DONE " + (success ? "successfully" : "with ERRORS"));\r
     }\r
index 4b8ef3c1d7d136fab166e8533186f2b631509af2..9586b5b95bf67a832c01a8c8d185a5e41c372d0a 100644 (file)
@@ -64,8 +64,8 @@ public class ColumnAdder extends AuditedSchemaUpdaterStepBase<ColumnAdder> imple
                return new ColumnAdder(stepName, tableName, newColumnName, "clob", includeAudTable, null, false, null);\r
        }\r
        \r
-       public static final ColumnAdder NewDateTimeInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable){\r
-               return new ColumnAdder(stepName, tableName, newColumnName, "datetime", includeAudTable, null, false, null);\r
+       public static final ColumnAdder NewDateTimeInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable, boolean notNull){\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "datetime", includeAudTable, null, notNull, null);\r
        }\r
        \r
        protected ColumnAdder(String stepName, String tableName, String newColumnName, String columnType, boolean includeAudTable, Object defaultValue, boolean notNull, String referencedTable) {\r
index f30baa623753a18415cf35502e51bb68da0ea64c..7d149c8bffff73eb3884590e40bdcd10b419a1b8 100644 (file)
@@ -13,9 +13,16 @@ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
 /**\r
+ * Class which represents a CDM schema version step. See {@link CdmUpdater}\r
+ * for further documentation or implementing classes for examples.\r
+ *\r
+ * @see CdmUpdater\r
+ * @see ISchemaUpdaterStep\r
+ * @see ISchemaUpdater\r
+ * @see ITermUpdaterStep\r
+ * \r
  * @author a.mueller\r
  * @date 09.2010\r
- *\r
  */\r
 public interface ISchemaUpdater extends IUpdater<ISchemaUpdater>{\r
 \r
index b09343700575835fefd2934346fd5ad24a59d631..bf528f458087c10863175df1b49e43a94e60c627 100644 (file)
@@ -6,6 +6,19 @@ import java.util.List;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
+/**\r
+ * Interface which represents a CDM model update step. See {@link CdmUpdater}\r
+ * for further documentation or implementing classes for examples.\r
+ * \r
+ * @see CdmUpdater\r
+ * @see ISchemaUpdater\r
+ * @see ISchemaUpdater\r
+ * @see ITermUpdaterStep\r
+ * \r
+ * @see CdmUpdater\r
+ * @author a.mueller\r
+ *\r
+ */\r
 public interface ISchemaUpdaterStep {\r
 \r
        /**\r
index cbafcb0098c6f660dd288a1e0331dc4b0acdb662..d4a483f4b2d443071ec61899a3839898b73b4469 100644 (file)
@@ -13,6 +13,14 @@ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
 /**\r
+ * Class which represents a CDM term version step. See {@link CdmUpdater}\r
+ * for further documentation or implementing classes for examples.\r
+ * \r
+ * @see CdmUpdater\r
+ * @see ITermUpdaterStep\r
+ * @see ISchemaUpdaterStep\r
+ * @see ISchemaUpdater\r
+ * \r
  * @author a.mueller\r
  * @date 09.2010\r
  *\r
index 78b76920ffe86b0d7c5dffe3085b578f36d99595..260ce62ae42adc5d150831f4183d621196d46d5f 100644 (file)
 package eu.etaxonomy.cdm.database.update;\r
 \r
 /**\r
- * Interface for classes that represent a step in a term update.\r
+ * Interface which represents a CDM terms update step. See {@link CdmUpdater}\r
+ * for further documentation or implementing classes for examples.\r
+ * \r
+ * @see CdmUpdater\r
+ * @see ITermUpdater\r
+ * @see ISchemaUpdaterStep\r
+ * @see ISchemaUpdater\r
+ * \r
  * @author a.mueller\r
  * @date 24.11.2010\r
  *\r
index fc1b82a009c91c75cfed6d7e5c22a6a6728c609d..1950fa4e8138867de8f7978f598dbe55358a6221 100644 (file)
@@ -13,9 +13,10 @@ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
 /**\r
+ * Common interface for {@link ISchemaUpdater} and {@link ITermUpdater}\r
+ * \r
  * @author a.mueller\r
  * @date 16.11.2010\r
- *\r
  */\r
 public interface IUpdater<U extends IUpdater<U>> {\r
        \r
index 834c4c30cbd8f7e8af1ea3d6cfcd413a09d5736d..6bb0bace042d8c6ada8719faab3b7c7e768f1842 100644 (file)
@@ -26,7 +26,7 @@ public class MapTableCreator extends TableCreator {
 \r
        \r
        protected MapTableCreator(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String mapKeyTableName, boolean includeAudTable) {\r
-               super(stepName, firstTableName + "_" + secondTableName, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<Object>(), new ArrayList<Boolean>(), new ArrayList<String>(), includeAudTable, false, false, false);\r
+               super(stepName, firstTableName + "_" + secondTableName, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<Object>(), new ArrayList<Boolean>(), new ArrayList<String>(), includeAudTable, false, false, false, false);\r
                this.firstTableName = firstTableName;\r
                this.secondTableName = secondTableName;\r
                this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;\r
index f53935785dd464beb10323a0aeda003cd4cd7940..e48112fee5c1ecc76d1ee4712abf36c49ee630fc 100644 (file)
@@ -35,7 +35,7 @@ public class MnTableCreator extends TableCreator {
        \r
        protected MnTableCreator(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String[] columnNames, String[] columnTypes,\r
                        List<Object> defaultValues, List<Boolean> isNull, boolean includeAudTable, boolean hasSortIndex, boolean secondTableInKey, boolean includeCdmBaseAttributes,boolean includeAnnotatableEntity, boolean includeIdentifiableEntity) {\r
-               super(stepName, firstTableName + "_" + secondTableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), defaultValues, isNull,  new ArrayList<String>(), includeAudTable, includeCdmBaseAttributes, includeAnnotatableEntity, includeIdentifiableEntity);\r
+               super(stepName, firstTableName + "_" + secondTableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), defaultValues, isNull,  new ArrayList<String>(), includeAudTable, includeCdmBaseAttributes, includeAnnotatableEntity, includeIdentifiableEntity, false);\r
                this.firstTableName = firstTableName;\r
                this.secondTableName = secondTableName;\r
                this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;\r
index 3af35b3f377a08c01163340e7549d2c355d8466a..ff09d28969bc0dbe0ba1f4dfc642b9dec2c64a87 100644 (file)
@@ -21,7 +21,6 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.model.agent.AgentBase;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -42,6 +41,7 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> imp
        private boolean includeIdentifiableEntity;\r
        private boolean includeAnnotatableEntity;\r
        private boolean includeEventBase;\r
+       private boolean excludeVersionableAttributes;\r
        protected List<ColumnAdder> columnAdders = new ArrayList<ColumnAdder>();\r
        protected List<ISchemaUpdaterStep> mnTablesStepList = new ArrayList<ISchemaUpdaterStep>();\r
        private String primaryKeyParams;\r
@@ -52,29 +52,33 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> imp
        \r
 //     public static final TableCreator NewInstance(String stepName, String tableName, List<String> columnNames, List<String> columnTypes, List<Object> defaultValues, List<Boolean> isNull, boolean includeAudTable){\r
        public static final TableCreator NewInstance(String stepName, String tableName, List<String> columnNames, List<String> columnTypes, boolean includeAudTable, boolean includeCdmBaseAttributes){\r
-               return new TableCreator(stepName, tableName, columnNames, columnTypes, null, null, null, includeAudTable, includeCdmBaseAttributes, false, false);\r
+               return new TableCreator(stepName, tableName, columnNames, columnTypes, null, null, null, includeAudTable, includeCdmBaseAttributes, false, false, false);\r
        }\r
        \r
        public static final TableCreator NewInstance(String stepName, String tableName, String[] columnNames, String[] columnTypes, String[] referencedTables, boolean includeAudTable, boolean includeCdmBaseAttributes){\r
-               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, includeCdmBaseAttributes, false, false);\r
+               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, includeCdmBaseAttributes, false, false, false);\r
+       }\r
+       \r
+       public static final TableCreator NewNonVersionableInstance(String stepName, String tableName, String[] columnNames, String[] columnTypes, String[] referencedTables, boolean includeAudTable){\r
+               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, false, false, true);\r
        }\r
        \r
        public static final TableCreator NewAnnotatableInstance(String stepName, String tableName, String[] columnNames, String[] columnTypes, String[] referencedTables, boolean includeAudTable){\r
-               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, true, false);\r
+               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, true, false, false);\r
        }\r
        \r
        public static final TableCreator NewEventInstance(String stepName, String tableName, String[] columnNames, String[] columnTypes, String[] referencedTables, boolean includeAudTable){\r
-               TableCreator result = new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, true, false);\r
+               TableCreator result = new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, true, false, false);\r
                result.includeEventBase = true;\r
                return result;\r
        }\r
        \r
        public static final TableCreator NewIdentifiableInstance(String stepName, String tableName, String[] columnNames, String[] columnTypes, String[] referencedTables, boolean includeAudTable){\r
-               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, true, true);\r
+               return new TableCreator(stepName, tableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), null, null, Arrays.asList(referencedTables), includeAudTable, true, true, true, false);\r
        }\r
        \r
        protected TableCreator(String stepName, String tableName, List<String> columnNames, List<String> columnTypes, List<Object> defaultValues, List<Boolean> isNotNull, List<String> referencedTables, \r
-                       boolean includeAudTable, boolean includeCdmBaseAttributes, boolean includeAnnotatableEntity, boolean includeIdentifiableEntity) {\r
+                       boolean includeAudTable, boolean includeCdmBaseAttributes, boolean includeAnnotatableEntity, boolean includeIdentifiableEntity, boolean excludeVersionableAttributes) {\r
                super(stepName);\r
                this.tableName = tableName;\r
                this.columnNames = columnNames;\r
@@ -86,6 +90,7 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> imp
                this.includeCdmBaseAttributes = includeCdmBaseAttributes;\r
                this.includeAnnotatableEntity = includeAnnotatableEntity;\r
                this.includeIdentifiableEntity = includeIdentifiableEntity;\r
+               this.excludeVersionableAttributes = excludeVersionableAttributes;\r
                makeColumnAdders();\r
                makeMnTables();\r
        }\r
@@ -104,27 +109,36 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> imp
                        throw new RuntimeException ("ColumnNames and columnTypes must be of same size. Step: " + getStepName());\r
                }\r
                        \r
-               for (int i = 0; i < columnNames.size(); i++){\r
-                       boolean isNotNull = this.isNotNull == null ? false : this.isNotNull.get(i);\r
-                       if ("integer".equals(columnTypes.get(i)) || "int".equals(columnTypes.get(i))){\r
-                               String referencedTable = (this.referencedTables == null) ?  null : this.referencedTables.get(i);\r
-                               ColumnAdder adder = ColumnAdder.NewIntegerInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull, referencedTable);\r
-                               this.columnAdders.add(adder);\r
-                       }else if ("boolean".equals(columnTypes.get(i)) || "bit".equals(columnTypes.get(i))){\r
-                               String defaultValue = this.defaultValues == null ? null : this.defaultValues.get(i).toString();\r
-                               ColumnAdder adder = ColumnAdder.NewBooleanInstance(getStepName(), this.tableName,  this.columnNames.get(i), includeAudTable, Boolean.valueOf(defaultValue));\r
-                               this.columnAdders.add(adder);\r
-                       }else if (columnTypes.get(i).startsWith("string")){\r
-                               Integer length = Integer.valueOf(columnTypes.get(i).substring("string_".length()));\r
-                               ColumnAdder adder = ColumnAdder.NewStringInstance(this.getStepName(), this.tableName, this.columnNames.get(i), length, includeAudTable);\r
-                               this.columnAdders.add(adder);\r
-                       }else if ("tinyint".equals(columnTypes.get(i)) ){\r
-                               ColumnAdder adder = ColumnAdder.NewTinyIntegerInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull);\r
-                               this.columnAdders.add(adder);\r
-                       }else if ("double".equals(columnTypes.get(i)) ){\r
-                               ColumnAdder adder = ColumnAdder.NewDoubleInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull);\r
-                               this.columnAdders.add(adder);\r
+               try {\r
+                       for (int i = 0; i < columnNames.size(); i++){\r
+                               boolean isNotNull = this.isNotNull == null ? false : this.isNotNull.get(i);\r
+                               if ("integer".equals(columnTypes.get(i)) || "int".equals(columnTypes.get(i))){\r
+                                       String referencedTable = (this.referencedTables == null) ?  null : this.referencedTables.get(i);\r
+                                       ColumnAdder adder = ColumnAdder.NewIntegerInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull, referencedTable);\r
+                                       this.columnAdders.add(adder);\r
+                               }else if ("boolean".equals(columnTypes.get(i)) || "bit".equals(columnTypes.get(i))){\r
+                                       String defaultValue = this.defaultValues == null ? null : this.defaultValues.get(i).toString();\r
+                                       ColumnAdder adder = ColumnAdder.NewBooleanInstance(getStepName(), this.tableName,  this.columnNames.get(i), includeAudTable, Boolean.valueOf(defaultValue));\r
+                                       this.columnAdders.add(adder);\r
+                               }else if (columnTypes.get(i).startsWith("string")){\r
+                                       Integer length = Integer.valueOf(columnTypes.get(i).substring("string_".length()));\r
+                                       ColumnAdder adder = ColumnAdder.NewStringInstance(this.getStepName(), this.tableName, this.columnNames.get(i), length, includeAudTable);\r
+                                       this.columnAdders.add(adder);\r
+                               }else if ("tinyint".equals(columnTypes.get(i)) ){\r
+                                       ColumnAdder adder = ColumnAdder.NewTinyIntegerInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull);\r
+                                       this.columnAdders.add(adder);\r
+                               }else if ("datetime".equals(columnTypes.get(i)) ){\r
+                                       ColumnAdder adder = ColumnAdder.NewDateTimeInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull);\r
+                                       this.columnAdders.add(adder);\r
+                               }else if ("double".equals(columnTypes.get(i)) ){\r
+                                       ColumnAdder adder = ColumnAdder.NewDoubleInstance(this.getStepName(), this.tableName, this.columnNames.get(i), includeAudTable, isNotNull);\r
+                                       this.columnAdders.add(adder);\r
+                               }else{\r
+                                       throw new RuntimeException("Column type " + columnTypes.get(i) + " not yet supported");\r
+                               }\r
                        }\r
+               } catch (Exception e) {\r
+                       throw new RuntimeException(e);\r
                }\r
        }\r
        \r
@@ -192,10 +206,10 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> imp
                        if (includeCdmBaseAttributes){\r
                                        updateQuery += " id integer NOT NULL,"\r
                                                + " created " + ColumnAdder.getDatabaseColumnType(datasource, "datetime") + ", "\r
-                                               + " uuid varchar(36),"\r
-                                               + " updated " + ColumnAdder.getDatabaseColumnType(datasource, "datetime") + ", "\r
+                                               + " uuid varchar(36) NOT NULL,"\r
+                                               + (excludeVersionableAttributes? "" : " updated " + ColumnAdder.getDatabaseColumnType(datasource, "datetime") + ", ")\r
                                                + " createdby_id integer,"\r
-                                               + " updatedby_id integer, ";\r
+                                               + (excludeVersionableAttributes ? "" : " updatedby_id integer, ");\r
                        }\r
                        //EventBase\r
                        if (this.includeEventBase){\r
index 1435dc4c63ee7cc6093fa543bdc8eb2d24864e42..de130df99da2c942f3854c8885a56f32aa1032c3 100644 (file)
@@ -21,6 +21,11 @@ import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
 \r
 /**\r
  * Common updater base class for updating schema or terms.\r
+ * \r
+ * @see CdmUpdater\r
+ * @see ISchemaUpdater\r
+ * @see ITermUpdater\r
+ * \r
  * @author a.mueller\r
  * @date 16.11.2010\r
  *\r
index 2f4e894df57cb09f17d66f7135e56f7cacbb6a31..9cd121ffeae8f58c916c116f6802301d0788c5f9 100644 (file)
@@ -22,6 +22,7 @@ import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
 import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
 import eu.etaxonomy.cdm.database.update.TableDroper;
 import eu.etaxonomy.cdm.database.update.TreeIndexUpdater;
+import eu.etaxonomy.cdm.database.update.v33_34.SchemaUpdater_331_34;
 
 /**
  * @author a.mueller
@@ -109,7 +110,7 @@ public class SchemaUpdater_33_331 extends SchemaUpdaterBase {
 
        @Override
        public ISchemaUpdater getNextUpdater() {
-               return null;
+               return SchemaUpdater_331_34.NewInstance();
        }
 
        @Override
index c97eb26cc23038560722684c21be4d60bb13bcd2..f6d1f6d47131aa9fd92878578707ec159fef6df6 100644 (file)
@@ -20,6 +20,7 @@ import eu.etaxonomy.cdm.database.update.ITermUpdaterStep;
 import eu.etaxonomy.cdm.database.update.SingleTermUpdater;\r
 import eu.etaxonomy.cdm.database.update.TermUpdaterBase;\r
 import eu.etaxonomy.cdm.database.update.v30_31.TermUpdater_314_315;\r
+import eu.etaxonomy.cdm.database.update.v33_34.TermUpdater_33_34;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.TermType;\r
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
@@ -173,7 +174,7 @@ public class TermUpdater_31_33 extends TermUpdaterBase implements ITermUpdater {
        \r
        @Override\r
        public ITermUpdater getNextUpdater() {\r
-               return null;\r
+               return TermUpdater_33_34.NewInstance();\r
        }\r
 \r
        @Override\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/SchemaUpdater_331_34.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/SchemaUpdater_331_34.java
new file mode 100644 (file)
index 0000000..7e2e588
--- /dev/null
@@ -0,0 +1,457 @@
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy 
+ * http://www.e-taxonomy.eu
+ * 
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+
+package eu.etaxonomy.cdm.database.update.v33_34;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.database.update.ColumnAdder;
+import eu.etaxonomy.cdm.database.update.ColumnNameChanger;
+import eu.etaxonomy.cdm.database.update.ColumnRemover;
+import eu.etaxonomy.cdm.database.update.ColumnTypeChanger;
+import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
+import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
+import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
+import eu.etaxonomy.cdm.database.update.TableCreator;
+import eu.etaxonomy.cdm.database.update.TableDroper;
+import eu.etaxonomy.cdm.database.update.v31_33.SchemaUpdater_33_331;
+
+/**
+ * @author a.mueller
+ * @created Jan 14, 2014
+ */
+public class SchemaUpdater_331_34 extends SchemaUpdaterBase {
+
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(SchemaUpdater_331_34.class);
+       private static final String startSchemaVersion = "3.3.1.0.201401140000";
+       private static final String endSchemaVersion = "3.4.0.0.201407010000";
+
+       // ********************** FACTORY METHOD
+       // *******************************************
+
+       public static SchemaUpdater_331_34 NewInstance() {
+               return new SchemaUpdater_331_34();
+       }
+
+       /**
+        * @param startSchemaVersion
+        * @param endSchemaVersion
+        */
+       protected SchemaUpdater_331_34() {
+               super(startSchemaVersion, endSchemaVersion);
+       }
+
+       @Override
+       protected List<ISchemaUpdaterStep> getUpdaterList() {
+
+               String stepName;
+               String tableName;
+               ISchemaUpdaterStep step;
+               String columnName;
+
+               List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
+
+               //TODO H2 / PostGreSQL / SQL Server
+               //UserAccount unique
+               stepName = "Update User unique indexes";
+               tableName = "UserAccount";
+               columnName = "username";
+               step = UsernameConstraintUpdater.NewInstance(stepName, tableName, columnName);
+               stepList.add(step);
+               
+               //TODO H2 / PostGreSQL / SQL Server
+               //PermissionGroup unique
+               stepName = "Update Group unique indexes";
+               tableName = "PermissionGroup";
+               columnName = "name";
+               step = UsernameConstraintUpdater.NewInstance(stepName, tableName, columnName);
+               stepList.add(step);
+               
+               //TODO H2 / PostGreSQL / SQL Server
+               //GrantedAuthority unique
+               stepName = "Update User unique indexes";
+               tableName = "GrantedAuthorityImpl";
+               columnName = "authority";
+               step = UsernameConstraintUpdater.NewInstance(stepName, tableName, columnName);
+               stepList.add(step);
+               
+               //TODO H2 / PostGreSQL / SQL Server
+               stepName = "Add label column to derived unit";
+               tableName = "SpecimenOrObservationBase";
+               columnName = "originalLabelInfo";
+               step = ColumnAdder.NewClobInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+                       
+               //TODO test with data and H2 / PostGreSQL / SQL Server
+               //set default value to true where required
+               stepName = "Set publish to true if null";
+               String query = " UPDATE @@TaxonBase@@ " +
+                                       " SET publish = @TRUE@ " + 
+                                       " WHERE DTYPE IN ('Synonym') AND publish IS NULL ";
+               step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonBase", 99);
+               stepList.add(step);
+               
+               
+               addIdentifierTables(stepList);
+               
+               
+               //remove series from Reference  #4293
+               stepName = "Copy series to series part";
+               String sql = " UPDATE Reference r " +
+                               " SET r.seriespart = r.series " + 
+                               " WHERE r.series is NOT NULL AND r.seriesPart IS NULL ";
+               step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql, "Reference", 99);
+               stepList.add(step);
+
+               stepName = "Set series to NULL";
+               sql = " UPDATE Reference r " +
+                               " SET r.series = NULL " + 
+                               " WHERE r.series = r.seriesPart ";
+               step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql, "Reference", 99);
+               stepList.add(step);
+
+               //TODO check all series are null
+               
+               stepName = "Remove series column";
+               tableName = "Reference";
+               String oldColumnName = "series";
+               step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT); 
+               stepList.add(step);
+
+               //authorTeam -> authorship
+               stepName = "Rename Reference.authorTeam column";
+               tableName = "Reference";
+               oldColumnName = "authorTeam_id";
+               String newColumnName = "authorship_id";
+               step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
+               stepList.add(step);
+
+               //remove CDM_VIEW #4316
+               stepName = "Remove CDM_VIEW_CDM_VIEW table";
+               tableName = "CDM_VIEW_CDM_VIEW";
+               boolean ifExists = true;
+               step = TableDroper.NewInstance(stepName, tableName, ! INCLUDE_AUDIT, ifExists);
+               stepList.add(step);
+
+               stepName = "Remove CDM_VIEW table";
+               tableName = "CDM_VIEW";
+               ifExists = true;
+               step = TableDroper.NewInstance(stepName, tableName, ! INCLUDE_AUDIT, ifExists);
+               stepList.add(step);
+               
+               //change size of AgentBase_contact_urls.contact_urls_element  #3920
+               stepName = "Change length of AgentBase_contact_urls.contact_urls_element";
+               tableName = "AgentBase_contact_urls";
+               columnName = "contact_urls_element";
+               step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
+                               columnName, 330, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               //TODO not null on username, groupname and authority  #4382
+               
+               //DnaQuality #4434
+               //Identifier
+               stepName = "Create dna quality";
+               boolean includeCdmBaseAttributes = true;
+               tableName = "DnaQuality";
+               String[] columnNames = new String[]{"purificationmethod","concentration","ratioofabsorbance260_230", "ratioofabsorbance260_280","qualitycheckdate","concentrationunit_id","qualityterm_id"};
+               String[] columnTypes = new String[]{"string_255","double","double","double","datetime","int","int"};
+               String[] referencedTables = new String[]{null,null,null,null,null,"DefinedTermBase","DefinedTermBase"};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes); 
+               stepList.add(step);
+
+               //DnaQuality in TissueSample
+               //TODO H2 / PostGreSQL / SQL Server
+               stepName = "Add foreign key to dna quality";
+               tableName = "SpecimenOrObservationBase";
+               newColumnName = "dnaQuality_id";
+               boolean notNull = false;
+               String referencedTable = "DnaQuality";
+               step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, notNull, referencedTable);
+               stepList.add(step);
+               
+               //time scope for classifications
+               //TODO H2 / PostGreSQL / SQL Server
+               stepName = "Add time scope (start) for classifications";
+               tableName = "Classification";
+               newColumnName = "timeperiod_start";
+               int length = 255;
+               step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
+               stepList.add(step);
+
+               //TODO H2 / PostGreSQL / SQL Server
+               stepName = "Add time scope (end) for classifications";
+               tableName = "Classification";
+               newColumnName = "timeperiod_end";
+               length = 255;
+               step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
+               stepList.add(step);
+
+               //TODO H2 / PostGreSQL / SQL Server
+               stepName = "Add time scope (freetext) for classifications";
+               tableName = "Classification";
+               newColumnName = "timeperiod_freetext";
+               length = 255;
+               step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               //Classification_GeoScope
+               //TODO
+               stepName = "Create Classification_GeoScope table";
+               includeCdmBaseAttributes = false;
+               tableName = "Classification_GeoScope";
+               columnNames = new String[]{"Classification_id","geoScopes_id"};
+               columnTypes = new String[]{"int","int"};
+               referencedTables = new String[]{"Classification","DefinedTermBase"};
+               TableCreator creator = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               creator.setPrimaryKeyParams("Classification_id,geoScopes_id", "REV,Classification_id,geoScopes_id");
+               stepList.add(creator);
+
+               //Classification_Description
+               //TODO
+               stepName = "Create Classification_Description table";
+               includeCdmBaseAttributes = false;
+               tableName = "Classification_Description";
+               columnNames = new String[]{"Classification_id","description_id","description_mapkey_id"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"Classification","LanguageString","DefinedTermBase"};
+               creator = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               creator.setPrimaryKeyParams("Classification_id", "REV,Classification_id,description_id,description_mapkey_id");
+               stepList.add(creator);
+               
+               //Primer.sequence type  #4139
+               stepName = "Add sequence string column to primer";
+               tableName = "Primer";
+               newColumnName = "sequence_string";
+               step = ColumnAdder.NewClobInstance(stepName, tableName, newColumnName,
+                               INCLUDE_AUDIT);
+               stepList.add(step);
+
+               //Primer.sequence length
+               stepName = "Add sequence length column to primer";
+               tableName = "Primer";
+               newColumnName = "sequence_length";
+               notNull = false;
+               referencedTable = null;
+               step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, null, notNull);
+               stepList.add(step);
+
+               //remove sequence_id column  //we do not move data as we do not expect data available yet
+               stepName = "Remove sequence_id column from primer";
+               tableName = "Primer";
+               oldColumnName = "sequence_id";
+               step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT); 
+               stepList.add(step);
+               
+               //EntityValidationResult
+               //TODO
+               stepName = "Create EntityValidationResult table";
+               includeCdmBaseAttributes = true;
+               tableName = "EntityValidationResult";
+               columnNames = new String[]{"crudeventtype","userfriendlydescription","userfriendlytypename",
+                               "validatedentityclass","validatedentityid","validatedentityuuid"};
+               columnTypes = new String[]{"string_255","string_255","string_255","string_255","int","string_36"};
+               referencedTables = new String[]{null,null,null,null,null,null};
+               creator = TableCreator.NewNonVersionableInstance(stepName, tableName, columnNames, columnTypes, referencedTables, ! INCLUDE_AUDIT);
+               stepList.add(creator);
+
+               
+               //EntityConstraintViolation
+               //TODO
+               stepName = "Create EntityConstraintViolation table";
+               includeCdmBaseAttributes = true;
+               tableName = "EntityConstraintViolation";
+               columnNames = new String[]{"invalidvalue","message","propertypath","severity","userfriendlyfieldname",
+                               "validator","entityvalidationresult_id"};
+               columnTypes = new String[]{"string_255","string_255","string_255","string_255","string_255","string_255","int"};
+               referencedTables = new String[]{null,null,null,null,null,null,"EntityValidationResult"};
+               creator = TableCreator.NewNonVersionableInstance(stepName, tableName, columnNames, columnTypes, referencedTables, ! INCLUDE_AUDIT);
+               stepList.add(creator);
+
+               
+               
+               return stepList;
+               
+       }
+
+       private void addIdentifierTables(List<ISchemaUpdaterStep> stepList) {
+               
+               //Identifier
+               String stepName = "Create Identifier table";
+               boolean includeCdmBaseAttributes = true;
+               String tableName = "Identifier";
+               String[] columnNames = new String[]{"identifier","identifiedObj_type", "identifiedObj_id","type_id"};
+               String[] columnTypes = new String[]{"string_800","string_255","int","int"};
+               String[] referencedTables = new String[]{null,null,null,"DefinedTermBase"};
+               TableCreator step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes); 
+               stepList.add(step);
+
+               //AgentBase_Identifier
+               stepName = "Create AgentBase_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "AgentBase_Identifier";
+               columnNames = new String[]{"AgentBase_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"AgentBase","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("AgentBase_id,identifiers_id", "REV,AgentBase_id,identifiers_id");
+               stepList.add(step);
+               
+               //Classification_Identifier
+               stepName = "Create Classification_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "Classification_Identifier";
+               columnNames = new String[]{"Classification_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"Classification","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("Classification_id,identifiers_id", "REV,Classification_id,identifiers_id");
+               stepList.add(step);
+
+               //Collection_Identifier
+               stepName = "Create Collection_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "Collection_Identifier";
+               columnNames = new String[]{"Collection_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"Collection","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("Collection_id,identifiers_id", "REV,Collection_id,identifiers_id");
+               stepList.add(step);
+
+               //DefinedTermBase_Identifier
+               stepName = "Create DefinedTermBase_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "DefinedTermBase_Identifier";
+               columnNames = new String[]{"DefinedTermBase_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"DefinedTermBase","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("DefinedTermBase_id,identifiers_id", "REV,DefinedTermBase_id,identifiers_id");
+               stepList.add(step);
+               
+               //DescriptionBase_Identifier
+               stepName = "Create DescriptionBase_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "DescriptionBase_Identifier";
+               columnNames = new String[]{"DescriptionBase_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"DescriptionBase","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("DescriptionBase_id,identifiers_id", "REV,DescriptionBase_id,identifiers_id");
+               stepList.add(step);
+
+               //FeatureTree_Identifier
+               stepName = "Create FeatureTree_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "FeatureTree_Identifier";
+               columnNames = new String[]{"FeatureTree_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"FeatureTree","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("FeatureTree_id,identifiers_id", "REV,FeatureTree_id,identifiers_id");
+               stepList.add(step);
+
+               //Media_Identifier
+               stepName = "Create Media_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "Media_Identifier";
+               columnNames = new String[]{"Media_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"Media","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("Media_id,identifiers_id", "REV,Media_id,identifiers_id");
+               stepList.add(step);
+
+               //PolytomousKey_Identifier
+               stepName = "Create PolytomousKey_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "PolytomousKey_Identifier";
+               columnNames = new String[]{"PolytomousKey_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"PolytomousKey","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("PolytomousKey_id,identifiers_id", "REV,PolytomousKey_id,identifiers_id");
+               stepList.add(step);
+
+               //Reference_Identifier
+               stepName = "Create Reference_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "Reference_Identifier";
+               columnNames = new String[]{"Reference_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"Reference","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("Reference_id,identifiers_id", "REV,Reference_id,identifiers_id");
+               stepList.add(step);
+
+               //SpecimenOrObservationBase_Identifier
+               stepName = "Create SpecimenOrObservationBase_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "SpecimenOrObservationBase_Identifier";
+               columnNames = new String[]{"SpecimenOrObservationBase_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"SpecimenOrObservationBase","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("SpecimenOrObservationBase_id,identifiers_id", "REV,SpecimenOrObservationBase_id,identifiers_id");
+               stepList.add(step);
+
+               //TaxonBase_Identifier
+               stepName = "Create TaxonBase_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "TaxonBase_Identifier";
+               columnNames = new String[]{"TaxonBase_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"TaxonBase","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("TaxonBase_id,identifiers_id", "REV,TaxonBase_id,identifiers_id");
+               stepList.add(step);
+
+               //TaxonNameBase_Identifier
+               stepName = "Create TaxonNameBase_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "TaxonNameBase_Identifier";
+               columnNames = new String[]{"TaxonNameBase_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"TaxonNameBase","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("TaxonNameBase_id,identifiers_id", "REV,TaxonNameBase_id,identifiers_id");
+               stepList.add(step);
+
+               //TermVocabulary_Identifier
+               stepName = "Create TermVocabulary_Identifier table";
+               includeCdmBaseAttributes = false;
+               tableName = "TermVocabulary_Identifier";
+               columnNames = new String[]{"TermVocabulary_id","identifiers_id","sortIndex"};
+               columnTypes = new String[]{"int","int","int"};
+               referencedTables = new String[]{"TermVocabulary","Identifier",null};
+               step = TableCreator.NewInstance(stepName, tableName, columnNames, columnTypes, referencedTables, INCLUDE_AUDIT, includeCdmBaseAttributes);
+               step.setPrimaryKeyParams("TermVocabulary_id,identifiers_id", "REV,TermVocabulary_id,identifiers_id");
+               stepList.add(step);
+               
+       }
+
+       @Override
+       public ISchemaUpdater getNextUpdater() {
+               return null;
+       }
+
+       @Override
+       public ISchemaUpdater getPreviousUpdater() {
+               return SchemaUpdater_33_331.NewInstance();
+       }
+
+}
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/TermUpdater_33_34.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/TermUpdater_33_34.java
new file mode 100644 (file)
index 0000000..bfb6d3a
--- /dev/null
@@ -0,0 +1,82 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.database.update.v33_34;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.database.update.ITermUpdater;\r
+import eu.etaxonomy.cdm.database.update.ITermUpdaterStep;\r
+import eu.etaxonomy.cdm.database.update.TermUpdaterBase;\r
+import eu.etaxonomy.cdm.database.update.v31_33.TermUpdater_31_33;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 10.09.2010\r
+ *\r
+ */\r
+public class TermUpdater_33_34 extends TermUpdaterBase implements ITermUpdater {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(TermUpdater_33_34.class);\r
+       \r
+       public static final String startTermVersion = "3.3.0.0.201309240000";\r
+       private static final String endTermVersion = "3.4.0.0.201407010000";\r
+       \r
+// *************************** FACTORY **************************************/\r
+       \r
+       public static TermUpdater_33_34 NewInstance(){\r
+               return new TermUpdater_33_34(startTermVersion, endTermVersion);\r
+       }\r
+       \r
+// *************************** CONSTRUCTOR ***********************************/        \r
+\r
+       protected TermUpdater_33_34(String startTermVersion, String endTermVersion) {\r
+               super(startTermVersion, endTermVersion);\r
+       }\r
+       \r
+       \r
+       @Override\r
+       protected List<ITermUpdaterStep> getUpdaterList() {\r
+               List<ITermUpdaterStep> list = new ArrayList<ITermUpdaterStep>();\r
+\r
+//             // proles, #2793\r
+//             UUID uuidTerm = UUID.fromString("8810d1ba-6a34-4ae3-a355-919ccd1cd1a5");\r
+//             String description = "Rank ''Proles''. Note: This rank is not compliant with the current nomenclatural codes";\r
+//             String label = "Proles";\r
+//             String abbrev = "prol.";\r
+//             String dtype = Rank.class.getSimpleName();\r
+//             boolean isOrdered = true;\r
+//             UUID uuidVocabulary = UUID.fromString("ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b");\r
+//             UUID uuidAfterTerm = UUID.fromString("bff22f84-553a-4429-a4e7-c4b3796c3a18");\r
+//             UUID uuidLang = Language.uuidEnglish;\r
+//             RankClass rankClass = RankClass.Infraspecific;\r
+//             String stepName = "Add 'proles' rank to ranks";\r
+//             TermType termType = TermType.Rank;\r
+//             list.add( SingleTermUpdater.NewInstance(stepName, termType, uuidTerm, abbrev, description, label, abbrev, dtype, uuidVocabulary, uuidLang, isOrdered, uuidAfterTerm).setRankClass(rankClass));\r
+\r
+               //there are some more new vocabularies, but we trust that the term initializer will \r
+               //initialize and persist them correctly\r
+               \r
+               return list;\r
+       }\r
+       \r
+       @Override\r
+       public ITermUpdater getNextUpdater() {\r
+               return null;\r
+       }\r
+\r
+       @Override\r
+       public ITermUpdater getPreviousUpdater() {\r
+               return TermUpdater_31_33.NewInstance();\r
+       }\r
+\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/UsernameConstraintUpdater.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v33_34/UsernameConstraintUpdater.java
new file mode 100644 (file)
index 0000000..928f3f7
--- /dev/null
@@ -0,0 +1,124 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.database.update.v33_34;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.database.update.CaseType;\r
+import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;\r
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 16.09.2010\r
+ *\r
+ */\r
+public class UsernameConstraintUpdater extends SchemaUpdaterStepBase<UsernameConstraintUpdater> implements ISchemaUpdaterStep {\r
+       private static final Logger logger = Logger.getLogger(UsernameConstraintUpdater.class);\r
+       \r
+       private String tableName;\r
+       \r
+       private String columnName;\r
+       \r
+       public static final UsernameConstraintUpdater NewInstance(String stepName, String tableName, String columnName){\r
+               return new UsernameConstraintUpdater(stepName, tableName, columnName);\r
+       }\r
+\r
+       \r
+       protected UsernameConstraintUpdater(String stepName, String tableName, String columnName) {\r
+               super(stepName);\r
+               this.tableName = tableName;\r
+               this.columnName = columnName;\r
+       }\r
+       \r
+\r
+       @Override\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor, CaseType caseType) throws SQLException {\r
+               //remove 2-fold constraint\r
+               boolean result = removeExistingConstraint(datasource, caseType);\r
+               result &= createColumnConstraint(datasource, caseType);\r
+               result &= createUuidConstraint(datasource, caseType);\r
+               return result ? 1 : null;\r
+       }\r
+       \r
+       private boolean createUuidConstraint(ICdmDataSource datasource, CaseType caseType) {\r
+               try {\r
+                       String updateQuery = getCreateQuery(datasource, caseType, tableName, "_UniqueKey", "uuid");\r
+                       datasource.executeUpdate(updateQuery);\r
+                       return true;\r
+               } catch (Exception e) {\r
+                       logger.warn("Unique index for " + tableName + ".uuid could not be created");\r
+                       return false;\r
+               }\r
+       }\r
+       \r
+       private boolean createColumnConstraint(ICdmDataSource datasource, CaseType caseType) {\r
+               try {\r
+                       String updateQuery = getCreateQuery(datasource, caseType, tableName, columnName + "_", columnName);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       return true;\r
+               } catch (Exception e) {\r
+                       logger.warn("Unique index for username could not be created");\r
+                       return false;\r
+               }\r
+       }\r
+       \r
+       private String getCreateQuery(ICdmDataSource datasource, CaseType caseType, String tableName, String constraintName, String columnName) {\r
+                       DatabaseTypeEnum type = datasource.getDatabaseType();\r
+                       String indexName = "_UniqueKey";\r
+                       String updateQuery;\r
+                       if (type.equals(DatabaseTypeEnum.MySQL)){\r
+                               //Maybe MySQL also works with the below syntax. Did not check yet.\r
+                               updateQuery = "ALTER TABLE @@"+ tableName + "@@ ADD UNIQUE INDEX " + constraintName + " ("+columnName+");";\r
+                       }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+                               updateQuery = "CREATE UNIQUE INDEX " + constraintName + " ON "+tableName+"(" + columnName + ")";\r
+                       }else{\r
+                               throw new IllegalArgumentException("Datasource type not supported: " + type.getName());\r
+                       }\r
+                       updateQuery = updateQuery.replace("@indexName", indexName);\r
+                       updateQuery = caseType.replaceTableNames(updateQuery);\r
+                       return updateQuery;\r
+       }\r
+\r
+\r
+       private boolean removeExistingConstraint(ICdmDataSource datasource, CaseType caseType) {\r
+               try {\r
+                       DatabaseTypeEnum type = datasource.getDatabaseType();\r
+                       String indexName = "_UniqueKey";\r
+                       String updateQuery;\r
+                       if (type.equals(DatabaseTypeEnum.MySQL)){\r
+                               updateQuery = "ALTER TABLE @@" + tableName + "@@ DROP INDEX @indexName";\r
+                       }else if (type.equals(DatabaseTypeEnum.H2)){\r
+                               updateQuery = "ALTER TABLE @@" + tableName + "@@ DROP CONSTRAINT IF EXISTS @indexName";\r
+                       }else if (type.equals(DatabaseTypeEnum.PostgreSQL)){\r
+                               updateQuery = "ALTER TABLE @@" + tableName + "@@ DROP CONSTRAINT @indexName";\r
+                       }else if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+                               //TODO\r
+                               throw new RuntimeException("Remove index not yet supported for SQLServer");\r
+                       }else{\r
+                               throw new IllegalArgumentException("Datasource type not supported: " + type.getName());\r
+                       }\r
+                       updateQuery = updateQuery.replace("@indexName", indexName);\r
+                       updateQuery = caseType.replaceTableNames(updateQuery);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       return true;\r
+               } catch (Exception e) {\r
+                       logger.warn("Old index could not be removed");\r
+                       return false;\r
+               }\r
+       }\r
+\r
+\r
+}\r
index 9c35e21bdb6f2ebcae50492926a8bb813a55eb3f..f539826d5ade38071bd7114779e15405b78630f9 100644 (file)
@@ -56,7 +56,7 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<Reference> im
                FullTextSession fullTextSession = Search.getFullTextSession(getSession());\r
 \r
                for(Reference reference : list(null,null)) { // re-index all agents\r
-                       Hibernate.initialize(reference.getAuthorTeam());\r
+                       Hibernate.initialize(reference.getAuthorship());\r
 \r
                        if(reference.getType().equals(ReferenceType.Article)) {\r
                                Hibernate.initialize(((IArticle)reference).getInJournal());\r
@@ -98,7 +98,7 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<Reference> im
                Session session = getSession();\r
 \r
                Query query = session.createQuery("select " +\r
-                               "r.uuid, r.titleCache, ab.titleCache from " + type.getSimpleName() + " as r left outer join r.authorTeam as ab ");//"select uuid, titleCache from " + type.getSimpleName());\r
+                               "r.uuid, r.titleCache, ab.titleCache from " + type.getSimpleName() + " as r left outer join r.authorship as ab ");//"select uuid, titleCache from " + type.getSimpleName());\r
 \r
                List<Object[]> result = query.list();\r
 \r
index 09f5b9b3b41c470285ef2a123648204a2b5d27e1..986bd16cb74a1aebc2f1f0e38af6468e660e10f6 100644 (file)
       <!-- Common Package -->\r
       <mapping class="eu.etaxonomy.cdm.model.common.Annotation"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.AnnotationType"/>\r
-      <mapping class="eu.etaxonomy.cdm.model.metadata.CdmMetaData"/>\r
-      <mapping class="eu.etaxonomy.cdm.model.metadata.CdmPreference"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.Credit"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.DefinedTerm"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.DefinedTermBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.Extension"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.ExtensionType"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.IdentifiableSource"/>\r
-      <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementSource"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.common.Identifier"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.Group"/>\r
       <mapping class="eu.etaxonomy.cdm.model.common.Language"/>\r
@@ -90,6 +88,7 @@
       <mapping class="eu.etaxonomy.cdm.model.description.CommonTaxonName"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.DescriptionBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementBase"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementSource"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.Distribution"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.Feature"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.FeatureNode"/>\r
       <mapping class="eu.etaxonomy.cdm.model.media.MovieFile"/>\r
       <mapping class="eu.etaxonomy.cdm.model.media.Rights"/>\r
       <mapping class="eu.etaxonomy.cdm.model.media.RightsType"/>\r
+      <!-- Meta Data Package -->\r
+      <mapping class="eu.etaxonomy.cdm.model.metadata.CdmMetaData"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.metadata.CdmPreference"/>\r
       <!-- Molecular Package -->\r
       <mapping class="eu.etaxonomy.cdm.model.molecular.PhylogeneticTree"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.molecular.DnaQuality"/>\r
       <mapping class="eu.etaxonomy.cdm.model.molecular.DnaSample"/>\r
       <mapping class="eu.etaxonomy.cdm.model.molecular.Amplification"/>\r
       <mapping class="eu.etaxonomy.cdm.model.molecular.Primer"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.Classification"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationship"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType"/>\r
+      \r
+      <!-- Validation Package -->\r
+      <mapping class="eu.etaxonomy.cdm.model.validation.EntityValidationResult"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.validation.EntityConstraintViolation"/>\r
+      \r
       <!-- View Package -->\r
-      <mapping class="eu.etaxonomy.cdm.model.view.View"/>
       <mapping class="eu.etaxonomy.cdm.model.view.AuditEvent"/>\r
       \r
       <!-- for filling caches -->\r
       <!-- since hibernate 4 listeners are not handled via hibernate.cfg.xml anymore -->\r
       <!--  http://stackoverflow.com/questions/8616146/eventlisteners-using-hibernate-4-0-with-spring-3-1-0-release\r
             https://community.jboss.org/wiki/HibernateCoreMigrationGuide40 -->\r
-<!--     <event type="save-update"> -->\r
-<!--                   <listener class="eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator"/> -->\r
-<!--                   <listener class="org.hibernate.event.def.DefaultSaveOrUpdateEventListener"/> -->\r
-<!--                   <listener class="eu.etaxonomy.cdm.persistence.hibernate.SaveOrUpdateEntityListener"/> -->\r
-<!--       </event> -->\r
-<!--       <event type="save"> -->\r
-<!--           <listener class="eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator"/> -->\r
-<!--             <listener class="eu.etaxonomy.cdm.persistence.hibernate.SaveEntityListener"/> -->\r
-<!--           <listener class="org.hibernate.event.def.DefaultSaveEventListener"/> -->
-<!--       </event> -->\r
-<!--       <event type="update"> -->\r
-<!--           <listener class="eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator"/> -->\r
-<!--             <listener class="eu.etaxonomy.cdm.persistence.hibernate.UpdateEntityListener"/> -->\r
-<!--           <listener class="org.hibernate.event.def.DefaultUpdateEventListener"/> -->\r
-<!--       </event> -->\r
-<!--       <event type="delete"> -->\r
-<!--                   <listener class="eu.etaxonomy.cdm.persistence.hibernate.CdmDeleteListener"/> -->\r
-<!--                   <listener class="org.hibernate.event.def.DefaultDeleteEventListener"/> -->\r
-<!--       </event> -->\r
-<!--       <event type="post-insert"> -->\r
-<!--             <listener class="org.hibernate.envers.event.AuditEventListener"/> -->\r
-<!--             <listener class="eu.etaxonomy.cdm.persistence.hibernate.CdmPostDataChangeObservableListener"/> -->\r
-<!--         </event> -->\r
-<!--         <event type="post-load"> -->\r
-<!--             <listener class="eu.etaxonomy.cdm.persistence.hibernate.CdmPostDataChangeObservableListener"/> -->\r
-<!--         </event> -->\r
-<!--         <event type="post-update"> -->\r
-<!--             <listener class="org.hibernate.envers.event.AuditEventListener"/> -->\r
-<!--             <listener class="eu.etaxonomy.cdm.persistence.hibernate.CdmPostDataChangeObservableListener"/> -->\r
-<!--         </event> -->\r
-<!--         <event type="post-delete"> -->\r
-<!--             <listener class="org.hibernate.envers.event.AuditEventListener"/> -->\r
-<!--             <listener class="eu.etaxonomy.cdm.persistence.hibernate.CdmPostDataChangeObservableListener"/> -->\r
-<!--         </event> -->\r
-<!--         <event type="pre-collection-update"> -->\r
-<!--             <listener class="org.hibernate.envers.event.AuditEventListener"/> -->\r
-<!--         </event> -->\r
-<!--         <event type="pre-collection-remove"> -->\r
-<!--             <listener class="org.hibernate.envers.event.AuditEventListener"/> -->\r
-<!--         </event> -->\r
-<!--         <event type="post-collection-recreate"> -->\r
-<!--             <listener class="org.hibernate.envers.event.AuditEventListener"/> -->\r
-<!--         </event> -->\r
+\r
     </session-factory>\r
 </hibernate-configuration>
\ No newline at end of file
index a6696cc8de768bcb6e5669dc0c9e073db94052b6..d96c6c0d891e2b37a23d2934fa66fe2ee7e9aefc 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * \r
+ *\r
  */\r
 package eu.etaxonomy.cdm.datagenerator;\r
 \r
@@ -130,43 +130,43 @@ import eu.etaxonomy.cdm.model.view.View;
 import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;\r
 \r
 /**\r
- * This class tries to create a database that has \r
+ * This class tries to create a database that has\r
  * at least one record in each database.\r
  * It is meant to test update scripts as well as imports\r
  * and exports.\r
- * ATTENTION: As the content of the created database may change \r
+ * ATTENTION: As the content of the created database may change\r
  * over time due to model changes and other requirements test using\r
- * this class should be written in a way that they do rather \r
- * depend on general parameter than concrete data values. \r
- * \r
+ * this class should be written in a way that they do rather\r
+ * depend on general parameter than concrete data values.\r
+ *\r
  * @author a.mueller\r
  * @created 3013-12-02\r
- * \r
+ *\r
  * TODO under construction\r
- * \r
+ *\r
  */\r
 public class FullCoverageDataGenerator {\r
 \r
-       \r
+\r
        public void fillWithData(Session session){\r
-               List<CdmBase> cdmBases = new ArrayList<CdmBase>(); \r
-               \r
+               List<CdmBase> cdmBases = new ArrayList<CdmBase>();\r
+\r
                createAgents(cdmBases);\r
-               \r
+\r
                createDescriptions(cdmBases);\r
-               \r
+\r
                createMedia(cdmBases);\r
-               \r
+\r
                createMolecular(cdmBases);\r
-               \r
+\r
                createTaxonName(cdmBases);\r
-               \r
+\r
                createOccurrence(cdmBases);\r
-               \r
+\r
                createReference(cdmBases);\r
-               \r
+\r
                createTaxon(cdmBases);\r
-               \r
+\r
                createSupplemental(cdmBases);\r
                \r
                for (CdmBase cdmBase: cdmBases){\r
@@ -230,9 +230,9 @@ public class FullCoverageDataGenerator {
                person.setLifespan(TimePeriodParser.parseString("1905-1995"));\r
                person.setPrefix("prefix");\r
                person.setSuffix("suffix");\r
-               \r
+\r
                handleIdentifiableEntity(person);\r
-               \r
+\r
                //Contact\r
                Contact contact = Contact.NewInstance();\r
                person.setContact(contact);\r
@@ -240,45 +240,45 @@ public class FullCoverageDataGenerator {
                contact.addEmailAddress("a@b.de");\r
                contact.addFaxNumber("f:010-123456");\r
                contact.addPhoneNumber("p:090-987654");\r
-               contact.addUrl(URI.create("http://www.abc.de").toString());\r
-               \r
+               contact.addUrl(URI.create("http://www.abc.de"));\r
+\r
                //Address\r
                Address address = Address.NewInstance(Country.GERMANY(), "locality", "pobox", "12345", "region", "street", locality);\r
                contact.addAddress(address);\r
-               \r
+\r
                //Team\r
                Team team = Team.NewTitledInstance("Team title", "Team abbrev title");\r
                team.addTeamMember(person);\r
                handleIdentifiableEntity(team);\r
-               \r
-               \r
+\r
+\r
                //Institution\r
                Institution institution = Institution.NewInstance();\r
                institution.setCode("institution code");\r
                institution.setName("institution name");\r
                handleIdentifiableEntity(institution);\r
-               \r
-               \r
+\r
+\r
                //TODO vocabulary\r
 //             voc = "29ad808b-3126-4274-be81-4561e7afc76f"\r
                DefinedTerm instType = DefinedTerm.NewInstitutionTypeInstance("Description forthis instition type", "institution type", "inst. t.");\r
                cdmBases.add(instType);\r
                institution.addType(instType);\r
                person.addInstitutionalMembership(institution, TimePeriodParser.parseString("1955-1956"), "department", "role");\r
-               \r
+\r
                Institution subInstitution = Institution.NewInstance();\r
                subInstitution.setCode("sub institution code");\r
                subInstitution.setName("sub institution name");\r
                subInstitution.setIsPartOf(institution);\r
-               \r
+\r
                cdmBases.add(person);\r
                cdmBases.add(team);\r
                cdmBases.add(institution);\r
        }\r
-       \r
+\r
 \r
        private void createDescriptions(List<CdmBase> cdmBases) {\r
-               \r
+\r
                TermVocabulary voc = TermVocabulary.NewInstance(TermType.AnnotationType, "my termVoc desc",\r
                                "myTerm voc", "mtv", URI.create("http://www.abc.de"));\r
                handleIdentifiableEntity(voc);\r
@@ -298,15 +298,15 @@ public class FullCoverageDataGenerator {
                StateData stateData = categoricalData.getStateData().get(0);\r
                stateData.addModifier(DefinedTerm.SEX_FEMALE());\r
                handleAnnotatableEntity(categoricalData);\r
-                       \r
-               \r
+\r
+\r
                State nextState = State.NewInstance();\r
                cdmBases.add(nextState);\r
                StateData stateData2 = StateData.NewInstance(nextState);\r
                stateData2.putModifyingText(Language.ENGLISH(), "State2 modifying text");\r
                categoricalData.addStateData(stateData2);\r
                categoricalData.setOrderRelevant(true);\r
-               \r
+\r
                //Quantitative data\r
                Feature leaveLength = Feature.NewInstance("Leave length description", "leave length", "l.l.");\r
                cdmBases.add(leaveLength);\r
@@ -334,7 +334,7 @@ public class FullCoverageDataGenerator {
                \r
                CommonTaxonName commonTaxonName = CommonTaxonName.NewInstance("common name", Language.ENGLISH(), Country.UNITEDSTATESOFAMERICA());\r
                handleAnnotatableEntity(commonTaxonName);\r
-               \r
+\r
                TextData textData = TextData.NewInstance(Feature.DIAGNOSIS());\r
                Language eng = Language.ENGLISH();\r
                textData.putText(eng, "My text data");\r
@@ -347,17 +347,17 @@ public class FullCoverageDataGenerator {
                textData.setFormat(format);\r
                cdmBases.add(format);\r
                handleAnnotatableEntity(format);\r
-               \r
+\r
                DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);\r
                IndividualsAssociation indAssoc = IndividualsAssociation.NewInstance(specimen);\r
                indAssoc.putDescription(Language.ENGLISH(), "description for individuals association");\r
                handleAnnotatableEntity(indAssoc);\r
-               \r
-               \r
+\r
+\r
                TaxonInteraction taxonInteraction = TaxonInteraction.NewInstance(Feature.HOSTPLANT());\r
                taxonInteraction.putDescription(Language.ENGLISH(), "interaction description");\r
                handleAnnotatableEntity(taxonInteraction);\r
-               \r
+\r
                NamedArea inCountryArea = NamedArea.NewInstance("My area in a country", "my area", "ma");\r
                inCountryArea.addCountry(Country.TURKEYREPUBLICOF());\r
                cdmBases.add(inCountryArea);\r
@@ -366,12 +366,12 @@ public class FullCoverageDataGenerator {
                \r
                Taxon taxon = getTaxon();\r
                TaxonDescription taxonDescription = TaxonDescription.NewInstance(taxon);\r
-               taxonDescription.addElements(categoricalData, quantitativeData, \r
+               taxonDescription.addElements(categoricalData, quantitativeData,\r
                                textData, commonTaxonName, taxonInteraction, indAssoc, distribution);\r
-       \r
-               DerivedUnit describedSpecimenOrObservation = DerivedUnit.NewInstance(SpecimenOrObservationType.DerivedUnit);    \r
+\r
+               DerivedUnit describedSpecimenOrObservation = DerivedUnit.NewInstance(SpecimenOrObservationType.DerivedUnit);\r
                taxonDescription.setDescribedSpecimenOrObservation(describedSpecimenOrObservation);\r
-               \r
+\r
                taxonDescription.addScope(DefinedTerm.SEX_FEMALE());\r
                taxonDescription.addGeoScope(Country.GERMANY());\r
                handleIdentifiableEntity(taxonDescription);\r
@@ -396,14 +396,14 @@ public class FullCoverageDataGenerator {
                SpecimenDescription specDesc = SpecimenDescription.NewInstance(specimen);\r
                cdmBases.add(describedSpecimen);\r
                handleAnnotatableEntity(specDesc);\r
-               \r
+\r
                //Name description\r
                TaxonNameBase<?,?> name = BotanicalName.NewInstance(Rank.GENUS());\r
                TaxonNameDescription nameDesc = TaxonNameDescription.NewInstance(name);\r
                cdmBases.add(name);\r
                handleAnnotatableEntity(nameDesc);\r
-               \r
-               \r
+\r
+\r
                //Feature Tree\r
                FeatureTree featureTree = FeatureTree.NewInstance();\r
 //             featureTree\r
@@ -428,42 +428,42 @@ public class FullCoverageDataGenerator {
                workingSet.setLabel("My Workingset");\r
                workingSet.getDescriptiveSystem();\r
                handleAnnotatableEntity(workingSet);\r
-               \r
-               \r
+\r
+\r
                //polytomous keys\r
                Taxon coveredTaxon = Taxon.NewInstance(name, null);\r
                PolytomousKey key = PolytomousKey.NewTitledInstance("My Polykey");\r
                handleIdentificationKey(key, taxon, coveredTaxon);\r
                key.setStartNumber(10);\r
-                       \r
-               \r
+\r
+\r
                PolytomousKeyNode firstChildNode = PolytomousKeyNode.NewInstance("Green", "What is the leave length?", coveredTaxon, leaveLength);\r
                key.getRoot().addChild(firstChildNode);\r
                PolytomousKeyNode secondChildNode = PolytomousKeyNode.NewInstance("234");\r
                firstChildNode.addChild(secondChildNode);\r
-               \r
+\r
                PolytomousKey subkey = PolytomousKey.NewTitledInstance("Sub-key");\r
                firstChildNode.setSubkey(subkey);\r
-               \r
+\r
                PolytomousKeyNode subKeyNode = PolytomousKeyNode.NewInstance("sub key couplet");\r
                subkey.getRoot().addChild(subKeyNode);\r
                secondChildNode.setOtherNode(subKeyNode);\r
-               \r
+\r
                secondChildNode.putModifyingText(Language.GERMAN(), "manchmal");\r
-               \r
+\r
                cdmBases.add(key);\r
                cdmBases.add(subkey);\r
-               \r
+\r
                MediaKey mediaKey = MediaKey.NewInstance();\r
                mediaKey.addKeyRepresentation(Representation.NewInstance("Media Key Representation", "media key", null, Language.ENGLISH()));\r
                handleIdentificationKey(mediaKey, taxon, coveredTaxon);\r
-               \r
+\r
                MultiAccessKey multiAccessKey = MultiAccessKey.NewInstance();\r
                handleIdentificationKey(multiAccessKey, taxon, coveredTaxon);\r
-               \r
+\r
                cdmBases.add(mediaKey);\r
                cdmBases.add(multiAccessKey);\r
-               \r
+\r
        }\r
 \r
 \r
@@ -478,39 +478,39 @@ public class FullCoverageDataGenerator {
                }else{\r
                        handleAnnotatableEntity((AnnotatableEntity)key);\r
                }\r
-                       \r
+\r
 \r
        }\r
-       \r
-       \r
+\r
+\r
        private void createMedia(List<CdmBase> cdmBases){\r
                AudioFile audioFile = AudioFile.NewInstance(URI.create("http://a.b.de"), 22);\r
                ImageFile imageFile = ImageFile.NewInstance(URI.create("http://b.c.de"), 44, 467, 55);\r
                MovieFile movieFile = MovieFile.NewInstance(URI.create("http://b.c.de"), 67);\r
-               MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance("mime", "media"); \r
-       \r
+               MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance("mime", "media");\r
+\r
                mediaRepresentation.addRepresentationPart(movieFile);\r
                mediaRepresentation.addRepresentationPart(imageFile);\r
                mediaRepresentation.addRepresentationPart(audioFile);\r
                Media media = Media.NewInstance();\r
                media.addRepresentation(mediaRepresentation);\r
-               \r
+\r
                media.putTitle(Language.ENGLISH(), "Media title");\r
                media.setMediaCreated(DateTime.now());\r
                media.putDescription(Language.ENGLISH(), "Media description");\r
                handleIdentifiableEntity(media);\r
-               \r
-               \r
+\r
+\r
                Person artist = Person.NewTitledInstance("artist");\r
                media.setArtist(artist);\r
                cdmBases.add(media);\r
                cdmBases.add(artist);\r
        }\r
-       \r
+\r
 \r
        private void createMolecular(List<CdmBase> cdmBases) {\r
                DnaSample dnaSample = DnaSample.NewInstance();\r
-               \r
+\r
                //Amplification\r
                Amplification amplification = Amplification.NewInstance(dnaSample);\r
                DefinedTerm dnaMarker = DefinedTerm.NewDnaMarkerInstance("My dna marker", "dna marker", null);\r
@@ -519,40 +519,40 @@ public class FullCoverageDataGenerator {
                amplification.setSuccessful(true);\r
                amplification.setSuccessText("Very successful");\r
                handleAnnotatableEntity(amplification);\r
-               \r
+\r
                Primer forwardPrimer = Primer.NewInstance("forward primer");\r
                forwardPrimer.setPublishedIn(getReference());\r
-               forwardPrimer.setSequence(Sequence.NewInstance("my sequence"));\r
+               forwardPrimer.setSequence(SequenceString.NewInstance("my sequence"));\r
                handleAnnotatableEntity(forwardPrimer);\r
-               \r
+\r
                Primer reversePrimer = Primer.NewInstance("reverse primer");\r
                handleAnnotatableEntity(reversePrimer);\r
-               \r
+\r
                amplification.setForwardPrimer(forwardPrimer);\r
                amplification.setReversePrimer(reversePrimer);\r
-               \r
+\r
                DefinedTerm cloningMethod = DefinedTerm.NewInstance(TermType.MaterialOrMethod, "cloning method", "cloning method", null);\r
                cdmBases.add(cloningMethod);\r
                Cloning cloning = Cloning.NewInstance(cloningMethod, "My cloning method", "my strain", forwardPrimer, reversePrimer);\r
                amplification.setCloning(cloning);\r
                handleAnnotatableEntity(cloningMethod);\r
                handleAnnotatableEntity(cloning);\r
-               \r
+\r
                DefinedTerm purificationMethod = DefinedTerm.NewInstance(TermType.MaterialOrMethod, "purification method", "purification method", null);\r
                cdmBases.add(purificationMethod);\r
                MaterialOrMethodEvent purification = MaterialOrMethodEvent.NewInstance(purificationMethod, "purification method");\r
                amplification.setPurification(purification);\r
                handleAnnotatableEntity(purification);\r
                handleAnnotatableEntity(purificationMethod);\r
-               \r
+\r
                amplification.setLadderUsed("ladder");\r
                amplification.setElectrophoresisVoltage(5.5);\r
                amplification.setGelConcentration(2.4);\r
                amplification.setGelRunningTime(3.6);\r
                Media gelPhoto = Media.NewInstance();\r
                amplification.setGelPhoto(gelPhoto);\r
-               \r
-               \r
+\r
+\r
                //SingleRead\r
                SingleRead singleRead = SingleRead.NewInstance();\r
                handleAnnotatableEntity(singleRead);\r
@@ -560,14 +560,14 @@ public class FullCoverageDataGenerator {
                MaterialOrMethodEvent readMethod = MaterialOrMethodEvent.NewInstance(null, "read method");\r
                singleRead.setMaterialOrMethod(readMethod);\r
                handleAnnotatableEntity(readMethod);\r
-               \r
+\r
                Media pherogram = Media.NewInstance();\r
                singleRead.setPherogram(pherogram);\r
-               \r
+\r
                singleRead.setPrimer(forwardPrimer);\r
                singleRead.setSequence(SequenceString.NewInstance("ABTC"));\r
                singleRead.setDirection(SequenceDirection.Forward);\r
-               \r
+\r
                //Seuqence\r
                Sequence sequence = Sequence.NewInstance("ADDT");\r
                dnaSample.addSequence(sequence);\r
@@ -583,13 +583,13 @@ public class FullCoverageDataGenerator {
                Reference<?> sequenceCitation = getReference();\r
                sequence.addCitation(sequenceCitation);\r
                handleAnnotatableEntity(sequence);\r
-                       \r
+\r
                //Phylogenetic Tree\r
                PhylogeneticTree phyloTree = PhylogeneticTree.NewInstance();\r
                phyloTree.addUsedSequences(sequence);\r
                handleIdentifiableEntity(phyloTree);\r
-               \r
-               \r
+\r
+\r
                cdmBases.add(dnaSample);\r
                cdmBases.add(phyloTree);\r
        }\r
@@ -609,16 +609,16 @@ public class FullCoverageDataGenerator {
                handleAnnotatableEntity(synRel);\r
                handleIdentifiableEntity(syn);\r
 \r
-               \r
+\r
                Taxon concept = Taxon.NewInstance(name, getReference());\r
-               TaxonRelationship taxRel = taxon.addTaxonRelation(concept, TaxonRelationshipType.CONGRUENT_TO(), \r
+               TaxonRelationship taxRel = taxon.addTaxonRelation(concept, TaxonRelationshipType.CONGRUENT_TO(),\r
                                sec, "444");\r
                taxon.setTaxonStatusUnknown(true);\r
                taxon.setUnplaced(true);\r
                taxon.setExcluded(true);\r
                handleAnnotatableEntity(taxRel);\r
 \r
-               \r
+\r
                //Classification\r
                Classification classification = Classification.NewInstance("My classification", sec);\r
                TaxonNode node = classification.addChildTaxon(taxon, sec,"22");\r
@@ -627,13 +627,13 @@ public class FullCoverageDataGenerator {
                \r
                Taxon childTaxon = Taxon.NewInstance(synName, sec);\r
                node.addChildTaxon(childTaxon, sec, "44");\r
-               \r
+\r
                cdmBases.add(taxon);\r
                cdmBases.add(concept);\r
                cdmBases.add(childTaxon);\r
                cdmBases.add(classification);\r
-               \r
-               \r
+\r
+\r
        }\r
 \r
 \r
@@ -642,7 +642,7 @@ public class FullCoverageDataGenerator {
        private void createReference(List<CdmBase> cdmBases) {\r
                Reference<?> reference = ReferenceFactory.newArticle();\r
                Person author = Person.NewTitledInstance("Author team");\r
-               reference.setAuthorTeam(author);\r
+               reference.setAuthorship(author);\r
                reference.setTitle("ref title");\r
                reference.setAbbrevTitle("abbrev title");\r
                reference.setDatePublished(TimePeriodParser.parseString("1999"));\r
@@ -664,14 +664,14 @@ public class FullCoverageDataGenerator {
                reference.setSeriesPart("seriesPart");\r
                reference.setVolume("vol. 3");\r
                reference.setUri(URI.create("http://rer.abc.de"));\r
-               \r
+\r
                Reference<?> journal = ReferenceFactory.newJournal();\r
                reference.setInJournal(journal);\r
-               \r
+\r
                handleIdentifiableEntity(reference);\r
 \r
                cdmBases.add(reference);\r
-               \r
+\r
        }\r
 \r
 \r
@@ -684,15 +684,15 @@ public class FullCoverageDataGenerator {
                subCollection.setSuperCollection(collection);\r
                handleIdentifiableEntity(collection);\r
                handleIdentifiableEntity(subCollection);\r
-               \r
-               \r
+\r
+\r
                collection.setCode("coll code");\r
                collection.setCodeStandard("codeStandard");\r
                collection.setName("coll name");\r
                collection.setTownOrLocation("townOrLocation");\r
                Institution institution = Institution.NewInstance();\r
                collection.setInstitute(institution);\r
-               \r
+\r
                //FieldUnit\r
                FieldUnit fieldUnit = FieldUnit.NewInstance();\r
                fieldUnit.setFieldNumber("fieldNumber");\r
@@ -704,7 +704,7 @@ public class FullCoverageDataGenerator {
                GatheringEvent gatheringEvent = GatheringEvent.NewInstance();\r
                fieldUnit.setGatheringEvent(gatheringEvent);\r
                gatheringEvent.putLocality(Language.ENGLISH(), "locality");\r
-               gatheringEvent.setExactLocation(Point.NewInstance(22.4, -34.2, \r
+               gatheringEvent.setExactLocation(Point.NewInstance(22.4, -34.2,\r
                                ReferenceSystem.WGS84(), 33));\r
                gatheringEvent.setCountry(Country.GERMANY());\r
                gatheringEvent.addCollectingArea(NamedArea.EUROPE());\r
@@ -712,7 +712,7 @@ public class FullCoverageDataGenerator {
                gatheringEvent.setAbsoluteElevation(10);\r
                gatheringEvent.setAbsoluteElevationMax(100);\r
                gatheringEvent.setAbsoluteElevationText("elevation text");\r
-               \r
+\r
                gatheringEvent.setDistanceToGround(10.4);\r
                gatheringEvent.setDistanceToGroundMax(100.3);\r
                gatheringEvent.setDistanceToGroundText("distance to ground text");\r
@@ -722,7 +722,7 @@ public class FullCoverageDataGenerator {
                gatheringEvent.setDistanceToWaterSurfaceText("distance to water text");\r
                handleAnnotatableEntity(gatheringEvent);\r
 \r
-               \r
+\r
                //Derived Unit\r
                MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(SpecimenOrObservationType.StillImage);\r
                mediaSpecimen.setCollection(collection);\r
@@ -745,7 +745,7 @@ public class FullCoverageDataGenerator {
                event.addDerivative(mediaSpecimen);\r
                handleAnnotatableEntity(event);\r
 \r
-               \r
+\r
                //SpecOrObservationBase\r
                fieldUnit.setSex(DefinedTerm.SEX_FEMALE());\r
                DefinedTerm lifeStage = DefinedTerm.NewStageInstance("Live stage", "stage", null);\r
@@ -777,7 +777,7 @@ public class FullCoverageDataGenerator {
                bacName.setSubGenusAuthorship("sub Genus author");\r
                bacName.setNameApprobation("nameApprobation");\r
                handleIdentifiableEntity(bacName);\r
-               \r
+\r
                CultivarPlantName botName = CultivarPlantName.NewInstance(Rank.SUBSPECIES());\r
                botName.setAnamorphic(true);\r
                botName.setCultivarName("cultivarName");\r
@@ -798,7 +798,7 @@ public class FullCoverageDataGenerator {
                BotanicalName botName2 = BotanicalName.NewInstance(Rank.SPECIES());\r
                HybridRelationship hybridRel = botName2.addHybridChild(botName, HybridRelationshipType.FIRST_PARENT(), "Rule 1.2.3");\r
                handleAnnotatableEntity(hybridRel);\r
-               \r
+\r
                ZoologicalName zooName = ZoologicalName.NewInstance(Rank.GENUS());\r
                zooName.setBreed("breed");\r
                zooName.setPublicationYear(1922);\r
@@ -827,31 +827,31 @@ public class FullCoverageDataGenerator {
                viralName.setAcronym("acronym");\r
                handleIdentifiableEntity(viralName);\r
 \r
-               \r
+\r
                cdmBases.add(bacName);\r
                cdmBases.add(botName);\r
                cdmBases.add(viralName);\r
                cdmBases.add(zooName);\r
        }\r
-       \r
+\r
        private void handleAnnotatableEntity(AnnotatableEntity entity){\r
                Annotation annotation = Annotation.NewDefaultLanguageInstance("annotation");\r
                entity.addAnnotation(annotation);\r
                Marker marker = Marker.NewInstance(MarkerType.COMPLETE(), true);\r
                entity.addMarker(marker);\r
        }\r
-       \r
+\r
        private void handleIdentifiableEntity(IdentifiableEntity<?> identifiableEntity){\r
                handleAnnotatableEntity(identifiableEntity);\r
-               \r
+\r
                //Credits\r
                Person creditor = Person.NewTitledInstance("Creditor");\r
                Credit credit = Credit.NewInstance(creditor, "credit");\r
                identifiableEntity.addCredit(credit);\r
-               \r
+\r
                //Extension\r
                Extension.NewInstance(identifiableEntity, "extension", ExtensionType.INFORMAL_CATEGORY());\r
-               \r
+\r
                //Rights\r
                Rights rights = Rights.NewInstance("right", Language.ENGLISH());\r
                rights.setUri(URI.create("http://rights.abc.de"));\r
@@ -860,17 +860,17 @@ public class FullCoverageDataGenerator {
                Person owner = Person.NewTitledInstance("Owner");\r
                rights.setAgent(owner);\r
                identifiableEntity.addRights(rights);\r
-               \r
+\r
                if (identifiableEntity.isInstanceOf(IdentifiableMediaEntity.class)){\r
                        Media media = Media.NewInstance(URI.create("http://www.identifiableMedia.de"), 22, "img/jpg", "jpg");\r
                        ((IdentifiableMediaEntity<?>)identifiableEntity).addMedia(media);\r
                }\r
-               \r
+\r
                //source\r
-               IdentifiableSource source = identifiableEntity.addSource(OriginalSourceType.Import, "id", "idNamespace", \r
+               IdentifiableSource source = identifiableEntity.addSource(OriginalSourceType.Import, "id", "idNamespace",\r
                                getReference(), "123");\r
                source.setOriginalNameString("original name");\r
-               \r
+\r
                //LSID\r
                 try {\r
                        LSID lsid = new LSID("urn:lsid:a.b.de:namespace:1234");\r
@@ -878,8 +878,8 @@ public class FullCoverageDataGenerator {
                } catch (MalformedLSIDException e) {\r
                        e.printStackTrace();\r
                }\r
-               \r
-               \r
+\r
+\r
        }\r
 \r
 \r
@@ -888,13 +888,13 @@ public class FullCoverageDataGenerator {
                 result.setTitle("some generic reference");\r
                 return result;\r
        }\r
-       \r
-       \r
+\r
+\r
        private DerivedUnit getSpecimen() {\r
                DerivedUnit derivedUnit = DerivedUnit.NewPreservedSpecimenInstance();\r
                return derivedUnit;\r
        }\r
-       \r
+\r
 \r
 \r
        private Taxon getTaxon() {\r
@@ -902,6 +902,6 @@ public class FullCoverageDataGenerator {
                TaxonNameBase<?,?> name = BotanicalName.NewInstance(Rank.GENUS());\r
                Taxon taxon = Taxon.NewInstance(name, sec);\r
                return taxon;\r
-               \r
+\r
        }\r
 }\r
index 6f18afe2edfa9d3faedff746a969e12977369c60..1ab3a554f367e84011267f7d1fadd293c7d34eff 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.common;
 \r
 import static org.junit.Assert.assertEquals;\r
 \r
+import java.net.URI;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
@@ -474,7 +475,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                Person author = Person.NewInstance();\r
                author.setTitleCache("Author", true);\r
                ref1.addAnnotation(Annotation.NewInstance("A1", Language.DEFAULT()));\r
-               ref1.setAuthorTeam(author);\r
+               ref1.setAuthorship(author);\r
                name.setBasionymAuthorTeam(author);\r
                \r
                name.setNomenclaturalReference(ref1);\r
@@ -612,7 +613,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                article1.addMedia(media1);\r
                article2.addMedia(media2);\r
                \r
-//             ref1.setAuthorTeam(author);\r
+//             ref1.setAuthorship(author);\r
 //             name1.setBasionymAuthorTeam(author);\r
                \r
                name1.setNomenclaturalReference(article1);\r
@@ -734,7 +735,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                \r
                team1.setNomenclaturalTitle("T.1");\r
                String street1 = "Strasse1";\r
-               team1.setContact(Contact.NewInstance(street1, "12345", "Berlin", Country.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", "www.abc.de", Point.NewInstance(2.4, 3.2, ReferenceSystem.WGS84(), 3)));\r
+               team1.setContact(Contact.NewInstance(street1, "12345", "Berlin", Country.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", URI.create("www.abc.de"), Point.NewInstance(2.4, 3.2, ReferenceSystem.WGS84(), 3)));\r
                team2.setContact(Contact.NewInstance("Street2", null, "London", null, null, null, null, "874599873", null, null, null));\r
                String street3 = "Street3";\r
                team2.addAddress(street3, null, null, null, null, null, Point.NewInstance(1.1, 2.2, null, 4));\r
@@ -749,8 +750,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                team3.addTeamMember(person3);\r
                team3.addEmailAddress("emailAddress3");\r
                \r
-               book1.setAuthorTeam(team2);\r
-               book2.setAuthorTeam(team3);\r
+               book1.setAuthorship(team2);\r
+               book2.setAuthorship(team3);\r
                \r
                Credit credit1 = Credit.NewInstance(team3, "credit1");\r
                book2.addCredit(credit1);\r
@@ -763,8 +764,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                                \r
                cdmGenericDao.merge(team2, team3, null);\r
                \r
-               Assert.assertSame("Author of book1 must be team2.", team2, book1.getAuthorTeam());\r
-               Assert.assertSame("Author of book2 must be team2.", team2, book2.getAuthorTeam());\r
+               Assert.assertSame("Author of book1 must be team2.", team2, book1.getAuthorship());\r
+               Assert.assertSame("Author of book2 must be team2.", team2, book2.getAuthorship());\r
                Assert.assertSame("Agent of credit1 must be team2.", team2, credit1.getAgent());\r
 \r
                Assert.assertEquals("Team2 must have 3 persons as members.",3, team2.getTeamMembers().size());\r
@@ -930,9 +931,9 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
 //                     matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
 //                     Assert.assertEquals("Resultlist must have 2 entries", 2, matchResult.size());\r
                        \r
-                       book1.setAuthorTeam(person1);\r
-                       book2.setAuthorTeam(person1);\r
-                       book3.setAuthorTeam(person1);\r
+                       book1.setAuthorship(person1);\r
+                       book2.setAuthorship(person1);\r
+                       book3.setAuthorship(person1);\r
                        \r
                        boolean m = matchStrategy.invoke(book1, book3);\r
                        boolean m2 = matchStrategy.invoke(book2, book3);\r
@@ -940,8 +941,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                        matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
                        Assert.assertEquals("Resultlist must have 2 entries", 2, matchResult.size());\r
                        \r
-                       book2.setAuthorTeam(person2);\r
-                       book3.setAuthorTeam(person3);\r
+                       book2.setAuthorship(person2);\r
+                       book3.setAuthorship(person3);\r
                        matchResult = cdmGenericDao.findMatching(book3, null);\r
                        Assert.assertEquals("Resultlist must have no entries", 0, matchResult.size());\r
                        \r
@@ -968,7 +969,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                \r
                book1.setTitle("Title1");\r
                book1.setEdition("Edition1");\r
-               book1.setAuthorTeam(team1);\r
+               book1.setAuthorship(team1);\r
                \r
                \r
                IBook book2 = (IBook) ((Reference)book1).clone();\r
@@ -1027,12 +1028,12 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                        boolean teamsMatch = teamMatcher.invoke(team1, team2);\r
                        Assert.assertTrue("Team1 and team2 should match" ,teamsMatch);\r
                        \r
-                       book3.setAuthorTeam(team2);\r
+                       book3.setAuthorship(team2);\r
                        matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
                        Assert.assertEquals("Resultlist must have 1 entries", 1, matchResult.size());\r
                        Assert.assertTrue("Resultlist must contain book 1", matchResult.contains(book1));\r
 \r
-                       book3.setAuthorTeam(null);\r
+                       book3.setAuthorship(null);\r
                        matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
                        Assert.assertEquals("Resultlist must have 1 entries", 1, matchResult.size());\r
                        Assert.assertTrue("Resultlist must contain book 1", matchResult.contains(book1));\r
@@ -1047,8 +1048,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                        teamsMatch = teamMatcher.invoke(team1, team2);\r
                        Assert.assertFalse("Team1 and team2 should not match" ,teamsMatch);\r
                        \r
-                       book3.setAuthorTeam(team1);\r
-                       book2.setAuthorTeam(team2);\r
+                       book3.setAuthorship(team1);\r
+                       book2.setAuthorship(team2);\r
                        matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
                        Assert.assertEquals("Resultlist must have 1 entries", 1, matchResult.size());\r
                        Assert.assertTrue("Resultlist must contain book 1", matchResult.contains(book1));\r
index 40465fac426c47188ddd801c7542e9fc8f000f43..2e024cc881a95f2662fd96886b0fc191f99e483d 100644 (file)
@@ -1,15 +1,23 @@
 package eu.etaxonomy.cdm.persistence.dao.hibernate.occurrence;\r
 \r
-import static org.junit.Assert.*;\r
-\r
+import org.h2.util.StringUtils;\r
+import org.junit.Assert;\r
 import org.junit.Before;\r
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
+import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;\r
+import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
 \r
 public class OccurrenceDaoHibernateImplTest  extends CdmIntegrationTest {\r
 \r
+       @SpringBeanByType\r
+       private IOccurrenceDao dao;\r
+       \r
+       \r
        @BeforeClass\r
        public static void setUpBeforeClass() throws Exception {\r
        }\r
@@ -84,5 +92,16 @@ public class OccurrenceDaoHibernateImplTest  extends CdmIntegrationTest {
        public void testListByAnyAssociation() {\r
                logger.warn("Not yet implemented");\r
        }\r
+       \r
+       @Test\r
+       public void testSaveOriginalLabelData(){\r
+               DerivedUnit unit = DerivedUnit.NewInstance(SpecimenOrObservationType.DerivedUnit);\r
+               String originalLabelInfo = StringUtils.pad("my original info", 10000, "x", false);\r
+               Assert.assertEquals(Integer.valueOf(10000),  (Integer)originalLabelInfo.length());\r
+               unit.setOriginalLabelInfo(originalLabelInfo);\r
+               //test that lob is supported\r
+               dao.save(unit);\r
+               //assert no exception\r
+       }\r
 \r
 }\r
index 83e0f0621ae37d0da2133db1b43f2dcf4b1f9a4a..e238d8780dccf306683487b686182e11baf5098f 100644 (file)
@@ -213,7 +213,7 @@ public class CacheStrategyGeneratorTest extends CdmTransactionalIntegrationTest
                journal1.setTitle("My journal");\r
                journal1.setUuid(UUID.fromString("a7fdf3b8-acd8-410a-afcd-1768d29d67e9"));\r
                journal1.setAbbrevTitle("M. Journ.");\r
-               journal1.setAuthorTeam(journalAuthor);\r
+               journal1.setAuthorship(journalAuthor);\r
                \r
                referenceDao.save((Reference<?>)journal1);\r
                \r
@@ -224,7 +224,7 @@ public class CacheStrategyGeneratorTest extends CdmTransactionalIntegrationTest
                article1.setVolume("1");\r
                article1.setDatePublished(TimePeriod.NewInstance(1972));\r
                article1.setInJournal(journal1);\r
-               article1.setAuthorTeam(articleAuthor);\r
+               article1.setAuthorship(articleAuthor);\r
                article1.getAbbrevTitleCache();\r
                \r
                referenceDao.saveOrUpdate((Reference<?>)article1);\r
index bf373e815b6e838da50f045133f49503512122a6..2c82f6cc916aac29e3fb4f072513bc3a5c8ae910 100644 (file)
@@ -185,6 +185,20 @@ CREATE CACHED TABLE PUBLIC.AGENTBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER(
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.AGENTBASE_MARKER(
     AGENTBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -485,6 +499,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION(
     PROTECTEDTITLECACHE BOOLEAN NOT NULL,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -507,6 +524,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_AUD(
     PROTECTEDTITLECACHE BOOLEAN,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -540,6 +560,22 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_CREDIT_AUD;
+
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+       DESCRIPTION_ID INTEGER NOT NULL,
+       DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    DESCRIPTION_ID INTEGER NOT NULL,
+    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION_AUD;
+
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION(
     CLASSIFICATION_ID INTEGER NOT NULL,
     EXTENSIONS_ID INTEGER NOT NULL
@@ -552,6 +588,32 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_MARKER(
     CLASSIFICATION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -674,6 +736,20 @@ CREATE CACHED TABLE PUBLIC.COLLECTION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER(
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.COLLECTION_MARKER(
     COLLECTION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -922,6 +998,22 @@ CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD;
+                                                                                                     
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER(
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MARKER(
     DEFINEDTERMBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1180,6 +1272,22 @@ CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER(
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_FEATURE(
     DESCRIPTIONBASE_ID INTEGER NOT NULL,
     DESCRIPTIVESYSTEM_ID INTEGER NOT NULL
@@ -1504,6 +1612,69 @@ CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY(
+    ID INTEGER NOT NULL,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY_AUD(
+    ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY_AUD;
+CREATE CACHED TABLE PUBLIC.ENTITYVALIDATIONRESULT(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    VALIDATEDENTITYID INTEGER,
+    VALIDATEDENTITYUUID VARCHAR(36),
+    VALIDATEDENTITYCLASS VARCHAR(255),
+    USERFRIENDLYDESCRIPTION VARCHAR(255),
+    USERFRIENDLYTYPENAME VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CRUDEVENTTYPE VARCHAR(24)
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYVALIDATIONRESULT;
+CREATE CACHED TABLE PUBLIC.ENTITYCONSTRAINTVIOLATION(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    PROPERTYPATH VARCHAR(255),
+    USERFRIENDLYFIELDNAME VARCHAR(255),
+    INVALIDVALUE VARCHAR(255),
+    SEVERITY VARCHAR(24),
+    MESSAGE VARCHAR(255),
+    VALIDATOR VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    ENTITYVALIDATIONRESULT_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYCONSTRAINTVIOLATION;
 CREATE CACHED TABLE PUBLIC.EXTENSION(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
@@ -1658,6 +1829,20 @@ CREATE CACHED TABLE PUBLIC.FEATURETREE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER(
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.FEATURETREE_MARKER(
     FEATURETREE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1808,7 +1993,7 @@ CREATE CACHED TABLE PUBLIC.GRANTEDAUTHORITYIMPL(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    AUTHORITY VARCHAR(255),
+    AUTHORITY VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.GRANTEDAUTHORITYIMPL;
@@ -1922,6 +2107,34 @@ CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING(
     DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER_AUD(
+       ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING_AUD(
     REV INTEGER NOT NULL,
     DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,
@@ -2387,6 +2600,20 @@ CREATE CACHED TABLE PUBLIC.MEDIA_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER(
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.MEDIA_LANGUAGESTRING(
     MEDIA_ID INTEGER NOT NULL,
     TITLE_ID INTEGER NOT NULL,
@@ -2689,7 +2916,7 @@ CREATE CACHED TABLE PUBLIC.PERMISSIONGROUP(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    NAME VARCHAR(255),
+    NAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.PERMISSIONGROUP;
@@ -2828,6 +3055,20 @@ CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER(
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_MARKER(
     POLYTOMOUSKEY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -2919,10 +3160,11 @@ CREATE TABLE PRIMER (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+       SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER,
     PRIMARY KEY (ID)
 );
 CREATE TABLE PRIMER_AUD (
@@ -2931,10 +3173,11 @@ CREATE TABLE PRIMER_AUD (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+    SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER
 );
 
 CREATE TABLE PRIMER_ANNOTATION (
@@ -2988,7 +3231,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     PROBLEMSTARTS INTEGER NOT NULL,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -2999,7 +3241,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3038,7 +3280,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     PROBLEMSTARTS INTEGER,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -3049,7 +3290,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3093,6 +3334,20 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER(
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.REFERENCE_MARKER(
     REFERENCE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -3441,6 +3696,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3454,7 +3710,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE;
 CREATE INDEX PUBLIC.SPECIMENOROBSERVATIONBASETITLECACHEINDEX ON PUBLIC.SPECIMENOROBSERVATIONBASE(TITLECACHE);
@@ -3481,6 +3738,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3494,7 +3752,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_AUD;
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION(
@@ -3547,6 +3806,22 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER(
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING(
     SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
     DEFINITION_ID INTEGER NOT NULL,
@@ -3852,6 +4127,20 @@ CREATE CACHED TABLE PUBLIC.TAXONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER(
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONBASE_MARKER(
     TAXONBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4045,6 +4334,20 @@ CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER(
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_MARKER(
     TAXONNAMEBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4305,6 +4608,20 @@ CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER(
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_MARKER(
     TERMVOCABULARY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4427,7 +4744,7 @@ CREATE CACHED TABLE PUBLIC.USERACCOUNT(
     EMAILADDRESS VARCHAR(255),
     ENABLED BOOLEAN NOT NULL,
     PASSWORD VARCHAR(255),
-    USERNAME VARCHAR(255),
+    USERNAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER,
     PERSON_ID INTEGER
 );
@@ -5906,7 +6223,7 @@ ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT
 ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORTEAM_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK48AC64334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
 ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B7C7B5AED FOREIGN KEY(TAXONOMICPARENTCACHE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB50751EC5 FOREIGN KEY(CONTACT_ADDRESSES_ID) REFERENCES PUBLIC.ADDRESS(ID) NOCHECK;
index 80f8fcdf49028a8ac05d147c21e6d63914093335..1f0a3e1d8cc3695395e92bdf2a51248457b5116e 100644 (file)
Binary files a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-with_auditing_info.xml and b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-with_auditing_info.xml differ
index a8c1ce9f8980b7fd16888a2e0311ad51ce66ad81..1a258026da44d4a171f6a4d834dbd65ffd60a31e 100644 (file)
@@ -6,9 +6,9 @@
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1001" CREATED="2009-06-25 14:42:27.0" UUID="b0b71ee3-3e18-4ed4-b660-6181b0ec532b" PROTECTEDTITLECACHE="true" TITLECACHE="A name" FULLTITLECACHE="  (), null" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="()" NAMECACHE=" " PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1001" NOMENCLATURALREFERENCE_ID="1001" RANK_ID="765" BASIONYMAUTHORTEAM_ID="1001"/>\r
   <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="b0b71ee3-3e18-4ed4-b660-6181b0ec532b" PROTECTEDTITLECACHE="true" TITLECACHE="A name" FULLTITLECACHE="  (), null" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="1001" NOMENCLATURALREFERENCE_ID="1001" RANK_ID="765" AUTHORSHIPCACHE="()" NAMECACHE=" " PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" BASIONYMAUTHORTEAM_ID="1" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false"/>\r
 \r
-  <REFERENCE  ID="1001" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="A Ref" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="1"/>\r
+  <REFERENCE  ID="1001" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="A Ref" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORSHIP_ID="1"/>\r
   <REFERENCE_ANNOTATION REFERENCE_ID="1001" ANNOTATIONS_ID="1001"/>\r
-  <REFERENCE_AUD DTYPE="Article" ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="Author, null" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="1"/>\r
+  <REFERENCE_AUD DTYPE="Article" ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="Author, null" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORSHIP_ID="1"/>\r
 \r
   <HOMOTYPICALGROUP ID="1001" CREATED="2009-06-25 14:42:27.0" UUID="2aaf6684-8eed-4c0d-9c34-fb9715f6b31e"/>\r
   <HOMOTYPICALGROUP_AUD ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="2aaf6684-8eed-4c0d-9c34-fb9715f6b31e"/>\r
index 5e2b301ab0c17041bd530a6ca9ddc7e85b7c0c44..72355c780a3abd0c56ddac812efdf92c709b4b5e 100644 (file)
     ISSN CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
-    AUTHORTEAM_ID CDATA #IMPLIED
+    AUTHORSHIP_ID CDATA #IMPLIED
     INJOURNAL_ID CDATA #IMPLIED
     CROSSREF_ID CDATA #IMPLIED
     TYPE_ID CDATA #IMPLIED
     URI CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
-    AUTHORTEAM_ID CDATA #IMPLIED
+    AUTHORSHIP_ID CDATA #IMPLIED
     DATEPUBLISHED_END CDATA #IMPLIED
     DATEPUBLISHED_START CDATA #IMPLIED
     TITLE CDATA #IMPLIED
index 911710a23e6b032221e0bbd089e6856f8e10b0a9..7f28ba202e62b25155c77be8d2790b1bfc646068 100644 (file)
@@ -12,8 +12,8 @@
   <AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="3" SORTINDEX="0"/>
   <AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="4" SORTINDEX="1"/>
   <AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="5" SORTINDEX="2"/>
-  <REFERENCE  ID="1" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" PROTECTEDTITLECACHE="true" TITLECACHE="Lorem ipsum" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" REFTYPE="BK"/> <!--AUTHORTEAM_ID="1"-->
-  <REFERENCE  ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-sphingidae.org" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="cate-sphingidae.org" ABBREVTITLE="cate-sphingidae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="3" REFTYPE="DB"/>
+  <REFERENCE  ID="1" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" PROTECTEDTITLECACHE="true" TITLECACHE="Lorem ipsum" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" REFTYPE="BK"/> <!--AUTHORSHIP_ID="1"-->
+  <REFERENCE  ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-sphingidae.org" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="cate-sphingidae.org" ABBREVTITLE="cate-sphingidae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORSHIP_ID="3" REFTYPE="DB"/>
   <REFERENCE  ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-araceae.org" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="cate-araceae.org" ABBREVTITLE="cate-araceae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" REFTYPE="DB"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Aus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="1"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="05a438d6-065f-49ef-84db-c7dc2c259975" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" " FULLTITLECACHE=" " PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Aus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="[null]"/>
index 4aa8e313866fac02a32f7f4005f1f8405b07149c..9d9b2f3469785f3ad966ca88ff9c8e51e0b060cf 100644 (file)
@@ -55,8 +55,8 @@
   <HYBRIDRELATIONSHIP ID="2" CREATED="2008-12-10 09:56:07.0" UUID="bb186839-3c46-4c6e-b58b-b530f25c0b11" UPDATED="2008-12-10 09:56:07.253" RELATEDFROM_ID="40" RELATEDTO_ID="38" TYPE_ID="851" DOUBTFUL="false"/>\r
   <NAMERELATIONSHIP ID="1" CREATED="2008-12-10 09:56:07.0" UUID="331c93a6-eabc-4a32-9a26-351aaff8dfbd" UPDATED="2008-12-10 09:56:07.253" RELATEDFROM_ID="15" RELATEDTO_ID="27" TYPE_ID="857" DOUBTFUL="false"/>\r
   <NAMERELATIONSHIP ID="2" CREATED="2008-12-10 09:56:07.0" UUID="331c93a6-eaac-4a32-9a26-351aaff8dfbd" UPDATED="2008-12-10 09:56:07.253" RELATEDFROM_ID="14" RELATEDTO_ID="27" TYPE_ID="857" DOUBTFUL="false"/>\r
-  <REFERENCE  ID="1" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" PROTECTEDTITLECACHE="true" TITLECACHE="Lorem ipsum" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" REFTYPE="BK"/> <!--AUTHORTEAM_ID="1"-->\r
-  <REFERENCE  ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-sphingidae.org" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="cate-sphingidae.org" ABBREVTITLE="cate-sphingidae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="3" REFTYPE="DB"/>\r
+  <REFERENCE  ID="1" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" PROTECTEDTITLECACHE="true" TITLECACHE="Lorem ipsum" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" REFTYPE="BK"/> <!--AUTHORSHIP_ID="1"-->\r
+  <REFERENCE  ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-sphingidae.org" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="cate-sphingidae.org" ABBREVTITLE="cate-sphingidae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORSHIP_ID="3" REFTYPE="DB"/>\r
   <REFERENCE  ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-araceae.org" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="cate-araceae.org" ABBREVTITLE="cate-araceae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" REFTYPE="DB"/>\r
   <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" RECORDBASIS="PS" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="50a276c0-4df9-4da3-8b18-b4d2f82aa9b4" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true"/>\r
   <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="258e28a3-c4e5-4b87-823e-2963c7831ce3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec Lorem ipsum"  PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" PUBLISH="true" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36"/>\r
index 2a9d8c58f7617590003afc7a03d595b8fc01ef3d..c567e8f3586b45e085c2368473f4da27c67c7d6e 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <artifactId>cdmlib-parent</artifactId>
                <groupId>eu.etaxonomy</groupId>
-               <version>3.3.8-SNAPSHOT</version>
+               <version>3.4.0-SNAPSHOT</version>
                <relativePath>../pom.xml</relativePath>
        </parent>
        <modelVersion>4.0.0</modelVersion>
index 75274413d2232358f91bd494b6bae3761e2ff492..95d0bcb3e3256047d27c54e48f4c612e68a90a45 100644 (file)
@@ -86,7 +86,7 @@ public class RemoteXMLEntityFactory extends XmlEntityFactoryBase {
        private static final String NAME_TYPE_DESIGNATIONS = "name/" + UUID
                        + "/typeDesignations";
 
-       // TAXON_ACCEPTED should populate references but authorTeam is not always
+       // TAXON_ACCEPTED should populate references but authorship is not always
        // populated so call the reference controller directly
        private static final String REFERENCES = "portal/reference/" + UUID;
 
index 1430aa7f09a39880002c939bfff3f84a7e87e892..c0074237a855fdbcc05abcce4d13fce285f9841f 100644 (file)
                <!-- first of all check if any of the data we show exist: TODO remove this 
                        test, if we modified CDM services, to export proper data -->
                <xsl:if
-                       test="exists($reference-node/authorTeam/teamMembers/e[1]/lastname) 
-            or exists($reference-node/authorTeam/lastname) or exists($reference-node/datePublished/start)
+                       test="exists($reference-node/authorship/teamMembers/e[1]/lastname) 
+            or exists($reference-node/authorship/lastname) or exists($reference-node/datePublished/start)
             or exists($reference-node/title)">
 
                        <!-- use the citation-uuid as a unique name for the reference -->
                                select="concat('{{EDIT_Reference|name=',$citation-uuid,'|content=')" />
 
                        <xsl:choose>
-                               <xsl:when test="exists($reference-node/authorTeam/teamMembers)">
+                               <xsl:when test="exists($reference-node/authorship/teamMembers)">
                                        <xsl:text>{{aut|</xsl:text>
-                                       <xsl:for-each select="$reference-node/authorTeam/teamMembers/e">
+                                       <xsl:for-each select="$reference-node/authorship/teamMembers/e">
                                                <xsl:value-of select="lastname" />
                                                <xsl:choose>
                                                        <xsl:when test="position() != last()">
                                </xsl:when>
                                <xsl:otherwise>
                                        <xsl:choose>
-                                               <xsl:when test="exists($reference-node/authorTeam/lastname)">
+                                               <xsl:when test="exists($reference-node/authorship/lastname)">
                                                        <xsl:text>{{aut|</xsl:text>
-                                                       <xsl:value-of select="$reference-node/authorTeam/lastname" />
+                                                       <xsl:value-of select="$reference-node/authorship/lastname" />
                                                        <xsl:text>}} </xsl:text>
                                                </xsl:when>
                                                <xsl:otherwise>
index dff9b605c924bde10329ddf02ecc400a1708b9ef..feb51368c3d55e70c1f35fdd2deeddf27abbed49 100644 (file)
   <xsl:template match="nomenclaturalReference">
     <xsl:text> (</xsl:text>
     <fo:inline>
-      <xsl:value-of select="authorTeam/titleCache"/>
+      <xsl:value-of select="authorship/titleCache"/>
       <xsl:text> </xsl:text>
       <xsl:value-of select="datePublished/start"/>: </fo:inline>
     <xsl:text> </xsl:text>
       <xsl:sort select="sources/e[1]/citation/datePublished/start"/>
       <xsl:for-each select="sources/e">
         
-        <xsl:variable name="lastname_text" select="citation/authorTeam/lastname"/>
-        <xsl:variable name="prev_lastname_text" select="preceding-sibling::e[1]/citation/authorTeam/lastname"/>
+        <xsl:variable name="lastname_text" select="citation/authorship/lastname"/>
+        <xsl:variable name="prev_lastname_text" select="preceding-sibling::e[1]/citation/authorship/lastname"/>
         
         <xsl:if test="nameUsedInSource/uuid=$name-uuid">
           <xsl:text>; </xsl:text>
           <fo:inline>
-            <!--xsl:value-of select="citation/authorTeam/titleCache"/-->
+            <!--xsl:value-of select="citation/authorship/titleCache"/-->
             <!--TODO wrap this in a variable and compare the previous variable to this one to see if we're dealing with the same name-->
-            <xsl:for-each select="citation/authorTeam/teamMembers/e">
+            <xsl:for-each select="citation/authorship/teamMembers/e">
               <xsl:value-of select="lastname"/>
               <xsl:choose>
                 <xsl:when test="position() != last()">
 
 <xsl:choose>
             <xsl:when test="$lastname_text != $prev_lastname_text">
-            <xsl:value-of select="citation/authorTeam/lastname"/><!--TODO We print lastname here as well as the author list is this a mistake?-->
+            <xsl:value-of select="citation/authorship/lastname"/><!--TODO We print lastname here as well as the author list is this a mistake?-->
             
             <xsl:text> (</xsl:text>
             <xsl:value-of select="citation/datePublished/start"/>
         <xsl:if test="nameUsedInSource/uuid=$name-uuid">
           <xsl:text>; </xsl:text>
           <fo:inline>
-            <!--xsl:value-of select="citation/authorTeam/titleCache"/-->
-            <xsl:for-each select="citation/authorTeam/teamMembers/e">
+            <!--xsl:value-of select="citation/authorship/titleCache"/-->
+            <xsl:for-each select="citation/authorship/teamMembers/e">
               <xsl:value-of select="lastname"/>
               <xsl:choose>
                 <xsl:when test="position() != last()">
               </xsl:choose>
             </xsl:for-each>
             
-            <xsl:value-of select="citation/authorTeam/lastname"/>
+            <xsl:value-of select="citation/authorship/lastname"/>
             <xsl:text> (</xsl:text>
             <xsl:value-of select="citation/datePublished/start"/>
             <xsl:text>: </xsl:text>
     <xsl:for-each select="//nomenclaturalReference[count(. | key('citations-by-uuid', uuid)[1]) = 1] | //citation[count(. | key('citations-by-uuid', uuid)[1]) = 1]">
     <!--xsl:for-each select="//nomenclaturalReference[count(. | key('nomenclaturalrefs-by-uuid', uuid)[1]) = 1]"-->
       <!--xsl:for-each select="//nomenclaturalReference"-->
-        <xsl:sort select="authorTeam/lastname | authorTeam/teamMembers/e[1]/lastname" />
+        <xsl:sort select="authorship/lastname | authorship/teamMembers/e[1]/lastname" />
       <xsl:sort select="datePublished/start"></xsl:sort>
 
       <fo:block linefeed-treatment="preserve" text-align="justify" text-indent="-{$taxon-name-indentation}" start-indent="{$taxon-name-indentation}">
           <!-- filter out repeated citation uuids. Could write a controller method in the CDM to get all unique references for a TaxonNode -->
           
           <!--I am only listing references which have at least one author name. If there are other references in the database - why don't these have an author name-->
-              <xsl:if test="authorTeam/teamMembers/e[1]/lastname != '' or authorTeam/lastname != ''">               
+              <xsl:if test="authorship/teamMembers/e[1]/lastname != '' or authorship/lastname != ''">               
                 <!--xsl:text>&#xA;</xsl:text-->
                 <xsl:choose>
-                  <xsl:when test="authorTeam/teamMembers/e[1]/lastname != ''">
-                    <xsl:for-each select="authorTeam/teamMembers/e">
+                  <xsl:when test="authorship/teamMembers/e[1]/lastname != ''">
+                    <xsl:for-each select="authorship/teamMembers/e">
                       <fo:inline>
                         <xsl:value-of select="lastname"/>
                         <xsl:text> </xsl:text>
                       </fo:inline>
                     </xsl:for-each>
                   </xsl:when>
-                  <xsl:otherwise test="authorTeam/lastname != ''">
+                  <xsl:otherwise test="authorship/lastname != ''">
                     <fo:inline>
-                      <xsl:value-of select="authorTeam/lastname"/>
+                      <xsl:value-of select="authorship/lastname"/>
                       <xsl:text> </xsl:text>
-                      <xsl:value-of select="authorTeam/firstname"/>
+                      <xsl:value-of select="authorship/firstname"/>
                     </fo:inline>                                 
                   </xsl:otherwise>
                 </xsl:choose>                            
 
   <xsl:template name="Referencesold">
     
-      <!-- need to sort by lastname of the first author i.e. //citation/authorTeam/teamMembers/e[1]/lastname -->
+      <!-- need to sort by lastname of the first author i.e. //citation/authorship/teamMembers/e[1]/lastname -->
       <xsl:for-each select="//citation">
 
         <!-- TODO sorting only works for the first citation, implement correctly -->
-        <xsl:sort select="authorTeam/lastname"/>
-        <xsl:sort select="authorTeam/teamMembers/e[1]/lastname"/>
+        <xsl:sort select="authorship/lastname"/>
+        <xsl:sort select="authorship/teamMembers/e[1]/lastname"/>
         <fo:block>
         <fo:inline>
           
            <!-- .[not(preceding-sibling::Link[@personId   = current()/@personId -->
           <xsl:choose>
                          
-            <xsl:when test="authorTeam/teamMembers/e[1]/lastname != '' or authorTeam/lastname != ''">                                     
+            <xsl:when test="authorship/teamMembers/e[1]/lastname != '' or authorship/lastname != ''">                                     
             
               <xsl:choose>
-                <xsl:when test="authorTeam/teamMembers/e[1]/lastname != ''">
-                <xsl:for-each select="authorTeam/teamMembers/e">
+                <xsl:when test="authorship/teamMembers/e[1]/lastname != ''">
+                <xsl:for-each select="authorship/teamMembers/e">
                   <fo:inline font-weight="bold">
                     <xsl:value-of select="lastname"/>
                     <xsl:choose>
                   </fo:inline>
                 </xsl:for-each>
                 </xsl:when>
-                <xsl:otherwise test="authorTeam/lastname != ''">
+                <xsl:otherwise test="authorship/lastname != ''">
                   <fo:inline font-weight="bold">
-                    <xsl:value-of select="authorTeam/lastname"/>
+                    <xsl:value-of select="authorship/lastname"/>
                   </fo:inline>                                 
                 </xsl:otherwise>
               </xsl:choose>                            
index 20dbb74d68d685c474912d3426b4f391f042c69a..95c7fcf1e83d1d17af7c1d79b921f8e12a99f893 100644 (file)
   <xsl:template match="nomenclaturalReference">
     <xsl:text> (</xsl:text>
     <fo:inline>
-      <xsl:value-of select="authorTeam/titleCache"/>
+      <xsl:value-of select="authorship/titleCache"/>
       <xsl:text> </xsl:text>
       <xsl:value-of select="datePublished/start"/>: </fo:inline>
     <xsl:text> </xsl:text>
       <xsl:sort select="sources/e[1]/citation/datePublished/start"/>
       <xsl:for-each select="sources/e">
         
-        <xsl:variable name="lastname_text" select="citation/authorTeam/lastname"/>
-        <xsl:variable name="prev_lastname_text" select="preceding-sibling::e[1]/citation/authorTeam/lastname"/>
+        <xsl:variable name="lastname_text" select="citation/authorship/lastname"/>
+        <xsl:variable name="prev_lastname_text" select="preceding-sibling::e[1]/citation/authorship/lastname"/>
         
         <xsl:if test="nameUsedInSource/uuid=$name-uuid">
           <xsl:text>; </xsl:text>
           <fo:inline>
-            <!--xsl:value-of select="citation/authorTeam/titleCache"/-->
+            <!--xsl:value-of select="citation/authorship/titleCache"/-->
             <!--TODO wrap this in a variable and compare the previous variable to this one to see if we're dealing with the same name-->
-            <xsl:for-each select="citation/authorTeam/teamMembers/e">
+            <xsl:for-each select="citation/authorship/teamMembers/e">
               <xsl:value-of select="lastname"/>
               <xsl:choose>
                 <xsl:when test="position() != last()">
 
 <xsl:choose>
             <xsl:when test="$lastname_text != $prev_lastname_text">
-            <xsl:value-of select="citation/authorTeam/lastname"/><!--TODO We print lastname here as well as the author list is this a mistake?-->
+            <xsl:value-of select="citation/authorship/lastname"/><!--TODO We print lastname here as well as the author list is this a mistake?-->
             
             <xsl:text> (</xsl:text>
             <xsl:value-of select="citation/datePublished/start"/>
         <xsl:if test="nameUsedInSource/uuid=$name-uuid">
           <xsl:text>; </xsl:text>
           <fo:inline>
-            <!--xsl:value-of select="citation/authorTeam/titleCache"/-->
-            <xsl:for-each select="citation/authorTeam/teamMembers/e">
+            <!--xsl:value-of select="citation/authorship/titleCache"/-->
+            <xsl:for-each select="citation/authorship/teamMembers/e">
               <xsl:value-of select="lastname"/>
               <xsl:choose>
                 <xsl:when test="position() != last()">
               </xsl:choose>
             </xsl:for-each>
             
-            <xsl:value-of select="citation/authorTeam/lastname"/>
+            <xsl:value-of select="citation/authorship/lastname"/>
             <xsl:text> (</xsl:text>
             <xsl:value-of select="citation/datePublished/start"/>
             <xsl:text>: </xsl:text>
     <xsl:for-each select="//nomenclaturalReference[count(. | key('citations-by-uuid', uuid)[1]) = 1] | //citation[count(. | key('citations-by-uuid', uuid)[1]) = 1]">
     <!--xsl:for-each select="//nomenclaturalReference[count(. | key('nomenclaturalrefs-by-uuid', uuid)[1]) = 1]"-->
       <!--xsl:for-each select="//nomenclaturalReference"-->
-        <xsl:sort select="authorTeam/lastname | authorTeam/teamMembers/e[1]/lastname" />
+        <xsl:sort select="authorship/lastname | authorship/teamMembers/e[1]/lastname" />
       <xsl:sort select="datePublished/start"></xsl:sort>
 
       <fo:block linefeed-treatment="preserve" text-align="justify" text-indent="-{$taxon-name-indentation}" start-indent="{$taxon-name-indentation}">
           <!--xsl:value-of select="titleCache"/-->
           
           <!--I am only listing references which have at least one author name. If there are other references in the database - why don't these have an author name-->
-          <xsl:if test="authorTeam/teamMembers/e[1]/lastname != '' or authorTeam/lastname != '' or authorTeam/titleCache != ''">               
+          <xsl:if test="authorship/teamMembers/e[1]/lastname != '' or authorship/lastname != '' or authorship/titleCache != ''">               
                 <!--xsl:text>&#xA;</xsl:text-->
                 <xsl:choose>
-                  <xsl:when test="authorTeam/teamMembers/e[1]/lastname != ''">
-                    <xsl:for-each select="authorTeam/teamMembers/e">
+                  <xsl:when test="authorship/teamMembers/e[1]/lastname != ''">
+                    <xsl:for-each select="authorship/teamMembers/e">
                       <fo:inline>
                         <xsl:value-of select="lastname"/>
                         <xsl:text> </xsl:text>
                   </xsl:when>
                   <xsl:otherwise>
                     <xsl:choose>
-                      <xsl:when test="authorTeam/lastname != ''">
-                    <!--xsl:if test="authorTeam/lastname != ''"-->
+                      <xsl:when test="authorship/lastname != ''">
+                    <!--xsl:if test="authorship/lastname != ''"-->
                     <fo:inline>
-                      <xsl:value-of select="authorTeam/lastname"/>
+                      <xsl:value-of select="authorship/lastname"/>
                       <xsl:text> </xsl:text>
-                      <xsl:value-of select="authorTeam/firstname"/>
+                      <xsl:value-of select="authorship/firstname"/>
                     </fo:inline>
                       </xsl:when>
                       <xsl:otherwise>
                         <fo:inline>
-                          <xsl:value-of select="authorTeam/titleCache"/>
+                          <xsl:value-of select="authorship/titleCache"/>
                         </fo:inline>
                       </xsl:otherwise>
                     <!--/xsl:if-->
 
   <xsl:template name="Referencesold">
     
-      <!-- need to sort by lastname of the first author i.e. //citation/authorTeam/teamMembers/e[1]/lastname -->
+      <!-- need to sort by lastname of the first author i.e. //citation/authorship/teamMembers/e[1]/lastname -->
       <xsl:for-each select="//citation">
 
         <!-- TODO sorting only works for the first citation, implement correctly -->
-        <xsl:sort select="authorTeam/lastname"/>
-        <xsl:sort select="authorTeam/teamMembers/e[1]/lastname"/>
+        <xsl:sort select="authorship/lastname"/>
+        <xsl:sort select="authorship/teamMembers/e[1]/lastname"/>
         <fo:block>
         <fo:inline>
           
            <!-- .[not(preceding-sibling::Link[@personId   = current()/@personId -->
           <xsl:choose>
                          
-            <xsl:when test="authorTeam/teamMembers/e[1]/lastname != '' or authorTeam/lastname != ''">                                     
+            <xsl:when test="authorship/teamMembers/e[1]/lastname != '' or authorship/lastname != ''">                                     
             
               <xsl:choose>
-                <xsl:when test="authorTeam/teamMembers/e[1]/lastname != ''">
-                <xsl:for-each select="authorTeam/teamMembers/e">
+                <xsl:when test="authorship/teamMembers/e[1]/lastname != ''">
+                <xsl:for-each select="authorship/teamMembers/e">
                   <fo:inline font-weight="bold">
                     <xsl:value-of select="lastname"/>
                     <xsl:choose>
                 </xsl:for-each>
                 </xsl:when>
                 <xsl:otherwise>
-                  <xsl:if test="authorTeam/lastname != ''">
+                  <xsl:if test="authorship/lastname != ''">
                   <fo:inline font-weight="bold">
-                    <xsl:value-of select="authorTeam/lastname"/>
+                    <xsl:value-of select="authorship/lastname"/>
                   </fo:inline>
                   </xsl:if>
                 </xsl:otherwise>
index 192bbc4f7cec90e423e8eb628d031a7138f50d2b..61cb7f38e9390c8caf14d8023bbf8997bd399070 100644 (file)
@@ -4,7 +4,6 @@
 <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
 <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;directory nest=&amp;quot;false&amp;quot; path=&amp;quot;/home/alex/D:\_lib\java\jdk1.6_b3.src\j2se\src\share\classes&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.directory&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;directory nest=&amp;quot;false&amp;quot; path=&amp;quot;/home/alex/D:\_lib\java\jdk1.6_b3.src\j2se\src\windows\classes&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.directory&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/>
 <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
 <listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
 </listAttribute>
 <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="RunJettyRunWebAppClassPathProvider"/>
index 0d6d96fdb437134e48219eacc793ea8deacf0d41..89bf96865d3bb7a8303c6092b8bceb1f17e391b1 100644 (file)
@@ -10,7 +10,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="RunJettyRunWebAppClassPathProvider"/>
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="runjettyrun.Bootstrap"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="cdmlib-remote-webapp"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx500M&#13;&#10;-Dlog4j.configDebug=true&#10;-Dorg.mortbay.jetty.webapp.parentLoaderPriority=true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx500M&#13;&#10;-Dlog4j.configDebug=true&#10;-Dorg.mortbay.jetty.webapp.parentLoaderPriority=true&#10;-Dcdm.datasource=mySql3.4"/>
 <stringAttribute key="run_jetty_run.CONTEXT_ATTR" value="/"/>
 <booleanAttribute key="run_jetty_run.ENABLE_JNDI_ATTR" value="false"/>
 <booleanAttribute key="run_jetty_run.ENABLE_MAVEN_TEST_CLASSES_ATTR" value="true"/>
index 307c16fafdcf14e0a888e69c630c2532aaf2786d..7f5ee4f79c55432c1af99ddd201700703db0c4e0 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <artifactId>cdmlib-parent</artifactId>
     <groupId>eu.etaxonomy</groupId>
-    <version>3.3.8-SNAPSHOT</version>
+    <version>3.4.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
index 2043e36ad8b8da1b8a0a612036b09cb5d3d3b457..f906584b1f8fc594fe3ec2d8037bbc44998e58ee 100644 (file)
@@ -7,7 +7,8 @@
 #     java -Dlog4j.configDebug=true\r
 #\r
 \r
-log4j.rootLogger=INFO, stdout\r
+log4j.rootLogger=WARN, stdout\r
+\r
 \r
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender\r
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r
@@ -37,11 +38,11 @@ log4j.logger.eu.etaxonomy.cdm.remote.exception.CdmExceptionResolver = ERROR
 # springframework\r
 ###\r
 log4j.logger.org.springframework = WARN\r
-#log4j.logger.org.springframework.web.servlet.DispatcherServlet = TRACE\r
-#log4j.logger.org.springframework.web.servlet.view = TRACE\r
-#log4j.logger.org.springframework.web.servlet.mvc.annotation = WARN\r
+log4j.logger.org.springframework.web.servlet.DispatcherServlet = TRACE\r
+log4j.logger.org.springframework.web.servlet.view = TRACE\r
+log4j.logger.org.springframework.web.servlet.mvc.annotation = WARN\r
 #log4j.category.org.springframework.web.servlet.mvc.support=DEBUG, stdout\r
-#log4j.logger.org.springframework.web.servlet.view = WARN\r
+log4j.logger.org.springframework.web.servlet.view = WARN\r
 \r
 ###\r
 # json-lib\r
index d271e820289668f169ee5d7302f6890eeb4b843b..8c29d470afd73a95962fcd3e29f45f9ac926ad33 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>cdmlib-parent</artifactId>
-    <version>3.3.8-SNAPSHOT</version>
+    <version>3.4.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
index 04f10f887ac8e874b3d6cbf9e6527fc3c801af3e..369a6096f46eda05f3fdd4c76d52115d76f2f070 100644 (file)
@@ -35,7 +35,7 @@ public class ClassificationListController extends IdentifiableListController<Cla
 
 
        protected static final List<String> DEFAULT_INIT_STRATEGY = Arrays.asList(new String []{
-                       "reference.authorTeam"
+                       "reference.authorship"
        });
        
                
index f4b829f1c8e3ab3405095947a6c796c84d334edb..752f45dc2c0b737a5c26b5cd44d38e9029b369e8 100644 (file)
@@ -45,7 +45,7 @@ public class ClassificationPortalController extends BaseController<Classificatio
 \r
 \r
     private static final List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[]{\r
-            "reference.authorTeam",\r
+            "reference.authorship",\r
             "childNodes"\r
     });\r
 \r
index 8e59e100fc249a8531460cf306f865a3d2cb8987..8524b11a307ba41130116d337fe11d3b1c88b13e 100644 (file)
@@ -47,7 +47,7 @@ public class ClassificationPortalListController extends IdentifiableListControll
 \r
 \r
     private static final List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[]{\r
-            "reference.authorTeam"\r
+            "reference.authorship"\r
 \r
     });\r
 \r
index 189ac277fc14ba2c56d509a9e77d18bfe2ee6853..a8a270735a85c82b1d8bd22417317f6022796eef 100644 (file)
@@ -86,7 +86,7 @@ public class DescriptionController extends BaseController<DescriptionBase, IDesc
     protected static final List<String> TAXONDESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
             "$",
             "elements.$",
-            "elements.sources.citation.authorTeam",
+            "elements.sources.citation.authorship",
             "elements.sources.nameUsedInSource",
             "elements.multilanguageText",
             "elements.media",
index 5e4dcb965de93e96b8edc40fc761c2eabec224e2..19857cdf09cd4929a2cbb586ab30b80934195547 100644 (file)
@@ -67,7 +67,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
             "elements.annotations",\r
             "elements.markers",\r
             "elements.stateData.$",\r
-            "elements.sources.citation.authorTeam",\r
+            "elements.sources.citation.authorship",\r
             "elements.sources.nameUsedInSource",\r
             "elements.multilanguageText",\r
             "elements.media",\r
@@ -79,7 +79,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
             "annotations",\r
             "markers",\r
             "stateData.$",\r
-            "sources.citation.authorTeam",\r
+            "sources.citation.authorship",\r
             "sources.nameUsedInSource",\r
             "multilanguageText",\r
             "media",\r
index 35c07d378cc828f5fb9d61f22b10cda8b450ff1e..d612aee78769740fa568e07834416fd37ab38703 100644 (file)
@@ -86,7 +86,7 @@ public class DescriptionPortalController extends BaseController<DescriptionBase,
             "elements.$",\r
             "elements.multilanguageText.*",\r
             "elements.annotations",\r
-            "elements.sources.citation.authorTeam.$",\r
+            "elements.sources.citation.authorship.$",\r
             "elements.sources.nameUsedInSource",\r
             "elements.area.level",\r
             "elements.modifyingText",\r
@@ -102,13 +102,13 @@ public class DescriptionPortalController extends BaseController<DescriptionBase,
             "elements.$",\r
             "elements.annotations",\r
             "elements.markers",\r
-            "elements.sources.citation.authorTeam.$",\r
+            "elements.sources.citation.authorship.$",\r
             "elements.sources.nameUsedInSource",\r
             "elements.area.level",\r
     });\r
 \r
     protected static final List<String> DISTRIBUTION_INFO_INIT_STRATEGY = Arrays.asList(new String []{\r
-            "sources.citation.authorTeam.$",\r
+            "sources.citation.authorship.$",\r
             "sources.nameUsedInSource",\r
             "annotations"\r
     });\r
index e99fddceb7b9d75444945476f868a30c132928f1..9d0c4fe5d9e3d79d41b83e09401e16329598d861 100644 (file)
@@ -51,7 +51,7 @@ public class NameController extends BaseController<TaxonNameBase, INameService>
             "typeSpecimen",\r
             "typeName",\r
             "citation",\r
-            "citation.authorTeam.$",\r
+            "citation.authorship.$",\r
     });\r
 \r
     private static final List<String> NAME_CACHE_INIT_STRATEGY = Arrays.asList(new String []{\r
index 47e3386b66ccaddb1a805bea35fbca206c822f4a..0666d5ee42fea720b13941ede9126a50df9c62ea 100644 (file)
@@ -64,8 +64,8 @@ public class NamePortalController extends BaseController<TaxonNameBase, INameSer
             "typeName.$",\r
             "typeSpecimen",\r
             "typeStatus.representations",\r
-            "typifiedNames.nomenclaturalReference.authorTeam",\r
-            "citation.authorTeam.$",\r
+            "typifiedNames.nomenclaturalReference.authorship",\r
+            "citation.authorship.$",\r
             "typeSpecimen.media"\r
     });\r
 \r
index a95112bc75862aa9bc771399c9be40bd3ab46205..0faa965fec43de78bcb6550f641a5b8bd90aab83 100644 (file)
@@ -23,11 +23,14 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;\r
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RequestMethod;\r
+import org.springframework.web.bind.annotation.RequestParam;\r
 import org.springframework.web.servlet.ModelAndView;\r
 \r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.dto.DerivateHierarchyDTO;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 \r
 /**\r
@@ -97,6 +100,29 @@ public class OccurrencePortalController extends BaseController<SpecimenOrObserva
         return mv;\r
     }\r
 \r
+    @RequestMapping(value = { "derivateHierarchy" }, method = RequestMethod.GET)\r
+    public ModelAndView doGetDerivateHierarchy(\r
+            @PathVariable("uuid") UUID uuid,\r
+            @RequestParam(value = "taxonUuid", required = true) UUID taxonUuid,\r
+            HttpServletRequest request,\r
+            HttpServletResponse response) throws IOException {\r
+\r
+        logger.info("doGetDerivateHierarchy() " + request.getRequestURI());\r
+\r
+        ModelAndView mv = new ModelAndView();\r
+\r
+        List<String> initStrategy = DEFAULT_INIT_STRATEGY;\r
+\r
+        SpecimenOrObservationBase sob = service.load(uuid);\r
+        if(sob instanceof FieldUnit){\r
+            final DerivateHierarchyDTO assembleDerivateHierarchyDTO = service.assembleDerivateHierarchyDTO((FieldUnit)sob, taxonUuid);\r
+            if(assembleDerivateHierarchyDTO!=null){\r
+                mv.addObject(assembleDerivateHierarchyDTO);\r
+            }\r
+        }\r
+        return mv;\r
+    }\r
+\r
 \r
 \r
 }\r
index c30f75c73fc20762caee2042030afa637d476983..530374bb2c09e028ccd7d1f7267abfceadc19aa8 100644 (file)
@@ -47,19 +47,19 @@ public class ReferenceController extends BaseController<Reference, IReferenceSer
 \r
     private static final List<String> NOMENCLATURAL_CITATION_INIT_STRATEGY = Arrays.asList(new String []{\r
             "$",\r
-            "authorTeam",\r
+            "authorship",\r
             "inReference.inReference",\r
-            "inReference.authorTeam"\r
+            "inReference.authorship"\r
     });\r
 \r
-    private static final List<String> CITATION_WITH_AUTHORTEAM_INIT_STRATEGY = Arrays.asList(new String []{\r
-            "authorTeam.$"\r
+    private static final List<String> CITATION_WITH_AUTHORSHIP_INIT_STRATEGY = Arrays.asList(new String []{\r
+            "authorship.$"\r
     });\r
 \r
     public ReferenceController(){\r
         setInitializationStrategy(Arrays.asList(new String[]{\r
                 "$",\r
-                "authorTeam.$"\r
+                "authorship.$"\r
              }));\r
     }\r
 \r
@@ -101,16 +101,16 @@ public class ReferenceController extends BaseController<Reference, IReferenceSer
     }\r
 \r
     @RequestMapping(\r
-            value = {"authorTeam"},\r
+            value = {"authorship"},\r
             method = RequestMethod.GET)\r
-        public ModelAndView doGetAuthorTeam(\r
+        public ModelAndView doGetAuthorship(\r
                 @PathVariable("uuid") UUID uuid,\r
                 HttpServletRequest request,\r
                 HttpServletResponse response) {\r
         ModelAndView mv = new ModelAndView();\r
-        Reference rb = service.load(uuid, CITATION_WITH_AUTHORTEAM_INIT_STRATEGY);\r
-        if(rb.getAuthorTeam() != null){\r
-            mv.addObject(rb.getAuthorTeam());\r
+        Reference rb = service.load(uuid, CITATION_WITH_AUTHORSHIP_INIT_STRATEGY);\r
+        if(rb.getAuthorship() != null){\r
+            mv.addObject(rb.getAuthorship());\r
         }\r
         return mv;\r
     }\r
index 780fa4b921ce48b6331d9cc20b2daf68b6288861..3834d75c1160c77bf84d8ed74892f9a29113e809 100644 (file)
@@ -27,7 +27,7 @@ public class ReferencePortalController extends ReferenceController {
     public ReferencePortalController(){\r
         setInitializationStrategy(Arrays.asList(new String[]{\r
                 "$",\r
-                "authorTeam.*"\r
+                "authorship.*"\r
              }));\r
     }\r
 \r
index 59ea1a3998c7e3fb4cfd70a109dd08a6d50cc691..ec640e4c2453e81ef38282dab7cd5bc9789a125c 100644 (file)
@@ -13,6 +13,7 @@ package eu.etaxonomy.cdm.remote.controller;
 import java.io.IOException;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
+import java.util.Collection;\r
 import java.util.List;\r
 import java.util.Set;\r
 import java.util.UUID;\r
@@ -33,6 +34,7 @@ import org.springframework.web.servlet.ModelAndView;
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -59,9 +61,6 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
     private IOccurrenceService occurrenceService;\r
     @Autowired\r
     private INameService nameService;\r
-    @Autowired\r
-    private ITaxonService taxonService;\r
-\r
 \r
     protected static final List<String> TAXONNODE_INIT_STRATEGY = Arrays.asList(new String []{\r
             "taxonNodes"\r
@@ -158,7 +157,7 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
             HttpServletRequest request,\r
             HttpServletResponse response) throws IOException {\r
         logger.info("doGetClassifications(): " + request.getRequestURI());\r
-        TaxonBase taxonBase = service.load(uuid);\r
+        TaxonBase<?> taxonBase = service.load(uuid);\r
 \r
         if (taxonBase == null){\r
             HttpStatusMessage.UUID_NOT_FOUND.send(response);\r
@@ -172,7 +171,7 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
             @PathVariable("uuid") UUID uuid,\r
             HttpServletRequest request,\r
             HttpServletResponse response) throws IOException {\r
-        TaxonBase tb = service.load(uuid, TAXONNODE_INIT_STRATEGY);\r
+        TaxonBase<?> tb = service.load(uuid, TAXONNODE_INIT_STRATEGY);\r
         if(tb instanceof Taxon){\r
             return ((Taxon)tb).getTaxonNodes();\r
         } else {\r
@@ -191,14 +190,14 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
 \r
         ModelAndView mv = new ModelAndView();\r
 \r
-        TaxonBase tb = service.load(uuid);\r
+        TaxonBase<?> tb = service.load(uuid);\r
 \r
         List<OrderHint> orderHints = new ArrayList<OrderHint>();\r
         orderHints.add(new OrderHint("titleCache", SortOrder.DESCENDING));\r
 \r
         if(tb instanceof Taxon){\r
-            List<SpecimenOrObservationBase> specimensOrObersvations = occurrenceService.listByAssociatedTaxon(null, null, (Taxon)tb, null, null, null, orderHints, null);\r
-            mv.addObject(specimensOrObersvations);\r
+            List<SpecimenOrObservationBase<?>> specimensOrObservations = occurrenceService.listByAssociatedTaxon(null, null, (Taxon)tb, null, null, null, orderHints, null);\r
+            mv.addObject(specimensOrObservations);\r
         } else {\r
             HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response);\r
             return null;\r
@@ -207,16 +206,40 @@ public class TaxonController extends BaseController<TaxonBase, ITaxonService>
         return mv;\r
     }\r
 \r
-    @RequestMapping(value = "taggedName", method = RequestMethod.GET)\r
-    public ModelAndView doGetTaggedName(\r
+    @RequestMapping(value = "associatedFieldUnits", method = RequestMethod.GET)\r
+    public ModelAndView doGetFieldUnits(\r
             @PathVariable("uuid") UUID uuid,\r
             HttpServletRequest request,\r
             HttpServletResponse response) throws IOException {\r
+        logger.info("doGetFieldUnits() - " + request.getRequestURI());\r
+\r
+        ModelAndView mv = new ModelAndView();\r
+\r
+        TaxonBase<?> tb = service.load(uuid);\r
+\r
+        List<OrderHint> orderHints = new ArrayList<OrderHint>();\r
+        orderHints.add(new OrderHint("titleCache", SortOrder.DESCENDING));\r
+\r
+        if(tb instanceof Taxon){\r
+            Collection<FieldUnit> associatedFieldUnits = occurrenceService.listFieldUnitsByAssociatedTaxon(null, (Taxon)tb, null, null, null, orderHints, null);\r
+            mv.addObject(associatedFieldUnits);\r
+        } else {\r
+            HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response);\r
+            return null;\r
+        }\r
+\r
+        return mv;\r
+    }\r
+\r
+    @RequestMapping(value = "taggedName", method = RequestMethod.GET)\r
+    public ModelAndView doGetTaggedName(\r
+            @PathVariable("uuid") UUID uuid,\r
+            HttpServletRequest request) {\r
         logger.info("doGetDescriptionElementsByType() - " + request.getRequestURI());\r
 \r
         ModelAndView mv = new ModelAndView();\r
 \r
-        TaxonBase tb = service.load(uuid, Arrays.asList(new String[] {"name"}));\r
+        TaxonBase<?> tb = service.load(uuid, Arrays.asList(new String[] {"name"}));\r
         mv.addObject(nameService.getTaggedName(tb.getName().getUuid()));\r
         return mv;\r
     }\r
index 6304d4525cc07895fdd5a18b7e7fc4818090ddb0..b9c5dec3ad1609e1ba6fd5569256683291ce2932 100644 (file)
@@ -143,7 +143,7 @@ public class TaxonPortalController extends TaxonController
 //            "relationsToThisName.fromTaxon.name",\r
             // the name\r
             "name.$",\r
-            "name.nomenclaturalReference.authorTeam",\r
+            "name.nomenclaturalReference.authorship",\r
             "name.nomenclaturalReference.inReference",\r
             "name.rank.representations",\r
             "name.status.type.representations",\r
@@ -164,7 +164,7 @@ public class TaxonPortalController extends TaxonController
             "name.$",\r
             "name.rank.representations",\r
             "name.status.type.representations",\r
-            "name.nomenclaturalReference.authorTeam",\r
+            "name.nomenclaturalReference.authorship",\r
             "name.nomenclaturalReference.inReference",\r
             "taxonNodes.classification",\r
             });\r
@@ -174,7 +174,7 @@ public class TaxonPortalController extends TaxonController
             "synonymRelations.$",\r
             "synonymRelations.synonym.$",\r
             "synonymRelations.synonym.name.status.type.representation",\r
-            "synonymRelations.synonym.name.nomenclaturalReference.authorTeam",\r
+            "synonymRelations.synonym.name.nomenclaturalReference.authorship",\r
             "synonymRelations.synonym.name.nomenclaturalReference.inReference",\r
             "synonymRelations.synonym.name.homotypicalGroup.typifiedNames.$",\r
             "synonymRelations.synonym.name.homotypicalGroup.typifiedNames.taxonBases.$",\r
@@ -184,7 +184,7 @@ public class TaxonPortalController extends TaxonController
 \r
             "name.homotypicalGroup.$",\r
             "name.homotypicalGroup.typifiedNames.$",\r
-            "name.homotypicalGroup.typifiedNames.nomenclaturalReference.authorTeam",\r
+            "name.homotypicalGroup.typifiedNames.nomenclaturalReference.authorship",\r
             "name.homotypicalGroup.typifiedNames.nomenclaturalReference.inReference",\r
             "name.homotypicalGroup.typifiedNames.taxonBases.$"\r
     });\r
@@ -194,7 +194,7 @@ public class TaxonPortalController extends TaxonController
             "synonymRelations.$",\r
             "synonymRelations.synonym.$",\r
             "synonymRelations.synonym.name.status.type.representation",\r
-            "synonymRelations.synonym.name.nomenclaturalReference.authorTeam",\r
+            "synonymRelations.synonym.name.nomenclaturalReference.authorship",\r
             "synonymRelations.synonym.name.nomenclaturalReference.inReference",\r
             "synonymRelations.synonym.name.homotypicalGroup.typifiedNames.$",\r
             "synonymRelations.synonym.name.homotypicalGroup.typifiedNames.taxonBases.$",\r
@@ -202,7 +202,7 @@ public class TaxonPortalController extends TaxonController
 \r
             "name.homotypicalGroup.$",\r
             "name.homotypicalGroup.typifiedNames.$",\r
-            "name.homotypicalGroup.typifiedNames.nomenclaturalReference.authorTeam",\r
+            "name.homotypicalGroup.typifiedNames.nomenclaturalReference.authorship",\r
             "name.homotypicalGroup.typifiedNames.nomenclaturalReference.inReference",\r
 \r
             "name.homotypicalGroup.typifiedNames.taxonBases.$",\r
@@ -219,7 +219,7 @@ public class TaxonPortalController extends TaxonController
             "name.$",\r
             "name.rank.representations",\r
             "name.status.type.representations",\r
-            "name.nomenclaturalReference.authorTeam",\r
+            "name.nomenclaturalReference.authorship",\r
             "name.nomenclaturalReference.inReference",\r
 \r
             "taxonNodes.$",\r
@@ -241,10 +241,10 @@ public class TaxonPortalController extends TaxonController
             "$",\r
             "type.inverseRepresentations",\r
             "toName.$",\r
-            "toName.nomenclaturalReference.authorTeam",\r
+            "toName.nomenclaturalReference.authorship",\r
             "toName.nomenclaturalReference.inReference",\r
             "fromName.$",\r
-            "fromName.nomenclaturalReference.authorTeam",\r
+            "fromName.nomenclaturalReference.authorship",\r
             "fromName.nomenclaturalReference.inReference",\r
 \r
     });\r
@@ -254,7 +254,7 @@ public class TaxonPortalController extends TaxonController
             "$",\r
             "elements.$",\r
             "elements.stateData.$",\r
-            "elements.sources.citation.authorTeam",\r
+            "elements.sources.citation.authorship",\r
             "elements.sources.nameUsedInSource",\r
             "elements.multilanguageText",\r
             "elements.media",\r
@@ -269,7 +269,7 @@ public class TaxonPortalController extends TaxonController
 \r
     protected static final List<String> DESCRIPTION_ELEMENT_INIT_STRATEGY = Arrays.asList(new String []{\r
             "$",\r
-            "sources.citation.authorTeam",\r
+            "sources.citation.authorship",\r
             "sources.nameUsedInSource",\r
             "multilanguageText",\r
             "media",\r
@@ -291,7 +291,7 @@ public class TaxonPortalController extends TaxonController
 \r
     private static final List<String> TYPEDESIGNATION_INIT_STRATEGY = Arrays.asList(new String []{\r
             "typeSpecimen.$",\r
-            "citation.authorTeam.$",\r
+            "citation.authorship.$",\r
             "typeName",\r
             "typeStatus"\r
     });\r
index f1492e802cbce1ea83c637ea4360a12330b1ef2c..eac87862c68c3ea7e549e21cf2b15b74c4e53e56 100644 (file)
@@ -29,7 +29,7 @@ public class TaxonPortalListController extends TaxonListController {
             "name.$",
             "name.rank.representations",
             "name.status.type.representations",
-            "name.nomenclaturalReference.authorTeam",
+            "name.nomenclaturalReference.authorship",
             "name.nomenclaturalReference.inReference",
             "taxonNodes.classification",
             });
index f7285a2594a2e43d656cdeb152648ffa3e2477db..43a588b26b617589480d42a1bfca5873f1fd122f 100755 (executable)
@@ -219,13 +219,13 @@ public class NameCatalogueController extends AbstractController<TaxonNameBase, I
             "taxon.name",\r
             "classification",\r
             "classification.reference.$",\r
-            "classification.reference.authorTeam.$" });\r
+            "classification.reference.authorship.$" });\r
 \r
     /** Hibernate classification vocabulary initialisation strategy */\r
     private static final List<String> VOC_CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[] {\r
             "classification",\r
             "classification.reference.$",\r
-            "classification.reference.authorTeam.$" });\r
+            "classification.reference.authorship.$" });\r
 \r
     /** Hibernate classification vocabulary initialisation strategy */\r
     private static final List<String> COMMON_INIT_STRATEGY = Arrays.asList(new String[] {});\r
index 00fcaaf4571f66b60a87b9bbfe1e33318895e1e2..c33d8c06d2b0162c5dacbfb74861008f6c8a7d24 100644 (file)
@@ -38,7 +38,7 @@ public class ReferenceOaiPmhController extends AbstractOaiPmhController<Referenc
        protected List<String> getPropertyPaths() {\r
                return Arrays.asList(new String []{                     \r
                                "$",\r
-                               "inBook.authorTeam",\r
+                               "inBook.authorship",\r
                                "inJournal",\r
                                "inProceedings",\r
                });\r
index b9e5d144b56eeab7dc0797c34483ef81670b2024..90e14fea5842cf86edb505179f0d1afd1433dc77 100644 (file)
@@ -11,7 +11,7 @@ public class ReferenceBaseBeanProcessor extends
 
        @Override
        public List<String> getIgnorePropNames() {
-               //return Arrays.asList(new String[]{ "authorTeam" }); //FIXME ?????
+               //return Arrays.asList(new String[]{ "authorship" }); //FIXME ?????
                return null;
        }
 
index b137f79fe51112d44eec9a938eb80d38c9276d70..e0d04fcab4d335411c0c3fed871a2011ce6d3017 100644 (file)
@@ -308,7 +308,7 @@ public class DemoTaxonTable extends Table{
        protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
             "$",
             "elements.*",
-            "elements.sources.citation.authorTeam.$",
+            "elements.sources.citation.authorship.$",
             "elements.sources.nameUsedInSource.originalNameString",
             "elements.area.level",
             "elements.modifyingText",
index 62f345da0b1f145223c53553d8834a1e6f3bbc12..820aea6573e11037843c499644f013b2111b03a9 100644 (file)
@@ -141,7 +141,7 @@ public class TaxonTableDTO extends Table{
        protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
             "$",
             "elements.*",
-            "elements.sources.citation.authorTeam.$",
+            "elements.sources.citation.authorship.$",
             "elements.sources.nameUsedInSource.originalNameString",
             "elements.area.level",
             "elements.modifyingText",
index c5bd4680550613d452b3bfcd63f159913eadddb9..13a8489ebd9e252a88155443edcb64de006448dd 100644 (file)
@@ -232,7 +232,7 @@ public class BfnView extends CustomComponent implements View{
     protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
             "$",
             "elements.*",
-            "elements.sources.citation.authorTeam.$",
+            "elements.sources.citation.authorship.$",
             "elements.sources.nameUsedInSource.originalNameString",
             "elements.area.level",
             "elements.modifyingText",
index 8f308a16c5e0c0639429b4b63ce059150118ca44..d1b958ff9c271beb05bbcc0000fa78af4b725c3d 100644 (file)
@@ -561,7 +561,7 @@ public class DashBoardView extends CustomComponent implements View{
     protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
             "$",
             "elements.*",
-            "elements.sources.citation.authorTeam.$",
+            "elements.sources.citation.authorship.$",
             "elements.sources.nameUsedInSource.originalNameString",
             "elements.area.level",
             "elements.modifyingText",
@@ -613,7 +613,7 @@ public class DashBoardView extends CustomComponent implements View{
             "elements.$",
             "elements.states.*",
             "elements.inDescription",
-            "elements.sources.citation.authorTeam",
+            "elements.sources.citation.authorship",
             "elements.sources.nameUsedInSource.originalNameString",
             "elements.area.level",
             "elements.modifyingText",
index 37df1aed890e8e3efdfb7621fb4e1edd15cd9220..8b7186f0911fc5e9f4661f6a204cbc5ea4205292 100644 (file)
@@ -67,7 +67,7 @@
             <b>date</b>
         </field>
         <field custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="titleCache" >
-            <a>authorTeam</a>
+            <a>authorship</a>
             <b>creator</b>
         </field>
         <field>
index 034df31000d7e40a46bf7ee8ff39793d53a96ace..6caa695cfbe03f81a8fba7d03b75aea080d9a4e7 100644 (file)
@@ -82,7 +82,7 @@
             <a>sec</a>
             <b>publishedInCitation</b>
         </field>
-        <field type="one-way" custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="authorTeam">
+        <field type="one-way" custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="authorship">
             <a>sec</a>
             <b>accordingTo</b>
         </field>
index 1e6fa884721c32232ec54bb6938d78f8b2a3c5bc..63126a55c134f5c803c3c2524255dd52922adaa7 100644 (file)
@@ -13,7 +13,7 @@
             <a>sec</a>
             <b>publishedInCitationRelation</b>
         </field>
-        <field type="one-way" custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="authorTeam">
+        <field type="one-way" custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="authorship">
             <a>sec</a>
             <b>accordingToRelation</b>
         </field>
index ef67d5fbdcc8ed483a3f3583810f830b67a6c050..9a6af1d16bae848949d342ddea259dd3ea40ecfc 100644 (file)
@@ -84,7 +84,7 @@ public class AssemblerTest extends UnitilsJUnit4 {
     private IBook sec;
     private IBook book;
     private Reference<?> bookSection;
-    private TeamOrPersonBase<?> authorTeam;
+    private TeamOrPersonBase<?> authorship;
     private NonViralName<?> name;
     private LSID lsid;
     private TaxonDescription taxonDescription;
@@ -99,9 +99,9 @@ public class AssemblerTest extends UnitilsJUnit4 {
     public void setUp() throws Exception {
         lsid = new LSID("urn:lsid:example.org:taxonconcepts:1");
 
-        authorTeam = Person.NewInstance();
-        authorTeam.setTitleCache("authorTeam.titleCache", true);
-        authorTeam.setLsid(new LSID("urn:lsid:dagg.org:agents:2"));
+        authorship = Person.NewInstance();
+        authorship.setTitleCache("authorship.titleCache", true);
+        authorship.setLsid(new LSID("urn:lsid:dagg.org:agents:2"));
 
         name = BotanicalName.NewInstance(null);
         name.setNameCache("nameCache");
@@ -113,7 +113,7 @@ public class AssemblerTest extends UnitilsJUnit4 {
         name.setRank(Rank.SPECIES());
 
         sec = ReferenceFactory.newBook();
-        sec.setAuthorTeam(authorTeam);
+        sec.setAuthorship(authorship);
         sec.setTitleCache("sec.titleCache", true);
         sec.setLsid(new LSID("urn:lsid:example.org:references:1"));
 
@@ -154,7 +154,7 @@ public class AssemblerTest extends UnitilsJUnit4 {
 
         book = ReferenceFactory.newBook();
         book.setTitle("Book.title");
-        book.setAuthorTeam(authorTeam);
+        book.setAuthorship(authorship);
         book.setCreated(new DateTime(2004, 12, 25, 12, 0, 0, 0));
         book.setDatePublished(new TimePeriod(new Partial(DateTimeFieldType.year(), 1800)));
         book.setEdition("1st Edition");
@@ -172,13 +172,13 @@ public class AssemblerTest extends UnitilsJUnit4 {
         bookSection.setInReference((Reference<?>)book);
         bookSection.setPages("999 ff.");
         bookSection.setTitle("BookSection.title");
-        bookSection.setAuthorTeam(authorTeam);
+        bookSection.setAuthorship(authorship);
         bookSection.setCreated(new DateTime(2004, 12, 25, 12, 0, 0, 0));
         bookSection.setDatePublished(new TimePeriod(new Partial(DateTimeFieldType.year(), 1800)));
         bookSection.setReferenceAbstract("referenceAbstract");
         bookSection.setUri(new URI("http://persitent.books.foo/myBookSection"));
         bookSection.setUuid(UUID.randomUUID());
-        bookSection.addCredit(Credit.NewInstance(authorTeam, "Credits to the authorTeam"));
+        bookSection.addCredit(Credit.NewInstance(authorship, "Credits to the authorship"));
         bookSection.addSource(IdentifiableSource.NewDataImportInstance("http://persitent.IdentifiableSources.foo/2"));
     }
 
@@ -206,8 +206,8 @@ public class AssemblerTest extends UnitilsJUnit4 {
         assertEquals("CdmBase.created should be copied into BaseThing.created",new DateTime(2004, 12, 25, 12, 0, 0, 0),taxonConcept.getCreated());
         assertNotNull("TaxonBase.sec should be mapped into BaseThing.publishedInCitation",taxonConcept.getPublishedInCitation());
         assertEquals("TaxonBase.sec.titleCache should be mapped into BaseThing.publishedInCitation.title",sec.getTitleCache(),taxonConcept.getPublishedInCitation().getTitle());
-        assertNotNull("TaxonBase.sec.authorTeam should be mapped into TaxonConcept.accordingTo",taxonConcept.getAccordingTo());
-        assertEquals("TaxonBase.sec.authorTeam.titleCache should be mapped into TaxonConcept.accordingTo.title",authorTeam.getTitleCache(),taxonConcept.getAccordingTo().getTitle());
+        assertNotNull("TaxonBase.sec.authorship should be mapped into TaxonConcept.accordingTo",taxonConcept.getAccordingTo());
+        assertEquals("TaxonBase.sec.authorship.titleCache should be mapped into TaxonConcept.accordingTo.title",authorship.getTitleCache(),taxonConcept.getAccordingTo().getTitle());
         assertNotNull("TaxonBase.name should be mapped to TaxonConcept.hasName",taxonConcept.getHasName());
         assertEquals("NonViralName.nameCache should be mapped to TaxonName.nameComplete",name.getNameCache(),taxonConcept.getHasName().getNameComplete());
         assertNotNull("Taxon.relationsToThisTaxon should be copied into TaxonConcept.hasRelationship",taxonConcept.getHasRelationship());
index 6947c0e4ea2f5d03ae8c2c499eae2b40533971c7..201171a2fa343484b5cf05d92b8e09d57df9fdd7 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>cdmlib-parent</artifactId>
-    <version>3.3.8-SNAPSHOT</version>
+    <version>3.4.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
index b810b3cb4e9ef62ee9c90be5297eddb6735010b4..58a387c7b9ee70757e2cb4dbda41daa80fc3ce44 100644 (file)
@@ -22,6 +22,7 @@ import org.hibernate.search.spatial.impl.Rectangle;
 \r
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;\r
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;\r
+import eu.etaxonomy.cdm.api.service.dto.DerivateHierarchyDTO;\r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.api.service.search.SearchResult;\r
 import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;\r
@@ -202,6 +203,42 @@ public interface IOccurrenceService extends IIdentifiableEntityService<SpecimenO
     public <T extends SpecimenOrObservationBase> List<T> listByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships,\r
             Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
 \r
+    /**\r
+     * Lists all instances of {@link FieldUnit} which are\r
+     * associated <b>directly or indirectly</b>with the <code>taxon</code> specified\r
+     * as parameter. "Indirectly" means that a sub derivate of the FieldUnit is\r
+     * directly associated with the given taxon.\r
+     * SpecimenOrObservationBase instances can be associated to taxa in multiple\r
+     * ways, all these possible relations are taken into account:\r
+     * <ul>\r
+     * <li>The {@link IndividualsAssociation} elements in a\r
+     * {@link TaxonDescription} contain {@link DerivedUnit}s</li>\r
+     * <li>{@link SpecimenTypeDesignation}s may be associated with any\r
+     * {@link HomotypicalGroup} related to the specific {@link Taxon}.</li>\r
+     * <li>A {@link Taxon} may be referenced by the {@link DeterminationEvent}\r
+     * of the {@link SpecimenOrObservationBase}</li>\r
+     * </ul>\r
+     * Further more there also can be taxa which are associated with the taxon\r
+     * in question (parameter associatedTaxon) by {@link TaxonRelationship}s. If\r
+     * the parameter <code>includeRelationships</code> is containing elements,\r
+     * these according {@TaxonRelationshipType}s and\r
+     * directional information will be used to collect further\r
+     * {@link SpecimenOrObservationBase} instances found this way.\r
+     *\r
+     * @param <T>\r
+     * @param type\r
+     * @param associatedTaxon\r
+     * @param Set<TaxonRelationshipVector> includeRelationships. TaxonRelationships will not be taken into account if this is <code>NULL</code>.\r
+     * @param maxDepth TODO\r
+     * @param pageSize\r
+     * @param pageNumber\r
+     * @param orderHints\r
+     * @param propertyPaths\r
+     * @return\r
+     */\r
+    public Collection<FieldUnit> listFieldUnitsByAssociatedTaxon(Set<TaxonRelationshipEdge> includeRelationships,\r
+            Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+\r
     /**\r
      * See {@link #listByAssociatedTaxon(Class, Set, Taxon, Integer, Integer, Integer, List, List)}\r
      *\r
@@ -219,11 +256,12 @@ public interface IOccurrenceService extends IIdentifiableEntityService<SpecimenO
             Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
 \r
     /**\r
-     * Retrieves all {@link FieldUnit}s for the {@link DerivedUnit} with the given {@link UUID}.<br>\r
-     * @param derivedUnitUuid the UUID of the derived unit\r
-     * @return a collection of FieldUnits this DerivedUnit was derived from or an empty collection if no FieldUnits were found\r
+     * Retrieves all {@link FieldUnit}s for the {@link SpecimenOrObservationBase} with the given {@link UUID}.<br>\r
+     * @param specimenUuid the UUID of the specimen\r
+     * @return either a collection of FieldUnits this specimen was derived from, the FieldUnit itself\r
+     * if this was a FieldUnit or an empty collection if no FieldUnits were found\r
      */\r
-    public Collection<FieldUnit> getFieldUnits(UUID derivedUnitUuid);\r
+    public Collection<FieldUnit> getFieldUnits(UUID specimenUuid);\r
 \r
     /**\r
      * @param clazz\r
@@ -277,6 +315,16 @@ public interface IOccurrenceService extends IIdentifiableEntityService<SpecimenO
      */\r
     public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate);\r
 \r
+    /**\r
+     * Assembles a {@link DerivateHierarchyDTO} for the given field unit uuid which is associated to the {@link Taxon}.<br>\r
+     * <br>\r
+     * For the meaning of "associated" see also {@link #listFieldUnitsByAssociatedTaxon(Set, Taxon, Integer, Integer, Integer, List, List)}\r
+     * @param fieldUnit\r
+     * @param associatedTaxonUuid\r
+     * @return\r
+     */\r
+    public DerivateHierarchyDTO assembleDerivateHierarchyDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid);\r
+\r
     /**\r
      * Returns a collection of {@link ICdmBase}s that are not persisted via cascading when saving the given specimen (mostly DefinedTerms).\r
      * @param specimen the specimen that is checked for non-cascaded elements.\r
index 585ea7f5542a54217ad71ec3038302b56d9a8d56..5c67281adfb8adc5182ea66c3164bfc4ee187f95 100644 (file)
@@ -11,6 +11,7 @@
 package eu.etaxonomy.cdm.api.service;\r
 \r
 import java.io.IOException;\r
+import java.net.URI;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.Collection;\r
@@ -18,6 +19,7 @@ import java.util.HashMap;
 import java.util.HashSet;\r
 import java.util.List;\r
 import java.util.Map;\r
+import java.util.Map.Entry;\r
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
@@ -29,6 +31,7 @@ import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.SortField;\r
 import org.hibernate.TransientObjectException;\r
 import org.hibernate.search.spatial.impl.Rectangle;\r
+import org.joda.time.Partial;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Service;\r
 import org.springframework.transaction.annotation.Transactional;\r
@@ -36,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;\r
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;\r
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;\r
+import eu.etaxonomy.cdm.api.service.dto.DerivateHierarchyDTO;\r
 import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;\r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
@@ -50,6 +54,7 @@ import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.CdmBaseType;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
 import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.ICdmBase;\r
@@ -61,13 +66,19 @@ import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.location.Country;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
 import eu.etaxonomy.cdm.model.molecular.DnaSample;\r
 import eu.etaxonomy.cdm.model.molecular.Sequence;\r
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -75,7 +86,6 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
 import eu.etaxonomy.cdm.persistence.dao.initializer.AbstractBeanInitializer;\r
 import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;\r
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
 \r
@@ -110,9 +120,6 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
     @Autowired\r
     private AbstractBeanInitializer beanInitializer;\r
 \r
-    @Autowired\r
-    private ITaxonDao taxonDao;\r
-\r
     @Autowired\r
     private ILuceneIndexToolProvider luceneIndexToolProvider;\r
 \r
@@ -291,6 +298,232 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
         return pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths).getRecords();\r
     }\r
 \r
+    /* (non-Javadoc)\r
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listByAnyAssociation(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)\r
+     */\r
+    @Override\r
+    public Collection<FieldUnit> listFieldUnitsByAssociatedTaxon(Set<TaxonRelationshipEdge> includeRelationships,\r
+            Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+\r
+        if(!getSession().contains(associatedTaxon)){\r
+            associatedTaxon = (Taxon) taxonService.load(associatedTaxon.getUuid());\r
+        }\r
+\r
+        Set<FieldUnit> fieldUnits = new HashSet<FieldUnit>();\r
+\r
+        List<SpecimenOrObservationBase> records = pageByAssociatedTaxon(null, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths).getRecords();\r
+        for(SpecimenOrObservationBase<?> specimen:records){\r
+            fieldUnits.addAll(getFieldUnits(specimen.getUuid()));\r
+        }\r
+        return fieldUnits;\r
+    }\r
+\r
+    @Override\r
+    public DerivateHierarchyDTO assembleDerivateHierarchyDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid){\r
+\r
+        if(!getSession().contains(fieldUnit)){\r
+            fieldUnit = (FieldUnit) load(fieldUnit.getUuid());\r
+        }\r
+        TaxonBase associatedTaxon = taxonService.load(associatedTaxonUuid);\r
+\r
+        DerivateHierarchyDTO dto = new DerivateHierarchyDTO();\r
+        Map<UUID, TypeDesignationStatusBase> typeSpecimenUUIDtoTypeDesignationStatus = new HashMap<UUID, TypeDesignationStatusBase>();\r
+\r
+        //gather types for this taxon name\r
+        TaxonNameBase<?,?> name = associatedTaxon.getName();\r
+        Set<?> typeDesignations = name.getSpecimenTypeDesignations();\r
+        for (Object object : typeDesignations) {\r
+            if(object instanceof SpecimenTypeDesignation){\r
+                SpecimenTypeDesignation specimenTypeDesignation = (SpecimenTypeDesignation)object;\r
+                DerivedUnit typeSpecimen = specimenTypeDesignation.getTypeSpecimen();\r
+                final TypeDesignationStatusBase typeStatus = specimenTypeDesignation.getTypeStatus();\r
+                typeSpecimenUUIDtoTypeDesignationStatus.put(typeSpecimen.getUuid(), typeStatus);\r
+            }\r
+        }\r
+\r
+        if(fieldUnit.getGatheringEvent()!=null){\r
+            GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();\r
+            //Country\r
+            final NamedArea country = gatheringEvent.getCountry();\r
+            dto.setCountry(country!=null?country.getDescription():"");\r
+            //Collection\r
+            final AgentBase collector = gatheringEvent.getCollector();\r
+            final String fieldNumber = fieldUnit.getFieldNumber();\r
+            dto.setCollection(((collector!=null?collector:"") + " " + (fieldNumber!=null?fieldNumber:"")).trim());\r
+            //Date\r
+            final Partial gatheringDate = gatheringEvent.getGatheringDate();\r
+            dto.setDate(gatheringDate!=null?gatheringDate.toString():"");\r
+        }\r
+\r
+        //Taxon Name\r
+        dto.setTaxonName(associatedTaxon.getName().getFullTitleCache());\r
+\r
+\r
+        Collection<DerivedUnit> derivedUnits = new ArrayList<DerivedUnit>();\r
+        getDerivedUnitsFor(fieldUnit, derivedUnits);\r
+\r
+        //Herbaria map\r
+        Map<eu.etaxonomy.cdm.model.occurrence.Collection, Integer> collectionToCountMap = new HashMap<eu.etaxonomy.cdm.model.occurrence.Collection, Integer>();\r
+        //List of accession numbers for citation\r
+        List<String> preservedSpecimenAccessionNumbers = new ArrayList<String>();\r
+\r
+        //iterate over sub derivates\r
+        for (DerivedUnit derivedUnit : derivedUnits) {\r
+            //current accession number\r
+            String currentAccessionNumber = derivedUnit.getAccessionNumber()!=null?derivedUnit.getAccessionNumber():"";\r
+            //current herbarium\r
+            String currentHerbarium = "";\r
+            eu.etaxonomy.cdm.model.occurrence.Collection collection = derivedUnit.getCollection();\r
+            if(collection!=null){\r
+                currentHerbarium = collection.getCode()!=null?collection.getCode():"";\r
+                //count herbaria\r
+                Integer count = collectionToCountMap.get(collection);\r
+                if(count==null){\r
+                    count = 1;\r
+                }\r
+                else{\r
+                    count++;\r
+                }\r
+                collectionToCountMap.put(collection, count);\r
+            }\r
+            //check if derived unit is a type\r
+            if(typeSpecimenUUIDtoTypeDesignationStatus.keySet().contains(derivedUnit.getUuid())){\r
+                dto.setHasType(true);\r
+                TypeDesignationStatusBase typeDesignationStatus = typeSpecimenUUIDtoTypeDesignationStatus.get(derivedUnit.getUuid());\r
+                String typeStatus = typeDesignationStatus.getLabel();\r
+                dto.addTypes(typeStatus, currentAccessionNumber);\r
+            }\r
+            //assemble molecular data\r
+            if(derivedUnit instanceof DnaSample){//.getRecordBasis()==SpecimenOrObservationType.DnaSample){\r
+                dto.setHasDna(true);\r
+\r
+                DnaSample dna = (DnaSample)derivedUnit;\r
+                for(Sequence sequence:dna.getSequences()){\r
+                    final URI boldUri = sequence.getBoldUri();\r
+                    final DefinedTerm dnaMarker = sequence.getDnaMarker();\r
+                    dto.addMolecularData(boldUri!=null?boldUri.toString():"", dnaMarker!=null?dnaMarker.getLabel():"[no marker]");\r
+                }\r
+            }\r
+            //assemble media data\r
+            else if(derivedUnit instanceof MediaSpecimen){\r
+\r
+                MediaSpecimen media = (MediaSpecimen)derivedUnit;\r
+                String mediaUriString = getMediaUriString(media);\r
+                if(media.getKindOfUnit()!=null){\r
+                    if(media.getKindOfUnit().getUuid().equals(UUID.fromString("acda15be-c0e2-4ea8-8783-b9b0c4ad7f03"))){\r
+                        dto.setHasSpecimenScan(true);\r
+                        if(mediaUriString!=null){\r
+                            final String imageLinkText = currentHerbarium+" "+currentAccessionNumber;\r
+                            dto.addSpecimenScan(mediaUriString, !imageLinkText.equals(" ")?imageLinkText:"[no accession]");\r
+                        }\r
+                    }\r
+                    else if(media.getKindOfUnit().getUuid().equals(UUID.fromString("31eb8d02-bf5d-437c-bcc6-87a626445f34"))){\r
+                        dto.setHasDetailImage(true);\r
+                        if(mediaUriString!=null){\r
+                            String motif = "";\r
+                            if(media.getMediaSpecimen()!=null && media.getMediaSpecimen().getTitle()!=null){\r
+                                motif = media.getMediaSpecimen().getTitle().getText();\r
+                            }\r
+                            dto.addDetailImage(mediaUriString, motif!=null?motif:"[no motif]");\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            //assemble preserved specimen data\r
+            else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){\r
+                if(!currentAccessionNumber.isEmpty()){\r
+                    preservedSpecimenAccessionNumbers.add(currentAccessionNumber);\r
+                }\r
+            }\r
+        }\r
+\r
+        final String separator = ", ";\r
+        //assemble citation\r
+        String citation = "";\r
+        citation += !dto.getCountry().isEmpty()?dto.getCountry()+separator:"";\r
+        if(fieldUnit.getGatheringEvent()!=null){\r
+            if(fieldUnit.getGatheringEvent().getLocality()!=null){\r
+                citation += fieldUnit.getGatheringEvent().getLocality().getText();\r
+                citation += separator;\r
+            }\r
+            if(fieldUnit.getGatheringEvent().getExactLocation()!=null\r
+                    && fieldUnit.getGatheringEvent().getExactLocation().getLatitude()!=null\r
+                    && fieldUnit.getGatheringEvent().getExactLocation().getLongitude()!=null){\r
+                citation += fieldUnit.getGatheringEvent().getExactLocation().getLatitude().toString();\r
+                citation += separator;\r
+                citation += fieldUnit.getGatheringEvent().getExactLocation().getLongitude().toString();\r
+                citation += separator;\r
+            }\r
+        }\r
+        citation += !dto.getCollection().isEmpty()?dto.getCollection()+separator:"";\r
+        if(!preservedSpecimenAccessionNumbers.isEmpty()){\r
+            citation += "(";\r
+            for(String accessionNumber:preservedSpecimenAccessionNumbers){\r
+                if(!accessionNumber.isEmpty()){\r
+                    citation += accessionNumber+separator;\r
+                }\r
+            }\r
+            citation = removeTail(citation, separator);\r
+            citation += ")";\r
+        }\r
+        citation = removeTail(citation, separator);\r
+        dto.setCitation(citation);\r
+\r
+        //assemble herbaria string\r
+        String herbariaString = "";\r
+        for(Entry<eu.etaxonomy.cdm.model.occurrence.Collection, Integer> e:collectionToCountMap.entrySet()){\r
+            eu.etaxonomy.cdm.model.occurrence.Collection collection = e.getKey();\r
+            if(collection.getCode()!=null){\r
+                herbariaString += collection.getCode();\r
+            }\r
+            if(e.getValue()>1){\r
+                herbariaString += "("+e.getValue()+")";\r
+            }\r
+            herbariaString += separator;\r
+        }\r
+        herbariaString = removeTail(herbariaString, separator);\r
+        dto.setHerbarium(herbariaString);\r
+\r
+        return dto;\r
+    }\r
+\r
+\r
+    /**\r
+     * @param string\r
+     * @param tail\r
+     * @return\r
+     */\r
+    private String removeTail(String string, final String tail) {\r
+        if(string.endsWith(tail)){\r
+            string = string.substring(0, string.length()-tail.length());\r
+        }\r
+        return string;\r
+    }\r
+\r
+    private String getMediaUriString(MediaSpecimen mediaSpecimen){\r
+        String mediaUri = null;\r
+        Collection<MediaRepresentation> mediaRepresentations = mediaSpecimen.getMediaSpecimen().getRepresentations();\r
+        if(mediaRepresentations!=null && !mediaRepresentations.isEmpty()){\r
+            Collection<MediaRepresentationPart> mediaRepresentationParts = mediaRepresentations.iterator().next().getParts();\r
+            if(mediaRepresentationParts!=null && !mediaRepresentationParts.isEmpty()){\r
+                MediaRepresentationPart part = mediaRepresentationParts.iterator().next();\r
+                if(part.getUri()!=null){\r
+                    mediaUri = part.getUri().toASCIIString();\r
+                }\r
+            }\r
+        }\r
+        return mediaUri;\r
+    }\r
+\r
+    private void getDerivedUnitsFor(SpecimenOrObservationBase<?> specimen, Collection<DerivedUnit> derivedUnits){\r
+        for(DerivationEvent derivationEvent:specimen.getDerivationEvents()){\r
+            for(DerivedUnit derivative:derivationEvent.getDerivatives()){\r
+                derivedUnits.add(derivative);\r
+                getDerivedUnitsFor(derivative, derivedUnits);\r
+            }\r
+        }\r
+    }\r
+\r
 \r
     /* (non-Javadoc)\r
      * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)\r
@@ -307,7 +540,9 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
 //        Integer limit = PagerUtils.limitFor(pageSize);\r
 //        Integer start = PagerUtils.startFor(pageSize, pageNumber);\r
 \r
-        associatedTaxon = (Taxon) taxonDao.load(associatedTaxon.getUuid());\r
+        if(!getSession().contains(associatedTaxon)){\r
+            associatedTaxon = (Taxon) taxonService.load(associatedTaxon.getUuid());\r
+        }\r
 \r
         if(includeRelationships != null) {\r
             taxa = taxonService.listRelatedTaxa(associatedTaxon, includeRelationships, maxDepth, null, null, propertyPaths);\r
@@ -336,7 +571,7 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
             String taxonUUID, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
 \r
         UUID uuid = UUID.fromString(taxonUUID);\r
-        Taxon tax = (Taxon) taxonDao.load(uuid);\r
+        Taxon tax = (Taxon) taxonService.load(uuid);\r
        //TODO REMOVE NULL STATEMENT\r
 type=null;\r
         return pageByAssociatedTaxon( type,includeRelationships,tax, maxDepth, pageSize, pageNumber, orderHints, propertyPaths );\r
@@ -422,10 +657,15 @@ type=null;
         //from which this DerivedUnit was derived until all FieldUnits are found.\r
 \r
         //FIXME: use HQL queries to increase performance\r
+        SpecimenOrObservationBase<?> specimen = load(derivedUnitUuid);\r
+//        specimen = HibernateProxyHelper.deproxy(specimen, SpecimenOrObservationBase.class);\r
         Collection<FieldUnit> fieldUnits = new ArrayList<FieldUnit>();\r
-        SpecimenOrObservationBase derivedUnit = load(derivedUnitUuid);\r
-        if(derivedUnit instanceof DerivedUnit){\r
-            getFieldUnits((DerivedUnit) derivedUnit, fieldUnits);\r
+\r
+        if(specimen instanceof FieldUnit){\r
+            fieldUnits.add((FieldUnit) specimen);\r
+        }\r
+        else if(specimen instanceof DerivedUnit){\r
+            getFieldUnits((DerivedUnit) specimen, fieldUnits);\r
         }\r
         return fieldUnits;\r
     }\r
@@ -536,6 +776,77 @@ type=null;
         */\r
 \r
         Collection<ICdmBase> nonCascadedCdmEntities = new HashSet<ICdmBase>();\r
+\r
+        //Choose the correct entry point to traverse the graph (FieldUnit or DerivedUnit)\r
+\r
+        //FieldUnit\r
+        if(specimen instanceof FieldUnit){\r
+            nonCascadedCdmEntities.addAll(getFieldUnitNonCascadedAssociatedElements((FieldUnit)specimen));\r
+        }\r
+        //DerivedUnit\r
+        else if(specimen instanceof DerivedUnit){\r
+            DerivedUnit derivedUnit = (DerivedUnit)specimen;\r
+            if(derivedUnit.getDerivedFrom()!=null){\r
+                Collection<FieldUnit> fieldUnits = new ArrayList<FieldUnit>();\r
+                getFieldUnits(derivedUnit, fieldUnits);\r
+                for(FieldUnit fieldUnit:fieldUnits){\r
+                    nonCascadedCdmEntities.addAll(getFieldUnitNonCascadedAssociatedElements(fieldUnit));\r
+                }\r
+            }\r
+        }\r
+        return nonCascadedCdmEntities;\r
+    }\r
+\r
+    private Collection<ICdmBase> getFieldUnitNonCascadedAssociatedElements(FieldUnit fieldUnit){\r
+        //get non cascaded element on SpecimenOrObservationBase level\r
+        Collection<ICdmBase> nonCascadedCdmEntities = getSpecimenOrObservationNonCascadedAssociatedElements(fieldUnit);\r
+\r
+        //get FieldUnit specific elements\r
+        GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();\r
+        if(gatheringEvent!=null){\r
+            //country\r
+            if(gatheringEvent.getCountry()!=null){\r
+                nonCascadedCdmEntities.add(gatheringEvent.getCountry());\r
+            }\r
+            //collecting areas\r
+            for (NamedArea namedArea : gatheringEvent.getCollectingAreas()) {\r
+                nonCascadedCdmEntities.add(namedArea);\r
+            }\r
+        }\r
+        for (DerivationEvent derivationEvent : fieldUnit.getDerivationEvents()) {\r
+            for (DerivedUnit derivedUnit : derivationEvent.getDerivatives()) {\r
+                nonCascadedCdmEntities.addAll(getDerivedUnitNonCascadedAssociatedElements(derivedUnit));\r
+            }\r
+        }\r
+        return nonCascadedCdmEntities;\r
+    }\r
+\r
+    private Collection<ICdmBase> getDerivedUnitNonCascadedAssociatedElements(DerivedUnit derivedUnit){\r
+        //get non cascaded element on SpecimenOrObservationBase level\r
+        Collection<ICdmBase> nonCascadedCdmEntities = getSpecimenOrObservationNonCascadedAssociatedElements(derivedUnit);\r
+\r
+        //get DerivedUnit specific elements\r
+        if(derivedUnit.getCollection()!=null && derivedUnit.getCollection().getInstitute()!=null){\r
+            for (DefinedTerm type : derivedUnit.getCollection().getInstitute().getTypes()) {\r
+                nonCascadedCdmEntities.add(type);\r
+            }\r
+        }\r
+        if(derivedUnit.getPreservation()!=null && derivedUnit.getPreservation().getMedium()!=null){\r
+            nonCascadedCdmEntities.add(derivedUnit.getPreservation().getMedium());\r
+        }\r
+        if(derivedUnit.getStoredUnder()!=null){\r
+            nonCascadedCdmEntities.add(derivedUnit.getStoredUnder());\r
+        }\r
+        return nonCascadedCdmEntities;\r
+    }\r
+\r
+    /**\r
+     * @param specimen\r
+     * @return\r
+     */\r
+    private Collection<ICdmBase> getSpecimenOrObservationNonCascadedAssociatedElements(\r
+            SpecimenOrObservationBase<?> specimen) {\r
+        Collection<ICdmBase> nonCascadedCdmEntities = new HashSet<ICdmBase>();\r
         //scan SpecimenOrObservationBase\r
         for(DeterminationEvent determinationEvent:specimen.getDeterminations()){\r
             //modifier\r
@@ -555,43 +866,6 @@ type=null;
         if(specimen.getSex()!=null){\r
             nonCascadedCdmEntities.add(specimen.getSex());\r
         }\r
-\r
-        //FieldUnit\r
-        if(specimen instanceof FieldUnit){\r
-            FieldUnit fieldUnit = (FieldUnit)specimen;\r
-            GatheringEvent gatheringEvent = fieldUnit.getGatheringEvent();\r
-            if(gatheringEvent!=null){\r
-                //country\r
-                if(gatheringEvent.getCountry()!=null){\r
-                    nonCascadedCdmEntities.add(gatheringEvent.getCountry());\r
-                }\r
-                //collecting areas\r
-                for (NamedArea namedArea : gatheringEvent.getCollectingAreas()) {\r
-                    nonCascadedCdmEntities.add(namedArea);\r
-                }\r
-            }\r
-            for (DerivationEvent derivationEvent : fieldUnit.getDerivationEvents()) {\r
-                for (DerivedUnit derivedUnit : derivationEvent.getDerivatives()) {\r
-                    nonCascadedCdmEntities.addAll(getNonCascadedAssociatedElements(derivedUnit));\r
-                }\r
-            }\r
-        }\r
-\r
-        //DerivedUnit\r
-        else if(specimen instanceof DerivedUnit){\r
-            DerivedUnit derivedUnit = (DerivedUnit)specimen;\r
-            if(derivedUnit.getCollection()!=null && derivedUnit.getCollection().getInstitute()!=null){\r
-                for (DefinedTerm type : derivedUnit.getCollection().getInstitute().getTypes()) {\r
-                    nonCascadedCdmEntities.add(type);\r
-                }\r
-            }\r
-            if(derivedUnit.getPreservation()!=null && derivedUnit.getPreservation().getMedium()!=null){\r
-                nonCascadedCdmEntities.add(derivedUnit.getPreservation().getMedium());\r
-            }\r
-            if(derivedUnit.getStoredUnder()!=null){\r
-                nonCascadedCdmEntities.add(derivedUnit.getStoredUnder());\r
-            }\r
-        }\r
         return nonCascadedCdmEntities;\r
     }\r
 \r
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/DerivateHierarchyDTO.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/DerivateHierarchyDTO.java
new file mode 100644 (file)
index 0000000..0529d90
--- /dev/null
@@ -0,0 +1,251 @@
+package eu.etaxonomy.cdm.api.service.dto;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.hibernate.envers.tools.Pair;
+
+public class DerivateHierarchyDTO {
+
+       //Filter Flags
+       private boolean hasDna;
+       private boolean hasDetailImage;
+
+       //Row Attributes
+       private String country;
+       private String collection;
+       private String date;
+       private String herbarium;
+       private boolean hasType;
+       private boolean hasSpecimenScan;
+
+       //Detail pop-down
+       private String taxonName;
+       private String protologue;
+       private String citation;
+       private Map<String, List<String>> types;
+       private List<Pair<String, String>> specimenScans;
+       private List<Pair<String, String>> molecularData;
+       private List<Pair<String, String>> detailImages;
+    /**
+     * @return the hasDna
+     */
+    public boolean isHasDna() {
+        return hasDna;
+    }
+    /**
+     * @param hasDna the hasDna to set
+     */
+    public void setHasDna(boolean hasDna) {
+        this.hasDna = hasDna;
+    }
+    /**
+     * @return the hasDetailImage
+     */
+    public boolean isHasDetailImage() {
+        return hasDetailImage;
+    }
+    /**
+     * @param hasDetailImage the hasDetailImage to set
+     */
+    public void setHasDetailImage(boolean hasDetailImage) {
+        this.hasDetailImage = hasDetailImage;
+    }
+    /**
+     * @return the country
+     */
+    public String getCountry() {
+        return country;
+    }
+    /**
+     * @param country the country to set
+     */
+    public void setCountry(String country) {
+        this.country = country;
+    }
+    /**
+     * @return the collection
+     */
+    public String getCollection() {
+        return collection;
+    }
+    /**
+     * @param collection the collection to set
+     */
+    public void setCollection(String collection) {
+        this.collection = collection;
+    }
+    /**
+     * @return the date
+     */
+    public String getDate() {
+        return date;
+    }
+    /**
+     * @param date the date to set
+     */
+    public void setDate(String date) {
+        this.date = date;
+    }
+    /**
+     * @return the herbarium
+     */
+    public String getHerbarium() {
+        return herbarium;
+    }
+    /**
+     * @param herbarium the herbarium to set
+     */
+    public void setHerbarium(String herbarium) {
+        this.herbarium = herbarium;
+    }
+    /**
+     * @return the hasType
+     */
+    public boolean isHasType() {
+        return hasType;
+    }
+    /**
+     * @param hasType the hasType to set
+     */
+    public void setHasType(boolean hasType) {
+        this.hasType = hasType;
+    }
+    /**
+     * @return the hasSpecimenScan
+     */
+    public boolean isHasSpecimenScan() {
+        return hasSpecimenScan;
+    }
+    /**
+     * @param hasSpecimenScan the hasSpecimenScan to set
+     */
+    public void setHasSpecimenScan(boolean hasSpecimenScan) {
+        this.hasSpecimenScan = hasSpecimenScan;
+    }
+    /**
+     * @return the taxonName
+     */
+    public String getTaxonName() {
+        return taxonName;
+    }
+    /**
+     * @param taxonName the taxonName to set
+     */
+    public void setTaxonName(String taxonName) {
+        this.taxonName = taxonName;
+    }
+    /**
+     * @return the protologue
+     */
+    public String getProtologue() {
+        return protologue;
+    }
+    /**
+     * @param protologue the protologue to set
+     */
+    public void setProtologue(String protologue) {
+        this.protologue = protologue;
+    }
+    /**
+     * @return the citation
+     */
+    public String getCitation() {
+        return citation;
+    }
+    /**
+     * @param citation the citation to set
+     */
+    public void setCitation(String citation) {
+        this.citation = citation;
+    }
+
+    /**
+     * @param types the types to set
+     */
+    public void setTypes(Map<String, List<String>> types) {
+        this.types = types;
+    }
+    /**
+     * @return the types
+     */
+    public Map<String, List<String>> getTypes() {
+        return types;
+    }
+    public void addTypes(String typeStatus, String accessionNumber){
+        if(types==null){
+            types = new HashMap<String, List<String>>();
+        }
+        List<String> list = types.get(typeStatus);
+        if(list==null){
+            list = new ArrayList<String>();
+        }
+        list.add(accessionNumber);
+        types.put(typeStatus, list);
+    }
+
+    /**
+     * @param specimenScans the specimenScans to set
+     */
+    public void setSpecimenScans(List<Pair<String, String>> specimenScans) {
+        this.specimenScans = specimenScans;
+    }
+    /**
+     * @return the specimenScans
+     */
+    public List<Pair<String, String>> getSpecimenScans() {
+        return specimenScans;
+    }
+
+    public void addSpecimenScan(String uri, String herbarium){
+        if(specimenScans==null){
+            specimenScans = new ArrayList<Pair<String,String>>();
+        }
+        specimenScans.add(new Pair<String, String>(uri, herbarium));
+    }
+
+    /**
+     * @return the molecularData
+     */
+    public List<Pair<String, String>> getMolecularData() {
+        return molecularData;
+    }
+
+    /**
+     * @param molecularData the molecularData to set
+     */
+    public void setMolecularData(List<Pair<String, String>> molecularData) {
+        this.molecularData = molecularData;
+    }
+
+    public void addMolecularData(String uri, String marker){
+        if(molecularData==null){
+            molecularData = new ArrayList<Pair<String,String>>();
+        }
+        molecularData.add(new Pair<String, String>(uri, marker));
+    }
+
+    /**
+     * @return the detailImages
+     */
+    public List<Pair<String, String>> getDetailImages() {
+        return detailImages;
+    }
+    /**
+     * @param detailImages the detailImages to set
+     */
+    public void setDetailImages(List<Pair<String, String>> detailImages) {
+        this.detailImages = detailImages;
+    }
+
+    public void addDetailImage(String uri, String motif){
+        if(detailImages==null){
+            detailImages = new ArrayList<Pair<String,String>>();
+        }
+        detailImages.add(new Pair<String, String>(uri, motif));
+    }
+
+
+}
index e9902c79a034ecaeeff987f3b0f2ef2a11323fbd..e7f6589899c8e09dc25e6cd047ac45ddec4f0ad0 100644 (file)
@@ -85,7 +85,7 @@ public class CommonServiceImplTest extends CdmIntegrationTest {
                Person author = Person.NewInstance();\r
                author.setTitleCache("Author", true);\r
                ref1.addAnnotation(Annotation.NewInstance("A1", Language.DEFAULT()));\r
-               ref1.setAuthorTeam(author);\r
+               ref1.setAuthorship(author);\r
                name.setBasionymAuthorTeam(author);\r
 \r
                name.setNomenclaturalReference(ref1);\r
index b895d271adc0cda7e10927cf331f3e2a16c83b48..ce381517908f1ca046f8d88f4272150ea67fb4e3 100644 (file)
@@ -99,6 +99,7 @@ public class OccurenceServiceTest extends CdmTransactionalIntegrationTest {
         BotanicalName storedUnder = BotanicalName.NewInstance(Rank.SPECIES());
         mediaSpecimen.setStoredUnder(storedUnder);
         PreservationMethod preservation = PreservationMethod.NewInstance(null, "My preservation");
+        preservation.setMedium(DefinedTerm.NewDnaMarkerInstance("medium", "medium", "medium"));//dummy defined term
         mediaSpecimen.setPreservation(preservation);
 
         //DerivationEvent
@@ -106,7 +107,6 @@ public class OccurenceServiceTest extends CdmTransactionalIntegrationTest {
         event.addOriginal(fieldUnit);
         event.addDerivative(mediaSpecimen);
 
-
         //SpecOrObservationBase
         fieldUnit.setSex(DefinedTerm.SEX_FEMALE());
         fieldUnit.setLifeStage(DefinedTerm.NewStageInstance("Live stage", "stage", null));
@@ -120,8 +120,23 @@ public class OccurenceServiceTest extends CdmTransactionalIntegrationTest {
         Reference<?> reference = getReference();
         determinationEvent.addReference(reference);
 
-        //save specimen
-        assertEquals("Incorrect number of non cascaded CDM entities", 8, occurrenceService.getNonCascadedAssociatedElements(fieldUnit).size());
+        /*NonCascaded
+         * SOOB
+         *  - sex (FEMALE)
+         *  - stage (Live stage)
+         *  - kindOfUnit (Kind of unit)
+         * GatheringEvent
+         *  - country (GERMANY)
+         *  - collectingArea (EUROPE)
+         *  DerivedUnit
+         *  - storedUnder (botanical name)
+         *  DerivedUnit-> Collection -> institiute
+         *  - type (botanical garden)
+         *
+         * */
+
+        assertEquals("Incorrect number of non cascaded CDM entities", 9, occurrenceService.getNonCascadedAssociatedElements(fieldUnit).size());
+        assertEquals("Incorrect number of non cascaded CDM entities", 9, occurrenceService.getNonCascadedAssociatedElements(mediaSpecimen).size());
 
     }
     private Reference<?> getReference() {
index 9bf5042d21ece040b0a82a073b5b72505931d105..9a5f4cfffa03e4702de11869a37c495d1fc08df1 100644 (file)
@@ -36,9 +36,9 @@ import org.junit.Test;
 import org.unitils.dbunit.annotation.DataSet;\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
+import eu.etaxonomy.cdm.api.cache.MockCdmCacher;\r
 import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;\r
 import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;\r
-import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;\r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
 import eu.etaxonomy.cdm.api.service.search.ICdmMassIndexer;\r
 import eu.etaxonomy.cdm.api.service.search.LuceneMultiSearchException;\r
@@ -46,7 +46,6 @@ import eu.etaxonomy.cdm.api.service.search.SearchResult;
 import eu.etaxonomy.cdm.common.UTF8;\r
 import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
-import eu.etaxonomy.cdm.api.cache.MockCdmCacher;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
index 435c5f005202d0925c241e2a68ad7d836cd4c9c1..4f0fbdcf2f8435287324bbbc9f6c277613e8bf3b 100644 (file)
@@ -63,7 +63,7 @@ public class Datasource {
        \r
        private void testNewConfigControler(){\r
                List<CdmPersistentDataSource> lsDataSources = CdmPersistentDataSource.getAllDataSources();\r
-               DbSchemaValidation schema = DbSchemaValidation.VALIDATE;\r
+               DbSchemaValidation schema = DbSchemaValidation.CREATE;\r
                System.out.println(lsDataSources);\r
                ICdmDataSource dataSource;\r
                \r
@@ -71,7 +71,7 @@ public class Datasource {
 //             DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;\r
                \r
                String server = "localhost";\r
-               String database = "cdm_test";\r
+               String database = "cdm34";\r
 //             String database = "test";\r
                String username = "edit";\r
                dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));\r
@@ -120,12 +120,12 @@ public class Datasource {
                \r
        \r
                \r
-               try {\r
-                       CdmUpdater updater = new CdmUpdater();\r
-                       updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());\r
-               } catch (Exception e) {\r
-//                     xx;\r
-               }\r
+//             try {\r
+//                     CdmUpdater updater = new CdmUpdater();\r
+//                     updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());\r
+//             } catch (Exception e) {\r
+////                   xx;\r
+//             }\r
                \r
                //CdmPersistentDataSource.save(dataSource.getName(), dataSource);\r
                CdmApplicationController appCtr;\r
index bf373e815b6e838da50f045133f49503512122a6..2c82f6cc916aac29e3fb4f072513bc3a5c8ae910 100644 (file)
@@ -185,6 +185,20 @@ CREATE CACHED TABLE PUBLIC.AGENTBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER(
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.AGENTBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    AGENTBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AGENTBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.AGENTBASE_MARKER(
     AGENTBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -485,6 +499,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION(
     PROTECTEDTITLECACHE BOOLEAN NOT NULL,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -507,6 +524,9 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_AUD(
     PROTECTEDTITLECACHE BOOLEAN,
     TITLECACHE VARCHAR(255),
     MICROREFERENCE VARCHAR(255),
+    TIMEPERIOD_START VARCHAR(255),
+    TIMEPERIOD_FREETEXT VARCHAR(255),
+    TIMEPERIOD_END VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     NAME_ID INTEGER,
@@ -540,6 +560,22 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_CREDIT_AUD;
+
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+       DESCRIPTION_ID INTEGER NOT NULL,
+       DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_DESCRIPTION_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    DESCRIPTION_ID INTEGER NOT NULL,
+    DESCRIPTION_MAPKEY_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_DESCRIPTION_AUD;
+
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION(
     CLASSIFICATION_ID INTEGER NOT NULL,
     EXTENSIONS_ID INTEGER NOT NULL
@@ -552,6 +588,32 @@ CREATE CACHED TABLE PUBLIC.CLASSIFICATION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_GEOSCOPE_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    GEOSCOPES_ID INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_GEOSCOPE_AUD;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER(
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.CLASSIFICATION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    CLASSIFICATION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.CLASSIFICATION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.CLASSIFICATION_MARKER(
     CLASSIFICATION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -674,6 +736,20 @@ CREATE CACHED TABLE PUBLIC.COLLECTION_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER(
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.COLLECTION_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    COLLECTION_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.COLLECTION_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.COLLECTION_MARKER(
     COLLECTION_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -922,6 +998,22 @@ CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_EXTENSION_AUD;
+                                                                                                     
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER(
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DEFINEDTERMBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DEFINEDTERMBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DEFINEDTERMBASE_MARKER(
     DEFINEDTERMBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1180,6 +1272,22 @@ CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER(
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    DESCRIPTIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_FEATURE(
     DESCRIPTIONBASE_ID INTEGER NOT NULL,
     DESCRIPTIVESYSTEM_ID INTEGER NOT NULL
@@ -1504,6 +1612,69 @@ CREATE CACHED TABLE PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.DETERMINATIONEVENT_REFERENCE_AUD;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY(
+    ID INTEGER NOT NULL,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY;
+CREATE CACHED TABLE PUBLIC.DNAQUALITY_AUD(
+    ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    CREATED TIMESTAMP,
+    UUID VARCHAR(36) NOT NULL,
+    UPDATED TIMESTAMP,
+    PURIFICATIONMETHOD VARCHAR(255),
+    RATIOOFABSORBANCE260_230 DOUBLE,
+    RATIOOFABSORBANCE260_280 DOUBLE,
+    QUALITYCHECKDATE TIMESTAMP,
+    CONCENTRATION DOUBLE,
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CONCENTRATIONUNIT_ID INTEGER,
+    QUALITYTERM_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DNAQUALITY_AUD;
+CREATE CACHED TABLE PUBLIC.ENTITYVALIDATIONRESULT(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    VALIDATEDENTITYID INTEGER,
+    VALIDATEDENTITYUUID VARCHAR(36),
+    VALIDATEDENTITYCLASS VARCHAR(255),
+    USERFRIENDLYDESCRIPTION VARCHAR(255),
+    USERFRIENDLYTYPENAME VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    CRUDEVENTTYPE VARCHAR(24)
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYVALIDATIONRESULT;
+CREATE CACHED TABLE PUBLIC.ENTITYCONSTRAINTVIOLATION(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    PROPERTYPATH VARCHAR(255),
+    USERFRIENDLYFIELDNAME VARCHAR(255),
+    INVALIDVALUE VARCHAR(255),
+    SEVERITY VARCHAR(24),
+    MESSAGE VARCHAR(255),
+    VALIDATOR VARCHAR(255),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+    ENTITYVALIDATIONRESULT_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ENTITYCONSTRAINTVIOLATION;
 CREATE CACHED TABLE PUBLIC.EXTENSION(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
@@ -1658,6 +1829,20 @@ CREATE CACHED TABLE PUBLIC.FEATURETREE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER(
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.FEATURETREE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    FEATURETREE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.FEATURETREE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.FEATURETREE_MARKER(
     FEATURETREE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -1808,7 +1993,7 @@ CREATE CACHED TABLE PUBLIC.GRANTEDAUTHORITYIMPL(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    AUTHORITY VARCHAR(255),
+    AUTHORITY VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.GRANTEDAUTHORITYIMPL;
@@ -1922,6 +2107,34 @@ CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING(
     DESCRIPTION_MAPKEY_ID INTEGER NOT NULL
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER(
+    ID INTEGER NOT NULL,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.IDENTIFIER_AUD(
+       ID INTEGER NOT NULL,
+    REV INTEGER NOT NULL,
+    REVTYPE TINYINT,
+    UUID VARCHAR(36),
+    CREATED TIMESTAMP,
+    UPDATED TIMESTAMP,
+    IDENTIFIEDOBJ_TYPE VARCHAR(255),
+    IDENTIFIEDOBJ_ID INTEGER,
+    IDENTIFIER VARCHAR(800),
+    CREATEDBY_ID INTEGER,
+    UPDATEDBY_ID INTEGER,
+       TYPE_ID INTEGER  
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.INDIVIDUALASSOCIATION_LANGUAGESTRING_AUD(
     REV INTEGER NOT NULL,
     DESCRIPTIONELEMENTBASE_ID INTEGER NOT NULL,
@@ -2387,6 +2600,20 @@ CREATE CACHED TABLE PUBLIC.MEDIA_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER(
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.MEDIA_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    MEDIA_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.MEDIA_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.MEDIA_LANGUAGESTRING(
     MEDIA_ID INTEGER NOT NULL,
     TITLE_ID INTEGER NOT NULL,
@@ -2689,7 +2916,7 @@ CREATE CACHED TABLE PUBLIC.PERMISSIONGROUP(
     ID INTEGER NOT NULL,
     CREATED TIMESTAMP,
     UUID VARCHAR(36),
-    NAME VARCHAR(255),
+    NAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.PERMISSIONGROUP;
@@ -2828,6 +3055,20 @@ CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER(
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    POLYTOMOUSKEY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.POLYTOMOUSKEY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.POLYTOMOUSKEY_MARKER(
     POLYTOMOUSKEY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -2919,10 +3160,11 @@ CREATE TABLE PRIMER (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+       SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER,
     PRIMARY KEY (ID)
 );
 CREATE TABLE PRIMER_AUD (
@@ -2931,10 +3173,11 @@ CREATE TABLE PRIMER_AUD (
     UUID VARCHAR(36),
     UPDATED TIMESTAMP,
     LABEL VARCHAR(255),
+    SEQUENCE_LENGTH INTEGER,
+    SEQUENCE_STRING CLOB,
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
     PUBLISHEDIN_ID INTEGER,
-    SEQUENCE_ID INTEGER
 );
 
 CREATE TABLE PRIMER_ANNOTATION (
@@ -2988,7 +3231,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     PROBLEMSTARTS INTEGER NOT NULL,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -2999,7 +3241,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3038,7 +3280,6 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     PROBLEMSTARTS INTEGER,
     PUBLISHER VARCHAR(255),
     REFERENCEABSTRACT CLOB,
-    SERIES VARCHAR(255),
     SERIESPART VARCHAR(255),
     TITLE CLOB,
     ABBREVTITLE VARCHAR(255),
@@ -3049,7 +3290,7 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_AUD(
     VOLUME VARCHAR(255),
     CREATEDBY_ID INTEGER,
     UPDATEDBY_ID INTEGER,
-    AUTHORTEAM_ID INTEGER,
+    AUTHORSHIP_ID INTEGER,
     INREFERENCE_ID INTEGER,
     INSTITUTION_ID INTEGER,
     SCHOOL_ID INTEGER
@@ -3093,6 +3334,20 @@ CREATE CACHED TABLE PUBLIC.REFERENCE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER(
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.REFERENCE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    REFERENCE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.REFERENCE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.REFERENCE_MARKER(
     REFERENCE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -3441,6 +3696,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3454,7 +3710,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE;
 CREATE INDEX PUBLIC.SPECIMENOROBSERVATIONBASETITLECACHEINDEX ON PUBLIC.SPECIMENOROBSERVATIONBASE(TITLECACHE);
@@ -3481,6 +3738,7 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     CATALOGNUMBER VARCHAR(255),
     COLLECTORSNUMBER VARCHAR(255),
     EXSICCATUM VARCHAR(255),
+    ORIGINALLABELINFO CLOB,
     FIELDNOTES VARCHAR(255),
     FIELDNUMBER VARCHAR(255),
     CREATEDBY_ID INTEGER,
@@ -3494,7 +3752,8 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD(
     PRESERVATION_ID INTEGER,
     GATHERINGEVENT_ID INTEGER,
     PRIMARYCOLLECTOR_ID INTEGER,
-    MEDIASPECIMEN_ID INTEGER
+    MEDIASPECIMEN_ID INTEGER,
+    DNAQUALITY_ID INTEGER
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_AUD;
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION(
@@ -3547,6 +3806,22 @@ CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_EXTENSION_AUD;
+
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER(
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.SPECIMENOROBSERVATIONBASE_IDENTIFIER_AUD;
+
 CREATE CACHED TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_LANGUAGESTRING(
     SPECIMENOROBSERVATIONBASE_ID INTEGER NOT NULL,
     DEFINITION_ID INTEGER NOT NULL,
@@ -3852,6 +4127,20 @@ CREATE CACHED TABLE PUBLIC.TAXONBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER(
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONBASE_MARKER(
     TAXONBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4045,6 +4334,20 @@ CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER(
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TAXONNAMEBASE_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNAMEBASE_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TAXONNAMEBASE_MARKER(
     TAXONNAMEBASE_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4305,6 +4608,20 @@ CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_EXTENSION_AUD(
     REVTYPE TINYINT
 );
 -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_EXTENSION_AUD;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER(
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER;
+CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD(
+    REV INTEGER NOT NULL,
+    TERMVOCABULARY_ID INTEGER NOT NULL,
+    IDENTIFIERS_ID INTEGER NOT NULL,
+    SORTINDEX INTEGER NOT NULL,
+    REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMVOCABULARY_IDENTIFIER_AUD;
 CREATE CACHED TABLE PUBLIC.TERMVOCABULARY_MARKER(
     TERMVOCABULARY_ID INTEGER NOT NULL,
     MARKERS_ID INTEGER NOT NULL
@@ -4427,7 +4744,7 @@ CREATE CACHED TABLE PUBLIC.USERACCOUNT(
     EMAILADDRESS VARCHAR(255),
     ENABLED BOOLEAN NOT NULL,
     PASSWORD VARCHAR(255),
-    USERNAME VARCHAR(255),
+    USERNAME VARCHAR(255) NOT NULL,
     CREATEDBY_ID INTEGER,
     PERSON_ID INTEGER
 );
@@ -5906,7 +6223,7 @@ ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT
 ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK;
-ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORTEAM_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.REFERENCE ADD CONSTRAINT PUBLIC.FK404D5F2B697665E FOREIGN KEY(AUTHORSHIP_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.CLASSIFICATION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK48AC64334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
 ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B7C7B5AED FOREIGN KEY(TAXONOMICPARENTCACHE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
 ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB50751EC5 FOREIGN KEY(CONTACT_ADDRESSES_ID) REFERENCES PUBLIC.ADDRESS(ID) NOCHECK;
index c8f65610aa42fc4e73ed81b34db66bdf2b0a0cce..04bd461a95b2ad5397680e55c53aa41aa78a45a0 100644 (file)
@@ -8,9 +8,9 @@
   <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2009-06-25 14:42:27.0" UUID="617ea5fc-e6b4-4a6f-832d-bc8a1dc3f572"                                                          PROTECTEDTITLECACHE="false" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="1" SEC_ID="1"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-06-25 14:42:27.0" UUID="d693f60e-8eb8-4bff-a6ca-a1a180a4ae52" PROTECTEDTITLECACHE="true" TITLECACHE="A name" FULLTITLECACHE="  (), null" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="()" NAMECACHE=" " PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765" BASIONYMAUTHORTEAM_ID="1"/>\r
   \r
-  <REFERENCE DTYPE="Article" ID="1" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="A Ref" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="1"/>\r
+  <REFERENCE DTYPE="Article" ID="1" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="A Ref" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORSHIP_ID="1"/>\r
   <REFERENCE_ANNOTATION REFERENCE_ID="1" ANNOTATIONS_ID="1"/>\r
-  <REFERENCE_AUD DTYPE="Article" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="Author, null" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="1"/>\r
+  <REFERENCE_AUD DTYPE="Article" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="613980ac-9bd5-43b9-a374-d71e1794688f" PROTECTEDTITLECACHE="false" TITLECACHE="Author, null" PARSINGPROBLEM="0" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORSHIP_ID="1"/>\r
 \r
   <HOMOTYPICALGROUP ID="1" CREATED="2009-06-25 14:42:27.0" UUID="2aaf6684-8eed-4c0d-9c34-fb9715f6b31e"/>\r
   <HOMOTYPICALGROUP_AUD ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="2aaf6684-8eed-4c0d-9c34-fb9715f6b31e"/>\r
index 3d92664b3e4f3cf5197ccc8f0e48e00c030bb972..8bd74861031af5b1b6e6d37627146cf20dccd475 100644 (file)
   <SYNONYMRELATIONSHIP ID="5004" CREATED="2013-10-31 20:42:25.0" UUID="85347138-9f79-4e04-9d6d-605b532be84d" UPDATED="2013-10-31 20:42:25.879" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" RELATEDFROM_ID="5008" RELATEDTO_ID="5009" TYPE_ID="848"/>
   <SYNONYMRELATIONSHIP ID="5005" CREATED="2013-10-31 20:42:25.0" UUID="2fad10c7-0f46-43e0-bb87-54eaec57e5aa" UPDATED="2013-10-31 20:42:25.885" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" RELATEDFROM_ID="5010" RELATEDTO_ID="5011" TYPE_ID="848"/>
   <SYNONYMRELATIONSHIP ID="5006" CREATED="2013-10-31 20:42:25.0" UUID="a1bf150f-3162-4465-a1ce-90b9dc0b8d50" UPDATED="2013-10-31 20:42:25.89" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" RELATEDFROM_ID="5012" RELATEDTO_ID="5013" TYPE_ID="848"/>
-  <REFERENCE DTYPE="[null]" ID="5000" CREATED="2013-10-31 20:42:25.0" UUID="a3230e8e-b4db-4d06-a7ff-46927ed6f8fd" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5001" CREATED="2013-10-31 20:42:25.0" UUID="8ee7e8df-c63c-4757-bfe2-a78a877bdc29" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 0.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5002" CREATED="2013-10-31 20:42:25.0" UUID="2ab776da-f65b-4691-8bf8-7114326ddace" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5003" CREATED="2013-10-31 20:42:25.0" UUID="edacc607-4e72-4a62-b249-9491be7a3760" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5004" CREATED="2013-10-31 20:42:25.0" UUID="72bb1ad1-22de-4880-8b65-54fd8019d598" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5005" CREATED="2013-10-31 20:42:25.0" UUID="fef66ee4-8945-4fd1-8fff-3979a8345268" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5006" CREATED="2013-10-31 20:42:25.0" UUID="6386c7d9-3fdf-4f62-bd92-1c7e5289ce12" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5007" CREATED="2013-10-31 20:42:25.0" UUID="4c439f0e-40cd-4d60-a55b-9216eddb23a4" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5008" CREATED="2013-10-31 20:42:25.0" UUID="ccd96386-8cdd-4d22-850f-f1fbc682507c" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5009" CREATED="2013-10-31 20:42:25.0" UUID="f405211c-2b38-46b0-a1ce-6bff42f5eb30" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 0.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5010" CREATED="2013-10-31 20:42:25.0" UUID="93465a6f-bb82-452b-bcf2-b7ad2d67ad01" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5011" CREATED="2013-10-31 20:42:25.0" UUID="ee757b8f-3e09-4980-ad10-79875f27bdd5" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5012" CREATED="2013-10-31 20:42:25.0" UUID="43aabc9b-847c-47cc-8964-b586079844f2" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5013" CREATED="2013-10-31 20:42:25.0" UUID="f75f54af-3e42-4b58-97d9-8deb35976534" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5014" CREATED="2013-10-31 20:42:25.0" UUID="f441aeed-3671-4b56-a21c-58e1789fc6be" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5015" CREATED="2013-10-31 20:42:25.0" UUID="3ac5f37a-f786-41b1-96f1-3861424310bf" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5016" CREATED="2013-10-31 20:42:25.0" UUID="e92f1f54-1778-4723-9c37-95b8e167a996" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5017" CREATED="2013-10-31 20:42:25.0" UUID="c5f85ca3-a81c-48c4-bfba-df24e3fe448f" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5018" CREATED="2013-10-31 20:42:25.0" UUID="f7e1f4cf-b87b-41f2-a6f4-235e85280da6" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5019" CREATED="2013-10-31 20:42:25.0" UUID="8f83f7c1-3ca1-483f-b692-ff773141af7a" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.3" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 0.3" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.3" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5020" CREATED="2013-10-31 20:42:25.0" UUID="8016f44d-f1dd-4582-a855-2f0eee1ce153" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5021" CREATED="2013-10-31 20:42:25.0" UUID="5a56b540-0b85-4fa0-9d94-1fafdc734be9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5022" CREATED="2013-10-31 20:42:25.0" UUID="d1c0d738-0255-49d8-8157-a757c0885f6c" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5023" CREATED="2013-10-31 20:42:25.0" UUID="d88f9294-3a9e-4bd3-8b34-f5ebf9deabe8" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5024" CREATED="2013-10-31 20:42:25.0" UUID="820b738e-a170-424c-a241-746787799d24" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5025" CREATED="2013-10-31 20:42:25.0" UUID="6a9f8265-2fed-4875-84f3-0a704fe89053" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.3" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 0.3" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.3" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5026" CREATED="2013-10-31 20:42:25.0" UUID="df1d6489-78c4-4cad-9dd3-758b88197a0d" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5027" CREATED="2013-10-31 20:42:25.0" UUID="62b13dee-50ba-4917-8a28-8a8a0c9f02a3" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5028" CREATED="2013-10-31 20:42:25.0" UUID="add0f6b9-e43e-493f-b469-e1d8a784345b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5029" CREATED="2013-10-31 20:42:25.0" UUID="cebcd5be-5a61-4b37-a6b7-e0d50670b4cc" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.5" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 0.5" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.5" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5030" CREATED="2013-10-31 20:42:25.0" UUID="037df9cb-197f-4166-af69-48374e84fe1b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5031" CREATED="2013-10-31 20:42:25.0" UUID="013aed79-53c2-4207-9b80-4f623d5a1b60" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.5" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 0.5" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.5" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5032" CREATED="2013-10-31 20:42:25.0" UUID="b78681a9-aba9-447b-b226-5d0bc5531717" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5033" CREATED="2013-10-31 20:42:25.0" UUID="f8278370-f394-468c-aff0-57edf7832d73" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 1.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 1.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 1.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5034" CREATED="2013-10-31 20:42:25.0" UUID="72a69067-8d53-4f43-9fa1-943a5d1881d9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5035" CREATED="2013-10-31 20:42:25.0" UUID="1966d015-cd1c-4fcd-9053-ed04b4c6d692" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 1.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 1.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 1.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5036" CREATED="2013-10-31 20:42:25.0" UUID="0c6a2b54-9878-45eb-aa2a-e76fd65c355a" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5037" CREATED="2013-10-31 20:42:25.0" UUID="cae799a8-4de8-415f-8279-8ce2b82d7052" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 2.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 2.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 2.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="5038" CREATED="2013-10-31 20:42:25.0" UUID="501cbff4-8d61-44f7-930d-962e7ab8a67e" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 2.3" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="book 2.3" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 2.3" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5000" CREATED="2013-10-31 20:42:25.0" UUID="a3230e8e-b4db-4d06-a7ff-46927ed6f8fd" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5001" CREATED="2013-10-31 20:42:25.0" UUID="8ee7e8df-c63c-4757-bfe2-a78a877bdc29" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 0.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5002" CREATED="2013-10-31 20:42:25.0" UUID="2ab776da-f65b-4691-8bf8-7114326ddace" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5003" CREATED="2013-10-31 20:42:25.0" UUID="edacc607-4e72-4a62-b249-9491be7a3760" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5004" CREATED="2013-10-31 20:42:25.0" UUID="72bb1ad1-22de-4880-8b65-54fd8019d598" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5005" CREATED="2013-10-31 20:42:25.0" UUID="fef66ee4-8945-4fd1-8fff-3979a8345268" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5006" CREATED="2013-10-31 20:42:25.0" UUID="6386c7d9-3fdf-4f62-bd92-1c7e5289ce12" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5007" CREATED="2013-10-31 20:42:25.0" UUID="4c439f0e-40cd-4d60-a55b-9216eddb23a4" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5008" CREATED="2013-10-31 20:42:25.0" UUID="ccd96386-8cdd-4d22-850f-f1fbc682507c" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5009" CREATED="2013-10-31 20:42:25.0" UUID="f405211c-2b38-46b0-a1ce-6bff42f5eb30" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 0.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5010" CREATED="2013-10-31 20:42:25.0" UUID="93465a6f-bb82-452b-bcf2-b7ad2d67ad01" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5011" CREATED="2013-10-31 20:42:25.0" UUID="ee757b8f-3e09-4980-ad10-79875f27bdd5" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5012" CREATED="2013-10-31 20:42:25.0" UUID="43aabc9b-847c-47cc-8964-b586079844f2" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5013" CREATED="2013-10-31 20:42:25.0" UUID="f75f54af-3e42-4b58-97d9-8deb35976534" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5014" CREATED="2013-10-31 20:42:25.0" UUID="f441aeed-3671-4b56-a21c-58e1789fc6be" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5015" CREATED="2013-10-31 20:42:25.0" UUID="3ac5f37a-f786-41b1-96f1-3861424310bf" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5016" CREATED="2013-10-31 20:42:25.0" UUID="e92f1f54-1778-4723-9c37-95b8e167a996" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5017" CREATED="2013-10-31 20:42:25.0" UUID="c5f85ca3-a81c-48c4-bfba-df24e3fe448f" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5018" CREATED="2013-10-31 20:42:25.0" UUID="f7e1f4cf-b87b-41f2-a6f4-235e85280da6" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5019" CREATED="2013-10-31 20:42:25.0" UUID="8f83f7c1-3ca1-483f-b692-ff773141af7a" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.3" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 0.3" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.3" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5020" CREATED="2013-10-31 20:42:25.0" UUID="8016f44d-f1dd-4582-a855-2f0eee1ce153" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5021" CREATED="2013-10-31 20:42:25.0" UUID="5a56b540-0b85-4fa0-9d94-1fafdc734be9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined book -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined book -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BS" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5022" CREATED="2013-10-31 20:42:25.0" UUID="d1c0d738-0255-49d8-8157-a757c0885f6c" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5023" CREATED="2013-10-31 20:42:25.0" UUID="d88f9294-3a9e-4bd3-8b34-f5ebf9deabe8" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5024" CREATED="2013-10-31 20:42:25.0" UUID="820b738e-a170-424c-a241-746787799d24" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5025" CREATED="2013-10-31 20:42:25.0" UUID="6a9f8265-2fed-4875-84f3-0a704fe89053" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.3" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 0.3" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.3" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5026" CREATED="2013-10-31 20:42:25.0" UUID="df1d6489-78c4-4cad-9dd3-758b88197a0d" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5027" CREATED="2013-10-31 20:42:25.0" UUID="62b13dee-50ba-4917-8a28-8a8a0c9f02a3" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5028" CREATED="2013-10-31 20:42:25.0" UUID="add0f6b9-e43e-493f-b469-e1d8a784345b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5029" CREATED="2013-10-31 20:42:25.0" UUID="cebcd5be-5a61-4b37-a6b7-e0d50670b4cc" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.5" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 0.5" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.5" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5030" CREATED="2013-10-31 20:42:25.0" UUID="037df9cb-197f-4166-af69-48374e84fe1b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5031" CREATED="2013-10-31 20:42:25.0" UUID="013aed79-53c2-4207-9b80-4f623d5a1b60" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 0.5" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 0.5" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 0.5" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5032" CREATED="2013-10-31 20:42:25.0" UUID="b78681a9-aba9-447b-b226-5d0bc5531717" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5033" CREATED="2013-10-31 20:42:25.0" UUID="f8278370-f394-468c-aff0-57edf7832d73" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 1.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 1.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 1.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5034" CREATED="2013-10-31 20:42:25.0" UUID="72a69067-8d53-4f43-9fa1-943a5d1881d9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5035" CREATED="2013-10-31 20:42:25.0" UUID="1966d015-cd1c-4fcd-9053-ed04b4c6d692" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 1.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 1.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 1.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5036" CREATED="2013-10-31 20:42:25.0" UUID="0c6a2b54-9878-45eb-aa2a-e76fd65c355a" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5037" CREATED="2013-10-31 20:42:25.0" UUID="cae799a8-4de8-415f-8279-8ce2b82d7052" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 2.1" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 2.1" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 2.1" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="5038" CREATED="2013-10-31 20:42:25.0" UUID="501cbff4-8d61-44f7-930d-962e7ab8a67e" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="book 2.3" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="book 2.3" ABBREVTITLE="[null]" ABBREVTITLECACHE="book 2.3" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="5000" CREATED="2013-10-31 20:42:25.0" UUID="7c904cc1-a28e-4f7c-8414-c51defb0ef9b" UPDATED="2013-10-31 20:42:25.828" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5001" CREATED="2013-10-31 20:42:25.0" UUID="92e382fe-677c-40c0-98e7-4765c82b3a35" UPDATED="2013-10-31 20:42:25.83" NAME="Veilchen1" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="5002" CREATED="2013-10-31 20:42:25.0" UUID="1ad762da-e714-4dcf-a656-0e5d8edc2aae" UPDATED="[null]" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5001" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
index 1a67fb35c7bf3e36752d7fbd25a19548de604c8a..967ef83a4bef66c9b83fc9b2d1c461b3540b4636 100644 (file)
@@ -17,8 +17,8 @@
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="5006" CREATED="2013-09-23 16:10:04.0" UUID="04c329c3-bd61-423c-83dc-44f43970b62d" UPDATED="2013-09-23 16:10:04.552" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Abies lasiocarpa" APPENDEDPHRASE="[null]" FULLTITLECACHE="Abies lasiocarpa" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Abies lasiocarpa" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5006" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]" EXBASIONYMAUTHORTEAM_ID="[null]" EXCOMBINATIONAUTHORTEAM_ID="[null]"/>
   <SYNONYMRELATIONSHIP ID="5000" CREATED="2013-09-23 16:10:04.0" UUID="32b38626-d53c-4d14-9e03-fe7c4c1d3bb7" UPDATED="2013-09-23 16:10:04.533" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" RELATEDFROM_ID="5002" RELATEDTO_ID="5003" TYPE_ID="848"/>
   <TAXONRELATIONSHIP ID="5000" CREATED="2013-09-23 16:10:04.0" UUID="65b5d706-f454-4345-997e-95a69803baa4" UPDATED="2013-09-23 16:10:04.616" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" DOUBTFUL="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" RELATEDFROM_ID="5006" RELATEDTO_ID="5003" TYPE_ID="888"/>
-  <REFERENCE REFTYPE="BK" ID="5000" CREATED="2013-09-23 16:10:04.0" UUID="2e47ff29-430c-4c5f-800a-a897441b557e" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Kohlbecker, A., Testcase standart views, 2013" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" NOMENCLATURALLYRELEVANT="false" PROTECTEDABBREVTITLECACHE="true" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE REFTYPE="BK" ID="5001" CREATED="2013-09-23 16:10:04.0" UUID="ddc0f5c2-6768-467e-8a03-8a5794602281" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Komarov, V. L., Flora SSSR 29" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" NOMENCLATURALLYRELEVANT="false" PROTECTEDABBREVTITLECACHE="true" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE REFTYPE="BK" ID="5000" CREATED="2013-09-23 16:10:04.0" UUID="2e47ff29-430c-4c5f-800a-a897441b557e" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Kohlbecker, A., Testcase standart views, 2013" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" NOMENCLATURALLYRELEVANT="false" PROTECTEDABBREVTITLECACHE="true" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE REFTYPE="BK" ID="5001" CREATED="2013-09-23 16:10:04.0" UUID="ddc0f5c2-6768-467e-8a03-8a5794602281" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Komarov, V. L., Flora SSSR 29" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" NOMENCLATURALLYRELEVANT="false" PROTECTEDABBREVTITLECACHE="true" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="5000" CREATED="2013-09-23 16:10:04.0" UUID="c8bef21f-1d2c-47c4-b415-64c38cdbba19" UPDATED="2013-09-23 16:10:04.565" ORDERRELEVANT="[null]" NAME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5000" AREA_ID="664" LANGUAGE_ID="[null]" STATUS_ID="1993" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="5001" CREATED="2013-09-23 16:10:04.0" UUID="6e0411eb-1889-46da-ad94-76bbee3094f9" UPDATED="2013-09-23 16:10:04.568" ORDERRELEVANT="[null]" NAME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
   <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="5002" CREATED="2013-09-23 16:10:04.0" UUID="45dadcf2-ed50-40d9-b3ff-0c34819d2ef5" UPDATED="2013-09-23 16:10:04.569" ORDERRELEVANT="[null]" NAME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
index 5141a6ffe07fe5902e56eaa23d8a0e0fa4209d4c..1c233d51c7117df6b63ed72ad4987d39c7408668 100644 (file)
@@ -10,8 +10,8 @@
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1002" CREATED="2013-02-28 16:53:26.0" UUID="f4d3b31d-91c6-466a-b18f-d41e2d49fe7d" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. communis" APPENDEDPHRASE="[null]" FULLTITLECACHE="L. communis subsp. communis" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="1002" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="763" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]" EXBASIONYMAUTHORTEAM_ID="[null]" EXCOMBINATIONAUTHORTEAM_ID="[null]"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1003" CREATED="2013-02-28 16:53:26.0" UUID="86bd7382-15c9-4180-bc1d-61cd2516defe" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. adenophora" APPENDEDPHRASE="[null]" FULLTITLECACHE="L. communis subsp. adenophora" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="1003" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="763" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]" EXBASIONYMAUTHORTEAM_ID="[null]" EXCOMBINATIONAUTHORTEAM_ID="[null]"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1004" CREATED="2013-02-28 16:53:26.0" UUID="f77f56b8-a7ed-407a-b113-67ea0b25a6f4" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. alpina" APPENDEDPHRASE="[null]" FULLTITLECACHE="L. communis subsp. alpina" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="1004" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="763" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]" EXBASIONYMAUTHORTEAM_ID="[null]" EXCOMBINATIONAUTHORTEAM_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="1000" CREATED="2013-02-28 16:53:26.0" UUID="94caeb80-51eb-4b77-9b99-fc8bfcee0d31" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Sp.Pl." DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" REFTYPE="DB" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
-  <REFERENCE DTYPE="[null]" ID="1001" CREATED="2013-02-28 16:53:26.0" UUID="c9d8faac-9f6d-475c-ba9b-9a59b59b3679" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIES="[null]" SERIESPART="[null]" TITLE="[null]" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORTEAM_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="1000" CREATED="2013-02-28 16:53:26.0" UUID="94caeb80-51eb-4b77-9b99-fc8bfcee0d31" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Sp.Pl." DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" REFTYPE="DB" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <REFERENCE DTYPE="[null]" ID="1001" CREATED="2013-02-28 16:53:26.0" UUID="c9d8faac-9f6d-475c-ba9b-9a59b59b3679" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" PROTECTEDABBREVTITLECACHE="false" ABBREVTITLECACHE="Sp. Pl." ABBREVTITLE="Sp. Pl." NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" REFTYPE="BK" URI="[null]" VOLUME="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
   <CLASSIFICATION ID="1000" CREATED="2013-02-28 16:53:26.0" UUID="4b266053-a841-4980-b548-3f21d8d7d712" UPDATED="2013-02-28 16:53:26.168" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="TestClassification" MICROREFERENCE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="1000" REFERENCE_ID="[null]" ROOTNODE_ID="1000"/>
   <!-- <CLASSIFICATION_TAXONNODE CLASSIFICATION_ID="1000" ROOTNODES_ID="1000" SORTINDEX="0"/> -->
   
diff --git a/pom.xml b/pom.xml
index 092d16b9cb003a9335e3f256f826282dfa09b73c..373502347c9fb05f22763eae66f74253ea04d337 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>cdmlib-parent</artifactId>
-       <version>3.3.8-SNAPSHOT</version>
+       <version>3.4.0-SNAPSHOT</version>
     <name>CDM Library</name>
     <description>The Java implementation of the Common Data Model (CDM), the data model for EDIT's internet platform for cybertaxonomy.</description>
     <url>http://cybertaxonomy.eu/cdmlib/</url>