merge 3.0.2 to trunk
authorAndreas Müller <a.mueller@bgbm.org>
Wed, 1 Dec 2010 15:17:05 +0000 (15:17 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Wed, 1 Dec 2010 15:17:05 +0000 (15:17 +0000)
465 files changed:
.gitattributes
cdmlib-commons/pom.xml
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/CdmUtils.java
cdmlib-commons/src/main/java/eu/etaxonomy/cdm/common/DefaultProgressMonitor.java
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/bci/BciServiceWrapper.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/dc/DublinCoreSchemaAdapter.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IIpniService.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/ipni/IpniService.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/sru/SruServiceWrapper.java
cdmlib-ext/src/test/java/eu/etaxonomy/cdm/ext/ipni/IpniServiceTest.java
cdmlib-ext/src/test/java/eu/etaxonomy/cdm/ext/sru/SruServiceWrapperTest.java
cdmlib-io/pom.xml
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelTransformer.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelCommonNamesImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelFactsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameFactsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelNameStatusImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceSourceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelRefDetailImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelReferenceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonNameImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonNameRelationImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonRelationImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTypesImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelClassificationExport.java [moved from cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonomicTreeExport.java with 90% similarity]
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelFactExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNameRelationExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelReferenceExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/FactCategoryMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/RefDetailMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CacheUpdater.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CacheUpdaterConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmImportBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/DbExportConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/DbImportStateBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ExportConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportHelper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportStateBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IoConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDefinedTermCreationMapperBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementCreationMapperBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportDescriptionElementSourceCreationMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportImageGalleryMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportMediaMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportNameTypeDesignationMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportObjectCreationMapperBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportSynonymMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/DbImportTaxIncludedInMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/common/ExcelImportConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/distribution/DistributionImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmIDResolver.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/DataSet.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pilotOutputHtml/PilotOutputDescriptionExporter.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pilotOutputHtml/PilotOutputExporter.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/EndnoteImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/reference/endnote/in/EndnoteRecordsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/reference/endnote/in/IEndnotePlaceholderClass.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDCdmExporter.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDataSet.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/excel/in/SpecimenExcelImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/excel/in/SpecimenExcelImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXDescriptionImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXImportState.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXModsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx/TaxonXNomenclatureImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfReferenceImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonNameImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonNameRelationsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTaxonRelationsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsrdf/TcsRdfTransformer.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/DefaultTcsXmlPlaceholders.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/ITcsXmlPlaceholderClass.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/TcsXmlTransformer.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlImportBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlMetaDataImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlPublicationsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlTaxonImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlTaxonNameImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlTaxonNameRelationsImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlTaxonRelationsImport.java
cdmlib-io/src/main/resources/schema/cdm/cdm.xsd
cdmlib-io/src/main/resources/schema/cdm/taxon.xsd
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/jaxb/CdmImporterTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/jaxb/ReferenceTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/sdd/in/SDDImportTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/test/function/TestDatabase.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/test/integration/TestCdmDbComparator.java
cdmlib-io/src/test/resources/dbscripts/001_cdm.ddl
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/dataset.dtd
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/CdmImporterTest.testImport-result.xml
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/CdmImporterTest.xml
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/ReferenceTest.xml
cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/sdd/SDDImportTest-input.xml [moved from cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/sdd/SDDDescriptionIOTest-input.xml with 100% similarity]
cdmlib-model/pom.xml
cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/PartialUserType.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PartialUserType.java with 95% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/URIUserType.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/UUIDUserType.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/UUIDUserType.java with 95% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/WSDLDefinitionUserType.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/WSDLDefinitionUserType.java with 95% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/agent/Person.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/agent/TeamOrPersonBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/CdmBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/CdmMetaData.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DefaultTermInitializer.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DescriptionElementSource.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ExtensionType.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IReferencedEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.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/LSIDAuthority.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Language.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/MarkerType.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ReferencedEntityBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipBase.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/DescriptionBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/FeatureNode.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/FeatureTree.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IIdentificationKey.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/KeyStatement.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MediaKey.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MultiAccessKey.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PolytomousKey.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PolytomousKeyNode.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/TaxonDescription.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/TaxonNameDescription.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/TextData.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/WorkingSet.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/AudioFile.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/ImageFile.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/Media.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentation.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentationPart.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MovieFile.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/ReferencedMedia.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/Sequence.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/HomotypicalGroup.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/HybridRelationship.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/NameRelationship.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/NameTypeDesignation.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/NomenclaturalStatus.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/NonViralName.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/SpecimenTypeDesignation.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TaxonNameBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TypeDesignationBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/DerivationEvent.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/DerivedUnitBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/DeterminationEvent.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/DeterminationModifier.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/FieldObservation.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/GatheringEvent.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/Specimen.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/SpecimenOrObservationBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Article.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Book.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/BookSection.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/CdDvd.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Database.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Generic.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IGeneric.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/INomenclaturalReference.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IPatent.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IPersonalCommunication.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IPublicationBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReference.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReferenceBase.java with 93% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ISectionBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IVolumeReference.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IWebPage.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/InProceedings.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Journal.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Map.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Patent.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PersonalCommunication.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintSeries.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Proceedings.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PublicationBase.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Reference.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceBase.java with 90% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceFactory.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceIdentity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceType.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Report.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/SectionBase.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Thesis.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/WebPage.java [deleted file]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/AlternativeTreeRoot.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Classification.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonomicTree.java with 82% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/ITreeNode.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Synonym.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/SynonymRelationship.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/taxon/TaxonComparator.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationship.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationshipType.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/view/View.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/media/MediaDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/name/INameCacheStrategy.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/BookDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/BookSectionDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/CdDvdDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/GenericDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/INomenclaturalReferenceCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/IReferenceBaseCacheStrategy.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/ReferenceBaseDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ThesisDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/merge/DefaultMergeStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImpl.java
cdmlib-model/src/main/resources/ValidationMessages.properties
cdmlib-model/src/main/resources/terms/DeterminationModifier.csv
cdmlib-model/src/main/resources/terms/Language.csv
cdmlib-model/src/main/resources/terms/UndefinedLanguage.csv [new file with mode: 0644]
cdmlib-model/src/test/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/DatabaseInitialiser.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/DefaultTermInitializerTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/ExtensionTypeTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/LanguageTest.java [new file with mode: 0644]
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/MarkerTypeTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/PolytomousKeyTest.java [new file with mode: 0644]
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/TextDataTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/media/MediaTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/BotanicalNameTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/NonViralNameTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/TaxonNameBaseTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/reference/PublicationBaseTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/ClassificationTest.java [moved from cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonomicTreeTest.java with 73% similarity]
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonBaseTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonNodeTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/description/TaxonDescriptionDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/media/MediaDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/BotanicNameCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/NonViralNameDefaultCacheStrategyTest.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/CdDvdDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategyTest.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/TestModel.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/test/function/TestSpecimen.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/PersistentTermInitializer.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/ColumnNameChanger.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnRemover.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/DatabaseTypeNotSupportedException.java [new file with mode: 0644]
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 [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/IUpdater.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MapTableCreator.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MnTableCreator.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdaterBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdaterStepBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_25_26.java [deleted file]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SingleTermUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableCreator.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableDroper.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TermUpdaterBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/UpdaterBase.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/VocabularyCreator.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/SchemaUpdater_24_25.java [moved from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_24_25.java with 84% similarity]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/SortIndexUpdater.java [moved from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SortIndexUpdater.java with 92% similarity]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/TermUpdater_24_25.java [moved from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TermUpdater_24_25.java with 85% similarity]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/FeatureNodeTreeColumnUpdater.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/PolytomousKeyDataMover.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SchemaUpdater_25_30.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SequenceTableCreator.java [moved from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SequenceTableCreator.java with 97% similarity]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/TermUpdater_25_30.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IIdentificationKeyDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyDao.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyNodeDao.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureTreeDaoImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoImpl.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyNodeDaoImpl.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoHibernateImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/ClassificationDaoHibernateImpl.java [moved from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonomicTreeDaoHibernateImpl.java with 65% similarity]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/reference/IReferenceDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/IClassificationDao.java [moved from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonomicTreeDao.java with 74% similarity]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonDao.java
cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/database/TestingTermInitializer.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/MethodCacheImplTest.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/description/DescriptionDaoHibernateImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.java [new file with mode: 0644]
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/IdentificationKeyDaoHibernateImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.java [new file with mode: 0644]
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.java [new file with mode: 0644]
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonNodeDaoHibernateImplTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDaoTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/hibernate/CacheStrategyGeneratorTest.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/function/TestPersistence.java
cdmlib-persistence/src/test/resources/META-INF/persistence.xml
cdmlib-persistence/src/test/resources/dbscripts/001_cdm.ddl
cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet-with_auditing_info.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/TermsDataSet.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSave-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSaveOrUpdate-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSaveOrUpdateNewObjectWithAuthentication-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSaveOrUpdateWithAuthentication-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testSaveWithAuthentication-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testUpdate-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.testUpdateWithAuthentication-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.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/common/IdentifiableDaoBaseTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testChangeLanguageString-result.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testPersistMultiLanguageString-result.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testRemoveLanguageString-result.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/IdentificationKeyDaoHibernateImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.testSavePolytomousKey-result.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.testSave-result.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.xml [new file with mode: 0644]
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TypeDesignationDaoHibernateImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testAddChild-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testDelete-result.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFind.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testFindDeleted.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.testGetTaxaByNameAndArea.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonNodeDaoHibernateImplTest.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/XMLHelper.java
cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/odf/OdfOutputModule.java
cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/out/odf/cdmToOdfText.xsl [moved from cdmlib-print/src/main/resources/eu/etaxonomy/printpublisher/out/odf/cdmToOdfText.xsl with 100% similarity]
cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/out/pdf/cdmToPdf.xsl [moved from cdmlib-print/src/main/resources/eu/etaxonomy/printpublisher/out/pdf/cdmToPdf.xsl with 100% similarity]
cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/package.html [new file with mode: 0644]
cdmlib-print/src/site/apt/index.apt
cdmlib-print/src/site/site.xml
cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/PublisherTest.java [moved from cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/PublisherTest.java with 98% similarity]
cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/TransformatorTest.java [moved from cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/TransformatorTest.java with 95% similarity]
cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/out/odf/OdfOutputModuleTest.java [moved from cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/out/odf/OdfOutputModuleTest.java with 96% similarity]
cdmlib-print/src/test/resources/eu/etaxonomy/cdm/print/out/odf/input.xml [moved from cdmlib-print/src/test/resources/eu/etaxonomy/printpublisher/out/odf/input.xml with 100% similarity]
cdmlib-print/src/test/resources/eu/etaxonomy/cdm/print/out/odf/single_input.xml [moved from cdmlib-print/src/test/resources/eu/etaxonomy/printpublisher/out/odf/single_input.xml with 100% similarity]
cdmlib-remote-webapp/pom.xml
cdmlib-remote-webapp/src/main/java/eu/etaxonomy/cdm/remote/config/DataSourceConfigurer.java
cdmlib-remote-webapp/src/main/webapp/WEB-INF/json-views.xml
cdmlib-remote-webapp/src/main/webapp/WEB-INF/xml-views.xml
cdmlib-remote/pom.xml
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalController.java [moved from cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonomicTreePortalController.java with 67% similarity]
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalListController.java [moved from cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonomicTreePortalListController.java with 67% similarity]
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ReferenceController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ReferenceListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonPortalController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ext/ExternalBhleController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/dto/oaipmh/SetSpec.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/DerivedUnitFacadeBeanProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/MediaBeanProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/ReferenceBaseBeanProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/TaxonNameBaseBeanProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/TaxonNodeDaoBeanProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/matcher/CdmProxyBeanProcessorMatcher.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/PartialJSONValueProcessor.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/URIJSONValueProcessor.java [new file with mode: 0644]
cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml
cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/json/jsonConfigurations.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/application/CdmApplicationController.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationDefaultConfiguration.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/ICdmApplicationConfiguration.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacade.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacadeCacheStrategy.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImpl.java [moved from cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImpl.java with 67% similarity]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IClassificationService.java [moved from cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonTreeService.java with 78% similarity]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IPolytomousKeyService.java [new file with mode: 0644]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IReferenceService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IdentifiableServiceBase.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IdentificationKeyGenerator.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/PolytomousKeyServiceImpl.java [new file with mode: 0644]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ReferenceServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/WorkingSetService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/IIdentifiableEntityServiceConfigurator.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/ITaxonServiceConfigurator.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/impl/IdentifiableServiceConfiguratorImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/config/impl/TaxonServiceConfiguratorImpl.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacadeCacheStrategyTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacadeTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImplTest.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/IdentifiableServiceBaseTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImplTest.java [deleted file]
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/Datasource.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestConcurrentSession.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestDatabase.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestService.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestTaxonFunction.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/hibernate.cfg.xml
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/integration/TestTaxonServices.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/validation/NameValidCharactersTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/validation/ReferenceValidationTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/validation/TaxonNameCannotBeAcceptedAndSynonymTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/validation/ValidationTest.java
cdmlib-services/src/test/resources/dbscripts/001_cdm.ddl
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/CommonServiceImplTest.xml
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/IdentifiableServiceBaseTest.testUpdateTitleCache-result.xml
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/IdentifiableServiceBaseTest.xml
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/lsid/LSIDAuthorityServiceTest.testGetAvailableServices.xml
pom.xml

index 501c376e3452c27276094327b0f8cef6db072cd6..bbb3b69e0e42f91c2d8098129d25ae4d05449848 100644 (file)
@@ -114,6 +114,7 @@ cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/validation/BerlinMode
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/validation/BerlinModelWebMarkerImportValidator.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelAuthorExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelAuthorTeamExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelClassificationExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportBase.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportMapping.java -text
@@ -124,7 +125,6 @@ cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelReference
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonNameExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonRelationExport.java -text
-cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonomicTreeExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/CollectionExportMapping.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/CreatedAndNotesMapper.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbAnnotationMapper.java -text
@@ -412,7 +412,7 @@ cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/TaxonTest.xml -text
 cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/jaxb/TermTest.xml -text
 cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/reference/EndnoteRecordImportTest-input.xml -text
 cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/sdd/SDD-Test-Simple.xml -text
-cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/sdd/SDDDescriptionIOTest-input.xml -text
+cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/sdd/SDDImportTest-input.xml -text
 cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/specimen/abcd206/in/SpecimenImportConfiguratorTest-input.xml -text
 cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/specimen/excel/in/ExcelImportConfiguratorTest-input.xls -text
 cdmlib-io/src/test/resources/eu/etaxonomy/cdm/io/taxonx/TaxonXImportConfiguratorTest-input.xml -text
@@ -427,7 +427,11 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/aspectj/PropertyChangeAspect.aj -tex
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/DateTimeBridge.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/HibernateProxyHelper.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/PartialBridge.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/PartialUserType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/StripHtmlBridge.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/URIUserType.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/UUIDUserType.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/WSDLDefinitionUserType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/jaxb/CdmAccessor.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/jaxb/CdmAccessorFactoryImpl.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/jaxb/CdmNamespacePrefixMapper.java -text
@@ -500,7 +504,6 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/NoDefinedTermClassExcep
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OrderedTermBase.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OrderedTermVocabulary.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSourceBase.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PartialUserType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PersistentMultiLanguageText.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PersistentMultiLanguageTextType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ReferencedEntityBase.java -text
@@ -511,12 +514,10 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermBase.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermLanguageComparator.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermVocabulary.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TimePeriod.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/UUIDUserType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/User.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/UuidAndTitleCache.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/VersionableEntity.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/VocabularyEnum.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/WSDLDefinitionUserType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/WrongTermTypeException.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/init/ITermInitializer.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/init/ITermLoader.java -text
@@ -536,12 +537,14 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/FeatureTree.java -
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IIdentificationKey.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IModifiable.java -text svneol=unset#text/plain
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IndividualsAssociation.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/KeyStatement.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MeasurementUnit.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MediaKey.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Modifier.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MultiAccessKey.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/NaturalLanguageTerm.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PolytomousKey.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PolytomousKeyNode.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PresenceAbsenceTermBase.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PresenceTerm.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/QuantitativeData.java -text
@@ -636,12 +639,6 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/SpecimenOrObservati
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/package-info.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/occurrence/package.html -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/overview.html -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Article.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Book.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/BookSection.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/CdDvd.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Database.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Generic.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IArticle.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IBook.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IBookSection.java -text
@@ -658,32 +655,20 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IPrintSeries.java -t
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IPrintedUnitBase.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IProceedings.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IPublicationBase.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReferenceBase.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReference.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReport.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ISectionBase.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IThesis.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IVolumeReference.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IWebPage.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/InProceedings.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Journal.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Map.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Patent.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PersonalCommunication.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintSeries.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Proceedings.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PublicationBase.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceBase.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Reference.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceFactory.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceIdentity.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceType.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Report.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/SectionBase.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Thesis.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/WebPage.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/package-info.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/package.html -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/AlternativeTreeRoot.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Classification.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/ITreeNode.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/IllegalAncestryException.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Synonym.java -text
@@ -696,7 +681,6 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorSearch.ja
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationship.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationshipType.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonomicTree.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/view/AuditEvent.java -text
@@ -830,6 +814,7 @@ cdmlib-model/src/main/resources/terms/SynonymRelationshipType.csv -text
 cdmlib-model/src/main/resources/terms/TaxonRelationshipType.csv -text
 cdmlib-model/src/main/resources/terms/TdwgArea.csv -text
 cdmlib-model/src/main/resources/terms/TextFormat.csv -text
+cdmlib-model/src/main/resources/terms/UndefinedLanguage.csv -text
 cdmlib-model/src/main/resources/terms/WaterbodyOrCountry.csv -text
 cdmlib-model/src/main/resources/update/update_r2.1.2.2_r2.4.1.2.mysql.sql -text
 cdmlib-model/src/main/resources/update/update_term_r2.4.2.1-r2.4.2.2.mysql.sql -text
@@ -847,6 +832,7 @@ cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/DefaultTermInitializerT
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/DefinedTermBaseTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/ExtensionTypeTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/IdentifiableEntityTest.java -text
+cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/LanguageTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/MarkerTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/MarkerTypeTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/OrderedTermBaseTest.java -text
@@ -855,6 +841,7 @@ cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/TermVocabularyTest.java
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/TimePeriodTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/init/DefaultTermInitializerTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/init/TermLoaderTest.java -text
+cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/PolytomousKeyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/PresenceAbsenceTermBaseTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/TextDataTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/location/PointTest.java -text
@@ -871,12 +858,12 @@ cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/SpecimenTypeDesignationTe
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/TaxonNameBaseTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/occurrence/SpecimenTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/reference/PublicationBaseTest.java -text
+cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/ClassificationTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/RemoveSynonymsInSameHomotypicGroupTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonBaseTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonNodeTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonTest.java -text
-cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonomicTreeTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/agent/PersonDefaultCacheStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/agent/TeamDefaultCacheStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/common/TermDefaultCacheStrategyTest.java -text
@@ -945,20 +932,33 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/SybaseDatabaseT
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnAdder.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnNameChanger.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnRemover.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/DatabaseTypeNotSupportedException.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ISchemaUpdater.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ISchemaUpdaterStep.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ITermUpdater.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ITermUpdaterStep.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/IUpdater.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MapTableCreator.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MnTableCreator.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdaterBase.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdaterStepBase.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_24_25.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_25_26.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SequenceTableCreator.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SimpleSchemaUpdaterStep.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SingleTermUpdater.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SortIndexUpdater.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableCreator.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableDroper.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableNameChanger.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TermUpdaterBase.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TermUpdater_24_25.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/UpdaterBase.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/VocabularyCreator.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/SchemaUpdater_24_25.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/SortIndexUpdater.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/TermUpdater_24_25.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/FeatureNodeTreeColumnUpdater.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/PolytomousKeyDataMover.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SchemaUpdater_25_30.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SequenceTableCreator.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/TermUpdater_25_30.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/AbstractBeanInitializer.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/AutoPropertyInitializer.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/BeanInitializer.java -text
@@ -997,6 +997,8 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IF
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureNodeDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureTreeDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IIdentificationKeyDao.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyDao.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyNodeDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IStatisticalMeasurementValueDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IWorkingSetDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/AlternativeSpellingSuggestionParser.java -text
@@ -1029,6 +1031,8 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/desc
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureNodeDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureTreeDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/IdentificationKeyDaoImpl.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoImpl.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyNodeDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/StatisticalMeasurementValueDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/WorkingSetDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoHibernateImpl.java -text
@@ -1041,10 +1045,10 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/CollectionDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImpl.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/ClassificationDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonAlternativeSpellingSuggestionParser.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonNodeDaoHibernateImpl.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonomicTreeDaoHibernateImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/view/AuditEventDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/media/IMediaDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/media/IMediaRepresentationDao.java -text
@@ -1056,9 +1060,9 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/name/ITypeDesi
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/ICollectionDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/IOccurrenceDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/reference/IReferenceDao.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/IClassificationDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonNodeDao.java -text
-cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonomicTreeDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/fetch/CdmFetch.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/CacheStrategyGenerator.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/CdmDataChangeEvent.java -text
@@ -1126,8 +1130,11 @@ cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/comm
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoHibernateImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.java -text
+cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/IdentificationKeyDaoHibernateImplTest.java -text
+cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.java -text
+cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/ConfigurableNameCacheStrategyGeneratorsTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TestingBotanicalNameCacheStrategy.java -text
@@ -1207,8 +1214,16 @@ cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/common/UserDaoHibernateImplTest.xml -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/dataset.dtd -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoHibernateImplTest.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testChangeLanguageString-result.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testPersistMultiLanguageString-result.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testRemoveLanguageString-result.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.xml -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/IdentificationKeyDaoHibernateImplTest.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.testSavePolytomousKey-result.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.xml -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaDaoImplTest.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.testSave-result.xml -text
+cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.xml -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/OregonScientificDS6639-DSC_0307-small.jpg -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/OregonScientificDS6639-DSC_0307-small.tif -text
 cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImplTest.xml -text
@@ -1255,8 +1270,9 @@ cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/odf/StylesFactory.java -te
 cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/pdf/PdfOutputModule.java -text
 cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/taxpub/TaxPubOutputModule.java -text
 cdmlib-print/src/main/java/eu/etaxonomy/cdm/print/out/xml/XMLOutputModule.java -text
-cdmlib-print/src/main/resources/eu/etaxonomy/printpublisher/out/odf/cdmToOdfText.xsl -text
-cdmlib-print/src/main/resources/eu/etaxonomy/printpublisher/out/pdf/cdmToPdf.xsl -text
+cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/out/odf/cdmToOdfText.xsl -text
+cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/out/pdf/cdmToPdf.xsl -text
+cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/package.html -text
 cdmlib-print/src/main/resources/log4j.properties -text
 cdmlib-print/src/site/apt/download.apt -text
 cdmlib-print/src/site/apt/formats.apt -text
@@ -1265,12 +1281,12 @@ cdmlib-print/src/site/apt/index.apt -text
 cdmlib-print/src/site/apt/writing-templates.apt -text
 cdmlib-print/src/site/fml/troubleshooting.fml -text
 cdmlib-print/src/site/site.xml -text
-cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/PublisherTest.java -text
-cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/TransformatorTest.java -text
-cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/out/odf/OdfOutputModuleTest.java -text
+cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/PublisherTest.java -text
+cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/TransformatorTest.java -text
+cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/out/odf/OdfOutputModuleTest.java -text
 cdmlib-print/src/test/resources/20100719-1939-xml_export.xml -text
-cdmlib-print/src/test/resources/eu/etaxonomy/printpublisher/out/odf/input.xml -text
-cdmlib-print/src/test/resources/eu/etaxonomy/printpublisher/out/odf/single_input.xml -text
+cdmlib-print/src/test/resources/eu/etaxonomy/cdm/print/out/odf/input.xml -text
+cdmlib-print/src/test/resources/eu/etaxonomy/cdm/print/out/odf/single_input.xml -text
 cdmlib-remote-webapp/LICENSE.TXT -text
 cdmlib-remote-webapp/README.TXT -text
 cdmlib-remote-webapp/ide/eclipse/cdmlib-remote[!!-~]-[!!-~]remote[!!-~]debug.launch -text
@@ -1316,6 +1332,8 @@ cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/BaseController.ja
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/BaseListController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationListController.java -text
+cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalController.java -text
+cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalListController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DerivedUnitFacadeController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DerivedUnitFacadePortalController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DescriptionController.java -text
@@ -1343,8 +1361,6 @@ cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonListControll
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonNodeController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonNodeListController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonPortalController.java -text
-cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonomicTreePortalController.java -text
-cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonomicTreePortalListController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TermController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TermListController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/VocabularyController.java -text
@@ -1468,6 +1484,7 @@ cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/DateTim
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/HibernateJSONValueProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/MapJSONValueProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/PartialJSONValueProcessor.java -text
+cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/URIJSONValueProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/UUIDJSONValueProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/util/CardinalityPropertyFilter.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/util/InitializedHibernatePropertyFilter.java -text
@@ -1545,6 +1562,7 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AgentServiceImpl.java
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AnnotatableServiceBase.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AnnotationService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AuditEventService.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/CollectionServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/CommonServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DatabaseServiceHibernateImpl.java -text
@@ -1560,6 +1578,7 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IAgentService.java -t
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IAnnotatableService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IAnnotationService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IAuditEventService.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IClassificationService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ICollectionService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ICommonService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IDatabaseService.java -text
@@ -1575,12 +1594,12 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/INameService.java -te
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/INaturalLanguageGenerator.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/INaturalLanguageTextDataProcessor.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IPolytomousKeyService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IReferenceService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeComparator.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java -text
-cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonTreeService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITermService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IUserService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IVersionableService.java -text
@@ -1598,13 +1617,13 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NamedAreaNodeComparat
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NamedAreaTree.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java -text
+cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/PolytomousKeyServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ReferenceServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ServiceBase.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeByNameComparator.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java -text
-cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/UserService.java -text
 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/VersionableServiceBase.java -text
@@ -1653,6 +1672,7 @@ cdmlib-services/src/main/resources/wsdl/LSIDDataServiceSOAPBindings.wsdl -text
 cdmlib-services/src/main/resources/wsdl/LSIDPortTypes.wsdl -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacadeCacheStrategyTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/facade/DerivedUnitFacadeTest.java -text
+cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/CommonServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/IdentifiableServiceBaseTest.java -text
@@ -1661,7 +1681,6 @@ cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest2.
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.java -text
-cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TermServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/UserServiceImplTest.java -text
 cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/lsid/LSIDAuthorityServiceTest.java -text
index 59ee48604f41abf08d888356cb76450ce059862b..5a54ef86ed67d6f074c631ce459f097892bca322 100644 (file)
@@ -7,7 +7,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>cdmlib-parent</artifactId>
-    <version>2.5</version>
+    <version>3.0</version>
        <relativePath>pom.xml</relativePath>
   </parent>
   
index 9b734f23a07e6a542ede8c57161dd4eeab6c4c48..1fe7de7a5149166ad15cb89b1435b8f8a747fcc8 100644 (file)
@@ -167,6 +167,14 @@ public class CdmUtils {
                return (value == null ? "" : value);\r
        }\r
 \r
+       /**\r
+        * Returns value if value is not <code>null</code>. Returns defaultValue if value is <code>null</code>.\r
+        * @param value\r
+        * @return\r
+        */\r
+       static public String Nz(String value, String defaultValue){\r
+               return (value == null ? defaultValue : value);\r
+       }\r
        \r
        /**\r
         * Returns value if value is not <code>null</code>. Returns 0 if value is <code>null</code>.\r
index 107199c8a0ae41c2e08359207201110d3b75e65b..1d1e6d6ae311d2544f915e3a670f43d64c217722 100644 (file)
@@ -50,7 +50,7 @@ public class DefaultProgressMonitor implements IProgressMonitor {
         */\r
        @Override\r
        public void done() {\r
-               logger.info(taskName + "Done");\r
+               logger.info(taskName + "...Done");\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -106,9 +106,9 @@ public class DefaultProgressMonitor implements IProgressMonitor {
         * @see eu.etaxonomy.cdm.common.IProgressMonitor#warning(java.lang.String, java.lang.Exception)\r
         */\r
        @Override\r
-       public void warning(String warning, Throwable exeption) {\r
+       public void warning(String warning, Throwable exception) {\r
                logger.warn(warning);\r
-               exeption.printStackTrace();\r
+               exception.printStackTrace();\r
        }\r
 \r
        public float getPercentage(){\r
index 554771fdd4d224befcf7a15feec4813df32e9378..0b57a3160758aa25026e195bed842181fc2c796c 100644 (file)
@@ -7,7 +7,7 @@
        <parent>\r
                <groupId>eu.etaxonomy</groupId>\r
                <artifactId>cdmlib-parent</artifactId>\r
-    <version>2.5</version>\r
+    <version>3.0</version>\r
        <relativePath>pom.xml</relativePath>\r
        </parent>\r
 \r
index c4446998dedd24168be0b0b9705f395820576f6e..bef88648b1a54da94bc163b15803749be7fead3a 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.cdm.ext.common.SchemaAdapterBase;
 import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 \r
@@ -37,7 +37,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
  * @author a.kohlbecker\r
  * @date 25.08.2010\r
  */\r
-public class BciSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{\r
+public class BciSchemaAdapter extends SchemaAdapterBase<Reference>{\r
        \r
 \r
 \r
@@ -73,7 +73,7 @@ public class BciSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
         * @see eu.etaxonomy.cdm.ext.schema.SchemaAdapter#getCmdEntities(java.io.Reader)\r
         */\r
        @Override\r
-       public List<ReferenceBase> getCmdEntities(InputStream inputStream) {\r
+       public List<Reference> getCmdEntities(InputStream inputStream) {\r
 \r
                SAXParserFactory factory = SAXParserFactory.newInstance();\r
            factory.setNamespaceAware(true);\r
@@ -114,9 +114,9 @@ public class BciSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                private static final String DC_PUBLISHER = "dc:publisher";\r
                private static final String DC_DATE = "dc:date";\r
                \r
-               List<ReferenceBase> referenceList = new ArrayList<ReferenceBase>();\r
+               List<Reference> referenceList = new ArrayList<Reference>();\r
 \r
-               ReferenceBase referenceBase = null;\r
+               Reference reference = null;\r
                \r
                String dcFieldName = null;\r
                \r
@@ -130,7 +130,7 @@ public class BciSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                                logger.debug("Start Element :" + qName + "; " + uri);\r
                                \r
                                if (qName.equals(DC_DC)) {\r
-                                       referenceBase = ReferenceFactory.newGeneric();\r
+                                       reference = ReferenceFactory.newGeneric();\r
                                } else {\r
                                        dcFieldName = qName;\r
                                }\r
@@ -142,12 +142,12 @@ public class BciSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                                throws SAXException {\r
 \r
                        if (uri.equals(nameSpace)) {\r
-                               if(referenceBase != null) {\r
+                               if(reference != null) {\r
                                        logger.debug("End Element :" + qName + "; " + uri);\r
                                        \r
                                        if (qName.equals(DC_DC)) {\r
-                                               referenceList.add(referenceBase);\r
-                                               referenceBase = null;\r
+                                               referenceList.add(reference);\r
+                                               reference = null;\r
                                        } else {\r
                                                dcFieldName = null;\r
                                        }\r
@@ -160,22 +160,22 @@ public class BciSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                public void characters(char ch[], int start, int length)\r
                                throws SAXException {\r
 \r
-                       if(referenceBase != null && dcFieldName != null){\r
+                       if(reference != null && dcFieldName != null){\r
                                String text = new String(ch, start, length);\r
                                logger.debug("Characters : " + text);\r
                                if(dcFieldName.equals(DC_TITLE)){\r
-                                       referenceBase.setTitleCache(text, true);\r
+                                       reference.setTitleCache(text, true);\r
                                }\r
                                if(dcFieldName.equals(DC_DATE)){\r
-                                       referenceBase.setDatePublished(TimePeriod.parseString(text));\r
+                                       reference.setDatePublished(TimePeriod.parseString(text));\r
                                }\r
                                if(dcFieldName.equals(DC_PUBLISHER)){\r
-                                       referenceBase.setPublisher(text);\r
+                                       reference.setPublisher(text);\r
                                }\r
                                if(dcFieldName.equals(DC_CREATOR)){\r
                                        TeamOrPersonBase authorTeam = new Team();\r
                                        authorTeam.setTitleCache(text, true);\r
-                                       referenceBase.setAuthorTeam(authorTeam);\r
+                                       reference.setAuthorTeam(authorTeam);\r
                                }\r
                                \r
                        }\r
index 469162df5dd7142e0090205696b503d5f61edf5b..93f8a6a59875cb808e780745924689078f528f11 100644 (file)
@@ -40,7 +40,7 @@ import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.LSID;\r
 import eu.etaxonomy.cdm.model.occurrence.Collection;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 \r
@@ -227,7 +227,7 @@ public class BciServiceWrapper extends ServiceWrapperBase<Collection> implements
                result.setName(collectionName);\r
                \r
                //id, citation\r
-               ReferenceBase citation = getBciCitation(appConfig);\r
+               Reference citation = getBciCitation(appConfig);\r
                result.addSource(id, null, citation, null);\r
                \r
                \r
@@ -241,8 +241,8 @@ public class BciServiceWrapper extends ServiceWrapperBase<Collection> implements
        }\r
 \r
 \r
-       private ReferenceBase getBciCitation(ICdmApplicationConfiguration appConfig) {\r
-               ReferenceBase bciReference;\r
+       private Reference getBciCitation(ICdmApplicationConfiguration appConfig) {\r
+               Reference bciReference;\r
                if (appConfig != null){\r
                        bciReference = appConfig.getReferenceService().find(uuidBci);\r
                        if (bciReference == null){\r
@@ -259,8 +259,8 @@ public class BciServiceWrapper extends ServiceWrapperBase<Collection> implements
        /**\r
         * @return\r
         */\r
-       private ReferenceBase getNewBciReference() {\r
-               ReferenceBase bciReference;\r
+       private Reference getNewBciReference() {\r
+               Reference bciReference;\r
                bciReference = ReferenceFactory.newDatabase();\r
                bciReference.setTitleCache("Biodiversity Collection Index (BCI))");\r
                return bciReference;\r
index ed0737c7766c75d5e8093758214d7dd67dfa5702..477f8c598bc4e6d2f75f21f25a3c4c59c909e2a3 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.cdm.ext.common.SchemaAdapterBase;
 import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 \r
@@ -37,7 +37,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
  * @author a.kohlbecker\r
  * @date 25.08.2010\r
  */\r
-public class DublinCoreSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{\r
+public class DublinCoreSchemaAdapter extends SchemaAdapterBase<Reference>{\r
        \r
 \r
 \r
@@ -73,7 +73,7 @@ public class DublinCoreSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
         * @see eu.etaxonomy.cdm.ext.schema.SchemaAdapter#getCmdEntities(java.io.Reader)\r
         */\r
        @Override\r
-       public List<ReferenceBase> getCmdEntities(InputStream inputStream) {\r
+       public List<Reference> getCmdEntities(InputStream inputStream) {\r
 \r
                SAXParserFactory factory = SAXParserFactory.newInstance();\r
            factory.setNamespaceAware(true);\r
@@ -114,9 +114,9 @@ public class DublinCoreSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                private static final String DC_PUBLISHER = "dc:publisher";\r
                private static final String DC_DATE = "dc:date";\r
                \r
-               List<ReferenceBase> referenceList = new ArrayList<ReferenceBase>();\r
+               List<Reference> referenceList = new ArrayList<Reference>();\r
 \r
-               ReferenceBase referenceBase = null;\r
+               Reference reference = null;\r
                \r
                String dcFieldName = null;\r
                \r
@@ -130,7 +130,7 @@ public class DublinCoreSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                                logger.debug("Start Element :" + qName + "; " + uri);\r
                                \r
                                if (qName.equals(DC_DC)) {\r
-                                       referenceBase = ReferenceFactory.newGeneric();\r
+                                       reference = ReferenceFactory.newGeneric();\r
                                } else {\r
                                        dcFieldName = qName;\r
                                }\r
@@ -142,12 +142,12 @@ public class DublinCoreSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                                throws SAXException {\r
 \r
                        if (uri.equals(nameSpace)) {\r
-                               if(referenceBase != null) {\r
+                               if(reference != null) {\r
                                        logger.debug("End Element :" + qName + "; " + uri);\r
                                        \r
                                        if (qName.equals(DC_DC)) {\r
-                                               referenceList.add(referenceBase);\r
-                                               referenceBase = null;\r
+                                               referenceList.add(reference);\r
+                                               reference = null;\r
                                        } else {\r
                                                dcFieldName = null;\r
                                        }\r
@@ -160,22 +160,22 @@ public class DublinCoreSchemaAdapter extends SchemaAdapterBase<ReferenceBase>{
                public void characters(char ch[], int start, int length)\r
                                throws SAXException {\r
 \r
-                       if(referenceBase != null && dcFieldName != null){\r
+                       if(reference != null && dcFieldName != null){\r
                                String text = new String(ch, start, length);\r
                                logger.debug("Characters : " + text);\r
                                if(dcFieldName.equals(DC_TITLE)){\r
-                                       referenceBase.setTitleCache(text, true);\r
+                                       reference.setTitleCache(text, true);\r
                                }\r
                                if(dcFieldName.equals(DC_DATE)){\r
-                                       referenceBase.setDatePublished(TimePeriod.parseString(text));\r
+                                       reference.setDatePublished(TimePeriod.parseString(text));\r
                                }\r
                                if(dcFieldName.equals(DC_PUBLISHER)){\r
-                                       referenceBase.setPublisher(text);\r
+                                       reference.setPublisher(text);\r
                                }\r
                                if(dcFieldName.equals(DC_CREATOR)){\r
                                        TeamOrPersonBase authorTeam = new Team();\r
                                        authorTeam.setTitleCache(text, true);\r
-                                       referenceBase.setAuthorTeam(authorTeam);\r
+                                       reference.setAuthorTeam(authorTeam);\r
                                }\r
                                \r
                        }\r
index 9408c9683c021ca8ff23a72d30e6827a7c0b9abb..fa8426e27a84cd6912b828e58c4d1eeaef77825a 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.common.ExtensionType;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 \r
 /**\r
@@ -219,7 +219,7 @@ public interface IIpniService {
         * @param config for finetuning, maybe null\r
         * @return\r
         */\r
-       public List<ReferenceBase> getPublications(String title, String abbreviation, ICdmApplicationConfiguration services, IpniServicePublicationConfigurator config);\r
+       public List<Reference> getPublications(String title, String abbreviation, ICdmApplicationConfiguration services, IpniServicePublicationConfigurator config);\r
 \r
        public URL getServiceUrl(String url);\r
 }
\ No newline at end of file
index 7f020c47a874194ea5f7f1577ac87bf49700a6e3..3a840f78bfcd1fcf13390ab80497de719c84a0e1 100644 (file)
@@ -44,7 +44,7 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
@@ -284,10 +284,10 @@ public class IpniService  implements IIpniService{
         return null;\r
     }\r
 \r
-       private List<ReferenceBase> buildPublicationList( InputStream content, ICdmApplicationConfiguration services, IIpniServiceConfigurator iConfig) throws IOException {\r
+       private List<Reference> buildPublicationList( InputStream content, ICdmApplicationConfiguration services, IIpniServiceConfigurator iConfig) throws IOException {\r
                IpniServicePublicationConfigurator config = (IpniServicePublicationConfigurator)iConfig;\r
                \r
-               List<ReferenceBase> result = new ArrayList<ReferenceBase>(); \r
+               List<Reference> result = new ArrayList<Reference>(); \r
                BufferedReader reader = new BufferedReader (new InputStreamReader(content));\r
                \r
                String headerLine = reader.readLine();\r
@@ -295,7 +295,7 @@ public class IpniService  implements IIpniService{
                \r
                String line = reader.readLine();\r
                while (StringUtils.isNotBlank(line)){\r
-                       ReferenceBase reference = getPublicationFromLine(line, parameterMap, services, config);\r
+                       Reference reference = getPublicationFromLine(line, parameterMap, services, config);\r
                        result.add(reference);\r
                        line = reader.readLine();\r
                }\r
@@ -311,7 +311,7 @@ public class IpniService  implements IIpniService{
         * @param config\r
         * @return\r
         */\r
-       private ReferenceBase getPublicationFromLine(String line, Map<Integer, String> parameterMap, ICdmApplicationConfiguration appConfig, IpniServicePublicationConfigurator config) {\r
+       private Reference getPublicationFromLine(String line, Map<Integer, String> parameterMap, ICdmApplicationConfiguration appConfig, IpniServicePublicationConfigurator config) {\r
                //fill value map\r
                String[] splits = line.split("%");\r
                \r
@@ -321,7 +321,7 @@ public class IpniService  implements IIpniService{
                }\r
                \r
                //create reference object\r
-               ReferenceBase ref = ReferenceFactory.newGeneric();\r
+               Reference ref = ReferenceFactory.newGeneric();\r
                \r
                //reference\r
                if (config.isUseAbbreviationAsTitle() == true){\r
@@ -365,7 +365,7 @@ public class IpniService  implements IIpniService{
 \r
 \r
                //source\r
-               ReferenceBase citation = getIpniCitation(appConfig);\r
+               Reference citation = getIpniCitation(appConfig);\r
                ref.addSource(valueMap.get(ID), "Publication", citation, valueMap.get(VERSION));\r
 \r
                \r
@@ -438,7 +438,7 @@ public class IpniService  implements IIpniService{
                name.setCombinationAuthorTeam(Team.NewTitledInstance(valueMap.get(PUBLISHING_AUTHOR), valueMap.get(PUBLISHING_AUTHOR)));\r
                \r
                //publication\r
-               ReferenceBase ref = ReferenceFactory.newGeneric();\r
+               Reference ref = ReferenceFactory.newGeneric();\r
                ref.setTitleCache(valueMap.get(PUBLICATION));\r
                TimePeriod datePublished = TimePeriod.parseString(valueMap.get(PUBLICATION_YEAR_FULL));\r
                name.setNomenclaturalReference(ref);\r
@@ -537,7 +537,7 @@ public class IpniService  implements IIpniService{
                \r
                \r
                //source\r
-               ReferenceBase citation = getIpniCitation(appConfig);\r
+               Reference citation = getIpniCitation(appConfig);\r
                name.addSource(valueMap.get(ID), "Name", citation, valueMap.get(VERSION));\r
                \r
                \r
@@ -660,7 +660,7 @@ public class IpniService  implements IIpniService{
                person.setFirstname(valueMap.get(DEFAULT_AUTHOR_FORENAME));\r
                person.setLastname(valueMap.get(DEFAULT_AUTHOR_SURNAME));\r
                \r
-               ReferenceBase citation = getIpniCitation(appConfig);\r
+               Reference citation = getIpniCitation(appConfig);\r
                \r
                //id, version\r
                person.addSource(valueMap.get(ID), "Author", citation, valueMap.get(VERSION));\r
@@ -687,8 +687,8 @@ public class IpniService  implements IIpniService{
        }\r
 \r
        \r
-       private ReferenceBase getIpniCitation(ICdmApplicationConfiguration appConfig) {\r
-               ReferenceBase ipniReference;\r
+       private Reference getIpniCitation(ICdmApplicationConfiguration appConfig) {\r
+               Reference ipniReference;\r
                if (appConfig != null){\r
                        ipniReference = appConfig.getReferenceService().find(uuidIpni);\r
                        if (ipniReference == null){\r
@@ -705,8 +705,8 @@ public class IpniService  implements IIpniService{
        /**\r
         * @return\r
         */\r
-       private ReferenceBase getNewIpniReference() {\r
-               ReferenceBase ipniReference;\r
+       private Reference getNewIpniReference() {\r
+               Reference ipniReference;\r
                ipniReference = ReferenceFactory.newDatabase();\r
                ipniReference.setTitleCache("The International Plant Names Index (IPNI)");\r
                return ipniReference;\r
@@ -827,7 +827,7 @@ public class IpniService  implements IIpniService{
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.ext.IIpniService#getPublications(java.lang.String, java.lang.String, boolean, eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration)\r
         */\r
-       public List<ReferenceBase> getPublications(String title, String abbreviation, ICdmApplicationConfiguration services, IpniServicePublicationConfigurator config){\r
+       public List<Reference> getPublications(String title, String abbreviation, ICdmApplicationConfiguration services, IpniServicePublicationConfigurator config){\r
 //             http://www.uk.ipni.org/ipni/advPublicationSearch.do?find_title=Spe*plant*&find_abbreviation=&output_format=normal&query_type=by_query&back_page=publicationsearch\r
 //             http://www.uk.ipni.org/ipni/advPublicationSearch.do?find_title=*Hortus+Britannicus*&find_abbreviation=&output_format=delimited-classic&output_format=delimited\r
                \r
@@ -842,7 +842,7 @@ public class IpniService  implements IIpniService{
                                                "&find_abbreviation=" + abbreviation +\r
                                                "&output_format=" + DelimitedFormat.CLASSIC.parameter;\r
                \r
-               List<ReferenceBase> result = (List)queryService(request, services, getServiceUrl(IIpniService.PUBLICATION_SERVICE_URL), config, ServiceType.PUBLICATION);\r
+               List<Reference> result = (List)queryService(request, services, getServiceUrl(IIpniService.PUBLICATION_SERVICE_URL), config, ServiceType.PUBLICATION);\r
                return result;\r
        }\r
 \r
index 8bf631e6f646cbab45afb46ee55d382c90962077..52ec32727d5394b3d21f085c5470fe52a85c54f6 100644 (file)
@@ -24,7 +24,7 @@ import org.apache.http.message.BasicNameValuePair;
 \r
 import eu.etaxonomy.cdm.ext.common.SchemaAdapterBase;\r
 import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 \r
 /**\r
@@ -32,7 +32,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase;
  * @date 24.08.2010\r
  *\r
  */\r
-public class SruServiceWrapper extends ServiceWrapperBase<ReferenceBase> {\r
+public class SruServiceWrapper extends ServiceWrapperBase<Reference> {\r
        \r
        private String sruVersion = "1.1";\r
        \r
@@ -41,11 +41,11 @@ public class SruServiceWrapper extends ServiceWrapperBase<ReferenceBase> {
         * @param recordSchema\r
         * @return\r
         */\r
-       public List<ReferenceBase> doSearchRetrieve(String cqlQuery, String recordSchema){\r
+       public List<Reference> doSearchRetrieve(String cqlQuery, String recordSchema){\r
                \r
                List<NameValuePair> pairs = new ArrayList<NameValuePair>();\r
                \r
-               SchemaAdapterBase<ReferenceBase> schemaAdapter = schemaAdapterMap.get(recordSchema);\r
+               SchemaAdapterBase<Reference> schemaAdapter = schemaAdapterMap.get(recordSchema);\r
                if(schemaAdapter == null){\r
                        logger.error("No SchemaAdapter found for " + recordSchema);\r
                }\r
index 811e87b5e89c4bb3124d96326befb066a9bec704..a3f38250749d18205db71981f3a9fe785c752664 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.common.Extension;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -151,11 +151,11 @@ public class IpniServiceTest {
        public void testPublications(){\r
                ICdmApplicationConfiguration services = null;\r
                IpniServicePublicationConfigurator config = null;\r
-               List<ReferenceBase> refList = service1.getPublications("Species Plantarum, Edition 3", "Sp. Pl.", services, config);\r
+               List<Reference> refList = service1.getPublications("Species Plantarum, Edition 3", "Sp. Pl.", services, config);\r
                //20009158-1%1.2%Pinaceae%%N%Abies%%N%alba%apennina%subsp.%Brullo, Scelsi & Spamp.%%Brullo, Scelsi & Spamp.%Abies alba subsp. apennina%Vegetaz. Aspromonte%41 (2001)%2001%%%%%%Italy%tax. nov.\r
 \r
                Assert.assertEquals("There should be exactly 1 result for 'Species Plantarum, Edition 3'", 1, refList.size());\r
-               ReferenceBase ref = refList.get(0);\r
+               Reference ref = refList.get(0);\r
                //title cache\r
                //the author title may be improved in future\r
                Assert.assertEquals("Title Cache should be 'Linnaeus, Carl, Species Plantarum, Edition 3'", "Linnaeus, Carl, Species Plantarum, Edition 3. 1764", ref.getTitleCache());\r
@@ -170,7 +170,7 @@ public class IpniServiceTest {
                Assert.assertEquals("", "Tutin, Thomas Gaskell", ref.getAuthorTeam().getTitleCache());\r
                \r
                \r
-//             for (ReferenceBase ref : refList){\r
+//             for (Reference ref : refList){\r
 //                     System.out.println(ref.getTitleCache());\r
 //             }\r
 \r
index f613821d45dac6e3666823a43d3b78392d659a37..6e27999b11719278ffaabd8e0d2bf392329e1769 100644 (file)
@@ -11,7 +11,7 @@ import org.junit.Before;
 import org.junit.Test;\r
 \r
 import eu.etaxonomy.cdm.ext.dc.DublinCoreSchemaAdapter;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -40,11 +40,11 @@ public class SruServiceWrapperTest {
        @Test\r
        public void testDoSearchRetrieve(){\r
                \r
-               List<ReferenceBase> refList = sruServiceWrapper.doSearchRetrieve("pica.tit=\"Linnaei Species Plantarum Europae\"", "dc");\r
+               List<Reference> refList = sruServiceWrapper.doSearchRetrieve("pica.tit=\"Linnaei Species Plantarum Europae\"", "dc");\r
                // -> http://gso.gbv.de/sru/DB=2.1/?version=1.1&operation=searchRetrieve&query=pica.tit%3D%22Species+Plantarum%22&recordSchema=dc\r
                        \r
                Assert.assertEquals("There should be exactly 2 result for 'Linnaei Species Plantarum Europae'", 2, refList.size());\r
-               ReferenceBase reference = refList.get(0);\r
+               Reference reference = refList.get(0);\r
                logger.info(reference.toString());\r
                //title cache\r
                Assert.assertEquals("Title Cache for Abies albertiana should be 'Linnaei Species Plantarum Europae Pars 2. Supplementum Plantarum Europaearum ...'", "Linnaei Species Plantarum Europae Pars 2. Supplementum Plantarum Europaearum ...", reference.getTitleCache());\r
index 99f0acd942ea48481b99f346129117084f09241a..adf82a374b7a784527736b7efe9a9f6dc820d03b 100644 (file)
@@ -7,7 +7,7 @@
   <parent>\r
     <groupId>eu.etaxonomy</groupId>\r
     <artifactId>cdmlib-parent</artifactId>\r
-    <version>2.5</version>\r
+    <version>3.0</version>\r
        <relativePath>pom.xml</relativePath>\r
   </parent>\r
   \r
index 0183f0baed195a462d22ccacd55ca8843ebedd5e..c7203b9c10f253d1dbcd14c8ac091ac7f8c21acc 100644 (file)
@@ -32,7 +32,7 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.reference.ISectionBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -535,7 +535,7 @@ public final class BerlinModelTransformer {
 //             public static int T_STATUS_ORPHANED = 6;\r
        }\r
                \r
-       public static Integer ref2refCategoryId (ReferenceBase<?> ref){\r
+       public static Integer ref2refCategoryId (Reference<?> ref){\r
                if (ref == null){\r
                        return null;\r
                }\r
index 3ab765dc50b6ad6049e906a6d7a479ec91f090f8..9e2eed56ea38958a06f6fdc458f666f935316d2c 100644 (file)
@@ -43,7 +43,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.TdwgArea;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 \r
@@ -172,8 +172,8 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                Map<String, Taxon> taxonMap = (Map<String, Taxon>) partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE);\r
                Map<String, TaxonNameBase> taxonNameMap = (Map<String, TaxonNameBase>) partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE);\r
                \r
-               Map<String, ReferenceBase> biblioRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
                \r
                Map<String, Language> iso6392Map = new HashMap<String, Language>();\r
                \r
@@ -258,7 +258,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                                        logger.warn("CommonName.RefFk (" + CdmUtils.Nz(strRefId) + ") and LanguageReference.RefFk " + CdmUtils.Nz(languageRefFk) + " are not equal. I will import only languageRefFk");\r
                                }\r
                                                \r
-                               ReferenceBase reference = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, String.valueOf(languageRefRefFk));\r
+                               Reference reference = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, String.valueOf(languageRefRefFk));\r
                                String microCitation = null;\r
                                String originalNameString = null;\r
                                \r
@@ -279,7 +279,7 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
                                                misappliedName = taxonMap.get(String.valueOf(misappliedTaxonId));\r
                                        }else{\r
                                                TaxonNameBase taxonName = taxonNameMap.get(String.valueOf(ptNameFk));\r
-                                               ReferenceBase sec = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, String.valueOf(misNameRefFk));\r
+                                               Reference sec = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, String.valueOf(misNameRefFk));\r
                                                if (taxonName == null || sec == null){\r
                                                        logger.info("Taxon name or misapplied name reference is null for common name " + commonNameId);\r
                                                }else{\r
@@ -366,10 +366,10 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
         * @param taxon\r
         */\r
        private boolean isFirstMisappliedName = true;\r
-       private Taxon getMisappliedName(Map<String, ReferenceBase> biblioRefMap, Map<String, ReferenceBase> nomRefMap, \r
+       private Taxon getMisappliedName(Map<String, Reference> biblioRefMap, Map<String, Reference> nomRefMap, \r
                        Object misNameRefFk, Taxon taxon) {\r
                Taxon misappliedTaxon = null;\r
-               ReferenceBase misNameRef = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, String.valueOf(misNameRefFk));\r
+               Reference misNameRef = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, String.valueOf(misNameRefFk));\r
                misappliedTaxon = Taxon.NewInstance(taxon.getName(), misNameRef);\r
                Set<String> includeProperty = new HashSet<String>();\r
                try {\r
@@ -647,16 +647,16 @@ public class BerlinModelCommonNamesImport  extends BerlinModelImportBase {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
 \r
                } catch (SQLException e) {\r
index 0661b09960a92561a6778561d5b1ec0105bb78eb..63f6fc2c6d281feeeb75e7909eb90077bc043acf 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.io.berlinModel.in;
 \r
 import java.io.IOException;\r
 import java.net.MalformedURLException;\r
+import java.net.URI;\r
 import java.net.URISyntaxException;\r
 import java.net.URL;\r
 import java.sql.ResultSet;\r
@@ -46,7 +47,7 @@ import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.media.ImageFile;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
@@ -175,12 +176,12 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
                BerlinModelImportConfigurator config = state.getConfig();\r
                Set<TaxonBase> taxaToSave = new HashSet<TaxonBase>();\r
                Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>) partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE);\r
-               Map<String, ReferenceBase> biblioRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
 \r
                ResultSet rs = partitioner.getResultSet();\r
                \r
-                       ReferenceBase<?> sourceRef = state.getConfig().getSourceReference();\r
+                       Reference<?> sourceRef = state.getConfig().getSourceReference();\r
                        \r
                try{\r
                        int i = 0;\r
@@ -285,14 +286,14 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
                                                //throws  in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: eu.etaxonomy.cdm.model.common.Language; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: eu.etaxonomy.cdm.model.common.Language\r
                                                if (isImage){\r
                                                        textData.addMedia(media);\r
-                                                       textData.setType(Feature.IMAGE());\r
+                                                       textData.setFeature(Feature.IMAGE());\r
                                                }else{\r
                                                        textData.putText(fact, Language.DEFAULT());\r
-                                                       textData.setType(feature);\r
+                                                       textData.setFeature(feature);\r
                                                }\r
                                                \r
                                                //reference\r
-                                               ReferenceBase citation = null;\r
+                                               Reference citation = null;\r
                                                String factRefFk = String.valueOf(factRefFkObj);\r
                                                if (factRefFkObj != null){\r
                                                        citation = getReferenceOnlyFromMaps(\r
@@ -396,30 +397,30 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
                        \r
                        //nom refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> nomRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomRefDetailMap);\r
                        \r
                        //biblio refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> biblioRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioRefDetailMap);\r
        \r
                } catch (SQLException e) {\r
@@ -438,22 +439,18 @@ public class BerlinModelFactsImport  extends BerlinModelImportBase {
         */\r
        private TaxonDescription makeImage(BerlinModelImportState state, String fact, Media media, Set<TaxonDescription> descriptionSet, Taxon taxon) {\r
                TaxonDescription taxonDescription = null;\r
-               ReferenceBase sourceRef = state.getConfig().getSourceReference();\r
-               String uri = fact;\r
+               Reference sourceRef = state.getConfig().getSourceReference();\r
                Integer size = null; \r
                ImageMetaData imageMetaData = ImageMetaData.newInstance();\r
-               URL url;\r
+               URI uri;\r
                try {\r
-                       url = new URL(fact.trim());\r
-               } catch (MalformedURLException e) {\r
-                       logger.warn("Malformed URL. Image could not be imported: " + CdmUtils.Nz(uri));\r
+                       uri = new URI(fact.trim());\r
+               } catch (URISyntaxException e) {\r
+                       logger.warn("URISyntaxException. Image could not be imported: " + fact);\r
                        return null;\r
                }\r
                try {\r
-                       imageMetaData.readMetaData(url.toURI(), 0);\r
-               }\r
-               catch(URISyntaxException e){\r
-                       logger.error("URISyntaxException reading image metadata." , e);\r
+                       imageMetaData.readMetaData(uri, 0);\r
                } catch (IOException e) {\r
                        logger.error("IOError reading image metadata." , e);\r
                } catch (HttpException e) {\r
index ae24eff7bf1100daec450359b8d888f04834ed2b..8e6428a6000c38daff60170ce480251f26ae746d 100644 (file)
@@ -37,7 +37,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.User;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -383,14 +383,14 @@ public abstract class BerlinModelImportBase extends CdmImportBase<BerlinModelImp
         * @param nomRefFk\r
         * @return\r
         */\r
-       protected ReferenceBase getReferenceFromMaps(\r
-                       Map<String, ReferenceBase> firstDetailMap,\r
-                       Map<String, ReferenceBase> secondDetailMap, \r
-                       Map<String, ReferenceBase> firstRefMap,\r
-                       Map<String, ReferenceBase> secondRefMap,\r
+       protected Reference getReferenceFromMaps(\r
+                       Map<String, Reference> firstDetailMap,\r
+                       Map<String, Reference> secondDetailMap, \r
+                       Map<String, Reference> firstRefMap,\r
+                       Map<String, Reference> secondRefMap,\r
                        String nomRefDetailFk,\r
                        String nomRefFk) {\r
-               ReferenceBase ref = null;\r
+               Reference ref = null;\r
                ref = getReferenceDetailFromMaps(firstDetailMap, secondDetailMap, nomRefDetailFk);\r
                if (ref == null){\r
                        ref = getReferenceOnlyFromMaps(firstRefMap, secondRefMap, nomRefFk);\r
@@ -406,11 +406,11 @@ public abstract class BerlinModelImportBase extends CdmImportBase<BerlinModelImp
         * @param nomRefFk\r
         * @return\r
         */\r
-       protected ReferenceBase getReferenceOnlyFromMaps(\r
-                       Map<String, ReferenceBase> firstRefMap,\r
-                       Map<String, ReferenceBase> secondRefMap,\r
+       protected Reference getReferenceOnlyFromMaps(\r
+                       Map<String, Reference> firstRefMap,\r
+                       Map<String, Reference> secondRefMap,\r
                        String nomRefFk) {\r
-               ReferenceBase ref = null;\r
+               Reference ref = null;\r
                if (firstRefMap != null){\r
                        ref = firstRefMap.get(nomRefFk);\r
                }else{\r
@@ -435,8 +435,8 @@ public abstract class BerlinModelImportBase extends CdmImportBase<BerlinModelImp
         * @param nomRefDetailFk \r
         * @return\r
         */\r
-       private ReferenceBase getReferenceDetailFromMaps(Map<String, ReferenceBase> firstDetailMap, Map<String, ReferenceBase> secondDetailMap, String nomRefDetailFk) {\r
-               ReferenceBase result = null;\r
+       private Reference getReferenceDetailFromMaps(Map<String, Reference> firstDetailMap, Map<String, Reference> secondDetailMap, String nomRefDetailFk) {\r
+               Reference result = null;\r
                if (nomRefDetailFk != null){\r
                        //get ref\r
                        if (firstDetailMap != null){\r
index 5c2123cf3b64b4ab46640bb1b79a8ded5efbb47c..2b799781b138865b725b0eb0eb8813ee3e59a99a 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.io.common.ImportStateBase;
 import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 \r
@@ -131,7 +131,7 @@ public class BerlinModelImportConfigurator extends ImportConfiguratorBase<Berlin
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.io.tcsrdf.IImportConfigurator#getSourceReference()\r
         */\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
                if (sourceReference == null){\r
                        sourceReference =  refFactory.newDatabase();\r
index ce002bc6444c053fd56ff5af4c738ca372cf90ce..e4e17de99791ad81a56b359487a97816db37e9b1 100644 (file)
@@ -15,6 +15,8 @@ import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.NAME_FACT_P
 import java.io.File;\r
 import java.io.IOException;\r
 import java.net.MalformedURLException;\r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.net.URL;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
@@ -43,7 +45,7 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 \r
 /**\r
@@ -91,12 +93,12 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                BerlinModelImportConfigurator config = state.getConfig();\r
                Set<TaxonNameBase> nameToSave = new HashSet<TaxonNameBase>();\r
                Map<String, TaxonNameBase> nameMap = (Map<String, TaxonNameBase>) partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE);\r
-               Map<String, ReferenceBase> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
 \r
                ResultSet rs = partitioner.getResultSet();\r
                \r
-               ReferenceBase<?> sourceRef = state.getConfig().getSourceReference();\r
+               Reference<?> sourceRef = state.getConfig().getSourceReference();\r
                try {\r
                        int i = 0;\r
                        //for each reference\r
@@ -114,13 +116,13 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                                \r
                                TaxonNameBase taxonNameBase = nameMap.get(String.valueOf(nameId));\r
                                String nameFactRefFk = String.valueOf(nameFactRefFkObj);\r
-                               ReferenceBase citation = getReferenceOnlyFromMaps(biblioRefMap, \r
+                               Reference citation = getReferenceOnlyFromMaps(biblioRefMap, \r
                                                nomRefMap, nameFactRefFk);\r
                                \r
                                if (taxonNameBase != null){\r
                                        //PROTOLOGUE\r
                                        if (category.equalsIgnoreCase(NAME_FACT_PROTOLOGUE)){\r
-                                               //ReferenceBase ref = (ReferenceBase)taxonNameBase.getNomenclaturalReference();\r
+                                               //Reference ref = (Reference)taxonNameBase.getNomenclaturalReference();\r
                                                //ref = Book.NewInstance();\r
                                                try{\r
                                                        Media media = getMedia(nameFact, config.getMediaUrl(), config.getMediaPath());\r
@@ -214,16 +216,16 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
 \r
 \r
@@ -314,28 +316,35 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
                //end png\r
         //pdf \r
         String urlStringPdf = mediaUrlString + "pdf/" + nameFact + "." + suffixPdf; \r
-        file = new File(mediaPath, "pdf" + sep + nameFact + "." + suffixPdf); \r
-        MediaRepresentation representationPdf = MediaRepresentation.NewInstance(mimeTypePdf, suffixPdf); \r
-        if (file.exists()){  \r
-                representationPdf.addRepresentationPart(MediaRepresentationPart.NewInstance(urlStringPdf, size)); \r
-        }else{ \r
-                fileExists = true; \r
-                int pdfCount = 0; \r
-                while (fileExists){ \r
-                        pdfCount++; \r
-                        urlStringPdf = mediaUrlString + "pdf/" + nameFact + "00" + pdfCount + "." + suffixPdf; \r
-                        file = new File(mediaPath, "pdf/" + sep + nameFact + "00" + pdfCount + "." + suffixPdf); \r
-                         \r
-                        if (file.exists()){  \r
-                                representationPdf.addRepresentationPart(MediaRepresentationPart.NewInstance(urlStringPdf, size)); \r
-                        }else{ \r
-                                fileExists = false; \r
-                        } \r
-                } \r
-        }  \r
-        if(representationPdf.getParts().size() > 0){\r
-               media.addRepresentation(representationPdf);\r
-        }\r
+        URI uriPdf;\r
+               try {\r
+                       uriPdf = new URI(urlStringPdf);\r
+                       file = new File(mediaPath, "pdf" + sep + nameFact + "." + suffixPdf); \r
+               MediaRepresentation representationPdf = MediaRepresentation.NewInstance(mimeTypePdf, suffixPdf); \r
+               if (file.exists()){  \r
+                       representationPdf.addRepresentationPart(MediaRepresentationPart.NewInstance(uriPdf, size)); \r
+               }else{ \r
+                       fileExists = true; \r
+                       int pdfCount = 0; \r
+                       while (fileExists){ \r
+                               pdfCount++; \r
+                               urlStringPdf = mediaUrlString + "pdf/" + nameFact + "00" + pdfCount + "." + suffixPdf; \r
+                               file = new File(mediaPath, "pdf/" + sep + nameFact + "00" + pdfCount + "." + suffixPdf); \r
+                                \r
+                               if (file.exists()){  \r
+                                       representationPdf.addRepresentationPart(MediaRepresentationPart.NewInstance(uriPdf, size)); \r
+                               }else{ \r
+                                       fileExists = false; \r
+                               } \r
+                       } \r
+               }\r
+                       if(representationPdf.getParts().size() > 0){\r
+                       media.addRepresentation(representationPdf);\r
+               }\r
+               } catch (URISyntaxException e) {\r
+                       e.printStackTrace();\r
+                       logger.error("URISyntaxException" + urlStringPdf);\r
+               }\r
         //end pdf \r
                \r
                if(logger.isDebugEnabled()){\r
@@ -352,15 +361,23 @@ public class BerlinModelNameFactsImport  extends BerlinModelImportBase  {
        \r
        private ImageFile makeImage(String imageUri, Integer size, File file){\r
                ImageMetaData imageMetaData = ImageMetaData.newInstance();\r
+               URI uri;\r
                try {\r
-                       imageMetaData.readMetaData(file.toURI(), 0);\r
-               } catch (IOException e) {\r
-                       logger.error("IOError reading image metadata." , e);\r
-               } catch (HttpException e) {\r
-                       logger.error("HttpException reading image metadata." , e);\r
+                       uri = new URI(imageUri);\r
+                       try {\r
+                               imageMetaData.readMetaData(uri, 0);\r
+                       } catch (IOException e) {\r
+                               logger.error("IOError reading image metadata." , e);\r
+                       } catch (HttpException e) {\r
+                               logger.error("HttpException reading image metadata." , e);\r
+                       }\r
+                       ImageFile image = ImageFile.NewInstance(uri, size, imageMetaData);\r
+                       return image;\r
+               } catch (URISyntaxException e1) {\r
+                       logger.warn("URISyntaxException: " + imageUri);\r
+                       return null;\r
                }\r
-               ImageFile image = ImageFile.NewInstance(imageUri, size, imageMetaData);\r
-               return image;\r
+               \r
        }\r
 \r
        \r
index c6bb6d688ca4230719495dbc23d3da8d8b97d65f..440941c01a4407abf2e6edf8114439615caec771 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 /**\r
@@ -188,30 +188,30 @@ public class BerlinModelNameStatusImport extends BerlinModelImportBase {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
                        \r
                        //nom refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> nomRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomRefDetailMap);\r
                        \r
                        //biblio refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> biblioRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioRefDetailMap);\r
 \r
 \r
@@ -225,10 +225,10 @@ public class BerlinModelNameStatusImport extends BerlinModelImportBase {
                        int nameId, ResultSet rs, ResultSetPartitioner partitioner) \r
                        throws SQLException{\r
                \r
-               Map<String, ReferenceBase> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> biblioDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE);\r
+               Map<String, Reference> nomRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE);\r
                \r
                Object nomRefFkObj = rs.getObject("NomStatusRefFk");\r
                Object nomRefDetailFkObj = rs.getObject("NomStatusRefDetailFk");\r
@@ -241,7 +241,7 @@ public class BerlinModelNameStatusImport extends BerlinModelImportBase {
                        if (nomRefFkObj != null){\r
                                String nomRefFk = String.valueOf(nomRefFkObj);\r
                                String nomRefDetailFk = String.valueOf(nomRefDetailFkObj);\r
-                               ReferenceBase ref = getReferenceFromMaps(biblioRefMap,\r
+                               Reference ref = getReferenceFromMaps(biblioRefMap,\r
                                                nomRefMap, biblioDetailMap, nomRefDetailMap,\r
                                                nomRefDetailFk, nomRefFk);                                                                      \r
                                \r
index acdb773a67c06dbc98a5a547ef552f5d41b724b6..f71d13b16039240c6a60c8a3e9550e1916eba54b 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.TdwgArea;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
@@ -146,7 +146,7 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
                                  }\r
                            }\r
                      }\r
-                     ReferenceBase<?> sourceRef = state.getConfig().getSourceReference();\r
+                     Reference<?> sourceRef = state.getConfig().getSourceReference();\r
                      //create description(elements)\r
                      TaxonDescription taxonDescription = getTaxonDescription(newTaxonId, oldTaxonId, oldDescription, taxonMap, occurrenceId, sourceRef);\r
                      if (tdwgAreas.size() == 0){\r
@@ -265,7 +265,7 @@ public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
         * @param taxonMap\r
         * @return\r
         */\r
-       private TaxonDescription getTaxonDescription(int newTaxonId, int oldTaxonId, TaxonDescription oldDescription, Map<String, TaxonBase> taxonMap, int occurrenceId, ReferenceBase<?> sourceSec){\r
+       private TaxonDescription getTaxonDescription(int newTaxonId, int oldTaxonId, TaxonDescription oldDescription, Map<String, TaxonBase> taxonMap, int occurrenceId, Reference<?> sourceSec){\r
                TaxonDescription result = null;\r
                if (oldDescription == null || newTaxonId != oldTaxonId){\r
                        TaxonBase taxonBase = taxonMap.get(String.valueOf(newTaxonId));\r
index 07a70949c48762c6b270793dd82a0490a77b698b..18401af0ff2acab27fe95188220e563b4cefe87b 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.TdwgArea;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
@@ -131,7 +131,7 @@ public class BerlinModelOccurrenceSourceImport  extends BerlinModelImportBase {
                        }\r
                        if (distribution != null){\r
                                Integer refId = sourceNumberRefIdMap.get(sourceNumber);\r
-                               ReferenceBase ref = getReference(refId, state);\r
+                               Reference ref = getReference(refId, state);\r
 \r
                                if (ref != null){\r
                                        DescriptionElementSource originalSource = DescriptionElementSource.NewInstance();\r
@@ -203,16 +203,16 @@ public class BerlinModelOccurrenceSourceImport  extends BerlinModelImportBase {
                        \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
 \r
 \r
@@ -295,10 +295,10 @@ public class BerlinModelOccurrenceSourceImport  extends BerlinModelImportBase {
 \r
        \r
 \r
-       private ReferenceBase getReference(Integer refId, BerlinModelImportState state) {\r
-               ReferenceBase<?> ref = (ReferenceBase)state.getRelatedObject(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE, String.valueOf(refId));\r
+       private Reference getReference(Integer refId, BerlinModelImportState state) {\r
+               Reference<?> ref = (Reference)state.getRelatedObject(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE, String.valueOf(refId));\r
                if (ref == null){\r
-                       ref = (ReferenceBase)state.getRelatedObject(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE, String.valueOf(refId));;\r
+                       ref = (Reference)state.getRelatedObject(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE, String.valueOf(refId));;\r
                }\r
                return ref;\r
        }\r
index e7cfe9170087c9b4daf2bec5f1032dc5a6c5e8da..82aebccf0379460af52b7a1f87be1d9a10b1f9e6 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.io.common.ImportHelper;
 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -104,8 +104,8 @@ public class BerlinModelRefDetailImport extends BerlinModelImportBase {
                logger.info("start make " + getPluralString() + " ...");\r
                \r
                BerlinModelImportConfigurator config = state.getConfig(); \r
-               Map<Integer, ReferenceBase> biblioRefDetailsToSave = new HashMap<Integer, ReferenceBase>();\r
-               Map<Integer, ReferenceBase> nomRefDetailsToSave =  new HashMap<Integer, ReferenceBase>();\r
+               Map<Integer, Reference> biblioRefDetailsToSave = new HashMap<Integer, Reference>();\r
+               Map<Integer, Reference> nomRefDetailsToSave =  new HashMap<Integer, Reference>();\r
                \r
                ResultSet rs = partitioner.getResultSet();\r
                \r
@@ -121,7 +121,7 @@ public class BerlinModelRefDetailImport extends BerlinModelImportBase {
                                //nomRef\r
                                String fullNomRefCache = rs.getString("fullNomRefCache"); \r
                                if ( CdmUtils.isNotEmpty(fullNomRefCache) ){\r
-                                       ReferenceBase genericReference = refFactory.newGeneric();\r
+                                       Reference genericReference = refFactory.newGeneric();\r
                                        genericReference.setTitleCache(fullNomRefCache, true);\r
                                        nomRefDetailsToSave.put(refDetailId, genericReference);\r
                                        //year\r
@@ -134,7 +134,7 @@ public class BerlinModelRefDetailImport extends BerlinModelImportBase {
                                //biblioRef\r
                                String fullRefCache = rs.getString("fullRefCache"); \r
                                if ( CdmUtils.isNotEmpty(fullRefCache) && ! fullRefCache.equals(fullNomRefCache)){\r
-                                       ReferenceBase genericReference = refFactory.newGeneric();\r
+                                       Reference genericReference = refFactory.newGeneric();\r
                                        genericReference.setTitleCache(fullRefCache, true);\r
                                        biblioRefDetailsToSave.put(refDetailId, genericReference);\r
                                        //year\r
@@ -147,7 +147,7 @@ public class BerlinModelRefDetailImport extends BerlinModelImportBase {
                        //save and store in map\r
                        logger.info("Save nomenclatural preliminary references (" + refCounter.nomRefCount + ")");\r
                        partitioner.startDoSave();\r
-                       Collection<ReferenceBase> col = nomRefDetailsToSave.values();\r
+                       Collection<Reference> col = nomRefDetailsToSave.values();\r
                        getReferenceService().save(col);\r
                        logger.info("Save bibliographical preliminary references (" + refCounter.biblioRefCount +")");\r
                        getReferenceService().save(biblioRefDetailsToSave.values());\r
index 9e8beef4c7543aa57fb1fff01f9c3104bb328e9b..dc7aeea5230b48e6d1dcf3094ac01d83ad40b696 100644 (file)
@@ -66,7 +66,7 @@ import eu.etaxonomy.cdm.model.reference.IBook;
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
 import eu.etaxonomy.cdm.model.reference.IPrintSeries;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\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
@@ -99,7 +99,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
        protected boolean initializeMappers(BerlinModelImportState state){\r
                for (CdmAttributeMapperBase mapper: classMappers){\r
                        if (mapper instanceof DbImportExtensionMapper){\r
-                               ((DbImportExtensionMapper)mapper).initialize(state, ReferenceBase.class);\r
+                               ((DbImportExtensionMapper)mapper).initialize(state, Reference.class);\r
                        }\r
                }\r
                return true;\r
@@ -252,14 +252,14 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
         */\r
        public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) {\r
                boolean success = true;\r
-//             MapWrapper<ReferenceBase> referenceStore= new MapWrapper<ReferenceBase>(null);\r
-//             MapWrapper<ReferenceBase> nomRefStore= new MapWrapper<ReferenceBase>(null);\r
+//             MapWrapper<Reference> referenceStore= new MapWrapper<Reference>(null);\r
+//             MapWrapper<Reference> nomRefStore= new MapWrapper<Reference>(null);\r
 \r
-               Map<Integer, ReferenceBase> nomRefToSave = new HashMap<Integer, ReferenceBase>();\r
-               Map<Integer, ReferenceBase> biblioRefToSave = new HashMap<Integer, ReferenceBase>();\r
+               Map<Integer, Reference> nomRefToSave = new HashMap<Integer, Reference>();\r
+               Map<Integer, Reference> biblioRefToSave = new HashMap<Integer, Reference>();\r
                \r
-               Map<String, ReferenceBase> relatedNomReferences = partitioner.getObjectMap(NOM_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> relatedBiblioReferences = partitioner.getObjectMap(BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> relatedNomReferences = partitioner.getObjectMap(NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> relatedBiblioReferences = partitioner.getObjectMap(BIBLIO_REFERENCE_NAMESPACE);\r
                \r
                BerlinModelImportConfigurator config = state.getConfig();\r
                \r
@@ -285,7 +285,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                                                                \r
                                //for the concept reference a fixed uuid may be needed -> change uuid\r
                                Integer sourceSecId = (Integer)config.getSourceSecId();\r
-                               ReferenceBase<?> sec = biblioRefToSave.get(sourceSecId);\r
+                               Reference<?> sec = biblioRefToSave.get(sourceSecId);\r
                                if (sec == null){\r
                                        sec = nomRefToSave.get(sourceSecId);    \r
                                }\r
@@ -341,16 +341,16 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                        \r
                        //nom reference map\r
                        nameSpace = NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomRefMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomRefMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomRefMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioRefMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioRefMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioRefMap);\r
                        \r
                } catch (SQLException e) {\r
@@ -375,10 +375,10 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                                ResultSet rs, \r
                                BerlinModelImportState state,\r
                                ResultSetPartitioner<BerlinModelImportState> partitioner,\r
-                               Map<Integer, ReferenceBase> biblioRefToSave, \r
-                               Map<Integer, ReferenceBase> nomRefToSave, \r
-                               Map<String, ReferenceBase> relatedBiblioReferences, \r
-                               Map<String, ReferenceBase> relatedNomReferences, \r
+                               Map<Integer, Reference> biblioRefToSave, \r
+                               Map<Integer, Reference> nomRefToSave, \r
+                               Map<String, Reference> relatedBiblioReferences, \r
+                               Map<String, Reference> relatedNomReferences, \r
                                RefCounter refCounter){\r
                boolean success = true;\r
 \r
@@ -391,7 +391,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                        Boolean thesisFlag = (Boolean)valueMap.get("thesisFlag".toLowerCase());\r
                        \r
                        \r
-                       ReferenceBase<?> referenceBase;\r
+                       Reference<?> referenceBase;\r
                        logger.debug("RefCategoryFk: " + categoryFk);\r
                        \r
                        if (thesisFlag){\r
@@ -476,10 +476,10 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                                BerlinModelImportState state,\r
                                ResultSetPartitioner partitioner,\r
                                int refId, \r
-                               ReferenceBase<?> referenceBase,  \r
+                               Reference<?> referenceBase,  \r
                                RefCounter refCounter, \r
-                               Map<Integer, ReferenceBase> biblioRefToSave, \r
-                               Map<Integer, ReferenceBase> nomRefToSave\r
+                               Map<Integer, Reference> biblioRefToSave, \r
+                               Map<Integer, Reference> nomRefToSave\r
                                ) throws SQLException{\r
                \r
                Map<String, Team> teamMap = partitioner.getObjectMap(BerlinModelAuthorTeamImport.NAMESPACE);\r
@@ -493,11 +493,11 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                Integer nomAuthorTeamFk = rs.getInt("NomAuthorTeamFk");\r
                String strNomAuthorTeamFk = String.valueOf(nomAuthorTeamFk);\r
                TeamOrPersonBase<?> nomAuthor = teamMap.get(strNomAuthorTeamFk);\r
-               ReferenceBase nomReference = null;\r
+               Reference nomReference = null;\r
                \r
                boolean hasNomRef = false;\r
                boolean hasBiblioRef = false;\r
-               ReferenceBase sourceReference = state.getConfig().getSourceReference();\r
+               Reference sourceReference = state.getConfig().getSourceReference();\r
                \r
                //is Nomenclatural Reference\r
                if ( (CdmUtils.isNotEmpty(nomRefCache) && isPreliminary) || (CdmUtils.isNotEmpty(nomTitleAbbrev) && ! isPreliminary) ){\r
@@ -528,7 +528,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                                || (CdmUtils.isNotEmpty(title) && ! isPreliminary && ! title.equalsIgnoreCase(nomTitleAbbrev)) \r
                                || hasNomRef == false){\r
                        if (hasNomRef){\r
-                               referenceBase = (ReferenceBase)referenceBase.clone();\r
+                               referenceBase = (Reference)referenceBase.clone();\r
                                copyCreatedUpdated(referenceBase, nomReference);\r
                        }\r
                        referenceBase.setTitle(title);\r
@@ -566,7 +566,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
         * @param referenceBase\r
         * @param nomReference\r
         */\r
-       private void copyCreatedUpdated(ReferenceBase<?> biblioReference, ReferenceBase nomReference) {\r
+       private void copyCreatedUpdated(Reference<?> biblioReference, Reference nomReference) {\r
                biblioReference.setCreatedBy(nomReference.getCreatedBy());\r
                biblioReference.setCreated(nomReference.getCreated());\r
                biblioReference.setUpdatedBy(nomReference.getUpdatedBy());\r
@@ -574,7 +574,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                \r
        }\r
 \r
-       private ReferenceBase<?> makeArticle (Map<String, Object> valueMap, Map<Integer, ReferenceBase> biblioRefToSave, Map<Integer, ReferenceBase> nomRefToSave, Map<String, ReferenceBase> relatedBiblioReferences, Map<String, ReferenceBase> relatedNomReferences){\r
+       private Reference<?> makeArticle (Map<String, Object> valueMap, Map<Integer, Reference> biblioRefToSave, Map<Integer, Reference> nomRefToSave, Map<String, Reference> relatedBiblioReferences, Map<String, Reference> relatedNomReferences){\r
                \r
                IArticle article = ReferenceFactory.newArticle();\r
                Object inRefFk = valueMap.get("inRefFk".toLowerCase());\r
@@ -585,7 +585,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                        if (inRefCategoryFk == REF_JOURNAL){\r
                                int inRefFkInt = (Integer)inRefFk;\r
                                if (existsInMapOrToSave(inRefFkInt, biblioRefToSave, nomRefToSave, relatedBiblioReferences, relatedNomReferences)){\r
-                                       ReferenceBase<?> inJournal = getReferenceFromMaps(inRefFkInt, nomRefToSave, relatedNomReferences);\r
+                                       Reference<?> inJournal = getReferenceFromMaps(inRefFkInt, nomRefToSave, relatedNomReferences);\r
                                        if (inJournal == null){\r
                                                inJournal = getReferenceFromMaps(inRefFkInt, biblioRefToSave, relatedBiblioReferences);\r
                                                logger.info("inJournal (" + inRefFkInt + ") found in referenceStore instead of nomRefStore.");\r
@@ -594,7 +594,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                                        if (inJournal == null){\r
                                                logger.warn("inJournal for " + inRefFkInt + " is null. "+\r
                                                        " InReference relation could not be set");\r
-                                       //}else if (ReferenceBase.class.isAssignableFrom(inJournal.getClass())){\r
+                                       //}else if (Reference.class.isAssignableFrom(inJournal.getClass())){\r
                                        }else if (inJournal.getType().equals(ReferenceType.Journal)){\r
                                                article.setInJournal((IJournal)inJournal);\r
                                        }else{\r
@@ -610,12 +610,12 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                                        " InReference was not added to Article! ");\r
                        }\r
                }\r
-               makeStandardMapper(valueMap, (ReferenceBase)article); //url, pages, series, volume\r
-               return (ReferenceBase)article;\r
+               makeStandardMapper(valueMap, (Reference)article); //url, pages, series, volume\r
+               return (Reference)article;\r
        }\r
        \r
-       private ReferenceBase<?> makePartOfOtherTitle (Map<String, Object> valueMap, Map<Integer, ReferenceBase> biblioRefToSave, Map<Integer, ReferenceBase> nomRefToSave, Map<String, ReferenceBase> relatedBiblioReferences, Map<String, ReferenceBase> relatedNomReferences){\r
-               ReferenceBase<?> result;\r
+       private Reference<?> makePartOfOtherTitle (Map<String, Object> valueMap, Map<Integer, Reference> biblioRefToSave, Map<Integer, Reference> nomRefToSave, Map<String, Reference> relatedBiblioReferences, Map<String, Reference> relatedNomReferences){\r
+               Reference<?> result;\r
                Object inRefFk = valueMap.get("inRefFk".toLowerCase());\r
                Integer inRefCategoryFk = (Integer)valueMap.get("inRefCategoryFk".toLowerCase());\r
                Integer refId = (Integer)valueMap.get("refId".toLowerCase());\r
@@ -627,11 +627,11 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                }else if (inRefCategoryFk == REF_BOOK){\r
                        //BookSection\r
                        IBookSection bookSection = ReferenceFactory.newBookSection();\r
-                       result = (ReferenceBase)bookSection;\r
+                       result = (Reference)bookSection;\r
                        if (inRefFk != null){\r
                                int inRefFkInt = (Integer)inRefFk;\r
                                if (existsInMapOrToSave(inRefFkInt, biblioRefToSave, nomRefToSave, relatedBiblioReferences, relatedNomReferences)){\r
-                                       ReferenceBase<?> inBook = getReferenceFromMaps(inRefFkInt, nomRefToSave, relatedNomReferences);\r
+                                       Reference<?> inBook = getReferenceFromMaps(inRefFkInt, nomRefToSave, relatedNomReferences);\r
                                        if (inBook == null){\r
                                                inBook = getReferenceFromMaps(inRefFkInt, biblioRefToSave, relatedBiblioReferences);\r
                                                logger.info("inBook (" + inRefFkInt + ") found in referenceStore instead of nomRefStore.");\r
@@ -683,7 +683,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
         * @param relatedNomReferences\r
         * @return\r
         */\r
-       private boolean existsInMapOrToSave(Integer inRefFkInt, Map<Integer, ReferenceBase> biblioRefToSave, Map<Integer, ReferenceBase> nomRefToSave, Map<String, ReferenceBase> relatedBiblioReferences, Map<String, ReferenceBase> relatedNomReferences) {\r
+       private boolean existsInMapOrToSave(Integer inRefFkInt, Map<Integer, Reference> biblioRefToSave, Map<Integer, Reference> nomRefToSave, Map<String, Reference> relatedBiblioReferences, Map<String, Reference> relatedNomReferences) {\r
                boolean result = false;\r
                if (inRefFkInt == null){\r
                        return false;\r
@@ -695,24 +695,24 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                return result;\r
        }\r
 \r
-       private ReferenceBase<?> makeWebSite(Map<String, Object> valueMap){\r
+       private Reference<?> makeWebSite(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Website'");}\r
-               ReferenceBase webPage = ReferenceFactory.newWebPage();\r
+               Reference webPage = ReferenceFactory.newWebPage();\r
                makeStandardMapper(valueMap, webPage); //placePublished, publisher\r
                return webPage;\r
        }\r
        \r
-       private ReferenceBase<?> makeUnknown(Map<String, Object> valueMap){\r
+       private Reference<?> makeUnknown(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Unknown'");}\r
-               ReferenceBase generic = ReferenceFactory.newGeneric();\r
+               Reference generic = ReferenceFactory.newGeneric();\r
 //             generic.setSeries(series);\r
                makeStandardMapper(valueMap, generic); //pages, placePublished, publisher, series, volume\r
                return generic;\r
        }\r
 \r
-       private ReferenceBase<?> makeInformal(Map<String, Object> valueMap){\r
+       private Reference<?> makeInformal(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Informal'");}\r
-               ReferenceBase generic = ReferenceFactory.newGeneric();\r
+               Reference generic = ReferenceFactory.newGeneric();\r
 //             informal.setSeries(series);\r
                makeStandardMapper(valueMap, generic);//editor, pages, placePublished, publisher, series, volume\r
                String informal = (String)valueMap.get("InformalRefCategory".toLowerCase());\r
@@ -722,16 +722,16 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                return generic;\r
        }\r
        \r
-       private ReferenceBase<?> makeDatabase(Map<String, Object> valueMap){\r
+       private Reference<?> makeDatabase(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Database'");}\r
-               ReferenceBase database =  ReferenceFactory.newDatabase();\r
+               Reference database =  ReferenceFactory.newDatabase();\r
                makeStandardMapper(valueMap, database); //?\r
                return database;\r
        }\r
        \r
-       private ReferenceBase<?> makeJournal(Map<String, Object> valueMap){\r
+       private Reference<?> makeJournal(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Journal'");}\r
-               ReferenceBase journal = ReferenceFactory.newJournal();\r
+               Reference journal = ReferenceFactory.newJournal();\r
                \r
                Set<String> omitAttributes = new HashSet<String>();\r
                String series = "series";\r
@@ -744,14 +744,14 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                return journal;\r
        }\r
        \r
-       private ReferenceBase<?> makeBook(\r
+       private Reference<?> makeBook(\r
                                Map<String, Object> valueMap, \r
-                               Map<Integer, ReferenceBase> biblioRefToSave, \r
-                               Map<Integer, ReferenceBase> nomRefToSave, \r
-                               Map<String, ReferenceBase> relatedBiblioReferences, \r
-                               Map<String, ReferenceBase> relatedNomReferences){\r
+                               Map<Integer, Reference> biblioRefToSave, \r
+                               Map<Integer, Reference> nomRefToSave, \r
+                               Map<String, Reference> relatedBiblioReferences, \r
+                               Map<String, Reference> relatedNomReferences){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Book'");}\r
-               ReferenceBase book = ReferenceFactory.newBook();\r
+               Reference book = ReferenceFactory.newBook();\r
                Integer refId = (Integer)valueMap.get("refId".toLowerCase());\r
                \r
                //Set bookAttributes = new String[]{"edition", "isbn", "pages","publicationTown","publisher","volume"};\r
@@ -778,7 +778,7 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                if (inRefFk != null){\r
                        int inRefFkInt = (Integer)inRefFk;\r
                        if (existsInMapOrToSave(inRefFkInt, biblioRefToSave, nomRefToSave, relatedBiblioReferences, relatedNomReferences)){\r
-                               ReferenceBase<?> inSeries = getReferenceFromMaps(inRefFkInt, nomRefToSave, relatedNomReferences);\r
+                               Reference<?> inSeries = getReferenceFromMaps(inRefFkInt, nomRefToSave, relatedNomReferences);\r
                                if (inSeries == null){\r
                                        inSeries = getReferenceFromMaps(inRefFkInt, biblioRefToSave, relatedBiblioReferences);\r
                                        logger.info("inSeries (" + inRefFkInt + ") found in referenceStore instead of nomRefStore.");\r
@@ -817,11 +817,11 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
         * @param relatedNomReferences\r
         * @return\r
         */\r
-       private ReferenceBase<?> getReferenceFromMaps(\r
+       private Reference<?> getReferenceFromMaps(\r
                        int inRefFkInt,\r
-                       Map<Integer, ReferenceBase> refToSaveMap,\r
-                       Map<String, ReferenceBase> relatedRefMap) {\r
-               ReferenceBase result = null;\r
+                       Map<Integer, Reference> refToSaveMap,\r
+                       Map<String, Reference> relatedRefMap) {\r
+               Reference result = null;\r
                result = refToSaveMap.get(inRefFkInt);\r
                if (result == null){\r
                        result = relatedRefMap.get(String.valueOf(inRefFkInt));\r
@@ -829,38 +829,38 @@ public class BerlinModelReferenceImport extends BerlinModelImportBase {
                return result;\r
        }\r
 \r
-       private ReferenceBase<?> makePrintSeries(Map<String, Object> valueMap){\r
+       private Reference<?> makePrintSeries(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'PrintSeries'");}\r
-               ReferenceBase printSeries = ReferenceFactory.newPrintSeries();\r
+               Reference printSeries = ReferenceFactory.newPrintSeries();\r
                makeStandardMapper(valueMap, printSeries, null);\r
                return printSeries;\r
        }\r
        \r
-       private ReferenceBase<?> makeProceedings(Map<String, Object> valueMap){\r
+       private Reference<?> makeProceedings(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Proceedings'");}\r
-               ReferenceBase proceedings = ReferenceFactory.newProceedings();\r
+               Reference proceedings = ReferenceFactory.newProceedings();\r
                makeStandardMapper(valueMap, proceedings, null);        \r
                return proceedings;\r
        }\r
 \r
-       private ReferenceBase<?> makeThesis(Map<String, Object> valueMap){\r
+       private Reference<?> makeThesis(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'Thesis'");}\r
-               ReferenceBase thesis = ReferenceFactory.newThesis();\r
+               Reference thesis = ReferenceFactory.newThesis();\r
                makeStandardMapper(valueMap, thesis, null);     \r
                return thesis;\r
        }\r
 \r
        \r
-       private ReferenceBase<?> makeJournalVolume(Map<String, Object> valueMap){\r
+       private Reference<?> makeJournalVolume(Map<String, Object> valueMap){\r
                if (logger.isDebugEnabled()){logger.debug("RefType 'JournalVolume'");}\r
                //Proceedings proceedings = Proceedings.NewInstance();\r
-               ReferenceBase journalVolume = ReferenceFactory.newGeneric();\r
+               Reference journalVolume = ReferenceFactory.newGeneric();\r
                makeStandardMapper(valueMap, journalVolume, null);      \r
                logger.warn("Journal volumes not yet implemented. Generic created instead but with errors");\r
                return journalVolume;\r
        }\r
        \r
-       private boolean makeStandardMapper(Map<String, Object> valueMap, ReferenceBase<?> ref){\r
+       private boolean makeStandardMapper(Map<String, Object> valueMap, Reference<?> ref){\r
                return makeStandardMapper(valueMap, ref, null);\r
        }\r
 \r
index dbc99a3156d4c314c4ff4c17cab7ff02c5cc754a..4d3ee9c8114d0d665a17a82599dc28a24ea82f50 100644 (file)
@@ -36,7 +36,7 @@ import eu.etaxonomy.cdm.model.common.ExtensionType;
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -124,8 +124,8 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
                BerlinModelImportConfigurator config = state.getConfig();\r
                Set<TaxonBase> taxaToSave = new HashSet<TaxonBase>();\r
                Map<String, TaxonNameBase> taxonNameMap = (Map<String, TaxonNameBase>) partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE);\r
-               Map<String, ReferenceBase> biblioRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
                \r
                ResultSet rs = partitioner.getResultSet();\r
                try{\r
@@ -148,7 +148,7 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
                                TaxonNameBase<?,?> taxonName = null;\r
                                taxonName  = taxonNameMap.get(String.valueOf(nameFk));\r
                                \r
-                               ReferenceBase<?> reference = null;\r
+                               Reference<?> reference = null;\r
                                String refFk = String.valueOf(refFkInt);\r
                                reference = getReferenceOnlyFromMaps(biblioRefMap, \r
                                                nomRefMap, refFk);\r
@@ -274,16 +274,16 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
 \r
                } catch (SQLException e) {\r
index 8b91b9af90e8199494fbe3db6bc04a7a60476973..fcf82ddb8799639db241e89d4c489952d3302ced 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 /**\r
@@ -290,30 +290,30 @@ public class BerlinModelTaxonNameImport extends BerlinModelImportBase {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
                        \r
                        //nom refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> nomRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomRefDetailMap);\r
                        \r
                        //biblio refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> biblioRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioRefDetailMap);\r
                        \r
                } catch (SQLException e) {\r
@@ -389,10 +389,10 @@ public class BerlinModelTaxonNameImport extends BerlinModelImportBase {
        \r
        private boolean makeNomenclaturalReference(IImportConfigurator config, TaxonNameBase taxonNameBase, \r
                                        int nameId, ResultSet rs, ResultSetPartitioner partitioner) throws SQLException{\r
-               Map<String, ReferenceBase> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> biblioRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE);\r
+               Map<String, Reference> nomRefDetailMap = partitioner.getObjectMap(BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE);\r
                \r
                Object nomRefFkObj = rs.getObject("NomRefFk");\r
                Object nomRefDetailFkObj = rs.getObject("NomRefDetailFk");\r
@@ -405,7 +405,7 @@ public class BerlinModelTaxonNameImport extends BerlinModelImportBase {
                                String nomRefFk = String.valueOf(nomRefFkObj);\r
                                String nomRefDetailFk = String.valueOf(nomRefDetailFkObj);\r
                                //get nomRef\r
-                               ReferenceBase nomReference = \r
+                               Reference nomReference = \r
                                        getReferenceFromMaps(nomRefDetailMap, biblioRefDetailMap, \r
                                                        nomRefMap, biblioRefMap, nomRefDetailFk, nomRefFk);\r
                                \r
index f89fb68062bfb1095ee54a57e888c758d4474c84..2570a8fe1ad581d3e02da05247fe6e9cebffe3bb 100644 (file)
@@ -48,7 +48,7 @@ import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 /**\r
@@ -92,8 +92,8 @@ public class BerlinModelTaxonNameRelationImport extends BerlinModelImportBase {
                BerlinModelImportConfigurator config = state.getConfig();\r
                Set<TaxonNameBase> nameToSave = new HashSet<TaxonNameBase>();\r
                Map<String, TaxonNameBase> nameMap = (Map<String, TaxonNameBase>) partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE);\r
-               Map<String, ReferenceBase> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
 \r
                        \r
                ResultSet rs = partitioner.getResultSet();\r
@@ -117,7 +117,7 @@ public class BerlinModelTaxonNameRelationImport extends BerlinModelImportBase {
                                TaxonNameBase nameTo = nameMap.get(String.valueOf(name2Id));\r
                                \r
                                \r
-                               ReferenceBase<?> citation = null;\r
+                               Reference<?> citation = null;\r
                                if (relRefFkObj != null){\r
                                        String relRefFk = String.valueOf(relRefFkObj);\r
                                        //get nomRef\r
@@ -178,7 +178,7 @@ public class BerlinModelTaxonNameRelationImport extends BerlinModelImportBase {
        private boolean handleNameRelationship(boolean success,\r
                                BerlinModelImportConfigurator config, int name1Id, int name2Id,\r
                                int relQualifierFk, String notes, TaxonNameBase nameFrom,\r
-                               TaxonNameBase nameTo, ReferenceBase<?> citation,\r
+                               TaxonNameBase nameTo, Reference<?> citation,\r
                                String microcitation, String rule) {\r
                AnnotatableEntity nameRelationship = null;\r
                if (relQualifierFk == NAME_REL_IS_BASIONYM_FOR){\r
@@ -283,30 +283,30 @@ public class BerlinModelTaxonNameRelationImport extends BerlinModelImportBase {
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
        \r
                        //nom refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.NOM_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> nomRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomRefDetailMap);\r
                        \r
                        //biblio refDetail map\r
                        nameSpace = BerlinModelRefDetailImport.BIBLIO_REFDETAIL_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = refDetailIdSet;\r
-                       Map<String, ReferenceBase> biblioRefDetailMap= (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioRefDetailMap= (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioRefDetailMap);\r
 \r
                } catch (SQLException e) {\r
index 142fd9dabbfb1070366137b482ba903fb10ff058..1144b88f2ea7808fc42068d84194120b8495deb5 100644 (file)
@@ -42,7 +42,7 @@ import eu.etaxonomy.cdm.io.common.Source;
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -50,7 +50,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 /**\r
@@ -74,31 +74,31 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
        }\r
 \r
        /**\r
-        * Creates a taxonomic tree for each PTaxon reference which belongs to a taxon that is included at least in one\r
+        * Creates a classification for each PTaxon reference which belongs to a taxon that is included at least in one\r
         * <i>taxonomically included</i> relationship\r
         * @param state\r
         * @return\r
         * @throws SQLException\r
         */\r
-       private boolean makeTaxonomicTrees(BerlinModelImportState state) throws SQLException{\r
-               logger.info("start make taxonomic tree ...");\r
+       private boolean makeClassifications(BerlinModelImportState state) throws SQLException{\r
+               logger.info("start make classification ...");\r
                Source source = state.getConfig().getSource();\r
 \r
                Set<String> idSet = getTreeReferenceIdSet(source);\r
                \r
                //nom reference map\r
                String nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-               Class cdmClass = ReferenceBase.class;\r
+               Class cdmClass = Reference.class;\r
                idSet = new HashSet<String>();\r
-               Map<String, ReferenceBase> nomRefMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+               Map<String, Reference> nomRefMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                \r
                //biblio reference map\r
                nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-               cdmClass = ReferenceBase.class;\r
+               cdmClass = Reference.class;\r
 //             idSet = new HashSet<String>();\r
-               Map<String, ReferenceBase> biblioRefMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+               Map<String, Reference> biblioRefMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                \r
-               ResultSet rs = source.getResultSet(getTaxonomicTreeQuery()) ;\r
+               ResultSet rs = source.getResultSet(getClassificationQuery()) ;\r
                int i = 0;\r
                //for each reference\r
                try {\r
@@ -108,10 +108,10 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                                \r
                                Object ptRefFkObj = rs.getObject("PTRefFk");\r
                                String ptRefFk= String.valueOf(ptRefFkObj);\r
-                               ReferenceBase<?> ref = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, ptRefFk);\r
+                               Reference<?> ref = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, ptRefFk);\r
                                \r
                                rs.getString("RefCache");\r
-                               String treeName = "TaxonTree - No Name";\r
+                               String treeName = "Classification - No Name";\r
                                String refCache = rs.getString("RefCache");\r
                                if (CdmUtils.isNotEmpty(refCache)){\r
                                        treeName = refCache;\r
@@ -119,22 +119,22 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                                if (ref != null && CdmUtils.isNotEmpty(ref.getTitleCache())){\r
                                        treeName = ref.getTitleCache();\r
                                }\r
-                               TaxonomicTree tree = TaxonomicTree.NewInstance(treeName);\r
+                               Classification tree = Classification.NewInstance(treeName);\r
                                tree.setReference(ref);\r
-                               if (i == 1 && state.getConfig().getTaxonomicTreeUuid() != null){\r
-                                       tree.setUuid(state.getConfig().getTaxonomicTreeUuid());\r
+                               if (i == 1 && state.getConfig().getClassificationUuid() != null){\r
+                                       tree.setUuid(state.getConfig().getClassificationUuid());\r
                                }\r
                                IdentifiableSource identifiableSource = IdentifiableSource.NewInstance(ptRefFk, TREE_NAMESPACE);\r
                                tree.addSource(identifiableSource);\r
                                \r
-                               getTaxonTreeService().save(tree);\r
-                               state.putTaxonomicTreeUuidInt((Integer)ptRefFkObj, tree);\r
+                               getClassificationService().save(tree);\r
+                               state.putClassificationUuidInt((Integer)ptRefFkObj, tree);\r
                        }\r
                } catch (SQLException e) {\r
-                       logger.error("Error in BerlinModleTaxonRelationImport.makeTaxonomicTrees: " + e.getMessage());\r
+                       logger.error("Error in BerlinModleTaxonRelationImport.makeClassifications: " + e.getMessage());\r
                        throw e;\r
                }\r
-               logger.info("end make taxonomic tree ...");\r
+               logger.info("end make classification ...");\r
 \r
                return true;\r
        }\r
@@ -145,7 +145,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
         */\r
        private Set<String> getTreeReferenceIdSet(Source source) throws SQLException {\r
                Set<String> result = new HashSet<String>();\r
-               ResultSet rs = source.getResultSet(getTaxonomicTreeQuery()) ;\r
+               ResultSet rs = source.getResultSet(getClassificationQuery()) ;\r
                while (rs.next()){\r
                        Object id = rs.getObject("PTRefFk");\r
                        result.add(String.valueOf(id));\r
@@ -156,7 +156,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
        /**\r
         * @return\r
         */\r
-       private String getTaxonomicTreeQuery() {\r
+       private String getClassificationQuery() {\r
                String strQuery = "SELECT PTaxon.PTRefFk, Reference.RefCache " + \r
                                                " FROM RelPTaxon INNER JOIN " + \r
                                                        " PTaxon AS PTaxon ON RelPTaxon.PTNameFk2 = PTaxon.PTNameFk AND RelPTaxon.PTRefFk2 = PTaxon.PTRefFk INNER JOIN " +\r
@@ -190,9 +190,9 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                BerlinModelImportConfigurator config = state.getConfig();\r
                Set<TaxonBase> taxaToSave = new HashSet<TaxonBase>();\r
                Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>) partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE);\r
-               Map<Integer, TaxonomicTree> taxonTreeMap = new HashMap<Integer, TaxonomicTree>();\r
-               Map<String, ReferenceBase> biblioRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = (Map<String, ReferenceBase>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<Integer, Classification> classificationMap = new HashMap<Integer, Classification>();\r
+               Map<String, Reference> biblioRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = (Map<String, Reference>) partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
 \r
                ResultSet rs = partitioner.getResultSet();\r
                        \r
@@ -216,7 +216,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                                TaxonBase taxon2 = taxonMap.get(String.valueOf(taxon2Id));\r
                                \r
                                String refFk = String.valueOf(relRefFkObj);\r
-                               ReferenceBase citation = getReferenceOnlyFromMaps(biblioRefMap, nomRefMap, refFk);\r
+                               Reference citation = getReferenceOnlyFromMaps(biblioRefMap,     nomRefMap, refFk);\r
                                \r
                                String microcitation = null; //does not exist in RelPTaxon\r
        \r
@@ -236,7 +236,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                                                }\r
                                                Taxon fromTaxon = (Taxon)taxon1;\r
                                                if (relQualifierFk == TAX_REL_IS_INCLUDED_IN){\r
-                                                       taxonRelationship = makeTaxonomicallyIncluded(state, taxonTreeMap, treeRefFk, fromTaxon, toTaxon, citation, microcitation);\r
+                                                       taxonRelationship = makeTaxonomicallyIncluded(state, classificationMap, treeRefFk, fromTaxon, toTaxon, citation, microcitation);\r
                                                }else if (relQualifierFk == TAX_REL_IS_MISAPPLIED_NAME_OF){\r
                                                         taxonRelationship = toTaxon.addMisappliedName(fromTaxon, citation, microcitation);\r
                                                }\r
@@ -305,7 +305,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                logger.info("Taxa to save: " + taxaToSave.size());\r
                partitioner.startDoSave();\r
                getTaxonService().save(taxaToSave);\r
-               taxonTreeMap = null;\r
+               classificationMap = null;\r
                taxaToSave = null;\r
                        \r
                        return success;\r
@@ -319,7 +319,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
        protected boolean doInvoke(BerlinModelImportState state){                               \r
                try {\r
                        boolean success = true;\r
-                       success &= makeTaxonomicTrees(state);\r
+                       success &= makeClassifications(state);\r
                        success &= super.doInvoke(state);\r
                        return success;\r
                } catch (SQLException e) {\r
@@ -341,11 +341,11 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                try{\r
                        Set<String> taxonIdSet = new HashSet<String>();\r
                        Set<String> referenceIdSet = new HashSet<String>();\r
-//                     Set<String> taxonTreeIdSet = new HashSet<String>();\r
+//                     Set<String> classificationIdSet = new HashSet<String>();\r
                        while (rs.next()){\r
                                handleForeignKey(rs, taxonIdSet, "taxon1Id");\r
                                handleForeignKey(rs, taxonIdSet, "taxon2Id");\r
-//                             handleForeignKey(rs, taxonTreeIdSet, "treeRefFk");\r
+//                             handleForeignKey(rs, classificationIdSet, "treeRefFk");\r
                                handleForeignKey(rs, referenceIdSet, "RelRefFk");\r
        }\r
        \r
@@ -357,27 +357,27 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                        result.put(nameSpace, taxonMap);\r
 \r
 //                     //tree map\r
-//                     nameSpace = "TaxonomicTree";\r
-//                     cdmClass = TaxonomicTree.class;\r
-//                     idSet = taxonTreeIdSet;\r
-//                     Map<String, TaxonomicTree> treeMap = (Map<String, TaxonomicTree>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+//                     nameSpace = "Classification";\r
+//                     cdmClass = Classification.class;\r
+//                     idSet = classificationIdSet;\r
+//                     Map<String, Classification> treeMap = (Map<String, Classification>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
 //                     result.put(cdmClass, treeMap);\r
 //                     Set<UUID> treeUuidSet = state\r
-//                     getTaxonTreeService().find(uuidSet);\r
+//                     getClassificationService().find(uuidSet);\r
 //                     \r
                        \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
 \r
                } catch (SQLException e) {\r
@@ -386,7 +386,7 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                return result;\r
        }\r
        \r
-       private SynonymRelationship getSynRel (int relQualifierFk, Taxon toTaxon, Synonym synonym, ReferenceBase citation, String microcitation){\r
+       private SynonymRelationship getSynRel (int relQualifierFk, Taxon toTaxon, Synonym synonym, Reference citation, String microcitation){\r
                SynonymRelationship result;\r
                if (relQualifierFk == TAX_REL_IS_HOMOTYPIC_SYNONYM_OF ||\r
                                relQualifierFk == TAX_REL_IS_PROPARTE_HOMOTYPIC_SYNONYM_OF ||\r
@@ -443,12 +443,12 @@ public class BerlinModelTaxonRelationImport  extends BerlinModelImportBase  {
                }\r
        }\r
        \r
-       private TaxonNode makeTaxonomicallyIncluded(BerlinModelImportState state, Map<Integer, TaxonomicTree> taxonTreeMap, int treeRefFk, Taxon child, Taxon parent, ReferenceBase citation, String microCitation){\r
-               TaxonomicTree tree = taxonTreeMap.get(treeRefFk);\r
+       private TaxonNode makeTaxonomicallyIncluded(BerlinModelImportState state, Map<Integer, Classification> classificationMap, int treeRefFk, Taxon child, Taxon parent, Reference citation, String microCitation){\r
+               Classification tree = classificationMap.get(treeRefFk);\r
                if (tree == null){\r
                        UUID treeUuid = state.getTreeUuidByIntTreeKey(treeRefFk);\r
-                       tree = getTaxonTreeService().getTaxonomicTreeByUuid(treeUuid);\r
-                       taxonTreeMap.put(treeRefFk, tree);\r
+                       tree = getClassificationService().getClassificationByUuid(treeUuid);\r
+                       classificationMap.put(treeRefFk, tree);\r
                }\r
                if (tree == null){\r
                        throw new IllegalStateException("Tree for ToTaxon reference does not exist.");\r
index f8d902611d8e6f7b0d79265db6f5f4277d4948a3..207af7a46542fe8ab09016d1e845f8d03e6467d7 100644 (file)
@@ -9,6 +9,8 @@
 \r
 package eu.etaxonomy.cdm.io.berlinModel.in;\r
 \r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
 import java.util.HashMap;\r
@@ -34,7 +36,7 @@ import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 /**\r
@@ -78,8 +80,8 @@ public class BerlinModelTypesImport extends BerlinModelImportBase /*implements I
                Map<Integer, Specimen> typeMap = new HashMap<Integer, Specimen>();\r
                \r
                Map<String, TaxonNameBase> nameMap = (Map<String, TaxonNameBase>) partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE);\r
-               Map<String, ReferenceBase> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
-               Map<String, ReferenceBase> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> biblioRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE);\r
+               Map<String, Reference> nomRefMap = partitioner.getObjectMap(BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE);\r
 \r
                BerlinModelImportConfigurator config = state.getConfig();\r
                Source source = config.getSource();\r
@@ -117,7 +119,7 @@ public class BerlinModelTypesImport extends BerlinModelImportBase /*implements I
                                if (taxonNameBase != null){\r
                                        try{\r
                                                SpecimenTypeDesignationStatus typeDesignationStatus = BerlinModelTransformer.typeStatusId2TypeStatus(typeStatusFk);\r
-                                               ReferenceBase<?> citation = null;\r
+                                               Reference<?> citation = null;\r
                                                if (refFkObj != null){\r
                                                        String relRefFk = String.valueOf(refFkObj);\r
                                                        //get nomRef\r
@@ -186,16 +188,16 @@ public class BerlinModelTypesImport extends BerlinModelImportBase /*implements I
 \r
                        //nom reference map\r
                        nameSpace = BerlinModelReferenceImport.NOM_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> nomReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> nomReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, nomReferenceMap);\r
 \r
                        //biblio reference map\r
                        nameSpace = BerlinModelReferenceImport.BIBLIO_REFERENCE_NAMESPACE;\r
-                       cdmClass = ReferenceBase.class;\r
+                       cdmClass = Reference.class;\r
                        idSet = referenceIdSet;\r
-                       Map<String, ReferenceBase> biblioReferenceMap = (Map<String, ReferenceBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
+                       Map<String, Reference> biblioReferenceMap = (Map<String, Reference>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);\r
                        result.put(nameSpace, biblioReferenceMap);\r
                        \r
                } catch (SQLException e) {\r
@@ -225,11 +227,13 @@ public class BerlinModelTypesImport extends BerlinModelImportBase /*implements I
                                Integer typeDesignationFk = rs.getInt("typeDesignationFk");\r
                                Integer collectionFk = rs.getInt("collectionFk");\r
                                String filename = rs.getString("filename");\r
+                               \r
                                String figurePhrase = rs.getString("figurePhrase");\r
                                \r
                                String mimeType = null; //"image/jpg";\r
                                String suffix = null; //"jpg";\r
-                               Media media = ImageFile.NewMediaInstance(null, null, filename, mimeType, suffix, null, null, null);\r
+                               java.net.URI uri = new URI(filename);\r
+                               Media media = ImageFile.NewMediaInstance(null, null, uri, mimeType, suffix, null, null, null);\r
                                if (figurePhrase != null) {\r
                                        media.addAnnotation(Annotation.NewDefaultLanguageInstance(figurePhrase));\r
                                }\r
@@ -251,6 +255,9 @@ public class BerlinModelTypesImport extends BerlinModelImportBase /*implements I
                } catch (SQLException e) {\r
                        logger.error("SQLException:" +  e);\r
                        return false;\r
+               } catch (URISyntaxException e) {\r
+                       logger.error("URISyntaxException:" +  e);\r
+                       return false;\r
                }\r
                        \r
                return success;\r
similarity index 90%
rename from cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonomicTreeExport.java
rename to cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelClassificationExport.java
index 64e42574d5b7695aabf87df2be6fd0d69cf0e4a7..29ef73b97eabf942bff0b21deef6d1f3fa634b7f 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.taxon.ITreeNode;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 \r
 /**\r
@@ -35,8 +35,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
  * @version 1.0\r
  */\r
 @Component\r
-public class BerlinModelTaxonomicTreeExport extends BerlinModelExportBase<RelationshipBase> {\r
-       private static final Logger logger = Logger.getLogger(BerlinModelTaxonomicTreeExport.class);\r
+public class BerlinModelClassificationExport extends BerlinModelExportBase<RelationshipBase> {\r
+       private static final Logger logger = Logger.getLogger(BerlinModelClassificationExport.class);\r
 \r
        private static int modCount = 1000;\r
        private static final String dbTableName = "RelPTaxon";\r
@@ -44,7 +44,7 @@ public class BerlinModelTaxonomicTreeExport extends BerlinModelExportBase<Relati
        private static final Class<? extends CdmBase> standardMethodParameter = TaxonNode.class;\r
 \r
 \r
-       public BerlinModelTaxonomicTreeExport(){\r
+       public BerlinModelClassificationExport(){\r
                super();\r
        }\r
        \r
@@ -82,7 +82,7 @@ public class BerlinModelTaxonomicTreeExport extends BerlinModelExportBase<Relati
        }\r
        \r
        protected boolean doInvoke(BerlinModelExportState state){\r
-               if (state.getConfig().isUseTaxonomicTree() == false){\r
+               if (state.getConfig().isUseClassification() == false){\r
                        return true;\r
                }\r
                \r
@@ -93,13 +93,13 @@ public class BerlinModelTaxonomicTreeExport extends BerlinModelExportBase<Relati
                        \r
                        TransactionStatus txStatus = startTransaction(true);\r
                        \r
-                       List<TaxonomicTree> list = getTaxonTreeService().list(null,10000000,0,null,null);\r
+                       List<Classification> list = getClassificationService().list(null,10000000,0,null,null);\r
                        \r
                        BerlinModelExportMapping mapping = getMapping();\r
                        mapping.initialize(state);\r
                        \r
                        int count = 0;\r
-                       for (TaxonomicTree tree : list){\r
+                       for (Classification tree : list){\r
                                for (TaxonNode node : tree.getAllNodes()){\r
                                        if (node.isTopmostNode()){\r
                                                continue;\r
index c9c7b45052d16accec3d8510a6b414a0c9731da8..4873ed969e35886569ddf5d6856ebbc1b5a17111 100644 (file)
@@ -48,7 +48,7 @@ public class BerlinModelExportConfigurator extends DbExportConfiguratorBase impl
 //                             , BerlinModelTypesImport.class\r
                                , BerlinModelTaxonExport.class\r
                                , BerlinModelTaxonRelationExport.class\r
-                               , BerlinModelTaxonomicTreeExport.class\r
+                               , BerlinModelClassificationExport.class\r
                                , BerlinModelFactExport.class\r
 //                             , BerlinModelOccurrenceImport.class\r
                };\r
index cfedfcf82ecbb5d5eca5fb6601c4663b0db8a5d1..72820a357049c227df811f078f70bb8a5423186d 100644 (file)
@@ -204,8 +204,7 @@ public class BerlinModelFactExport extends BerlinModelExportBase<TextData> {
        @SuppressWarnings("unused")\r
        private static String getFact(TextData textData){\r
 //             Map<Language, LanguageString> map = textData.getMultilanguageText();\r
-               Language preferredLanguage = null;\r
-\r
+               \r
                String result = textData.getText(Language.DEFAULT());\r
                if (result == null){\r
                        Map<Language, LanguageString> map = textData.getMultilanguageText();\r
index 945f0c55a0fb02aaf232cf1685082b8f02bb1646..a34ba125f5e21782e6a236d14dd76b24a89474a8 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
 import eu.etaxonomy.cdm.model.name.NameRelationship;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 \r
 /**\r
@@ -161,7 +161,7 @@ public class BerlinModelNameRelationExport extends BerlinModelExportBase<Relatio
                }       \r
        }\r
        \r
-       private boolean invokeIsHomotypic(BerlinModelExportState state, BerlinModelExportMapping mapping, TaxonNameBase fromName, TaxonNameBase toName, ReferenceBase refId, String microCitation) throws SQLException{\r
+       private boolean invokeIsHomotypic(BerlinModelExportState state, BerlinModelExportMapping mapping, TaxonNameBase fromName, TaxonNameBase toName, Reference refId, String microCitation) throws SQLException{\r
                try{\r
                        logger.info(fromName.getTitleCache() + "->" + toName.getTitleCache());\r
                        String maxQuery = " SELECT max(relNameId) as max FROM relName ";\r
index ed214f121d6674d955766f7f709334a7e7175b22..05f7d583626ad4b25680cf081a4ff97cc4daac55 100644 (file)
@@ -36,7 +36,7 @@ import eu.etaxonomy.cdm.model.reference.IInProceedings;
 import eu.etaxonomy.cdm.model.reference.IPrintedUnitBase;\r
 /*import eu.etaxonomy.cdm.model.reference.InProceedings;\r
 import eu.etaxonomy.cdm.model.reference.PrintedUnitBase;*/\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
 //import eu.etaxonomy.cdm.model.reference.Thesis;\r
 \r
@@ -47,13 +47,13 @@ import eu.etaxonomy.cdm.model.reference.ReferenceType;
  * @version 1.0\r
  */\r
 @Component\r
-public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceBase> {\r
+public class BerlinModelReferenceExport extends BerlinModelExportBase<Reference> {\r
        private static final Logger logger = Logger.getLogger(BerlinModelReferenceExport.class);\r
 \r
        private static int modCount = 1000;\r
        private static final String dbTableName = "Reference";\r
        private static final String pluralString = "references";\r
-       private static final Class<? extends CdmBase> standardMethodParameter = ReferenceBase.class;\r
+       private static final Class<? extends CdmBase> standardMethodParameter = Reference.class;\r
 \r
        public BerlinModelReferenceExport(){\r
                super();\r
@@ -126,13 +126,13 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
                        \r
                        TransactionStatus txStatus = startTransaction(true);\r
                        \r
-                       List<ReferenceBase> list = getReferenceService().list(null,100000000, 0,null,null);\r
+                       List<Reference> list = getReferenceService().list(null,100000000, 0,null,null);\r
                        \r
                        BerlinModelExportMapping mapping = getMapping();\r
                        mapping.initialize(state);\r
                        \r
                        int count = 0;\r
-                       for (ReferenceBase<?> ref : list){\r
+                       for (Reference<?> ref : list){\r
                                doCount(count++, modCount, pluralString);\r
                                success &= mapping.invoke(ref);\r
                        }\r
@@ -142,7 +142,7 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
                        Connection con = state.getConfig().getDestination().getConnection();\r
                        PreparedStatement stmt = con.prepareStatement(inRefSql);\r
                        count = 0;\r
-                       for (ReferenceBase<?> ref : list){\r
+                       for (Reference<?> ref : list){\r
                                doCount(count++, modCount, "inReferences");\r
                                success &= invokeInRef(ref, state, stmt);\r
                        }\r
@@ -158,11 +158,11 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
                }\r
        }\r
 \r
-       protected boolean invokeInRef(ReferenceBase ref, BerlinModelExportState state, PreparedStatement stmt) {\r
+       protected boolean invokeInRef(Reference ref, BerlinModelExportState state, PreparedStatement stmt) {\r
                if (ref == null){\r
                        return true;\r
                }else{\r
-                       ReferenceBase<?> inRef = getInRef(ref);\r
+                       Reference<?> inRef = getInRef(ref);\r
                        if (inRef == null){\r
                                return true;\r
                        }else{\r
@@ -182,16 +182,16 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
                }\r
        }\r
 \r
-       private ReferenceBase<?> getInRef(ReferenceBase<?> ref){\r
-               ReferenceBase<?> inRef;\r
+       private Reference<?> getInRef(Reference<?> ref){\r
+               Reference<?> inRef;\r
                if (ref.getType().equals(ReferenceType.Article)){\r
-                       return (ReferenceBase)((IArticle)ref).getInJournal();\r
+                       return (Reference)((IArticle)ref).getInJournal();\r
                }else if (ref.getType().equals(ReferenceType.BookSection)){\r
-                       return (ReferenceBase)((IBookSection)ref).getInBook();\r
+                       return (Reference)((IBookSection)ref).getInBook();\r
                }else if (ref.getType().equals(ReferenceType.InProceedings)){\r
-                       return (ReferenceBase) ((IInProceedings)ref).getInProceedings();\r
-               }else if (ref.getType().equals(ReferenceType.PrintedUnitBase)){\r
-                       return (ReferenceBase)((IPrintedUnitBase)ref).getInSeries();\r
+                       return (Reference) ((IInProceedings)ref).getInProceedings();\r
+               }else if (ref.getType().isPrintedUnit()){\r
+                       return (Reference)((IPrintedUnitBase)ref).getInSeries();\r
                }else{\r
                        return null;\r
                }\r
@@ -229,13 +229,13 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
        \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static Integer getRefCategoryFk(ReferenceBase<?> ref){\r
+       private static Integer getRefCategoryFk(Reference<?> ref){\r
                return BerlinModelTransformer.ref2refCategoryId(ref);\r
        }\r
        \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static String getRefCache(ReferenceBase<?> ref){\r
+       private static String getRefCache(Reference<?> ref){\r
                if (ref.isProtectedTitleCache()){\r
                        return ref.getTitleCache();\r
                }else{\r
@@ -245,7 +245,7 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
 \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static String getNomRefCache(ReferenceBase<?> ref){\r
+       private static String getNomRefCache(Reference<?> ref){\r
                if (ref.isProtectedTitleCache()){\r
                        return ref.getTitleCache();\r
                }else{\r
@@ -266,7 +266,7 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
 \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static String getNomTitleAbbrev(ReferenceBase<?> ref){\r
+       private static String getNomTitleAbbrev(Reference<?> ref){\r
                \r
                if (/*ref.isNomenclaturallyRelevant() &&*/ ref.getTitle() != null && ref.getTitle().length() <=80){\r
                        return ref.getTitle();\r
@@ -279,7 +279,7 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
        \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static String getRefAuthorString(ReferenceBase<?> ref){\r
+       private static String getRefAuthorString(Reference<?> ref){\r
                if (ref == null){\r
                        return null;\r
                }else{\r
@@ -290,7 +290,7 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
        \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static Boolean getPreliminaryFlag(ReferenceBase<?> ref){\r
+       private static Boolean getPreliminaryFlag(Reference<?> ref){\r
                if (ref.isProtectedTitleCache()){\r
                        return true;\r
                }else{\r
@@ -300,7 +300,7 @@ public class BerlinModelReferenceExport extends BerlinModelExportBase<ReferenceB
 \r
        //called by MethodMapper\r
        @SuppressWarnings("unused")\r
-       private static Boolean getThesisFlag(ReferenceBase<?> ref){\r
+       private static Boolean getThesisFlag(Reference<?> ref){\r
                if (ref.getType().equals(ReferenceType.Thesis)){\r
                        return true;\r
                }else{\r
index 29c1c35a11b0206a221c4b4e170b671435a9889c..06e3562a267d517528a6c4e5cde284cfdddfedab 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.io.common.ImportHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
index c1d78b49ae0e6f9653f99953115df729b0a24539..dedafc798c2c60a42f2a59bd8bd70a83ab76d76a 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState;
 import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportHelper;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -82,14 +82,14 @@ public class RefDetailMapper extends DbSingleAttributeExportMapperBase<BerlinMod
        protected Object getValue(CdmBase cdmBase) {\r
                String value = (String)super.getValue(cdmBase);\r
                boolean isBoolean = false;\r
-               ReferenceBase<?> ref = (ReferenceBase<?>)ImportHelper.getValue(cdmBase, this.cdmRefAttributeString, isBoolean, true);\r
+               Reference<?> ref = (Reference<?>)ImportHelper.getValue(cdmBase, this.cdmRefAttributeString, isBoolean, true);\r
                Object result = makeRefDetail(value, ref);\r
 //             getState().getConfig().getCdmAppController().commitTransaction(tx);\r
                return result;\r
        }\r
 \r
        \r
-       protected Integer makeRefDetail(String microRef, ReferenceBase<?> ref){\r
+       protected Integer makeRefDetail(String microRef, Reference<?> ref){\r
                if (ref == null){\r
                        if (microRef == null || microRef.trim().equals("")){\r
                                return null;            \r
index b646e5f3e9735dfbe5b4180635c21463de87a0b6..4102eaa5cdd8548deea327268e64c9d9dad09595 100644 (file)
@@ -19,9 +19,9 @@ import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Collection;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 \r
 @Component\r
@@ -63,11 +63,11 @@ private boolean handleMultiTableClasses(Class<? extends IdentifiableEntity> claz
                                DescriptionBase.class, IdentifiableMediaEntity.class, \r
                                Media.class, Sequence.class,\r
                                TaxonBase.class, TaxonNameBase.class,\r
-                               TaxonomicTree.class, TermBase.class\r
+                               Classification.class, TermBase.class\r
                                });\r
                handleClassList(list);\r
        }else if (clazz.isAssignableFrom(IdentifiableMediaEntity.class)){\r
-               List list = Arrays.asList(new Class[]{AgentBase.class, Collection.class, ReferenceBase.class, SpecimenOrObservationBase.class});\r
+               List list = Arrays.asList(new Class[]{AgentBase.class, Collection.class, Reference.class, SpecimenOrObservationBase.class});\r
                handleClassList(list);\r
        }else if (clazz.isAssignableFrom(TermBase.class)){\r
                List list = Arrays.asList(new Class[]{DefinedTermBase.class, FeatureTree.class, TermVocabulary.class });\r
@@ -107,7 +107,7 @@ private boolean handleMultiTableClasses(Class<? extends IdentifiableEntity> claz
                                getAgentService().updateTitleCache((Class) clazz);\r
                        }else if (Collection.class.isAssignableFrom(clazz)){\r
                                getCollectionService().updateTitleCache((Class) clazz);\r
-                       }else if (ReferenceBase.class.isAssignableFrom(clazz)){\r
+                       }else if (Reference.class.isAssignableFrom(clazz)){\r
                                getReferenceService().updateTitleCache((Class) clazz);\r
                        }else if (SpecimenOrObservationBase.class.isAssignableFrom(clazz)){\r
                                getReferenceService().updateTitleCache((Class) clazz);\r
@@ -122,8 +122,8 @@ private boolean handleMultiTableClasses(Class<? extends IdentifiableEntity> claz
                                getNameService().updateTitleCache((Class) clazz);\r
                        }\r
                        //TaxonNameBase\r
-                       else if (TaxonomicTree.class.isAssignableFrom(clazz)){\r
-                               getTaxonTreeService().updateTitleCache((Class) clazz);\r
+                       else if (Classification.class.isAssignableFrom(clazz)){\r
+                               getClassificationService().updateTitleCache((Class) clazz);\r
                        }\r
                        //unknown class\r
                        else {\r
index 9cb4aeb7fdc8ab29b12c46018fddc15267d3cb0f..6318f36509b428d02c2789d22430d9fd01edc541 100644 (file)
@@ -16,7 +16,7 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -99,7 +99,7 @@ public class CacheUpdaterConfigurator extends ImportConfiguratorBase<DefaultImpo
        private boolean doZoologicalName = true;\r
        private boolean doCultivarPlantName = true;\r
        \r
-       private boolean doTaxonomicTree = true;\r
+       private boolean doClassification = true;\r
        \r
        //TermBase\r
        private boolean doFeatureTree = true;\r
@@ -154,7 +154,7 @@ public class CacheUpdaterConfigurator extends ImportConfiguratorBase<DefaultImpo
                        doZoologicalName = false;\r
                        doCultivarPlantName = false;\r
                        \r
-                       doTaxonomicTree = false;\r
+                       doClassification = false;\r
                        \r
                        //TermBase\r
                        doFeatureTree = false;\r
@@ -328,11 +328,11 @@ public class CacheUpdaterConfigurator extends ImportConfiguratorBase<DefaultImpo
        public boolean isDoCultivarPlantName() {\r
                return doCultivarPlantName;\r
        }\r
-       public void setDoTaxonomicTree(boolean doTaxonomicTree) {\r
-               this.doTaxonomicTree = doTaxonomicTree;\r
+       public void setDoClassification(boolean doClassification) {\r
+               this.doClassification = doClassification;\r
        }\r
-       public boolean isDoTaxonomicTree() {\r
-               return doTaxonomicTree;\r
+       public boolean isDoClassification() {\r
+               return doClassification;\r
        }\r
        public void setDoFeatureTree(boolean doFeatureTree) {\r
                this.doFeatureTree = doFeatureTree;\r
@@ -360,7 +360,7 @@ public class CacheUpdaterConfigurator extends ImportConfiguratorBase<DefaultImpo
        }\r
 \r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //not needed here\r
                return null;\r
        }\r
index 74014f9a98b019c97ffa4e35785c2888644be413..e6b2e58c3295ed9bd4f489d993f1362a75d91bcc 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 \r
 /**\r
@@ -63,10 +63,10 @@ public class CdmApplicationAwareDefaultExport<T extends IExportConfigurator> imp
 \r
        public CdmApplicationAwareDefaultExport(){\r
                stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase>(service));\r
-               stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));\r
+               stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase>(service));\r
                stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));\r
                stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<Specimen>(service));\r
index 22b6f46cd1f1cf241f5aea7f83d2d947085bc4c5..f75bfb1d081d3fdfb438b7ed3064fcd5a09b419d 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 \r
 /**\r
@@ -63,10 +63,10 @@ public class CdmApplicationAwareDefaultImport<T extends IImportConfigurator> imp
                \r
                stores.put(ICdmIO.PERSON_STORE, new MapWrapper<Person>(service));\r
                stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase<?>>(service));\r
-               stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));\r
+               stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase<?,?>>(service));\r
                stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));\r
                stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<Specimen>(service));\r
@@ -143,7 +143,7 @@ public class CdmApplicationAwareDefaultImport<T extends IImportConfigurator> imp
                        return false;\r
                }\r
                                \r
-               ReferenceBase sourceReference = config.getSourceReference();\r
+               Reference sourceReference = config.getSourceReference();\r
                logger.info("Start import from Source '"+ config.getSourceNameString() + "' to destination '" + config.getDestinationNameString() + "'");\r
                \r
                \r
index 0df119d05fa68a8ee773e48d8b6af5d6d607bef1..78e8ef13ba357302feaa622ddf5e7389d682cdab 100644 (file)
@@ -10,6 +10,8 @@
 package eu.etaxonomy.cdm.io.common;\r
 \r
 import java.net.MalformedURLException;\r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.net.URL;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
@@ -45,9 +47,9 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -57,22 +59,22 @@ import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
 public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE extends ImportStateBase> extends CdmIoBase<STATE> implements ICdmImport<CONFIG, STATE>{\r
        private static Logger logger = Logger.getLogger(CdmImportBase.class);\r
 \r
-       protected TaxonomicTree makeTree(STATE state, ReferenceBase reference){\r
-               ReferenceBase ref = CdmBase.deproxy(reference, ReferenceBase.class);\r
-               String treeName = "TaxonTree (Import)";\r
+       protected Classification makeTree(STATE state, Reference reference){\r
+               Reference ref = CdmBase.deproxy(reference, Reference.class);\r
+               String treeName = "Classification (Import)";\r
                if (ref != null && CdmUtils.isNotEmpty(ref.getTitleCache())){\r
                        treeName = ref.getTitleCache();\r
                }\r
-               TaxonomicTree tree = TaxonomicTree.NewInstance(treeName);\r
+               Classification tree = Classification.NewInstance(treeName);\r
                tree.setReference(ref);\r
                \r
 \r
                // use defined uuid for first tree\r
                CONFIG config = (CONFIG)state.getConfig();\r
                if (state.countTrees() < 1 ){\r
-                       tree.setUuid(config.getTaxonomicTreeUuid());\r
+                       tree.setUuid(config.getClassificationUuid());\r
                }\r
-               getTaxonTreeService().save(tree);\r
+               getClassificationService().save(tree);\r
                state.putTree(ref, tree);\r
                return tree;\r
        }\r
@@ -80,7 +82,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
        \r
        /**\r
         * Alternative memory saving method variant of\r
-        * {@link #makeTree(STATE state, ReferenceBase ref)} which stores only the\r
+        * {@link #makeTree(STATE state, Reference ref)} which stores only the\r
         * UUID instead of the full tree in the <code>ImportStateBase</code> by \r
         * using <code>state.putTreeUuid(ref, tree);</code>\r
         * \r
@@ -88,21 +90,21 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
         * @param ref\r
         * @return\r
         */\r
-       protected TaxonomicTree makeTreeMemSave(STATE state, ReferenceBase ref){\r
-               String treeName = "TaxonTree (Import)";\r
+       protected Classification makeTreeMemSave(STATE state, Reference ref){\r
+               String treeName = "Classification (Import)";\r
                if (ref != null && CdmUtils.isNotEmpty(ref.getTitleCache())){\r
                        treeName = ref.getTitleCache();\r
                }\r
-               TaxonomicTree tree = TaxonomicTree.NewInstance(treeName);\r
+               Classification tree = Classification.NewInstance(treeName);\r
                tree.setReference(ref);\r
                \r
 \r
                // use defined uuid for first tree\r
                CONFIG config = (CONFIG)state.getConfig();\r
                if (state.countTrees() < 1 ){\r
-                       tree.setUuid(config.getTaxonomicTreeUuid());\r
+                       tree.setUuid(config.getClassificationUuid());\r
                }\r
-               getTaxonTreeService().save(tree);\r
+               getClassificationService().save(tree);\r
                state.putTreeUuid(ref, tree);\r
                return tree;\r
        }\r
@@ -275,7 +277,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
         * @param citation\r
         * @throws SQLException\r
         */\r
-       public void addOriginalSource(CdmBase cdmBase, Object idAttributeValue, String namespace, ReferenceBase citation) throws SQLException {\r
+       public void addOriginalSource(CdmBase cdmBase, Object idAttributeValue, String namespace, Reference citation) throws SQLException {\r
                if (cdmBase instanceof ISourceable ){\r
                        IOriginalSource source;\r
                        ISourceable sourceable = (ISourceable)cdmBase;\r
@@ -295,7 +297,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
        }\r
        \r
        /**\r
-        * @see #addOriginalSource(CdmBase, Object, String, ReferenceBase)\r
+        * @see #addOriginalSource(CdmBase, Object, String, Reference)\r
         * @param rs\r
         * @param cdmBase\r
         * @param dbIdAttribute\r
@@ -303,7 +305,7 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
         * @param citation\r
         * @throws SQLException\r
         */\r
-       public void addOriginalSource(ResultSet rs, CdmBase cdmBase, String dbIdAttribute, String namespace, ReferenceBase citation) throws SQLException {\r
+       public void addOriginalSource(ResultSet rs, CdmBase cdmBase, String dbIdAttribute, String namespace, Reference citation) throws SQLException {\r
                Object id = rs.getObject(dbIdAttribute);\r
                addOriginalSource(cdmBase, id, namespace, citation);\r
        }\r
@@ -380,23 +382,29 @@ public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE ex
                        return null;\r
                } else {\r
                        ImageMetaData imd = ImageMetaData.newInstance();\r
+                       URI uri;\r
                        try {\r
-                               if (readDataFromUrl){\r
-                                       URL url = new URL(multimediaObject);\r
-                                       imd.readMetaData(url.toURI(), 0);\r
+                               uri = new URI(multimediaObject);\r
+                               try {\r
+                                       if (readDataFromUrl){\r
+                                               imd.readMetaData(uri, 0);\r
+                                       }\r
+                               } catch (Exception e) {\r
+                                       String message = "An error occurred when trying to read image meta data: " +  e.getMessage();\r
+                                       logger.warn(message);\r
                                }\r
-                       } catch (Exception e) {\r
-                               String message = "An error occurred when trying to read image meta data: " +  e.getMessage();\r
+                               ImageFile imf = ImageFile.NewInstance(uri, null, imd);\r
+                               MediaRepresentation representation = MediaRepresentation.NewInstance();\r
+                               representation.setMimeType(imd.getMimeType());\r
+                               representation.addRepresentationPart(imf);\r
+                               Media media = Media.NewInstance();\r
+                               media.addRepresentation(representation);\r
+                               return media;\r
+                       } catch (URISyntaxException e1) {\r
+                               String message = "An URISyntaxException occurred when trying to create uri from multimedia objcet string: " +  multimediaObject;\r
                                logger.warn(message);\r
+                               return null;\r
                        }\r
-                       ImageFile imf = ImageFile.NewInstance(multimediaObject, null, imd);\r
-                       MediaRepresentation representation = MediaRepresentation.NewInstance();\r
-                       representation.setMimeType(imd.getMimeType());\r
-                       representation.addRepresentationPart(imf);\r
-                       Media media = Media.NewInstance();\r
-                       media.addRepresentation(representation);\r
-                               \r
-                       return media;\r
                }\r
        }\r
 \r
index e81c07c8b8f3e6508a202fa2389be48ea3d7a0fa..ccd1135175e012028aae956031c9ad04d5034c55 100644 (file)
@@ -13,7 +13,7 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.model.reference.IDatabase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 \r
index 87265f5a195812846757311b565bb7dee561b877..df83a23d7e7165ed86d99c81a84193b87fe55516 100644 (file)
@@ -16,7 +16,7 @@ import java.util.Map;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -27,9 +27,8 @@ public abstract class DbImportStateBase<CONFIG extends ImportConfiguratorBase, S
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(DbImportStateBase.class);\r
        private RelatedObjectsHelper relatedObjectsHelper = new RelatedObjectsHelper();;\r
-       //holds the taxonTrees needed for this partition, the key is a value that differentiate classifications\r
+       //holds the classifications needed for this partition, the key is a value that differentiate classifications\r
        //like the taxons reference (secundum)\r
-       private Map<Integer, TaxonomicTree> partitionTaxonTreeMap = new HashMap<Integer, TaxonomicTree>();\r
        \r
        \r
        /**\r
@@ -70,22 +69,5 @@ public abstract class DbImportStateBase<CONFIG extends ImportConfiguratorBase, S
                relatedObjectsHelper.setRelatedObjects(relatedObjects);\r
        }\r
 \r
-\r
-\r
-//     /**\r
-//      * @param curentTaxonTreeMap the curentTaxonTreeMap to set\r
-//      */\r
-//     public void setPartitionTaxonTreeMap(Map<Integer, TaxonomicTree> partitionTaxonTreeMap) {\r
-//             this.partitionTaxonTreeMap = partitionTaxonTreeMap;\r
-//     }\r
-//\r
-//     /**\r
-//      * @return the curentTaxonTreeMap\r
-//      */\r
-//     public Map<Integer, TaxonomicTree> getPartitionTaxonTreeMap() {\r
-//             return partitionTaxonTreeMap;\r
-//     }\r
-//     \r
-\r
        \r
 }\r
index c30552c54fe6b7894fa481f085356b3832b7a5a4..eb83e1a7985c74ddef914d2aea71f799d337057c 100644 (file)
@@ -12,7 +12,7 @@ import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.io.common.IExportConfigurator.CHECK;\r
 import eu.etaxonomy.cdm.model.reference.IDatabase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
index b97b081c696649704cf2787f1378e17d90193125..8e6aefac64a974782df51caefeb0866e25861b13 100644 (file)
@@ -16,7 +16,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
 import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -148,7 +148,7 @@ public interface IImportConfigurator extends IIoConfigurator {
         * reference with the name of the XML file should be returned value\r
         * @return\r
         */\r
-       public ReferenceBase getSourceReference();\r
+       public Reference getSourceReference();\r
 \r
        \r
        /**\r
@@ -160,7 +160,7 @@ public interface IImportConfigurator extends IIoConfigurator {
 \r
        //public abstract void setSource(Object url);\r
 \r
-       public void setSourceReference(ReferenceBase sourceReference);\r
+       public void setSourceReference(Reference sourceReference);\r
 \r
        public String getSourceReferenceTitle();\r
 \r
@@ -192,13 +192,13 @@ public interface IImportConfigurator extends IIoConfigurator {
        \r
        \r
        /**\r
-        * If this import implicitly represents a taxonomic tree in the destination CDM database\r
-        * one can define the taxonomic tree's uuid here. The congrete import class must support this\r
+        * If this import implicitly represents a classification in the destination CDM database\r
+        * one can define the classification's uuid here. The congrete import class must support this\r
         * functionality otherwise it will have no effect.\r
         * @return\r
         */\r
-       public UUID getTaxonomicTreeUuid();\r
-       public void setTaxonomicTreeUuid(UUID treeUuid);\r
+       public UUID getClassificationUuid();\r
+       public void setClassificationUuid(UUID treeUuid);\r
 \r
        /**\r
         * If one wants do define the uuid of the accepted taxa (except for missaplied names) this can be\r
index e60349386553375266e43ccfe051c57c6466cd2a..7c236d66f88f0fc58d3c6fedeb689a8acce49bf1 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
 import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -59,20 +59,20 @@ public abstract class ImportConfiguratorBase<STATE extends ImportStateBase, SOUR
        \r
        private Map<Integer, Feature>  featureMap = new HashMap<Integer, Feature>();\r
 \r
-        /* The taxonomic tree name for the first taxonomic tree.\r
+        /* The classification name for the first classification.\r
          * Needs only to be defined if the import does not handle the naming \r
          * itself (e.g. by using the taxon sec. reference title cache)\r
          */\r
-       private String taxonomicTreeName = "Taxon tree - no name";\r
+       private String classificationName = "Classification - no name";\r
        \r
-       private UUID  taxonomicTreeUuid = UUID.randomUUID();\r
+       private UUID  classificationUuid = UUID.randomUUID();\r
        //uuid of concept reference\r
        private UUID  secUuid = UUID.randomUUID();\r
        \r
        private Object sourceSecId = -1;\r
        \r
        private SOURCE source;\r
-       protected ReferenceBase sourceReference;\r
+       protected Reference sourceReference;\r
        private ICdmDataSource destination;\r
        private Person commentator =  Person.NewTitledInstance("automatic CDM importer");\r
        \r
@@ -245,11 +245,11 @@ public abstract class ImportConfiguratorBase<STATE extends ImportStateBase, SOUR
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.io.tcsrdf.IImportConfigurator#getSourceReference()\r
         */\r
-       public abstract ReferenceBase getSourceReference();\r
+       public abstract Reference getSourceReference();\r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.io.tcsrdf.IImportConfigurator#setSourceReference(eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.io.tcsrdf.IImportConfigurator#setSourceReference(eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public void setSourceReference(ReferenceBase sourceReference) {\r
+       public void setSourceReference(Reference sourceReference) {\r
                this.sourceReference = sourceReference;\r
        }\r
        /* (non-Javadoc)\r
@@ -299,13 +299,13 @@ public abstract class ImportConfiguratorBase<STATE extends ImportStateBase, SOUR
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTreeUuid()\r
         */\r
-       public UUID getTaxonomicTreeUuid() {\r
-               return taxonomicTreeUuid;\r
+       public UUID getClassificationUuid() {\r
+               return classificationUuid;\r
        }\r
 \r
 \r
-       public void setTaxonomicTreeUuid(UUID treeUuid) {\r
-               this.taxonomicTreeUuid = treeUuid;\r
+       public void setClassificationUuid(UUID classificationUuid) {\r
+               this.classificationUuid = classificationUuid;\r
        }\r
        \r
        /* (non-Javadoc)\r
@@ -385,20 +385,20 @@ public abstract class ImportConfiguratorBase<STATE extends ImportStateBase, SOUR
        }\r
 \r
        /**\r
-        * The taxonomic tree name for the first taxonomic tree.\r
+        * The classification name for the first classification.\r
         * Needs only to be defined if the import does not handle the naming \r
         * itself (e.g. by using the taxon sec. reference title cache)\r
-        * @param taxonomicTreeName the taxonomicTreeName to set\r
+        * @param classificationName the classificationName to set\r
         */\r
-       public void setTaxonomicTreeName(String taxonomicTreeName) {\r
-               this.taxonomicTreeName = taxonomicTreeName;\r
+       public void setClassificationName(String classificationName) {\r
+               this.classificationName = classificationName;\r
        }\r
 \r
        /**\r
-        * @return the taxonomicTreeName\r
+        * @return the classificationName\r
         */\r
-       public String getTaxonomicTreeName() {\r
-               return taxonomicTreeName;\r
+       public String getClassificationName() {\r
+               return classificationName;\r
        }\r
 \r
 \r
index 648140061754e6fa483df02965d2c7383cc35f87..ba1c1bf8cf1e279580da2e0692958247e7989e5b 100644 (file)
@@ -32,7 +32,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 /**\r
  * @author a.mueller\r
  *\r
@@ -48,7 +48,7 @@ public class ImportHelper {
        \r
        \r
 \r
-       public static boolean setOriginalSource(IdentifiableEntity idEntity, ReferenceBase sourceReference, long sourceId, String namespace){\r
+       public static boolean setOriginalSource(IdentifiableEntity idEntity, Reference sourceReference, long sourceId, String namespace){\r
                return setOriginalSource(idEntity, sourceReference, String.valueOf(sourceId), namespace);\r
        }\r
        \r
@@ -59,7 +59,7 @@ public class ImportHelper {
         * @param sourceId\r
         * @return\r
         */\r
-       public static boolean setOriginalSource(ISourceable sourceable, ReferenceBase sourceReference, String sourceId, String namespace){\r
+       public static boolean setOriginalSource(ISourceable sourceable, Reference sourceReference, String sourceId, String namespace){\r
                IOriginalSource originalSource;\r
                if (HibernateProxyHelper.isInstanceOf(sourceable, IdentifiableEntity.class)){\r
                        originalSource = IdentifiableSource.NewInstance(sourceId, namespace, sourceReference, null);\r
index 779533b9eb60b06e72942f85e46c066f8ac2c97c..d5adce061bd531d8ed13715d92b761796add4ecb 100644 (file)
@@ -30,9 +30,9 @@ import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -43,11 +43,11 @@ public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(ImportStateBase.class);\r
        \r
-       private Map<Object,TaxonomicTree> treeMap = new HashMap<Object,TaxonomicTree>();\r
+       private Map<Object,Classification> treeMap = new HashMap<Object,Classification>();\r
 \r
-       private Map<ReferenceBase,UUID> treeUuidMap = new HashMap<ReferenceBase,UUID>();\r
+       private Map<Reference,UUID> treeUuidMap = new HashMap<Reference,UUID>();\r
 \r
-       private Map<String,UUID> taxonomicTreeKeyUuidMap = new HashMap<String,UUID>();\r
+       private Map<String,UUID> classificationKeyUuidMap = new HashMap<String,UUID>();\r
        \r
        private IInputTransformer inputTransformer;\r
 \r
@@ -67,10 +67,10 @@ public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO
                stores.put(ICdmIO.USER_STORE, new MapWrapper<User>(service));\r
                stores.put(ICdmIO.PERSON_STORE, new MapWrapper<Person>(service));\r
                stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase<?>>(service));\r
-               stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));\r
-               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));\r
+               stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
+               stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<Reference>(service));\r
                stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase<?,?>>(service));\r
                stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));\r
                stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<Specimen>(service));\r
@@ -104,14 +104,14 @@ public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO
        /**\r
         * @return the treeMap\r
         */\r
-       public TaxonomicTree getTree(Object ref) {\r
+       public Classification getTree(Object ref) {\r
                return treeMap.get(ref);\r
        }\r
 \r
        /**\r
         * @param treeMap the treeMap to set\r
         */\r
-       public void putTree(Object ref, TaxonomicTree tree) {\r
+       public void putTree(Object ref, Classification tree) {\r
                if (tree != null){\r
                        this.treeMap.put(ref, tree);\r
                }\r
@@ -124,11 +124,11 @@ public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO
        /**\r
         * @return the treeUuid\r
         */\r
-       public UUID getTreeUuid(ReferenceBase ref) {\r
+       public UUID getTreeUuid(Reference ref) {\r
                return treeUuidMap.get(ref);\r
        }\r
 \r
-       public void putTreeUuid(ReferenceBase ref, TaxonomicTree tree) {\r
+       public void putTreeUuid(Reference ref, Classification tree) {\r
                if (tree != null &&  tree.getUuid() != null){\r
                        this.treeUuidMap.put(ref, tree.getUuid());\r
                }\r
@@ -142,27 +142,27 @@ public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO
        \r
        \r
        /**\r
-        * Adds a taxonomic tree uuid to the taxonomic tree uuid map,\r
-        * which maps a key for the taxonomic tree to its UUID in the CDM\r
-        * @param treeKeyId\r
-        * @param tree\r
+        * Adds a classification uuid to the classification uuid map,\r
+        * which maps a key for the classification to its UUID in the CDM\r
+        * @param classificationKeyId\r
+        * @param classification\r
         */\r
-       public void putTaxonomicTreeUuidInt(int treeKeyId, TaxonomicTree tree) {\r
-               putTaxonomicTreeUuid(String.valueOf(treeKeyId), tree);\r
+       public void putClassificationUuidInt(int classificationKeyId, Classification classification) {\r
+               putClassificationUuid(String.valueOf(classificationKeyId), classification);\r
        }\r
 \r
-       public void putTaxonomicTreeUuid(String treeKey, TaxonomicTree tree) {\r
+       public void putClassificationUuid(String treeKey, Classification tree) {\r
                if (tree != null &&  tree.getUuid() != null){\r
-                       this.taxonomicTreeKeyUuidMap.put(treeKey, tree.getUuid());\r
+                       this.classificationKeyUuidMap.put(treeKey, tree.getUuid());\r
                }\r
        }\r
        \r
        public UUID getTreeUuidByIntTreeKey(int treeKey) {\r
-               return taxonomicTreeKeyUuidMap.get(String.valueOf(treeKey));\r
+               return classificationKeyUuidMap.get(String.valueOf(treeKey));\r
        }\r
        \r
        public UUID getTreeUuidByTreeKey(String treeKey) {\r
-               return taxonomicTreeKeyUuidMap.get(treeKey);\r
+               return classificationKeyUuidMap.get(treeKey);\r
        }\r
        \r
        \r
index 5b2f1a28fc68b71455c15d2e39c14f4802c17e14..4acd066522c7495560d54e04614f5a80c1226204 100644 (file)
@@ -10,6 +10,7 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.common.NullProgressMonitor;\r
 import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;\r
 \r
@@ -21,8 +22,8 @@ public abstract class IoConfiguratorBase implements IIoConfigurator{
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(IoConfiguratorBase.class);\r
 \r
-       //im-/export uses TaxonomicTree for is_taxonomically_included_in relationships\r
-       private boolean useTaxonomicTree = true;\r
+       //im-/export uses Classification for is_taxonomically_included_in relationships\r
+       private boolean useClassification = true;\r
        \r
 //     protected Class<ICdmIO>[] ioClassList;\r
        private DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
@@ -167,18 +168,18 @@ public abstract class IoConfiguratorBase implements IIoConfigurator{
        }\r
        \r
        /**\r
-        * @return the useTaxonomicTree\r
+        * @return the useClassification\r
         */\r
-       public boolean isUseTaxonomicTree() {\r
-               return useTaxonomicTree;\r
+       public boolean isUseClassification() {\r
+               return useClassification;\r
        }\r
        \r
 \r
        /**\r
-        * @param useTaxonomicTree the useTaxonomicTree to set\r
+        * @param useClassification the useClassification to set\r
         */\r
-       public void setUseTaxonomicTree(boolean useTaxonomicTree) {\r
-               this.useTaxonomicTree = useTaxonomicTree;\r
+       public void setUseClassification(boolean useClassification) {\r
+               this.useClassification = useClassification;\r
        }\r
        \r
        @Override\r
@@ -187,6 +188,6 @@ public abstract class IoConfiguratorBase implements IIoConfigurator{
        }\r
        \r
        public IProgressMonitor getProgressMonitor(){\r
-               return this.progressMonitor;\r
+               return progressMonitor != null ? progressMonitor : new NullProgressMonitor();\r
        }\r
 }\r
index 5be4551f8d9da6a9d4204b044ff36252f85f7826..eed4b9fd2bc99219884df0d72943ecba3c75fa35 100644 (file)
@@ -19,7 +19,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.io.common.DbImportStateBase;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * This class either retrieves a defined Term from the database or creates and saves it in the database.\r
@@ -66,7 +66,7 @@ public abstract class DbImportDefinedTermCreationMapperBase<TERM extends Defined
                        TERM definedTerm = getDefinedTermIfExist(rs);\r
                        if (definedTerm == null){\r
                                definedTerm = createDefinedTerm(rs);\r
-                               ReferenceBase citation = null;\r
+                               Reference citation = null;\r
                                getState().getCurrentIO().addOriginalSource(rs, definedTerm, dbIdAttribute, objectToCreateNamespace, citation);\r
                                \r
                                UUID transformerUuid = getUuidFromTransformer(rs);\r
index e9385eedfe3a224c17213ada9709db691faf63e9..fb5546358bb47e7ea7896579d98c6af58fea22e4 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.io.common.DbImportStateBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -88,7 +88,7 @@ public abstract class DbImportDescriptionElementCreationMapperBase<ELEMENT exten
         */\r
        private void addSource(ResultSet rs, ELEMENT element) throws SQLException {\r
                String microCitation = getStringDbValue(rs, dbMicroCitationAttribute);\r
-               ReferenceBase citation = (ReferenceBase) getState().getRelatedObject(sourceNamespace, String.valueOf(rs.getObject(dbCitationAttribute)));\r
+               Reference citation = (Reference) getState().getRelatedObject(sourceNamespace, String.valueOf(rs.getObject(dbCitationAttribute)));\r
                element.addSource(null, null, citation, microCitation);\r
        }\r
 \r
index bbe78575df5c730a3bdca9212efbed9a5c62b6bd..544b6d37496f8cb70aabc7c284d1fabc531faaca 100644 (file)
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.io.common.DbImportStateBase;\r
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * This mapper creates an description element source that is added to the according description element.\r
@@ -138,7 +138,7 @@ public class DbImportDescriptionElementSourceCreationMapper extends DbImportObje
         * @throws SQLException\r
         */\r
        private void addCitation(ResultSet rs, DescriptionElementSource source) throws SQLException {\r
-               ReferenceBase citation = (ReferenceBase)getRelatedObject(rs, referenceNamespace, dbReferenceFkAttribute);\r
+               Reference citation = (Reference)getRelatedObject(rs, referenceNamespace, dbReferenceFkAttribute);\r
                source.setCitation(citation);\r
        }\r
 \r
index 068e855d0e7c1b1afdff8a145979b15c51748dca..ec2eef619708000406d17e4298e29a124ecc159c 100644 (file)
@@ -10,6 +10,8 @@
 \r
 package eu.etaxonomy.cdm.io.common.mapping;\r
 \r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
 import java.util.Set;\r
@@ -131,10 +133,17 @@ public class DbImportImageGalleryMapper extends DbSingleAttributeImportMapperBas
                }else {\r
                        element = elements.iterator().next();\r
                }\r
-               String uri = dbValue;\r
+               String uriString = dbValue;\r
                Integer size = null;\r
                String mimeType = null;\r
                String suffix = null;\r
+               URI uri = null;\r
+               try {\r
+                       uri = new URI(uriString);\r
+               } catch (URISyntaxException e) {\r
+                       String warning = "URISyntaxException when trying to convert first uri string: " + uriString;\r
+                       logger.error(warning);\r
+               }\r
                Media media = Media.NewInstance(uri, size, mimeType, suffix);\r
                element.addMedia(media);\r
                return taxon;\r
index ba28dd570a6a8e06c318657df0593e337006519a..52f0bc9d598adcaa2ec7313677f74cf00f0c2ad0 100644 (file)
@@ -10,6 +10,8 @@
 \r
 package eu.etaxonomy.cdm.io.common.mapping;\r
 \r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
 \r
@@ -62,12 +64,26 @@ public class DbImportMediaMapper extends DbImportMultiAttributeMapperBase<Descri
         * @see eu.etaxonomy.cdm.io.common.mapping.IDbImportMapper#invoke(java.sql.ResultSet, eu.etaxonomy.cdm.model.common.CdmBase)\r
         */\r
        public DescriptionElementBase invoke(ResultSet rs, DescriptionElementBase element) throws SQLException {\r
-               String uri1 = getStringDbValue(rs, dbFirstUriAttribute);\r
-               String uri2 = getStringDbValue(rs, dbSecondUriAttribute);\r
+               String uri1String = getStringDbValue(rs, dbFirstUriAttribute);\r
+               String uri2String = getStringDbValue(rs, dbSecondUriAttribute);\r
                Integer size = null;\r
                String mimeType = null;\r
                String suffix = null;\r
                \r
+               URI uri1 = null;\r
+               try {\r
+                       uri1 = new URI(uri1String);\r
+               } catch (URISyntaxException e) {\r
+                       String warning = "URISyntaxException when trying to convert first uri string: " + uri1String;\r
+                       logger.error(warning);\r
+               }\r
+               URI uri2 = null;\r
+               try {\r
+                       uri2 = new URI(uri2String);\r
+               } catch (URISyntaxException e) {\r
+                       String warning = "URISyntaxException when trying to convert first uri string: " + uri1String;\r
+                       logger.error(warning);\r
+               }\r
                Media media = Media.NewInstance(uri1, size, mimeType, suffix);\r
                if (media != null){\r
                        MediaRepresentation secondRepresentation = MediaRepresentation.NewInstance(mimeType, suffix, uri2, size);\r
index 61f51987828edd717854e7b559de9101b0f13efe..a4e69431a3f0b6141abb5c287b89711ec9094e3c 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.io.common.DbImportStateBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -86,7 +86,7 @@ public class DbImportNameTypeDesignationMapper<STATE extends DbImportStateBase<?
                CdmBase fromObject = getRelatedObject(rs, fromAttribute);\r
                CdmBase toObject = getRelatedObject(rs, toAttribute);\r
                //TODO cast\r
-               ReferenceBase citation = (ReferenceBase)getRelatedObject(rs, citationAttribute);\r
+               Reference citation = (Reference)getRelatedObject(rs, citationAttribute);\r
                String microCitation = null;\r
                if (citationAttribute != null){\r
                        microCitation = rs.getString(microCitationAttribute);\r
index b2c1de82c3cdbccdde4d713e6019af0f0682d445..ed09728d44bc1afbad133ce2829dae5fdf0cd707 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -104,7 +104,7 @@ public abstract class DbImportObjectCreationMapperBase<CREATE extends Versionabl
                        String strId = String.valueOf(id);\r
                        String idNamespace = this.objectToCreateNamespace;\r
                        //FIXME\r
-                       ReferenceBase citation = null;\r
+                       Reference citation = null;\r
                        //importMapperHelper.getState().getConfig()xxx;\r
                        String microCitation = null;\r
                        if (cdmBase instanceof IdentifiableEntity){\r
index 1a9976a3f00b636675199af1e0c22d77f00c1483..5cbace374527bc750f10158048c3e2a66e203975 100644 (file)
@@ -12,31 +12,18 @@ package eu.etaxonomy.cdm.io.common.mapping;
 \r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;\r
-import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
 import eu.etaxonomy.cdm.io.common.DbImportStateBase;\r
 import eu.etaxonomy.cdm.io.common.ICdmIO;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
-import eu.etaxonomy.cdm.model.common.IOriginalSource;\r
-import eu.etaxonomy.cdm.model.common.ISourceable;\r
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -108,7 +95,7 @@ public class DbImportSynonymMapper<STATE extends DbImportStateBase> extends DbIm
                String toId = String.valueOf(rs.getObject(toAttribute));\r
                \r
                //TODO cast\r
-               ReferenceBase citation = (ReferenceBase)getRelatedObject(rs, citationAttribute);\r
+               Reference citation = (Reference)getRelatedObject(rs, citationAttribute);\r
                String microCitation = null;\r
                if (citationAttribute != null){\r
                        microCitation = rs.getString(microCitationAttribute);\r
index 9b0fc7d571a25afc3a99d171aa2b9e301d4e7b7d..557847bef026ff8a15810cb622a641bbe154cd6c 100644 (file)
@@ -16,16 +16,16 @@ import java.util.UUID;
 \r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
 import eu.etaxonomy.cdm.io.common.DbImportStateBase;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -109,7 +109,7 @@ public class DbImportTaxIncludedInMapper<STATE extends DbImportStateBase<ImportC
                String toId = String.valueOf(rs.getObject(toAttribute));\r
                String alternativeToId = String.valueOf(rs.getObject(alternativeAttribute));\r
 \r
-               ReferenceBase citation = (ReferenceBase)getRelatedObject(rs, citationAttribute, citationNamespace);\r
+               Reference citation = (Reference)getRelatedObject(rs, citationAttribute, citationNamespace);\r
                String microCitation = null;\r
                if (citationAttribute != null){\r
                        microCitation = rs.getString(microCitationAttribute);\r
@@ -172,7 +172,7 @@ public class DbImportTaxIncludedInMapper<STATE extends DbImportStateBase<ImportC
        /**\r
         * TODO copied from BM import. May be more generic\r
         * @param state\r
-        * @param taxonTreeMap\r
+        * @param classificationMap\r
         * @param treeRefFk\r
         * @param child\r
         * @param parent\r
@@ -181,25 +181,25 @@ public class DbImportTaxIncludedInMapper<STATE extends DbImportStateBase<ImportC
         * @return\r
         */\r
        \r
-       public static final String TAXONOMIC_TREE_NAMESPACE = "TaxonomicTree";\r
+       public static final String TAXONOMIC_TREE_NAMESPACE = "Classification";\r
        \r
-       private boolean makeTaxonomicallyIncluded(STATE state, Integer treeRefFk, Taxon child, Taxon parent, ReferenceBase citation, String microCitation){\r
+       private boolean makeTaxonomicallyIncluded(STATE state, Integer classificationRefFk, Taxon child, Taxon parent, Reference citation, String microCitation){\r
                String treeKey;\r
                UUID treeUuid;\r
-               if (treeRefFk == null){\r
+               if (classificationRefFk == null){\r
                        treeKey = "1";  // there is only one tree and it gets the key '1'\r
-                       treeUuid = state.getConfig().getTaxonomicTreeUuid();\r
+                       treeUuid = state.getConfig().getClassificationUuid();\r
                }else{\r
-                       treeKey =String.valueOf(treeRefFk);\r
+                       treeKey =String.valueOf(classificationRefFk);\r
                        treeUuid = state.getTreeUuidByTreeKey(treeKey);\r
                }\r
-               TaxonomicTree tree = (TaxonomicTree)state.getRelatedObject(TAXONOMIC_TREE_NAMESPACE, treeKey);\r
+               Classification tree = (Classification)state.getRelatedObject(TAXONOMIC_TREE_NAMESPACE, treeKey);\r
                if (tree == null){\r
-                       ITaxonTreeService service = state.getCurrentIO().getTaxonTreeService();\r
-                       tree = service.getTaxonomicTreeByUuid(treeUuid);\r
+                       IClassificationService service = state.getCurrentIO().getClassificationService();\r
+                       tree = service.getClassificationByUuid(treeUuid);\r
                        if (tree == null){\r
-                               String treeName = state.getConfig().getTaxonomicTreeName();\r
-                               tree = TaxonomicTree.NewInstance(treeName);\r
+                               String treeName = state.getConfig().getClassificationName();\r
+                               tree = Classification.NewInstance(treeName);\r
                                tree.setUuid(treeUuid);\r
                                //FIXME tree reference\r
                                //tree.setReference(ref);\r
@@ -212,27 +212,6 @@ public class DbImportTaxIncludedInMapper<STATE extends DbImportStateBase<ImportC
                return (childNode != null);\r
        }\r
        \r
-//     \r
-//     private boolean makeTaxonomicallyIncluded_OLD(STATE state, Integer treeRefFk, Taxon child, Taxon parent, ReferenceBase citation, String microCitation){\r
-//             Map<Integer, TaxonomicTree> taxonTreeMap = state.getPartitionTaxonTreeMap();\r
-//             \r
-//             \r
-//             TaxonomicTree tree = taxonTreeMap.get(treeRefFk);\r
-//             if (tree == null){\r
-//                     UUID treeUuid = state.getTreeUuidByTreeKey(treeRefFk);\r
-//                     tree = state.getCurrentImport().getTaxonTreeService().getTaxonomicTreeByUuid(treeUuid);\r
-//                     if (tree == null){\r
-//                             //FIXME FIXME FIXME\r
-//                             String treeName = "TaxonTree - No Name";\r
-//                             tree = TaxonomicTree.NewInstance(treeName);\r
-//                             //tree.setReference(ref);\r
-//                             //throw new IllegalStateException("Tree for ToTaxon reference does not exist.");\r
-//                     }\r
-//                     taxonTreeMap.put(treeRefFk, tree);\r
-//             }\r
-//             return tree.addParentChild(parent, child, citation, microCitation);\r
-//     }\r
-       \r
        \r
        /**\r
         *      //TODO copied from DbImportObjectMapper. Maybe these can be merged again in future\r
index 42c5b43e70259079af6a874b4b07f4d2d9bad240..e9c7424be18b42da72983d03917a3ccedfe635fe 100644 (file)
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 public abstract class ExcelImportConfiguratorBase extends ImportConfiguratorBase<ExcelImportState, URI> implements IImportConfigurator{\r
@@ -41,7 +41,7 @@ public abstract class ExcelImportConfiguratorBase extends ImportConfiguratorBase
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index d5d4200721a718d039d2c9a4553ce764f83a60c0..78926da879ef0f95435ec0f391c1d1e5ff35a531 100644 (file)
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.io.common.ImportStateBase;
 import eu.etaxonomy.cdm.io.excel.common.ExcelImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.excel.common.ExcelImportState;\r
 import eu.etaxonomy.cdm.model.reference.IDatabase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -65,7 +65,7 @@ public class DistributionImportConfigurator extends ExcelImportConfiguratorBase
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index 21df90a1742afa8c157672538ec55e02e8449fef..fab87c1d6ff5361bddedd81c53b6daf0b1a93556 100644 (file)
@@ -10,6 +10,8 @@
 package eu.etaxonomy.cdm.io.excel.taxa;\r
 \r
 import java.net.MalformedURLException;\r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.util.Arrays;\r
 import java.util.HashMap;\r
 import java.util.HashSet;\r
@@ -37,12 +39,12 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.strategy.exceptions.StringNotParsableException;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
@@ -214,7 +216,14 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                        for (String protologue : taxonLight.getProtologues()){\r
                                TextData textData = TextData.NewInstance(Feature.PROTOLOGUE());\r
                                this.getNameDescription(taxonBase.getName()).addElement(textData);\r
-                               textData.addMedia(Media.NewInstance(protologue, null, null, null));\r
+                               URI uri;\r
+                               try {\r
+                                       uri = new URI(protologue);\r
+                                       textData.addMedia(Media.NewInstance(uri, null, null, null));\r
+                               } catch (URISyntaxException e) {\r
+                                       String warning = "URISyntaxException when trying to convert to URI: " + protologue;\r
+                                       logger.error(warning);\r
+                               }       \r
                        }\r
 \r
                        //media\r
@@ -289,7 +298,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                                                if (parentTaxon != null) {\r
                                                        //Taxon taxon = (Taxon)state.getTaxonBase(childId);\r
                                                        \r
-                                                       ReferenceBase citation = state.getConfig().getSourceReference();\r
+                                                       Reference citation = state.getConfig().getSourceReference();\r
                                                        String microCitation = null;\r
                                                        Taxon childTaxon = taxon;\r
                                                        success &= makeParent(state, parentTaxon, childTaxon, citation, microCitation);\r
@@ -385,7 +394,7 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                }\r
 \r
                //Create the taxon\r
-               ReferenceBase sec = state.getConfig().getSourceReference();\r
+               Reference sec = state.getConfig().getSourceReference();\r
                // Create the status\r
                nameStatus = CdmUtils.Nz(nameStatus).trim().toLowerCase();\r
                if (validMarkers.contains(nameStatus)){\r
@@ -418,12 +427,12 @@ public class NormalExplicitImport extends TaxonExcelImporterBase {
                }\r
        }\r
 \r
-       private boolean makeParent(TaxonExcelImportState state, Taxon parentTaxon, Taxon childTaxon, ReferenceBase citation, String microCitation){\r
+       private boolean makeParent(TaxonExcelImportState state, Taxon parentTaxon, Taxon childTaxon, Reference citation, String microCitation){\r
                boolean success = true;\r
-               ReferenceBase sec = state.getConfig().getSourceReference();\r
+               Reference sec = state.getConfig().getSourceReference();\r
                \r
-//             ReferenceBase sec = parentTaxon.getSec();\r
-               TaxonomicTree tree = state.getTree(sec);\r
+//             Reference sec = parentTaxon.getSec();\r
+               Classification tree = state.getTree(sec);\r
                if (tree == null){\r
                        tree = makeTree(state, sec);\r
                }\r
index 9972841cdc5b74d2a91f0908a88a3ebe1219977b..6f8845394f138814aaa88f12ee088fba1b194ef3 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.common.IMatchingImportConfigurator;\r
 import eu.etaxonomy.cdm.io.excel.common.ExcelImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 public class NormalExplicitImportConfigurator extends ExcelImportConfiguratorBase implements IImportConfigurator, IMatchingImportConfigurator {\r
@@ -69,7 +69,7 @@ public class NormalExplicitImportConfigurator extends ExcelImportConfiguratorBas
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index 5d5e698002b89e6ba3b926477409afd03327838b..d9ce5c29370326f6481645d1ed7bd20799756cf6 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Collection;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 \r
 public class CdmIDResolver extends IDResolver {\r
@@ -177,7 +177,7 @@ public class CdmIDResolver extends IDResolver {
                                          return resolveObject(uuid, targetType, occurrenceService);\r
                                  } else if(Collection.class.isAssignableFrom(targetType)) {\r
                                          return resolveObject(uuid, targetType, collectionService);\r
-                                 } else if(ReferenceBase.class.isAssignableFrom(targetType)) {\r
+                                 } else if(Reference.class.isAssignableFrom(targetType)) {\r
                                          return resolveObject(uuid, targetType, referenceService);\r
                                  } else if(TaxonBase.class.isAssignableFrom(targetType)) {\r
                                          return resolveObject(uuid, targetType, taxonService);\r
index 0a3099fe1ae9bd77f27ed841d08ecbe1627d038f..ea62ee5e218d53f0e23f6e57de7db9a9a8ede1da 100644 (file)
@@ -43,7 +43,6 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.User;\r
 import eu.etaxonomy.cdm.model.description.AbsenceTerm;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
-import eu.etaxonomy.cdm.model.description.FeatureNode;\r
 import eu.etaxonomy.cdm.model.description.FeatureTree;\r
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;\r
 import eu.etaxonomy.cdm.model.description.MediaKey;\r
@@ -96,30 +95,14 @@ import eu.etaxonomy.cdm.model.occurrence.Observation;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-//import eu.etaxonomy.cdm.model.reference.Article;\r
-//import eu.etaxonomy.cdm.model.reference.Book;\r
-//import eu.etaxonomy.cdm.model.reference.BookSection;\r
-//import eu.etaxonomy.cdm.model.reference.CdDvd;\r
-//import eu.etaxonomy.cdm.model.reference.Database;\r
-//import eu.etaxonomy.cdm.model.reference.Generic;\r
-//import eu.etaxonomy.cdm.model.reference.InProceedings;\r
-//import eu.etaxonomy.cdm.model.reference.Journal;\r
-//import eu.etaxonomy.cdm.model.reference.Map;\r
-//import eu.etaxonomy.cdm.model.reference.Patent;\r
-//import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
-//import eu.etaxonomy.cdm.model.reference.PrintSeries;\r
-//import eu.etaxonomy.cdm.model.reference.Proceedings;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-//import eu.etaxonomy.cdm.model.reference.Report;\r
-//import eu.etaxonomy.cdm.model.reference.Thesis;\r
-//import eu.etaxonomy.cdm.model.reference.WebPage;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -135,8 +118,9 @@ import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
            "references",\r
            "typeDesignations",\r
            "featureTrees",\r
+           "polytomousKeys",\r
            "taxonNodes",\r
-           "taxonomicTrees",\r
+           "classifications",\r
            "taxonomicNames",\r
            "homotypicalGroups",\r
            "taxonBases",\r
@@ -160,7 +144,6 @@ public class DataSet {
        @XmlElement(name = "Feature", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = Feature.class),\r
        @XmlElement(name = "HybridRelationshipType", namespace = "http://etaxonomy.eu/cdm/model/name/1.0", type = HybridRelationshipType.class),\r
        @XmlElement(name = "InstitutionType", namespace = "http://etaxonomy.eu/cdm/model/agent/1.0", type = InstitutionType.class),\r
-//        @XmlElement(name = "Keyword", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Keyword.class),\r
        @XmlElement(name = "Language", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = Language.class),\r
        @XmlElement(name = "MarkerType", namespace = "http://etaxonomy.eu/cdm/model/common/1.0", type = MarkerType.class),\r
        @XmlElement(name = "MeasurementUnit", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = MeasurementUnit.class),\r
@@ -216,14 +199,20 @@ public class DataSet {
         \r
     @XmlElementWrapper(name = "FeatureTrees")\r
     @XmlElements({\r
-      @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class),\r
-      @XmlElement(name = "PolytomousKey", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = PolytomousKey.class)\r
+      @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class)\r
     })\r
     protected List<FeatureTree> featureTrees = new ArrayList<FeatureTree>();\r
     \r
-    @XmlElementWrapper(name = "TaxonomicTrees")\r
-    @XmlElement(name = "TaxonomicTree", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
-    protected List<TaxonomicTree> taxonomicTrees = new ArrayList<TaxonomicTree>();\r
+    @XmlElementWrapper(name = "PolytomousKeys")\r
+    @XmlElements({\r
+      @XmlElement(name = "PolytomousKey", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = PolytomousKey.class)\r
+    })\r
+    protected List<PolytomousKey> polytomousKeys = new ArrayList<PolytomousKey>();\r
+    \r
+    \r
+    @XmlElementWrapper(name = "Classifications")\r
+    @XmlElement(name = "Classification", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
+    protected List<Classification> classifications = new ArrayList<Classification>();\r
     \r
     @XmlElementWrapper(name = "TaxonNodes")\r
     @XmlElement(name = "TaxonNodes", namespace = "http://etaxonomy.eu/cdm/model/taxon/1.0")\r
@@ -253,25 +242,9 @@ public class DataSet {
     \r
     @XmlElementWrapper(name = "References")\r
     @XmlElements({\r
-       @XmlElement(name = "ReferenceBase", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = ReferenceBase.class)\r
-//     @XmlElement(name = "Article", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Article.class),\r
-//     @XmlElement(name = "Book", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Book.class),\r
-//     @XmlElement(name = "BookSection", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = BookSection.class),\r
-//     @XmlElement(name = "CdDvd", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = CdDvd.class),\r
-//     @XmlElement(name = "Database", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Database.class),\r
-//     @XmlElement(name = "Generic", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Generic.class),\r
-//     @XmlElement(name = "InProceedings", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = InProceedings.class),\r
-//     @XmlElement(name = "Journal", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Journal.class),\r
-//     @XmlElement(name = "Map", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Map.class),\r
-//     @XmlElement(name = "Patent", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Patent.class),\r
-//     @XmlElement(name = "PersonalCommunication", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = PersonalCommunication.class),\r
-//     @XmlElement(name = "PrintSeries", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = PrintSeries.class),\r
-//     @XmlElement(name = "Proceedings", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Proceedings.class),\r
-//     @XmlElement(name = "Report", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Report.class),\r
-//     @XmlElement(name = "Thesis", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Thesis.class),\r
-//     @XmlElement(name = "WebPage", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = WebPage.class)\r
+       @XmlElement(name = "Reference", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Reference.class)\r
     })\r
-    protected List<ReferenceBase> references = new ArrayList<ReferenceBase>();\r
+    protected List<Reference> references = new ArrayList<Reference>();\r
 \r
     @XmlElementWrapper(name = "TypeDesignations")\r
     @XmlElements({\r
@@ -521,10 +494,10 @@ public class DataSet {
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<ReferenceBase> }\r
+     *     {@link List<Reference> }\r
      *     \r
      */\r
-    public List<ReferenceBase> getReferences() {\r
+    public List<Reference> getReferences() {\r
         return references;\r
     }\r
 \r
@@ -533,10 +506,10 @@ public class DataSet {
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<ReferenceBase> }\r
+     *     {@link List<Reference> }\r
      *     \r
      */\r
-    public void setReferences(List<ReferenceBase> value) {\r
+    public void setReferences(List<Reference> value) {\r
         this.references = value;\r
     }\r
 \r
@@ -551,6 +524,19 @@ public class DataSet {
     public List<FeatureTree> getFeatureTrees() {\r
         return featureTrees;\r
     }\r
+    \r
+\r
+    /**\r
+     * Gets the value of the polytomousKeys property.\r
+     * \r
+     * @return\r
+     *     possible object is\r
+     *     {@link List<PolytomousKey> }\r
+     *     \r
+     */\r
+    public List<PolytomousKey> getPolytomousKeys() {\r
+        return polytomousKeys;\r
+    }\r
 \r
     /**\r
      * Sets the value of the featureTrees property.\r
@@ -560,8 +546,8 @@ public class DataSet {
      *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public void setTaxonomicTrees(List<TaxonomicTree> value) {\r
-       this.taxonomicTrees = value;\r
+    public void setClassifications(List<Classification> value) {\r
+       this.classifications = value;\r
     }\r
     \r
     \r
@@ -573,8 +559,8 @@ public class DataSet {
      *     {@link List<FeatureTree> }\r
      *     \r
      */\r
-    public List<TaxonomicTree> getTaxonomicTrees() {\r
-        return taxonomicTrees;\r
+    public List<Classification> getClassifications() {\r
+        return classifications;\r
     }\r
     /**\r
      * Sets the value of the featureTrees property.\r
@@ -613,6 +599,18 @@ public class DataSet {
        this.featureTrees = value;\r
     }\r
     \r
+    /**\r
+     * Sets the value of the polytomousKeys property.\r
+     * \r
+     * @param value\r
+     *     allowed object is\r
+     *     {@link List<PolytomousKey> }\r
+     *     \r
+     */\r
+    public void setPolytomousKeys(List<PolytomousKey> value) {\r
+       this.polytomousKeys = value;\r
+    }\r
+    \r
     /**\r
      * Adds the taxonBases in value to the taxonBases property list.\r
      * \r
index b6c87d605bada082e068afa5db6f588309d0dd17..581c41328e3329abf196cc4123c241f7697ca6ab 100644 (file)
@@ -31,10 +31,10 @@ import eu.etaxonomy.cdm.model.description.FeatureNode;
 import eu.etaxonomy.cdm.model.description.FeatureTree;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -56,8 +56,8 @@ public class JaxbExport extends CdmExportBase<JaxbExportConfigurator, JaxbExport
 //     }\r
 \r
        /** Retrieves data from a CDM DB and serializes them CDM to XML.\r
-        * Starts with root taxa and traverses the taxonomic tree to retrieve children taxa, synonyms and relationships.\r
-        * Taxa that are not part of the taxonomic tree are not found.\r
+        * Starts with root taxa and traverses the classification to retrieve children taxa, synonyms and relationships.\r
+        * Taxa that are not part of the classification are not found.\r
         * \r
         * @param exImpConfig\r
         * @param dbname\r
@@ -136,7 +136,7 @@ public class JaxbExport extends CdmExportBase<JaxbExportConfigurator, JaxbExport
                int occurrencesRows = numberOfRows;\r
                int mediaRows = numberOfRows;\r
                int featureDataRows = numberOfRows;\r
-               int taxonomicTreeDataRows = numberOfRows;\r
+               int classificationDataRows = numberOfRows;\r
                int languageDataRows = numberOfRows;\r
                int termVocabularyRows = numberOfRows;\r
                int homotypicalGroupRows = numberOfRows;\r
@@ -186,8 +186,8 @@ public class JaxbExport extends CdmExportBase<JaxbExportConfigurator, JaxbExport
                \r
 \r
                if (jaxbExpConfig.getDoReferences() != IImportConfigurator.DO_REFERENCES.NONE) {\r
-                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(ReferenceBase.class); }\r
-                       logger.info("# ReferenceBase: " + referenceBaseRows);\r
+                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(Reference.class); }\r
+                       logger.info("# Reference: " + referenceBaseRows);\r
                        dataSet.setReferences(getReferenceService().list(null,referenceBaseRows, 0,null,null));\r
                }\r
                \r
@@ -272,21 +272,21 @@ public class JaxbExport extends CdmExportBase<JaxbExportConfigurator, JaxbExport
                        \r
                        dataSet.setFeatureTrees(getFeatureTreeService().list(null,null,null,null,null));\r
                }\r
-               if (jaxbExpConfig.isDoTaxonomicTreeData() == true) {\r
-                       if (taxonomicTreeDataRows == 0) { taxonomicTreeDataRows = MAX_ROWS; }\r
-                       logger.info("# Taxonomic Tree");\r
+               if (jaxbExpConfig.isDoClassificationData() == true) {\r
+                       if (classificationDataRows == 0) { classificationDataRows = MAX_ROWS; }\r
+                       logger.info("# Classification");\r
                        \r
                        \r
-                       List<TaxonomicTree> taxTrees = new ArrayList<TaxonomicTree>();\r
-                       taxTrees= getTaxonTreeService().list(null,taxonomicTreeDataRows, 0, null, null);\r
+                       List<Classification> taxTrees = new ArrayList<Classification>();\r
+                       taxTrees= getClassificationService().list(null,classificationDataRows, 0, null, null);\r
                        \r
-                       List<TaxonomicTree> taxTreesdeproxy = new ArrayList<TaxonomicTree>();\r
-                       for (TaxonomicTree taxTree : taxTrees){\r
+                       List<Classification> taxTreesdeproxy = new ArrayList<Classification>();\r
+                       for (Classification taxTree : taxTrees){\r
                                HibernateProxyHelper.deproxy(taxTree);\r
                                taxTreesdeproxy.add(taxTree);\r
                        }\r
                        List<TaxonNode> taxNodes = new ArrayList<TaxonNode>();\r
-                       taxNodes= getTaxonTreeService().getAllNodes();\r
+                       taxNodes= getClassificationService().getAllNodes();\r
                        List<TaxonNode> taxNodesdeproxy = new ArrayList<TaxonNode>();\r
                        for (TaxonNode taxNode : taxNodes){\r
                                HibernateProxyHelper.deproxy(taxNode);\r
@@ -294,7 +294,7 @@ public class JaxbExport extends CdmExportBase<JaxbExportConfigurator, JaxbExport
                        }\r
                        \r
                        dataSet.setTaxonNodes(taxNodesdeproxy);\r
-                       dataSet.setTaxonomicTrees(taxTreesdeproxy );\r
+                       dataSet.setClassifications(taxTreesdeproxy );\r
                }\r
                //TODO: FIXME!!!!!\r
                dataSet.setLanguageStrings(null);\r
index d8ed75e6b1df2c6b0ed18d6ab9eb910a0fa318ea..6488b50c062c8e912b17acb2a2f90ca17c460066 100644 (file)
@@ -44,7 +44,7 @@ public class JaxbExportConfigurator extends ExportConfiguratorBase implements IE
        private boolean doHomotypicalGroups = true;\r
 \r
        private boolean doTypeDesignations = true;\r
-       private boolean doTaxonomicTreeData = true;\r
+       private boolean doClassificationData = true;\r
        \r
        \r
        \r
@@ -105,11 +105,11 @@ public class JaxbExportConfigurator extends ExportConfiguratorBase implements IE
                this.doFeatureData = doFeatureData;\r
        }\r
 \r
-       public boolean isDoTaxonomicTreeData() {\r
-               return doTaxonomicTreeData;\r
+       public boolean isDoClassificationData() {\r
+               return doClassificationData;\r
        }\r
-       public void setDoTaxonomicTreeData(boolean doTaxonomicTreeData) {\r
-               this.doTaxonomicTreeData = doTaxonomicTreeData;\r
+       public void setDoClassificationData(boolean doClassificationData) {\r
+               this.doClassificationData = doClassificationData;\r
        }\r
        public boolean isDoDescriptions() {\r
                return doDescriptions;\r
index 800d773bc8869559c578a19577cf86a7d27f3f13..9f86845c53ed0621515a5a6df5542002ce473e1b 100644 (file)
@@ -38,10 +38,10 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -115,7 +115,7 @@ public class JaxbImport extends CdmIoBase<JaxbImportState> implements ICdmIO<Jax
                List<? extends AgentBase> agents;\r
                List<DefinedTermBase> terms;\r
                List<User> users;\r
-               List<ReferenceBase> references;\r
+               List<Reference> references;\r
                List<TaxonNameBase> taxonomicNames;\r
                List<DescriptionBase> descriptions;\r
                List<TypeDesignationBase> typeDesignations;\r
@@ -335,14 +335,14 @@ public class JaxbImport extends CdmIoBase<JaxbImportState> implements ICdmIO<Jax
                        ret = false;\r
                }\r
                \r
-               if (jaxbImpConfig.isDoTaxonomicTreeData() == true) {\r
-                       logger.error("# Taxonomic Tree");\r
+               if (jaxbImpConfig.isDoClassificationData() == true) {\r
+                       logger.error("# Classification");\r
                        \r
                        Collection<TaxonNode> nodes = dataSet.getTaxonNodes();\r
-                       Collection<TaxonomicTree> taxonTrees = dataSet.getTaxonomicTrees();\r
-                       getTaxonTreeService().saveTaxonNodeAll(nodes);\r
-                       for (TaxonomicTree tree: taxonTrees){\r
-                               getTaxonTreeService().saveOrUpdate(tree);\r
+                       Collection<Classification> classifications = dataSet.getClassifications();\r
+                       getClassificationService().saveTaxonNodeAll(nodes);\r
+                       for (Classification tree: classifications){\r
+                               getClassificationService().saveOrUpdate(tree);\r
                        }\r
                }\r
                \r
index 944454c242292cf45ccce4b9b0be3146b7e7a60d..7225ee28e02308f84d4a2f6ada27289710f15507 100644 (file)
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -53,7 +53,7 @@ public class JaxbImportConfigurator extends ImportConfiguratorBase<JaxbImportSta
        private boolean doHomotypicalGroups = true;\r
 \r
        private boolean doTypeDesignations = true;\r
-       private boolean doTaxonomicTreeData = true;\r
+       private boolean doClassificationData = true;\r
 \r
        \r
        \r
@@ -186,7 +186,7 @@ public class JaxbImportConfigurator extends ImportConfiguratorBase<JaxbImportSta
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
@@ -216,8 +216,8 @@ public class JaxbImportConfigurator extends ImportConfiguratorBase<JaxbImportSta
                this.doTypeDesignations = doTypeDesignations;\r
        }\r
 \r
-       public boolean isDoTaxonomicTreeData() {\r
-               return this.doTaxonomicTreeData;\r
+       public boolean isDoClassificationData() {\r
+               return this.doClassificationData;\r
        }\r
        \r
        \r
index 28ab9d7c0801a30c318dc4c81bc535de3e13b224..bb6e5698b7ba649024b925a9abf574c588901594 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -61,8 +61,8 @@ public class PilotOutputDescriptionExporter extends CdmExportBase<PilotOutputExp
        }\r
 \r
        /** Retrieves data from a CDM DB and serializes them CDM to XML.\r
-        * Starts with root taxa and traverses the taxonomic tree to retrieve children taxa, synonyms and relationships.\r
-        * Taxa that are not part of the taxonomic tree are not found.\r
+        * Starts with root taxa and traverses the classification to retrieve children taxa, synonyms and relationships.\r
+        * Taxa that are not part of theclassification are not found.\r
         * \r
         * @param exImpConfig\r
         * @param dbname\r
@@ -170,8 +170,8 @@ public class PilotOutputDescriptionExporter extends CdmExportBase<PilotOutputExp
                }\r
 \r
                if (sddExpConfig.getDoReferences() != IImportConfigurator.DO_REFERENCES.NONE) {\r
-                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(ReferenceBase.class); }\r
-                       logger.info("# ReferenceBase: " + referenceBaseRows);\r
+                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(Reference.class); }\r
+                       logger.info("# Reference: " + referenceBaseRows);\r
                        sddDataSet.setReferences(getReferenceService().list(null,referenceBaseRows, 0,null,null));\r
                }\r
 \r
index ec6cc28d96c7b4efc70e796a54ec2e5dc96981ed..04e3e56bffde0517a3d35ffc33a67efcdd36867c 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -61,8 +61,8 @@ public class PilotOutputExporter extends CdmExportBase<PilotOutputExportConfigur
        }\r
 \r
        /** Retrieves data from a CDM DB and serializes them CDM to XML.\r
-        * Starts with root taxa and traverses the taxonomic tree to retrieve children taxa, synonyms and relationships.\r
-        * Taxa that are not part of the taxonomic tree are not found.\r
+        * Starts with root taxa and traverses the classification to retrieve children taxa, synonyms and relationships.\r
+        * Taxa that are not part of the classification are not found.\r
         * \r
         * @param exImpConfig\r
         * @param dbname\r
@@ -169,8 +169,8 @@ public class PilotOutputExporter extends CdmExportBase<PilotOutputExportConfigur
                }\r
 \r
                if (pilotOutputExpConfig.getDoReferences() != IImportConfigurator.DO_REFERENCES.NONE) {\r
-                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(ReferenceBase.class); }\r
-                       logger.info("# ReferenceBase: " + referenceBaseRows);\r
+                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(Reference.class); }\r
+                       logger.info("# Reference: " + referenceBaseRows);\r
                        sddDataSet.setReferences(getReferenceService().list(null,referenceBaseRows, 0,null,null));\r
                }\r
 \r
index 5fd8468efd2bdc20fa85f5f5c87b62157c4894ec..dcfacbac489f7e5f7dafcda9ae461a4def375a89 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.agent.Team;
 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.ReferenceBase;\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
@@ -221,8 +221,8 @@ public abstract class EndNoteImportBase  extends CdmImportBase<EndnoteImportConf
        }\r
        \r
        \r
-       protected ReferenceBase makeAccordingTo(Element elAccordingTo, MapWrapper<ReferenceBase> referenceMap, ResultWrapper<Boolean> success){\r
-               ReferenceBase result = null;\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
@@ -244,8 +244,8 @@ public abstract class EndNoteImportBase  extends CdmImportBase<EndnoteImportConf
        }\r
        \r
        \r
-       private ReferenceBase makeAccordingToDetailed(Element elAccordingToDetailed, MapWrapper<ReferenceBase> referenceMap, ResultWrapper<Boolean> success){\r
-               ReferenceBase result = null;\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
index 0fb3668cec139e92ad6b9e4dc52656d4cb172fc3..c002b76121d75ce53145fc34b94c817df776d893 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 @Component\r
@@ -119,7 +119,7 @@ public class EndnoteImportConfigurator extends ImportConfiguratorBase<EndnoteImp
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index 1a8d48b1f7e094fa2635ff695ad8eeaceee18833..3a3bdeb875896035dbddc9f5959c5742915aa963 100644 (file)
@@ -53,7 +53,7 @@ import eu.etaxonomy.cdm.model.reference.IPrintSeries;
 import eu.etaxonomy.cdm.model.reference.IPrintedUnitBase;\r
 import eu.etaxonomy.cdm.model.reference.IProceedings;\r
 import eu.etaxonomy.cdm.model.reference.IPublicationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.IReport;\r
 import eu.etaxonomy.cdm.model.reference.IThesis;\r
 import eu.etaxonomy.cdm.model.reference.IWebPage;\r
@@ -87,22 +87,22 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                boolean obligatory;\r
                \r
                MapWrapper<Team> authorMap = (MapWrapper<Team>)state.getStore(ICdmIO.TEAM_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
                \r
-               Map<String, ReferenceBase> map_article = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_book = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_book_section = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_journal = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_thesis = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_patent = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_proceedings = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_cdDvd = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_report = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_database = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_webPage = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_generic = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_printSeries = new HashMap<String, ReferenceBase>();\r
-               Map<String, ReferenceBase> map_personalCommunication = new HashMap<String, ReferenceBase>();\r
+               Map<String, Reference> map_article = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_book = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_book_section = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_journal = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_thesis = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_patent = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_proceedings = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_cdDvd = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_report = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_database = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_webPage = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_generic = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_printSeries = new HashMap<String, Reference>();\r
+               Map<String, Reference> map_personalCommunication = new HashMap<String, Reference>();\r
                 \r
                IReferenceService referenceService = getReferenceService();\r
                \r
@@ -124,7 +124,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
            String tcsElementName = "record";\r
                String idNamespace = "record";\r
                List<Element> elRecordList = (List<Element>)elRecords.getChildren(tcsElementName, tcsNamespace);\r
-               ReferenceBase reference = null; \r
+               Reference reference = null;     \r
                TeamOrPersonBase<?> author = null;\r
                IPrintedUnitBase printedUnitBase = null;\r
                \r
@@ -138,20 +138,20 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                        IPublicationBase publicationBase = null;                        \r
                        CdmBase cdmBase = null;   \r
                        \r
-                       ReferenceBase article = refFactory.newArticle();                                \r
-                       ReferenceBase book = refFactory.newBook();\r
-                       ReferenceBase bookSection = refFactory.newBookSection();\r
-                       ReferenceBase thesis = refFactory.newThesis();\r
-                       ReferenceBase journal = refFactory.newJournal();\r
-                       ReferenceBase patent =  refFactory.newPatent();\r
-                       ReferenceBase generic = refFactory.newGeneric();\r
-                       ReferenceBase personalCommunication = refFactory.newPersonalCommunication();\r
-                       ReferenceBase proceedings  = refFactory.newProceedings();\r
-                       ReferenceBase printSeries = refFactory.newPrintSeries();\r
-                       ReferenceBase cdDvd = refFactory.newCdDvd();\r
-                       ReferenceBase database = refFactory.newDatabase();\r
-                       ReferenceBase report = refFactory.newReport();\r
-                       ReferenceBase webPage = refFactory.newWebPage();\r
+                       Reference article = refFactory.newArticle();                            \r
+                       Reference book = refFactory.newBook();\r
+                       Reference bookSection = refFactory.newBookSection();\r
+                       Reference thesis = refFactory.newThesis();\r
+                       Reference journal = refFactory.newJournal();\r
+                       Reference patent =  refFactory.newPatent();\r
+                       Reference generic = refFactory.newGeneric();\r
+                       Reference personalCommunication = refFactory.newPersonalCommunication();\r
+                       Reference proceedings  = refFactory.newProceedings();\r
+                       Reference printSeries = refFactory.newPrintSeries();\r
+                       Reference cdDvd = refFactory.newCdDvd();\r
+                       Reference database = refFactory.newDatabase();\r
+                       Reference report = refFactory.newReport();\r
+                       Reference webPage = refFactory.newWebPage();\r
                        Institution school = Institution.NewInstance();\r
                        Team authorTeam = Team.NewInstance();            \r
                        \r
@@ -256,7 +256,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                        reference = webPage;\r
                                }else {\r
                                        logger.warn("The type was not found...");\r
-                                       reference = (ReferenceBase) generic;\r
+                                       reference = (Reference) generic;\r
                                        success = false;\r
                                }                                       \r
                        }\r
@@ -553,23 +553,23 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                        title_new.toString();\r
                                                        \r
                                                        if (strName_reftype.equals("Article")) {\r
-                                                               map_article.put(title_new.toString(), (ReferenceBase) article);\r
-                                                               ReferenceBase give_article = map_article.get(title_new.toString());\r
+                                                               map_article.put(title_new.toString(), (Reference) article);\r
+                                                               Reference give_article = map_article.get(title_new.toString());\r
                                                                give_article.setTitle(title_new.toString());\r
                                                                reference=give_article;\r
                                                        }else if (strName_reftype.equals("Book")) {\r
                                                                map_book.put(title_new.toString(), book);\r
-                                                               ReferenceBase give_book = map_book.get(title_new.toString());\r
+                                                               Reference give_book = map_book.get(title_new.toString());\r
                                                                give_book.setTitle(title_new.toString());\r
                                                                reference=give_book;\r
                                                        }else if (strName_reftype.equals("Book Section")){\r
                                                                map_book_section.put(title_new.toString(), bookSection);\r
-                                                               ReferenceBase give_book_section = map_book_section.get(title_new.toString());\r
+                                                               Reference give_book_section = map_book_section.get(title_new.toString());\r
                                                                give_book_section.setTitle(title_new.toString());\r
                                                                reference=give_book_section;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Patent")) {\r
                                                                map_patent.put(title_new.toString(), patent);\r
-                                                               ReferenceBase give_patent = map_patent.get(title_new.toString());\r
+                                                               Reference give_patent = map_patent.get(title_new.toString());\r
                                                                give_patent.setTitle(title_new.toString());\r
                                                                reference=give_patent;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Personal Communication")){\r
@@ -577,52 +577,52 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                                reference=personalCommunication;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Journal")) {\r
                                                                map_journal.put(title_new.toString(), journal);\r
-                                                               ReferenceBase give_journal = map_journal.get(title_new.toString());\r
+                                                               Reference give_journal = map_journal.get(title_new.toString());\r
                                                                give_journal.setTitle(title_new.toString());\r
                                                                reference=give_journal;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("CdDvd")) {\r
                                                                map_cdDvd.put(title_new.toString(), cdDvd);\r
-                                                               ReferenceBase give_cdDvd = map_cdDvd.get(title_new.toString());\r
+                                                               Reference give_cdDvd = map_cdDvd.get(title_new.toString());\r
                                                                give_cdDvd.setTitle(title_new.toString());\r
                                                                reference=give_cdDvd;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Database")) {\r
                                                                map_database.put(title_new.toString(), database);\r
-                                                               ReferenceBase give_database = map_database.get(title_new.toString());\r
+                                                               Reference give_database = map_database.get(title_new.toString());\r
                                                                give_database.setTitle(title_new.toString());\r
                                                                reference=give_database;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("WebPage")) {\r
                                                                map_webPage.put(title_new.toString(), webPage);\r
-                                                               ReferenceBase give_webPage = map_webPage.get(title_new.toString());\r
+                                                               Reference give_webPage = map_webPage.get(title_new.toString());\r
                                                                give_webPage.setTitle(title_new.toString());\r
                                                                reference=give_webPage;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Report")) {\r
                                                                map_report.put(title_new.toString(), report);\r
-                                                               ReferenceBase give_report = map_report.get(title_new.toString());\r
+                                                               Reference give_report = map_report.get(title_new.toString());\r
                                                                give_report.setTitle(title_new.toString());\r
                                                                reference=give_report;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Thesis")) {\r
                                                                map_thesis.put(title_new.toString(), thesis);\r
-                                                               ReferenceBase give_thesis = map_thesis.get(title_new.toString());\r
+                                                               Reference give_thesis = map_thesis.get(title_new.toString());\r
                                                                give_thesis.setTitle(title_new.toString());\r
                                                                reference=give_thesis;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Print Series")){\r
                                                                map_printSeries.put(title_new.toString(), printSeries);\r
-                                                               ReferenceBase give_printSeries = map_printSeries.get(title_new.toString());\r
+                                                               Reference give_printSeries = map_printSeries.get(title_new.toString());\r
                                                                give_printSeries.setTitle(title_new.toString());\r
                                                        }else if (strName_reftype.equals("Journal Article")){\r
                                                                map_article.put(title_new.toString(), article);\r
-                                                               ReferenceBase give_article = map_article.get(title_new.toString());\r
+                                                               Reference give_article = map_article.get(title_new.toString());\r
                                                                give_article.setTitle(title_new.toString());\r
                                                                reference=give_article;\r
                                                        }else if (strName_reftype.equalsIgnoreCase("Conference Proceedings")){\r
                                                                map_proceedings.put(title_new.toString(), proceedings);\r
-                                                               ReferenceBase give_proceedings = map_proceedings.get(title_new.toString());\r
+                                                               Reference give_proceedings = map_proceedings.get(title_new.toString());\r
                                                                give_proceedings.setTitle(title_new.toString());\r
                                                                reference=give_proceedings;\r
                                                        }else {\r
                                                                logger.warn("The type was not found...");\r
                                                                map_generic.put(title_new.toString(), generic);\r
-                                                               ReferenceBase give_generic = map_generic.get(title_new.toString());\r
+                                                               Reference give_generic = map_generic.get(title_new.toString());\r
                                                                give_generic.setTitle(title_new.toString());\r
                                                                reference=give_generic;\r
                                                                success = false; \r
@@ -652,7 +652,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                 \r
                                                if (strName_reftype.equals("Book Section")){\r
                                                if (secondary_title != null) {\r
-                                                       ReferenceBase give_book =map_book.get(secondary_title);\r
+                                                       Reference give_book =map_book.get(secondary_title);\r
                                                        if (give_book!= null) {\r
                                                                bookSection.setInBook(give_book);\r
                                                                give_book.setTitle(secondary_title);\r
@@ -666,7 +666,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                        }else {\r
                                                        logger.warn("The type was not found...");\r
                                                        map_generic.put(secondary_title, generic);\r
-                                                       ReferenceBase give_generic = map_generic.get(secondary_title);\r
+                                                       Reference give_generic = map_generic.get(secondary_title);\r
                                                        give_generic.setTitle(secondary_title);\r
                                                        reference=give_generic;\r
                                                        success = false; \r
@@ -784,7 +784,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                if (strName_reftype.equals("Journal Article")){                         \r
                                        \r
                                        if (periodical != null) {                                       \r
-                                               ReferenceBase give_journal = map_journal.get(periodical);\r
+                                               Reference give_journal = map_journal.get(periodical);\r
                                                        if (give_journal!= null) {\r
                                                                article.setInJournal(give_journal);     \r
                                                                give_journal.setTitle(periodical);\r
@@ -883,33 +883,33 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                 \r
                                if (strName_reftype.equals("Journal Article")) {\r
                                        map_article.put(page, article);\r
-                                       ReferenceBase give_article = map_article.get(page);\r
+                                       Reference give_article = map_article.get(page);\r
                                        give_article.setPages(page);\r
                                        reference = give_article;\r
                                }else if (strName_reftype.equals("Article")){\r
                                        map_article.put(page, article);\r
-                                       ReferenceBase give_article = map_article.get(page);\r
+                                       Reference give_article = map_article.get(page);\r
                                        give_article.setPages(page);\r
                                        reference = give_article;               \r
                                }else if (strName_reftype.equals("Book")){\r
                                        map_book.put(page, book);\r
-                                       ReferenceBase give_book = map_book.get(page);\r
+                                       Reference give_book = map_book.get(page);\r
                                        give_book.setPages(page);\r
                                        reference=give_book; \r
                                }else if (strName_reftype.equals("Book Section")){\r
                                        map_book_section.put(page, bookSection);\r
-                                       ReferenceBase give_book_section = map_book_section.get(page);\r
+                                       Reference give_book_section = map_book_section.get(page);\r
                                        give_book_section.setPages(page);\r
                                        reference=give_book_section;\r
                                }else if (strName_reftype.equalsIgnoreCase("Conference Proceedings")){\r
                                        map_proceedings.put(page, proceedings);\r
-                                       ReferenceBase give_proceedings = map_proceedings.get(page);\r
+                                       Reference give_proceedings = map_proceedings.get(page);\r
                                        give_proceedings.setPages(page);\r
                                        reference=give_proceedings;     \r
                                } else {\r
                                        logger.warn("The type was not found...");\r
                                        map_generic.put(page, generic);\r
-                                       ReferenceBase give_generic  = map_generic.get(page);\r
+                                       Reference give_generic  = map_generic.get(page);\r
                                        give_generic.setPages(page);\r
                                        reference =give_generic; \r
                                        success = false;                        \r
@@ -938,17 +938,17 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                \r
                                if (strName_reftype.equals("Journal Article")) {\r
                                        map_article.put(volume, article);\r
-                                       ReferenceBase give_article = map_article.get(volume);\r
+                                       Reference give_article = map_article.get(volume);\r
                                        give_article.setVolume(volume);\r
                                        reference = give_article;\r
                                }else if (strName_reftype.equals("Article")){\r
                                        map_article.put(volume, article);\r
-                                       ReferenceBase give_article = map_article.get(volume);\r
+                                       Reference give_article = map_article.get(volume);\r
                                        give_article.setVolume(volume);\r
                                        reference = give_article;\r
                                }else if (strName_reftype.equals("Book")){\r
                                        map_book.put(volume, book);\r
-                                       ReferenceBase give_book = map_book.get(volume);\r
+                                       Reference give_book = map_book.get(volume);\r
                                        give_book.setVolume(volume);\r
                                        reference=give_book; \r
                                }else if (strName_reftype.equals("Book Section")){\r
@@ -959,13 +959,13 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                         }\r
                                }else if (strName_reftype.equalsIgnoreCase("Conference Proceedings")){\r
                                        map_proceedings.put(volume, proceedings);\r
-                                       ReferenceBase give_proceedings = map_proceedings.get(volume);\r
+                                       Reference give_proceedings = map_proceedings.get(volume);\r
                                        give_proceedings.setVolume(volume);\r
                                        reference=give_proceedings;\r
                                }else{  \r
                                        logger.warn("The type was not found...");\r
                                        map_generic.put(volume, generic);\r
-                                       ReferenceBase give_generic  = map_generic.get(volume);\r
+                                       Reference give_generic  = map_generic.get(volume);\r
                                        give_generic.setVolume(volume);\r
                                        reference =give_generic; \r
                                        success = true;\r
@@ -995,18 +995,18 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                \r
                                if (strName_reftype.equals("Journal Article")) {\r
                                        map_article.put(number, article);\r
-                                       ReferenceBase give_article = map_article.get(number);\r
+                                       Reference give_article = map_article.get(number);\r
                                        give_article.setSeries(number);\r
                                        reference = give_article;\r
                                }else if (strName_reftype.equals("Article")){\r
                                        map_article.put(number, article);\r
-                                       ReferenceBase give_article = map_article.get(number);\r
+                                       Reference give_article = map_article.get(number);\r
                                        give_article.setSeries(number);\r
                                        reference = give_article;\r
                                }else {                  \r
                                        logger.warn("The type was not found...");\r
                                        map_generic.put(number, generic);\r
-                                       ReferenceBase give_generic  = map_generic.get(number);\r
+                                       Reference give_generic  = map_generic.get(number);\r
                                        give_generic.setSeries(number);\r
                                        reference =give_generic;\r
                                        success = false;\r
@@ -1075,7 +1075,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                \r
                                if (strName_reftype.equals("Book")) {\r
                                        map_book.put(edition, book);\r
-                                       ReferenceBase give_book = map_book.get(edition);\r
+                                       Reference give_book = map_book.get(edition);\r
                                        give_book.setEdition(edition);\r
                                        reference=give_book; \r
                                }else if (strName_reftype.equals("Book Section")) {\r
@@ -1240,48 +1240,48 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                                \r
                                if (strName_reftype.equals("Report")) {\r
                                        map_report.put(place, report);\r
-                                       ReferenceBase give_report = map_report.get(place);\r
+                                       Reference give_report = map_report.get(place);\r
                                        give_report.setPlacePublished(place);\r
                                        reference=give_report;\r
                                }else if (strName_reftype.equals("Book")){\r
                                        map_book.put(place, book);\r
-                                       ReferenceBase give_book = map_book.get(place);\r
+                                       Reference give_book = map_book.get(place);\r
                                        give_book.setPlacePublished(place);\r
                                        reference=give_book;\r
                                }else if (strName_reftype.equals("Thesis")){\r
                                        map_thesis.put(place, thesis);\r
-                                       ReferenceBase give_thesis = map_thesis.get(place);\r
+                                       Reference give_thesis = map_thesis.get(place);\r
                                        give_thesis.setPlacePublished(place);\r
                                        reference=give_thesis;\r
                                }else if (strName_reftype.equalsIgnoreCase("Conference Proceedings")){\r
                                        map_proceedings.put(place, proceedings);\r
-                                       ReferenceBase give_proceedings = map_proceedings.get(place);\r
+                                       Reference give_proceedings = map_proceedings.get(place);\r
                                        give_proceedings.setPlacePublished(place);\r
                                        reference=give_proceedings;\r
                                }else if (strName_reftype.equalsIgnoreCase("Database")){\r
                                        map_database.put(place, database);\r
-                                       ReferenceBase give_database = map_database.get(place);\r
+                                       Reference give_database = map_database.get(place);\r
                                        give_database.setPlacePublished(place);\r
                                        reference=give_database;\r
                                }else if (strName_reftype.equalsIgnoreCase("CdDvd")){\r
                                        map_cdDvd.put(place, cdDvd);\r
-                                       ReferenceBase give_cdDvd = map_cdDvd.get(place);\r
+                                       Reference give_cdDvd = map_cdDvd.get(place);\r
                                        give_cdDvd.setPlacePublished(place);\r
                                        reference=give_cdDvd;\r
                                }else if (strName_reftype.equalsIgnoreCase("Print Series")){\r
                                        map_printSeries.put(place, printSeries);\r
-                                       ReferenceBase give_printSeries = map_printSeries.get(place);\r
+                                       Reference give_printSeries = map_printSeries.get(place);\r
                                        give_printSeries.setPlacePublished(place);\r
                                        reference=give_printSeries;\r
                                }else if (strName_reftype.equalsIgnoreCase("Journal")){\r
                                        map_journal.put(place, journal);\r
-                                       ReferenceBase give_journal = map_journal.get(place);\r
+                                       Reference give_journal = map_journal.get(place);\r
                                        give_journal.setPlacePublished(place);\r
                                        reference=give_journal;                 \r
                                } else {\r
                                        logger.warn("The type was not found...");\r
                                        map_generic.put(place, generic);\r
-                                       ReferenceBase give_generic = map_generic.get(place);\r
+                                       Reference give_generic = map_generic.get(place);\r
                                        give_generic.setPlacePublished(place);\r
                                        reference=give_generic;\r
                                        success = false;\r
@@ -1311,12 +1311,12 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                \r
                                if (strName_reftype.equals("Report")) {\r
                                        map_report.put(publisher, report);\r
-                                       ReferenceBase give_report = map_report.get(publisher);\r
+                                       Reference give_report = map_report.get(publisher);\r
                                        give_report.setPublisher(publisher);\r
                                        reference=give_report;\r
                                }else if (strName_reftype.equals("Book")){\r
                                        map_book.put(publisher, book);\r
-                                       ReferenceBase give_book = map_book.get(publisher);\r
+                                       Reference give_book = map_book.get(publisher);\r
                                        give_book.setPublisher(publisher);\r
                                        reference=give_book;\r
                                }else if (strName_reftype.equals("Book Section")){\r
@@ -1327,32 +1327,32 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                        }\r
                                }else if (strName_reftype.equals("Thesis")){\r
                                        map_thesis.put(publisher, thesis);\r
-                                       ReferenceBase give_thesis = map_thesis.get(publisher);\r
+                                       Reference give_thesis = map_thesis.get(publisher);\r
                                        give_thesis.setPublisher(publisher);\r
                                        reference=give_thesis;\r
                                }else if (strName_reftype.equalsIgnoreCase("Conference Proceedings")){\r
                                        map_proceedings.put(publisher, proceedings);\r
-                                       ReferenceBase give_proceedings = map_proceedings.get(publisher);\r
+                                       Reference give_proceedings = map_proceedings.get(publisher);\r
                                        give_proceedings.setPublisher(publisher);\r
                                        reference=give_proceedings;\r
                                }else if (strName_reftype.equalsIgnoreCase("Database")){\r
                                        map_database.put(publisher, database);\r
-                                       ReferenceBase give_database = map_database.get(publisher);\r
+                                       Reference give_database = map_database.get(publisher);\r
                                        give_database.setPublisher(publisher);\r
                                        reference=give_database;\r
                                }else if (strName_reftype.equalsIgnoreCase("CdDvd")){\r
                                        map_cdDvd.put(publisher, cdDvd);\r
-                                       ReferenceBase give_cdDvd = map_cdDvd.get(publisher);\r
+                                       Reference give_cdDvd = map_cdDvd.get(publisher);\r
                                        give_cdDvd.setPublisher(publisher);\r
                                        reference=give_cdDvd;\r
                                }else if (strName_reftype.equalsIgnoreCase("Print Series")){\r
                                        map_printSeries.put(publisher, printSeries);\r
-                                       ReferenceBase give_printSeries = map_printSeries.get(publisher);\r
+                                       Reference give_printSeries = map_printSeries.get(publisher);\r
                                        give_printSeries.setPublisher(publisher);\r
                                        reference=give_printSeries;\r
                                }else if (strName_reftype.equalsIgnoreCase("Journal")){\r
                                        map_journal.put(publisher, journal);\r
-                                       ReferenceBase give_journal = map_journal.get(publisher);\r
+                                       Reference give_journal = map_journal.get(publisher);\r
                                        give_journal.setPublisher(publisher);\r
                                        reference=give_journal;\r
                                }else if (strName_reftype.equalsIgnoreCase("Journal Article")){\r
@@ -1364,7 +1364,7 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                } else {\r
                                        logger.warn("The type was not found...");\r
                                        map_generic.put(publisher, generic);\r
-                                       ReferenceBase give_generic = map_generic.get(publisher);\r
+                                       Reference give_generic = map_generic.get(publisher);\r
                                        give_generic.setPublisher(publisher);\r
                                        reference=give_generic;\r
 \r
@@ -1417,12 +1417,12 @@ public class EndnoteRecordsImport extends EndNoteImportBase implements ICdmIO<En
                                                \r
                                if (strName_reftype.equals("Book")) {\r
                                        map_book.put(page, book);\r
-                                       ReferenceBase give_book = map_book.get(page);\r
+                                       Reference give_book = map_book.get(page);\r
                                        give_book.setIsbn(page);\r
                                        reference=give_book; \r
                                }else if (strName_reftype.equals("Journal")){\r
                                        map_journal.put(page, journal);\r
-                                       ReferenceBase give_journal = map_journal.get(page);\r
+                                       Reference give_journal = map_journal.get(page);\r
                                        give_journal.setIssn(page);\r
                                        reference=give_journal;\r
                                }else {\r
index eb5e3bfdacbdc08dda37bd1f17af67fbf9a2b894..2a730ee1a5c329aac126559978cbc3a0efd3aa85 100644 (file)
@@ -15,7 +15,7 @@ import org.jdom.Element;
 import eu.etaxonomy.cdm.io.tcsxml.DefaultTcsXmlPlaceholders;\r
 import eu.etaxonomy.cdm.io.tcsxml.ITcsXmlPlaceholderClass;\r
 import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -43,9 +43,9 @@ public class IEndnotePlaceholderClass implements ITcsXmlPlaceholderClass {
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see tcsxml.ITcsXmlPlaceholderClass#makePublicationDetailed(tcsxml.TcsXmlImportConfigurator, org.jdom.Element, eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see tcsxml.ITcsXmlPlaceholderClass#makePublicationDetailed(tcsxml.TcsXmlImportConfigurator, org.jdom.Element, eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public boolean makePublicationDetailed(TcsXmlImportConfigurator tcsConfig, Element elPublicationDetailed, ReferenceBase publication){\r
+       public boolean makePublicationDetailed(TcsXmlImportConfigurator tcsConfig, Element elPublicationDetailed, Reference publication){\r
                if (tcsConfig == null){\r
                        return false;\r
                }\r
index d6138a65c95083da9d40902e4b3d5806f46080c6..570c689f42f246a25fc09687babcb58b5696caca 100644 (file)
@@ -31,7 +31,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.TransactionStatus;\r
 \r
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
-import eu.etaxonomy.cdm.api.service.IService;\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.common.mediaMetaData.ImageMetaData;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
@@ -78,12 +78,12 @@ import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 \r
 /**\r
  * @author h.fradin\r
@@ -105,7 +105,7 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        private Map<String,String> locations = new HashMap<String,String>();\r
        private Map<String,List<CdmBase>> mediaObject_ListCdmBase = new HashMap<String,List<CdmBase>>();\r
        private Map<String,String> mediaObject_Role = new HashMap<String,String>();\r
-       private Map<String,ReferenceBase> publications = new HashMap<String,ReferenceBase>();\r
+       private Map<String,Reference> publications = new HashMap<String,Reference>();\r
        private Map<String,State> states = new HashMap<String,State>();\r
        private Map<String,TaxonDescription> taxonDescriptions = new HashMap<String,TaxonDescription>();\r
        private Map<String,NonViralName> taxonNameBases = new HashMap<String,NonViralName>();\r
@@ -121,9 +121,9 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        private Set<Feature> descriptiveConcepts = new HashSet<Feature>();\r
        private Set<AnnotationType> annotationTypes = new HashSet<AnnotationType>();\r
        private Set<Feature> featureSet = new HashSet<Feature>();\r
-       private Set<ReferenceBase> sources = new HashSet<ReferenceBase>();\r
-       private ReferenceBase sec = ReferenceFactory.newDatabase();\r
-       private ReferenceBase sourceReference = null;\r
+       private Set<Reference> sources = new HashSet<Reference>();\r
+       private Reference sec = ReferenceFactory.newDatabase();\r
+       private Reference sourceReference = null;\r
 \r
        private Language datasetLanguage = null;\r
 \r
@@ -136,7 +136,7 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
        private Set<StatisticalMeasure> statisticalMeasures = new HashSet<StatisticalMeasure>();\r
        private Set<VersionableEntity> featureData = new HashSet<VersionableEntity>();\r
        private Set<FeatureTree> featureTrees = new HashSet<FeatureTree>();\r
-       private Set<TaxonomicTree> taxonomicTrees = new HashSet<TaxonomicTree>();\r
+       private Set<Classification> classifications = new HashSet<Classification>();\r
 \r
        private Rights copyright = null;\r
 \r
@@ -161,8 +161,10 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                \r
                TransactionStatus ts = startTransaction();\r
                SDDImportConfigurator sddConfig = state.getConfig();\r
-\r
+               IProgressMonitor progressMonitor = sddConfig.getProgressMonitor();\r
+                               \r
                logger.info("start Datasets ...");\r
+               \r
                // <Datasets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://rs.tdwg.org/UBIF/2006/" xsi:schemaLocation="http://rs.tdwg.org/UBIF/2006/ ../SDD.xsd">\r
                Element root = sddConfig.getSourceRoot();\r
                Namespace sddNamespace = sddConfig.getSddNamespace();\r
@@ -175,12 +177,15 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
 \r
                //for each Dataset\r
                logger.info("start Dataset ...");\r
+               progressMonitor.beginTask("Importing SDD data", elDatasets.size());\r
                for (Element elDataset : elDatasets){\r
                        success &= importDataset(elDataset, sddNamespace, state);                       \r
-                       if ((++i % modCount) == 0){ logger.info("dataset(s) handled: " + i);}\r
-                       logger.info(i + " dataset(s) handled");\r
+//                     if ((++i % modCount) == 0){ logger.info("dataset(s) handled: " + i);}\r
+//                     logger.info(i + " dataset(s) handled");\r
+                       progressMonitor.worked(1);\r
                }\r
                commitTransaction(ts);\r
+               progressMonitor.done();\r
                logger.info("End of transaction");\r
                return success;\r
        }\r
@@ -371,9 +376,9 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                if (ve instanceof TaxonDescription) {\r
                                        TaxonDescription td = (TaxonDescription) ve;\r
                                        if (td.getDescriptionSources().size() > 0) {\r
-                                               this.associateImageWithCdmBase(ref,(ReferenceBase) td.getDescriptionSources().toArray()[0]);\r
+                                               this.associateImageWithCdmBase(ref,(Reference) td.getDescriptionSources().toArray()[0]);\r
                                        } else {\r
-                                               ReferenceBase descriptionSource = ReferenceFactory.newGeneric();\r
+                                               Reference descriptionSource = ReferenceFactory.newGeneric();\r
                                                sources.add(descriptionSource);\r
                                                td.addDescriptionSource(descriptionSource);\r
                                                this.associateImageWithCdmBase(ref,descriptionSource);\r
@@ -409,8 +414,8 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                        //TODO\r
                                        String rel = elLink.getAttributeValue("rel");\r
                                        String href = elLink.getAttributeValue("href");\r
-\r
-                                       mr.addRepresentationPart(MediaRepresentationPart.NewInstance(href, null));\r
+                                       URI uri = new URI(href);\r
+                                       mr.addRepresentationPart(MediaRepresentationPart.NewInstance(uri, null));\r
                                        link.addRepresentation(mr);\r
                                        ime.addMedia(link);\r
 \r
@@ -591,7 +596,7 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                for (String ref : taxonDescriptions.keySet()){\r
                        TaxonDescription td = taxonDescriptions.get(ref);\r
                        if (citations.containsKey(ref)) {\r
-                               ReferenceBase publication = publications.get(citations.get(ref));\r
+                               Reference publication = publications.get(citations.get(ref));\r
                                if (locations.containsKey(ref)) {\r
                                        Annotation location = Annotation.NewInstance(locations.get(ref), datasetLanguage);\r
                                        AnnotationType annotationType = AnnotationType.NewInstance("", "location", "");\r
@@ -613,19 +618,19 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                }\r
                saveFeatures();\r
                \r
-               for (ReferenceBase publication : publications.values()){\r
+               for (Reference publication : publications.values()){\r
                        getReferenceService().save(publication); \r
                }\r
                \r
-               for (ReferenceBase source : sources){\r
+               for (Reference source : sources){\r
                        getReferenceService().save(source); \r
                }\r
 \r
                for (FeatureTree featureTree : featureTrees) {\r
                        getFeatureTreeService().save(featureTree);\r
                }\r
-               for (TaxonomicTree taxonomicTree : taxonomicTrees) {\r
-                       getTaxonTreeService().save(taxonomicTree);\r
+               for (Classification classification : classifications) {\r
+                       getClassificationService().save(classification);\r
                }\r
                for (Specimen specimen : specimens.values()) {\r
                        getOccurrenceService().save(specimen);\r
@@ -1494,7 +1499,7 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                try {\r
 \r
                                        String idP = elPublication.getAttributeValue("id");\r
-                                       ReferenceBase publication = ReferenceFactory.newArticle();\r
+                                       Reference publication = ReferenceFactory.newArticle();\r
                                        importRepresentation(elPublication, sddNamespace, publication, idP, sddConfig);\r
 \r
                                        publications.put(idP,publication);\r
@@ -1549,7 +1554,7 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                                                URL url = new URL(href);\r
                                                                \r
                                                                imageMetaData.readMetaData(url.toURI(), 0);\r
-                                                               image = ImageFile.NewInstance(url.toString(), null, imageMetaData);\r
+                                                               image = ImageFile.NewInstance(url.toURI(), null, imageMetaData);\r
                                                        } catch (MalformedURLException e) {\r
                                                                logger.error("Malformed URL", e);\r
                                                        }\r
@@ -1560,7 +1565,7 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                                        String fi = parent.toString() + File.separator + href;\r
                                                        File file = new File(fi);\r
                                                        imageMetaData.readMetaData(new URI(fi), 0); //file\r
-                                                       image = ImageFile.NewInstance(file.toString(), null, imageMetaData);\r
+                                                       image = ImageFile.NewInstance(file.toURI(), null, imageMetaData);\r
                                                }\r
                                                MediaRepresentation representation = MediaRepresentation.NewInstance(imageMetaData.getMimeType(), null);\r
                                                representation.addRepresentationPart(image);\r
@@ -1583,10 +1588,10 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                                                        //                                                                                      dtb.addMedia(me);\r
                                                                        //                                                                              }\r
                                                                        //                                                                      }\r
-                                                               } else if (lcb.get(k) instanceof ReferenceBase) {\r
-                                                                       ReferenceBase rb = (ReferenceBase) lcb.get(k);\r
-                                                                       //} else if (lcb.get(0) instanceof ReferenceBase) {\r
-                                                                       //ReferenceBase rb = (ReferenceBase) lcb.get(0);\r
+                                                               } else if (lcb.get(k) instanceof Reference) {\r
+                                                                       Reference rb = (Reference) lcb.get(k);\r
+                                                                       //} else if (lcb.get(0) instanceof Reference) {\r
+                                                                       //Reference rb = (Reference) lcb.get(0);\r
                                                                        // rb.setTitleCache(label);\r
                                                                        //                                                                      if (rb!=null) {\r
                                                                        //                                                                              if (k == 0) {\r
@@ -1834,10 +1839,10 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                try {\r
                                        Element elRepresentation = elTaxonHierarchy.getChild("Representation",sddNamespace);\r
                                        String label = (String)ImportHelper.getXmlInputValue(elRepresentation,"Label",sddNamespace);\r
-                                               TaxonomicTree taxonomicTree =  TaxonomicTree.NewInstance(label);\r
-                                               importRepresentation(elTaxonHierarchy, sddNamespace, taxonomicTree, "", sddConfig);\r
+                                               Classification classification =  Classification.NewInstance(label);\r
+                                               importRepresentation(elTaxonHierarchy, sddNamespace, classification, "", sddConfig);\r
                                        \r
-                                               Set<TaxonNode> root = taxonomicTree.getChildNodes();\r
+                                               Set<TaxonNode> root = classification.getChildNodes();\r
                                                Element elNodes = elTaxonHierarchy.getChild("Nodes", sddNamespace); // There can be only one <Nodes> block for TaxonHierarchies\r
                                                List<Element> listNodes = elNodes.getChildren("Node", sddNamespace);\r
                                                \r
@@ -1859,13 +1864,13 @@ public class SDDImport extends CdmImportBase<SDDImportConfigurator, SDDImportSta
                                                                        }\r
                                                                }\r
                                                                else {\r
-                                                                       TaxonNode tn = taxonomicTree.addChildTaxon(taxon, sec, "", Synonym.NewInstance(tnb, sec)); // if no parent found or the reference is broken, add the node to the root of the tree\r
+                                                                       TaxonNode tn = classification.addChildTaxon(taxon, sec, "", Synonym.NewInstance(tnb, sec)); // if no parent found or the reference is broken, add the node to the root of the tree\r
                                                                        taxonNodes.put(idN,tn);\r
                                                                }\r
                                                        }\r
                                                }\r
 \r
-                                               taxonomicTrees.add(taxonomicTree);\r
+                                               classifications.add(classification);\r
                                        }\r
 \r
                                catch (Exception e) {\r
index 4b099235ec258e519f9c89a041c4d7324d4ecbb0..4818b82c4c717bc97857fad2e5eba48e37c48bb7 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.io.common.IMatchingImportConfigurator;
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
 import eu.etaxonomy.cdm.io.sdd.SDDTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -108,7 +108,7 @@ public class SDDImportConfigurator extends ImportConfiguratorBase<SDDImportState
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index 6dcbcba9ac23a265a2fb9f3c4c995f79f793bc77..2cd8cb2846f63be87fcecee8da4c0cbbd8cd7595 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -60,8 +60,8 @@ public class SDDCdmExporter extends CdmExportBase<SDDExportConfigurator, SDDExpo
        }\r
 \r
        /** Retrieves data from a CDM DB and serializes them CDM to XML.\r
-        * Starts with root taxa and traverses the taxonomic tree to retrieve children taxa, synonyms and relationships.\r
-        * Taxa that are not part of the taxonomic tree are not found.\r
+        * Starts with root taxa and traverses the classification to retrieve children taxa, synonyms and relationships.\r
+        * Taxa that are not part of the classification are not found.\r
         * \r
         * @param exImpConfig\r
         * @param dbname\r
@@ -170,8 +170,8 @@ public class SDDCdmExporter extends CdmExportBase<SDDExportConfigurator, SDDExpo
                }\r
 \r
                if (sddExpConfig.getDoReferences() != IImportConfigurator.DO_REFERENCES.NONE) {\r
-                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(ReferenceBase.class); }\r
-                       logger.info("# ReferenceBase: " + referenceBaseRows);\r
+                       if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(Reference.class); }\r
+                       logger.info("# Reference: " + referenceBaseRows);\r
                        sddDataSet.setReferences(getReferenceService().list(null,referenceBaseRows, 0,null,null));\r
                }\r
 \r
index 82bf133434696e762889163c448950888ce61ecf..b2f1a83f461e9eed82416c2aea5c0478fb6910a2 100644 (file)
@@ -91,7 +91,7 @@ import eu.etaxonomy.cdm.model.occurrence.Observation;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -217,9 +217,9 @@ public class SDDDataSet {
     protected List<SpecimenOrObservationBase> occurrences;\r
     \r
     @XmlElementWrapper(name = "References")\r
-       @XmlElement(name = "Reference", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = ReferenceBase.class)\r
+       @XmlElement(name = "Reference", namespace = "http://etaxonomy.eu/cdm/model/reference/1.0", type = Reference.class)\r
 \r
-    protected List<ReferenceBase> references;\r
+    protected List<Reference> references;\r
 \r
     @XmlElementWrapper(name = "ReferencedEntities")\r
     @XmlElements({\r
@@ -277,7 +277,7 @@ public class SDDDataSet {
                terms = new ArrayList<DefinedTermBase>();\r
                termVocabularies = new ArrayList<TermVocabulary<DefinedTermBase>>();\r
                occurrences = new ArrayList<SpecimenOrObservationBase>();\r
-               references = new ArrayList<ReferenceBase>();\r
+               references = new ArrayList<Reference>();\r
                referencedEntities = new ArrayList<ReferencedEntityBase>();\r
                taxonomicNames = new ArrayList<TaxonNameBase>();\r
                taxa = new ArrayList<Taxon>();\r
@@ -440,10 +440,10 @@ public class SDDDataSet {
      * \r
      * @return\r
      *     possible object is\r
-     *     {@link List<ReferenceBase> }\r
+     *     {@link List<Reference> }\r
      *     \r
      */\r
-    public List<ReferenceBase> getReferences() {\r
+    public List<Reference> getReferences() {\r
         return references;\r
     }\r
 \r
@@ -452,10 +452,10 @@ public class SDDDataSet {
      * \r
      * @param value\r
      *     allowed object is\r
-     *     {@link List<ReferenceBase> }\r
+     *     {@link List<Reference> }\r
      *     \r
      */\r
-    public void setReferences(List<ReferenceBase> value) {\r
+    public void setReferences(List<Reference> value) {\r
         this.references = value;\r
     }\r
 \r
index 8e9abe3411a4e585df48c570b9acf0f851006ace..9ad0c515547838addc597f17f9f954a99c75df26 100644 (file)
@@ -78,7 +78,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.reference.IDatabase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\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
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -109,7 +109,7 @@ public class SDDDocumentBuilder {
        private Map<TaxonDescription,String> codedDescriptions = new HashMap<TaxonDescription,String>();\r
        private Map<Media,String> medias = new HashMap<Media,String>();\r
        private Map<State,String> states = new HashMap<State,String>();\r
-       private Map<ReferenceBase, String> articles = new HashMap<ReferenceBase, String>();\r
+       private Map<Reference, String> articles = new HashMap<Reference, String>();\r
        private Map<VersionableEntity, String> featuretrees = new HashMap<VersionableEntity, String>();\r
        private Map<Modifier, String> modifiers = new HashMap<Modifier, String>();\r
        private Map<TaxonNode, String> taxonNodes = new HashMap<TaxonNode,String>();\r
@@ -267,11 +267,11 @@ public class SDDDocumentBuilder {
 \r
                buildTechnicalMetadata(baselement);\r
 \r
-               List<ReferenceBase> references = cdmSource.getReferences();\r
-               Iterator<ReferenceBase> iterator = references.iterator();\r
+               List<Reference> references = cdmSource.getReferences();\r
+               Iterator<Reference> iterator = references.iterator();\r
                IDatabase d = refFactory.newDatabase();\r
                while (iterator.hasNext()) {\r
-                       ReferenceBase reference = (ReferenceBase) iterator.next();\r
+                       Reference reference = (Reference) iterator.next();\r
                        if (reference.getType().equals(ReferenceType.Database)) {\r
                                buildDataset(baselement, reference);\r
                        }\r
@@ -351,12 +351,12 @@ public class SDDDocumentBuilder {
                //create TechnicalMetadata\r
                ElementImpl technicalMetadata = new ElementImpl(document, TECHNICAL_METADATA);\r
                //select different databases associated to different descriptions TODO\r
-               List<ReferenceBase> references = cdmSource.getReferences();\r
-               Iterator<ReferenceBase> iterator = references.iterator();\r
+               List<Reference> references = cdmSource.getReferences();\r
+               Iterator<Reference> iterator = references.iterator();\r
                boolean database = false;\r
                IDatabase d = refFactory.newDatabase();\r
                while ((iterator.hasNext()) && (!database)) {\r
-                       ReferenceBase reference = (ReferenceBase) iterator.next();\r
+                       Reference reference = (Reference) iterator.next();\r
                        if (reference.getType().equals(ReferenceType.Database)) {\r
                                d = reference;\r
                        }\r
@@ -392,13 +392,13 @@ public class SDDDocumentBuilder {
                buildPublications(dataset);\r
                buildMediaObjects(dataset);\r
                buildCharacterTrees(dataset);\r
-               buildTaxonomicTrees(dataset);\r
+               buildClassifications(dataset);\r
                buildGeographicAreas(dataset);\r
                buildSpecimens(dataset);\r
        }\r
 \r
        /**\r
-        * Builds a Representation element using a ReferenceBase\r
+        * Builds a Representation element using a Reference\r
         */\r
        public void buildRepresentation(ElementImpl element, IDatabase reference) throws ParseException {\r
 \r
@@ -407,7 +407,7 @@ public class SDDDocumentBuilder {
                element.appendChild(representation);\r
                buildLabel(representation, reference.getTitleCache());\r
 \r
-               Set<Annotation> annotations = ((ReferenceBase)reference).getAnnotations();\r
+               Set<Annotation> annotations = ((Reference)reference).getAnnotations();\r
                Iterator iterator = annotations.iterator();\r
                String detailText = null;\r
                if (iterator.hasNext()) {\r
@@ -421,7 +421,7 @@ public class SDDDocumentBuilder {
                        representation.appendChild(detail);\r
                }\r
 \r
-               Set<Media> rm = ((ReferenceBase)reference).getMedia();\r
+               Set<Media> rm = ((Reference)reference).getMedia();\r
 \r
                if (rm != null && rm.size() > 0) {\r
                        ElementImpl mediaObject;\r
@@ -531,7 +531,7 @@ public class SDDDocumentBuilder {
                                                for (Iterator<MediaRepresentationPart> mrp = lmrp.iterator();mrp.hasNext();){\r
                                                        MediaRepresentationPart mediareppart = mrp.next();\r
                                                        ElementImpl elLink = new ElementImpl(document, "Link");\r
-                                                       elLink.setAttribute("href",mediareppart.getUri());\r
+                                                       elLink.setAttribute("href",mediareppart.getUri().toString());\r
                                                        elLinks.appendChild(elLink);\r
                                                }\r
                                        }\r
@@ -585,10 +585,10 @@ public class SDDDocumentBuilder {
 \r
                //  <DateModified>2006-04-08T00:00:00</DateModified>\r
 \r
-               if (((ReferenceBase)database).getUpdated() != null) {\r
+               if (((Reference)database).getUpdated() != null) {\r
                        ElementImpl dateModified = new ElementImpl(document, DATE_MODIFIED);\r
 \r
-                       DateTime c = ((ReferenceBase)database).getUpdated();\r
+                       DateTime c = ((Reference)database).getUpdated();\r
                        DateTimeFormatter fmt = ISODateTimeFormat.dateTime();\r
 \r
                        String date = fmt.print(c);\r
@@ -822,9 +822,9 @@ public class SDDDocumentBuilder {
                                }\r
                }\r
 \r
-               Set<ReferenceBase> descriptionSources = taxonDescription.getDescriptionSources();\r
-               for (Iterator<ReferenceBase> rb = descriptionSources.iterator() ; rb.hasNext() ;){\r
-                       ReferenceBase descriptionSource = rb.next();\r
+               Set<Reference> descriptionSources = taxonDescription.getDescriptionSources();\r
+               for (Iterator<Reference> rb = descriptionSources.iterator() ; rb.hasNext() ;){\r
+                       Reference descriptionSource = rb.next();\r
                        if (descriptionSource.getType().equals(ReferenceType.Article)) {\r
 \r
                                ElementImpl citation = new ElementImpl(document, CITATION);\r
@@ -986,8 +986,7 @@ public class SDDDocumentBuilder {
                Feature feature = textData.getFeature();\r
                buildReference(feature, characters, REF, textChar, "c", charactersCount);\r
                Map<Language,LanguageString> multilanguageText = textData.getMultilanguageText();\r
-               for (Iterator<Language> l = multilanguageText.keySet().iterator() ; l.hasNext() ;){\r
-                       Language language = l.next();\r
+               for (Language language : multilanguageText.keySet()){\r
                        LanguageString languageString = multilanguageText.get(language);\r
                        buildContent(textChar,languageString);\r
                }\r
@@ -1148,7 +1147,7 @@ public class SDDDocumentBuilder {
                }\r
        }\r
        \r
-       public void buildTaxonomicTrees(ElementImpl dataset) throws ParseException {\r
+       public void buildClassifications(ElementImpl dataset) throws ParseException {\r
 \r
                if (cdmSource.getTaxa() != null) {\r
                        ElementImpl elTaxonHierarchies = new ElementImpl(document, "TaxonHierarchies");\r
@@ -1278,7 +1277,7 @@ public class SDDDocumentBuilder {
                                                for (Iterator<MediaRepresentationPart> mrp = lmrp.iterator();mrp.hasNext();){\r
                                                                MediaRepresentationPart mediareppart = mrp.next();\r
                                                                ElementImpl elSource = new ElementImpl(document, "Source");\r
-                                                               elSource.setAttribute("href",mediareppart.getUri());\r
+                                                               elSource.setAttribute("href",mediareppart.getUri().toString());\r
                                                                elMediaObject.appendChild(elSource);\r
                                                        }\r
                                        }\r
@@ -1295,7 +1294,7 @@ public class SDDDocumentBuilder {
                        boolean editorial = false;\r
                        for (int i = 0; i < cdmSource.getReferences().size(); i++) {\r
                                ElementImpl elPublication = new ElementImpl(document, "Publication");\r
-                               ReferenceBase publication = cdmSource.getReferences().get(i);\r
+                               Reference publication = cdmSource.getReferences().get(i);\r
                                        Set<Annotation> annotations = publication.getAnnotations();\r
                                        for (Iterator<Annotation> a = annotations.iterator() ; a.hasNext() ;){\r
                                                Annotation annotation = a.next();\r
index f8e4378c94c4c71a3f8cff61f8cf6b04fbd1834c..f547a7746c0280fd36a6bd8d0e692ed1c9846aaf 100644 (file)
@@ -57,7 +57,7 @@ import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
@@ -129,9 +129,9 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                try {
                        updateProgress(state, "Importing data for unit: " + dataHolder.unitID);
                        
-//                     ReferenceBase sec = Database.NewInstance();
+//                     Reference sec = Database.NewInstance();
 //                     sec.setTitleCache("XML DATA");
-                       ReferenceBase sec = config.getTaxonReference();
+                       Reference sec = config.getTaxonReference();
 
                        //create facade
                        DerivedUnitFacade derivedUnitFacade = getFacade(dataHolder);
@@ -1035,7 +1035,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
         * @param derivedThing
         * @param sec
         */
-       private void handleIdentifications(Abcd206ImportConfigurator config, DerivedUnitFacade facade, ReferenceBase sec, Abcd206DataHolder dataHolder){
+       private void handleIdentifications(Abcd206ImportConfigurator config, DerivedUnitFacade facade, Reference sec, Abcd206DataHolder dataHolder){
                NonViralName<?> taxonName = null;
                String fullScientificNameString;
                Taxon taxon = null;
@@ -1109,7 +1109,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                        
                        for (String strReference : dataHolder.referenceList){
                                
-                               ReferenceBase reference = ReferenceFactory.newGeneric();
+                               Reference reference = ReferenceFactory.newGeneric();
                                reference.setTitleCache(strReference, true);
                                determinationEvent.addReference(reference);
                        }
@@ -1135,7 +1135,7 @@ public class Abcd206Import extends SpecimenImportBase<Abcd206ImportConfigurator,
                                IndividualsAssociation individualsAssociation = IndividualsAssociation.NewInstance();
                                individualsAssociation.setAssociatedSpecimenOrObservation(facade.innerDerivedUnit());
                                individualsAssociation.setFeature(Feature.INDIVIDUALS_ASSOCIATION());
-                               for(ReferenceBase citation : determinationEvent.getReferences()){
+                               for(Reference citation : determinationEvent.getReferences()){
                                        individualsAssociation.addSource(DescriptionElementSource.NewInstance(null, null, citation, null));
                                }
                                taxonDescription.addElement(individualsAssociation);
index e1867db059b4fedea9d65148e82c4eaff7a52aae..774726e7995853c772101d6dab4c05c09ed9a0f9 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.common.IMatchingImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -106,7 +106,7 @@ public class Abcd206ImportConfigurator extends ImportConfiguratorBase<Abcd206Imp
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
@@ -121,7 +121,7 @@ public class Abcd206ImportConfigurator extends ImportConfiguratorBase<Abcd206Imp
                this.taxonReference = taxonReference;\r
        }\r
        \r
-       public ReferenceBase getTaxonReference() {\r
+       public Reference getTaxonReference() {\r
                //TODO\r
                if (this.taxonReference == null){\r
                        logger.info("getTaxonReference not yet fully implemented");\r
index f107e5c495dc088754a4973fe729568f35c18bb4..3e5cf6b6b99d83c010896dfef50bff08b344539e 100644 (file)
@@ -45,7 +45,7 @@ import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
 import eu.etaxonomy.cdm.model.occurrence.LivingBeing;
 import eu.etaxonomy.cdm.model.occurrence.Observation;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;
@@ -224,7 +224,7 @@ public class SpecimenExcelImport  extends SpecimenImportBase<SpecimenExcelImport
         * @param derivedThing
         * @param sec
         */
-       private void setTaxonNameBase(SpecimenExcelImportConfigurator config, DerivedUnitBase derivedThing, ReferenceBase sec){
+       private void setTaxonNameBase(SpecimenExcelImportConfigurator config, DerivedUnitBase derivedThing, Reference sec){
                NonViralName<?> taxonName = null;
                String fullScientificNameString;
                Taxon taxon = null;
@@ -273,7 +273,7 @@ public class SpecimenExcelImport  extends SpecimenImportBase<SpecimenExcelImport
                        determinationEvent.setPreferredFlag(preferredFlag);
 //                     no reference in the GBIF INDEX
 //                     for (int l=0;l<this.referenceList.size();l++){
-//                     ReferenceBase reference = new Generic();
+//                     Reference reference = new Generic();
 //                     reference.setTitleCache(this.referenceList.get(l));
 //                     determinationEvent.addReference(reference);
 //                     }
@@ -351,7 +351,7 @@ public class SpecimenExcelImport  extends SpecimenImportBase<SpecimenExcelImport
                
                tx = startTransaction();
                try {
-                       ReferenceBase sec = config.getTaxonReference();
+                       Reference sec = config.getTaxonReference();
 
                        /**
                         * SPECIMEN OR OBSERVATION OR LIVING
@@ -441,7 +441,8 @@ public class SpecimenExcelImport  extends SpecimenImportBase<SpecimenExcelImport
                                                if (imd != null){
                                                        System.out.println("image not null");
                                                        representation = MediaRepresentation.NewInstance();
-                                                       imf = ImageFile.NewInstance(this.multimediaObjects.get(i), null, imd);
+                                                       URI uri = new URI(this.multimediaObjects.get(i));
+                                                       imf = ImageFile.NewInstance(uri, null, imd);
                                                        representation.addRepresentationPart(imf);
                                                        media = Media.NewInstance();
                                                        media.addRepresentation(representation);
index 5d8ada4dca406a4157c24818b7ecb608e79debff..0b0fb81dbd2456de2526c1c389050602494a4b96 100644 (file)
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -75,7 +75,7 @@ public class SpecimenExcelImportConfigurator extends ImportConfiguratorBase<Spec
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
@@ -90,7 +90,7 @@ public class SpecimenExcelImportConfigurator extends ImportConfiguratorBase<Spec
                this.taxonReference = taxonReference;\r
        }\r
        \r
-       public ReferenceBase getTaxonReference() {\r
+       public Reference getTaxonReference() {\r
                //TODO\r
                if (this.taxonReference == null){\r
                        logger.info("getTaxonReference not yet fully implemented");\r
index 595563054999f427028328e3bbe1e5b5e00c506f..90d5fee33abb3a86396a6e759c48664ce38a88b0 100644 (file)
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.description.TextData;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
@@ -73,7 +73,7 @@ public class TaxonXDescriptionImport extends CdmIoBase<TaxonXImportState> implem
        \r
        private String getDescriptionTitle(TaxonXImportState state){\r
                String result = "Untitled";\r
-               ReferenceBase<?> ref = state.getModsReference();\r
+               Reference<?> ref = state.getModsReference();\r
                if (ref != null){\r
                        result = ref.getTitle();\r
                        if ( CdmUtils.isEmpty(result)){\r
@@ -102,7 +102,7 @@ public class TaxonXDescriptionImport extends CdmIoBase<TaxonXImportState> implem
                        return false;\r
                }\r
                \r
-               ReferenceBase modsReference = state.getModsReference();\r
+               Reference modsReference = state.getModsReference();\r
                if (modsReference == null){\r
                        modsReference = state.getConfig().getSourceReference();\r
                }\r
index d32376f6ae1adf39786bd8cbcdfd4792e9e70324..aeb48bc293d7329a361c0fedb80976668f8d6867 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 \r
@@ -108,11 +108,11 @@ public class TaxonXImportConfigurator extends ImportConfiguratorBase<TaxonXImpor
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                logger.warn("getSource Reference not yet implemented");\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
-               ReferenceBase result = refFactory.newDatabase();\r
+               Reference result = refFactory.newDatabase();\r
                result.setTitleCache("XXX", true);\r
                return result;\r
        }\r
index b10f126121a57c0bc82cb251d7333407c8f4d96e..19d0d6c12629c407b0541481b38fb2e028de8079 100644 (file)
@@ -15,7 +15,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
 import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
 import eu.etaxonomy.cdm.io.common.ImportStateBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -26,19 +26,19 @@ public class TaxonXImportState extends ImportStateBase<TaxonXImportConfigurator,
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(TaxonXImportState.class);\r
 \r
-       private ReferenceBase<?> modsReference;\r
+       private Reference<?> modsReference;\r
        \r
        /**\r
         * @return the modsReference\r
         */\r
-       public ReferenceBase<?> getModsReference() {\r
+       public Reference<?> getModsReference() {\r
                return modsReference;\r
        }\r
 \r
        /**\r
         * @param modsReference the modsReference to set\r
         */\r
-       public void setModsReference(ReferenceBase<?> modsReference) {\r
+       public void setModsReference(Reference<?> modsReference) {\r
                this.modsReference = modsReference;\r
        }\r
 \r
index c6fdcb2c24b9aa94e2d85ceb8b2aee7c026203d4..db4ef0f57100d0df2da617e11547ddeca7f07d33 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.reference.IGeneric;\r
 import eu.etaxonomy.cdm.model.reference.IPublicationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\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
@@ -70,7 +70,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
                if (elTaxonHeader != null){\r
                        Element elMods = elTaxonHeader.getChild("mods", nsMods);\r
                        if (elMods != null){\r
-                               ReferenceBase<?> ref = refFactory.newGeneric();\r
+                               Reference<?> ref = refFactory.newGeneric();\r
                                //TitleInfo\r
                                Element elTitleInfo = elMods.getChild("titleInfo", nsMods);\r
                                if (elTitleInfo != null){\r
@@ -122,7 +122,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
         * @param elModsName\r
         * @param ref\r
         */\r
-       private boolean makeOriginInfo(Element elOriginInfo, ReferenceBase<?> ref) {\r
+       private boolean makeOriginInfo(Element elOriginInfo, Reference<?> ref) {\r
                Namespace nsMods = elOriginInfo.getNamespace();\r
                List<Content> contentList = elOriginInfo.getContent();\r
                \r
@@ -169,7 +169,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
        //THIS implementation is against the mods semantics but supports the current\r
        //format for palmae taxonX files\r
        //The later has to be changed and this part has to be adapted\r
-       private boolean makeModsName(Element elModsName, ReferenceBase<?> ref) {\r
+       private boolean makeModsName(Element elModsName, Reference<?> ref) {\r
                int UNPARSED = 0;\r
                int PARSED = 1;\r
                Namespace nsMods = elModsName.getNamespace();\r
@@ -226,7 +226,7 @@ public class TaxonXModsImport extends CdmIoBase<TaxonXImportState> implements IC
         * @param elTitleInfo\r
         * @param ref\r
         */\r
-       private boolean makeTitleInfo(Element elTitleInfo, ReferenceBase<?> ref) {\r
+       private boolean makeTitleInfo(Element elTitleInfo, Reference<?> ref) {\r
                Namespace nsMods = elTitleInfo.getNamespace();\r
                List<Content> contentList = elTitleInfo.getContent();\r
                \r
index 4f6a65ba02ca5308f226f967ac3a7d853f99234c..1525269056f2bba5abb0c56e0965a1b846bcc663 100644 (file)
@@ -39,7 +39,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -193,7 +193,7 @@ public class TaxonXNomenclatureImport extends CdmIoBase<TaxonXImportState> imple
 \r
        \r
        private boolean doSpecimenType(TaxonXImportConfigurator config, Element elType, Element elTypeLoc, TaxonNameBase taxonName){\r
-               ReferenceBase citation = null;\r
+               Reference citation = null;\r
                String citationMicroReference = null;\r
                String originalNameString = null;\r
                boolean isNotDesignated = true;\r
@@ -392,7 +392,7 @@ public class TaxonXNomenclatureImport extends CdmIoBase<TaxonXImportState> imple
 \r
        \r
        private boolean doNameTypeDesignation(TaxonNameBase name, TaxonNameBase type, NameTypeDesignationStatus status/*, boolean isLectoType*/){\r
-               ReferenceBase citation = null;\r
+               Reference citation = null;\r
                String citationMicroReference = null;\r
                String originalNameString = null;\r
                boolean addToAllHomotypicNames = true;\r
@@ -516,7 +516,7 @@ public class TaxonXNomenclatureImport extends CdmIoBase<TaxonXImportState> imple
                                        if (taxonBase != null){\r
                                                TaxonNameBase<?, ?> taxonName = taxonBase.getName();\r
                                                if (taxonName != null){\r
-                                                       ReferenceBase citation = null;\r
+                                                       Reference citation = null;\r
                                                        String citationMicroReference = null;\r
                                                        String originalNameString = null;\r
                                                        boolean isNotDesignated = true;\r
index b98f32ce66044a9eb2d1627778af0b7a1e61b7f3..d5b30f5e3b16df11528e10865401f9ce56eefa3a 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -154,7 +154,7 @@ public class TcsRdfImportConfigurator extends ImportConfiguratorBase<TcsRdfImpor
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index 6dad9a53921dd579963a4bd434908c9f77acdd68..01a384336b989906d95158ce79a1f5f2cef5c276 100644 (file)
@@ -46,7 +46,7 @@ import eu.etaxonomy.cdm.model.reference.IArticle;
 import eu.etaxonomy.cdm.model.reference.IBook;\r
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\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
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
@@ -122,7 +122,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
 \r
 \r
        \r
-       private boolean makeStandardMapper(Element parentElement, ReferenceBase ref, Set<String> omitAttributes){\r
+       private boolean makeStandardMapper(Element parentElement, Reference ref, Set<String> omitAttributes){\r
                if (omitAttributes == null){\r
                        omitAttributes = new HashSet<String>();\r
                }\r
@@ -142,7 +142,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                return true;\r
        }\r
        \r
-       private boolean makeSingleAttributeMapper(CdmSingleAttributeXmlMapperBase mapper, Element parentElement, ReferenceBase ref, Set<String> omitAttributes){\r
+       private boolean makeSingleAttributeMapper(CdmSingleAttributeXmlMapperBase mapper, Element parentElement, Reference ref, Set<String> omitAttributes){\r
                boolean result = true;\r
                Object value = getValue(mapper, parentElement);\r
                //write to destination\r
@@ -155,7 +155,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                return result;\r
        }\r
        \r
-       private boolean makeMultipleAttributeMapper(CdmOneToManyMapper<?,?,CdmTextElementMapper> mapper, Element parentElement, ReferenceBase ref, Set<String> omitAttributes){\r
+       private boolean makeMultipleAttributeMapper(CdmOneToManyMapper<?,?,CdmTextElementMapper> mapper, Element parentElement, Reference ref, Set<String> omitAttributes){\r
                if (omitAttributes == null){\r
                        omitAttributes = new HashSet<String>();\r
                }\r
@@ -191,8 +191,8 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
        }\r
        \r
        protected boolean doInvoke(TcsRdfImportState state){\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
-               MapWrapper<ReferenceBase> nomRefMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.NOMREF_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> nomRefMap = (MapWrapper<Reference>)state.getStore(ICdmIO.NOMREF_STORE);\r
                \r
                TcsRdfImportConfigurator config = state.getConfig();\r
                Element root = config.getSourceRoot();\r
@@ -228,7 +228,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                        String strPubType = XmlHelp.getChildAttributeValue(elPublicationCitation, tcsElementName, tcsNamespace, "resource", rdfNamespace);\r
                        \r
                        try {\r
-                               ReferenceBase<?> ref = TcsRdfTransformer.pubTypeStr2PubType(strPubType);\r
+                               Reference<?> ref = TcsRdfTransformer.pubTypeStr2PubType(strPubType);\r
                                if (ref==null){\r
                                        ref = refFactory.newGeneric();\r
                                }\r
@@ -256,7 +256,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                                tcsElementName = "parentPublication";\r
                                tcsNamespace = publicationNamespace;\r
                                String strParent = XmlHelp.getChildAttributeValue(elPublicationCitation, tcsElementName, tcsNamespace, "resource", rdfNamespace);\r
-                               ReferenceBase parent = referenceMap.get(strParent);\r
+                               Reference parent = referenceMap.get(strParent);\r
                                if (parent != null){\r
                                        if ((ref.getType().equals(ReferenceType.Article)) && (parent.getType().equals(ReferenceType.Journal))){\r
                                                ((IArticle)ref).setInJournal((IJournal)parent);\r
@@ -289,7 +289,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                                tcsNamespace = publicationNamespace;\r
                                if (! CdmUtils.Nz(strTitle).trim().equals("")  || nomRefExists == false){\r
                                        //TODO\r
-                                       ReferenceBase<?> biblioRef = (ReferenceBase<?>)ref.clone();\r
+                                       Reference<?> biblioRef = (Reference<?>)ref.clone();\r
                                        biblioRef.setTitle(strTitle);\r
                                        ImportHelper.setOriginalSource(biblioRef, config.getSourceReference(), strAbout, idNamespace);\r
                                        referenceMap.put(strAbout, biblioRef);\r
@@ -313,7 +313,7 @@ public class TcsRdfReferenceImport extends TcsRdfImportBase implements ICdmIO<Tc
                }\r
                \r
                //change conceptRef uuid\r
-               ReferenceBase sec = referenceMap.get(config.getSourceSecId());\r
+               Reference sec = referenceMap.get(config.getSourceSecId());\r
                if (sec == null){\r
                        sec = nomRefMap.get(config.getSourceSecId());   \r
                }\r
index 821b36f49cf3d12ab48dbde0fd4ba6b426b83bcb..19e4e65debc03adc821ab8379f70cef7e69bc4ef 100644 (file)
@@ -36,7 +36,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.TdwgArea;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -97,8 +97,8 @@ public class TcsRdfTaxonImport  extends TcsRdfImportBase implements ICdmIO<TcsRd
                \r
                MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)state.getStore(ICdmIO.TAXON_STORE);\r
                MapWrapper<TaxonNameBase> taxonNameMap = (MapWrapper<TaxonNameBase>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
-               MapWrapper<ReferenceBase> nomRefMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.NOMREF_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> nomRefMap = (MapWrapper<Reference>)state.getStore(ICdmIO.NOMREF_STORE);\r
                \r
                String xmlElementName;\r
                String xmlAttributeName;\r
@@ -158,7 +158,7 @@ public class TcsRdfTaxonImport  extends TcsRdfImportBase implements ICdmIO<TcsRd
                        \r
 //                     //FIXME\r
 //                     String secId = "pub_999999";\r
-                       ReferenceBase sec = referenceMap.get(strAccordingTo);\r
+                       Reference sec = referenceMap.get(strAccordingTo);\r
                        if (sec == null){\r
                                sec = nomRefMap.get(strAccordingTo);\r
                        }\r
index 3726efa1944c9409624270859e7e916145320424..f55e7c87e446f83218ed3a6df9684247d86556e0 100644 (file)
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.IGeneric;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
@@ -97,7 +97,7 @@ public class TcsRdfTaxonNameImport  extends TcsRdfImportBase implements ICdmIO<T
        protected boolean doInvoke(TcsRdfImportState state){\r
                \r
                MapWrapper<TaxonNameBase> taxonNameMap = (MapWrapper<TaxonNameBase>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
                MapWrapper<TeamOrPersonBase> authorMap = (MapWrapper<TeamOrPersonBase>)state.getStore(ICdmIO.TEAM_STORE);\r
 \r
                String tcsElementName;\r
@@ -163,7 +163,7 @@ public class TcsRdfTaxonNameImport  extends TcsRdfImportBase implements ICdmIO<T
                                                }\r
                                        }\r
                                        if (state.getConfig().isPublishReferences()){\r
-                                               ((ReferenceBase)nomRef).addMarker(Marker.NewInstance(MarkerType.PUBLISH(), false));\r
+                                               ((Reference)nomRef).addMarker(Marker.NewInstance(MarkerType.PUBLISH(), false));\r
                                        }\r
                                }\r
                                                \r
index 9c9d9e5c7552074bd5d58ebe89a309e0c38e7419..ed50e7f2d44aad23ef1819874910b9248aa6ba42 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.io.common.ICdmIO;\r
 import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -54,7 +54,7 @@ public class TcsRdfTaxonNameRelationsImport extends TcsRdfImportBase implements
        public boolean doInvoke(TcsRdfImportState state){\r
                \r
                MapWrapper<TaxonNameBase> taxonNameMap = (MapWrapper<TaxonNameBase>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
                \r
                String tcsElementName;\r
                Namespace tcsNamespace;\r
@@ -119,7 +119,7 @@ public class TcsRdfTaxonNameRelationsImport extends TcsRdfImportBase implements
                                }\r
                                String ruleConcidered = null; //TODO\r
                                String microCitation = null; //TODO;\r
-                               ReferenceBase citation = null; //TODO;\r
+                               Reference citation = null; //TODO;\r
                                fromName.addBasionym(basionym, citation, microCitation, ruleConcidered);\r
                                nameStore.add(fromName);\r
 \r
index 320574b2273446c076b3bcf6b96bd14a846062c2..7ac6fa849fe257170bec2e6a16e93e82da9c77fb 100644 (file)
@@ -23,14 +23,14 @@ import eu.etaxonomy.cdm.io.common.ICdmIO;
 import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 \r
@@ -64,7 +64,7 @@ public class TcsRdfTaxonRelationsImport extends TcsRdfImportBase implements ICdm
        public boolean doInvoke(TcsRdfImportState state){ \r
        \r
                MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)state.getStore(ICdmIO.TAXON_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
                logger.info("start makeTaxonRelationships ...");\r
                boolean success =true;\r
 \r
@@ -169,7 +169,7 @@ public class TcsRdfTaxonRelationsImport extends TcsRdfImportBase implements ICdm
                                        success = false;\r
                                }else{\r
                                        Taxon taxonTo = (Taxon)toTaxon;\r
-                                       ReferenceBase citation = null;\r
+                                       Reference citation = null;\r
                                        String microReference = null;\r
                                        if (relType instanceof SynonymRelationshipType){\r
                                                success &= makeSynRelType((SynonymRelationshipType)relType, taxonTo, fromTaxon, citation, microReference);\r
@@ -200,7 +200,7 @@ public class TcsRdfTaxonRelationsImport extends TcsRdfImportBase implements ICdm
        }\r
        \r
        \r
-       private boolean makeSynRelType(SynonymRelationshipType synRelType, Taxon taxonTo, TaxonBase fromTaxon, ReferenceBase citation, String microReference){\r
+       private boolean makeSynRelType(SynonymRelationshipType synRelType, Taxon taxonTo, TaxonBase fromTaxon, Reference citation, String microReference){\r
                boolean success = true;\r
                if (! (fromTaxon instanceof Synonym )){\r
                        logger.warn("TaxonBase fromTaxon is not of Type 'Synonym'. Relationship is not added.");\r
@@ -224,14 +224,14 @@ public class TcsRdfTaxonRelationsImport extends TcsRdfImportBase implements ICdm
                return success;\r
        }\r
        \r
-       private boolean makeTaxonRelType(TaxonRelationshipType relType, TcsRdfImportState state, Taxon taxonTo, TaxonBase fromTaxon, String strTaxonAbout, ReferenceBase citation, String microReference){\r
+       private boolean makeTaxonRelType(TaxonRelationshipType relType, TcsRdfImportState state, Taxon taxonTo, TaxonBase fromTaxon, String strTaxonAbout, Reference citation, String microReference){\r
                boolean success = true;\r
                if (! (fromTaxon instanceof Taxon )){\r
                        logger.warn("TaxonBase fromTaxon " + strTaxonAbout + " is not of Type 'Taxon'. Relationship is not added.");\r
                        success = false;\r
                }else{\r
                        Taxon taxonFrom = (Taxon)fromTaxon;\r
-                       if (state.getConfig().isUseTaxonomicTree() && relType.equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())){\r
+                       if (state.getConfig().isUseClassification() && relType.equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())){\r
                                success &= makeTaxonomicallyIncluded(state, taxonTo, taxonFrom, citation, microReference);\r
                        }else{\r
                                taxonFrom.addTaxonRelation(taxonTo, relType, citation, microReference);\r
@@ -240,9 +240,9 @@ public class TcsRdfTaxonRelationsImport extends TcsRdfImportBase implements ICdm
                return success;\r
        }\r
        \r
-       private boolean makeTaxonomicallyIncluded(TcsRdfImportState state, Taxon toTaxon, Taxon fromTaxon, ReferenceBase citation, String microCitation){\r
-               ReferenceBase sec = toTaxon.getSec();\r
-               TaxonomicTree tree = state.getTree(sec);\r
+       private boolean makeTaxonomicallyIncluded(TcsRdfImportState state, Taxon toTaxon, Taxon fromTaxon, Reference citation, String microCitation){\r
+               Reference sec = toTaxon.getSec();\r
+               Classification tree = state.getTree(sec);\r
                if (tree == null){\r
                        tree = makeTree(state, sec);\r
                }\r
index 2e2dd83eab6d3f59e4234f7c95db9c0d1e2256d9..a9e0c0fd7fa210758c9fbb6e02cdc17accfe3b35 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.model.reference.BookSection;
 import eu.etaxonomy.cdm.model.reference.Journal;\r
 import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
 import eu.etaxonomy.cdm.model.reference.PrintSeries;*/\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 //import eu.etaxonomy.cdm.model.reference.WebPage;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -141,7 +141,7 @@ public final class TcsRdfTransformer {
        \r
        /** Creates an cdm-Rank by the tcs rank\r
         */\r
-       public static ReferenceBase pubTypeStr2PubType (String strPubType) throws UnknownCdmTypeException{\r
+       public static Reference pubTypeStr2PubType (String strPubType) throws UnknownCdmTypeException{\r
                String tcsRoot = "http://rs.tdwg.org/ontology/voc/PublicationCitation#";\r
                String tcsBook = tcsRoot + "Book";\r
                String tcsJournal = tcsRoot + "Journal";\r
index 72e33e88ab192c539e6a7e3cf444c504c9c29689..f3d90d5b6a2b72f94f376ad3fbc07a446e348d59 100644 (file)
@@ -17,7 +17,7 @@ import eu.etaxonomy.cdm.common.ResultWrapper;
 import eu.etaxonomy.cdm.common.XmlHelp;\r
 import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -45,9 +45,9 @@ public class DefaultTcsXmlPlaceholders implements ITcsXmlPlaceholderClass {
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see tcsxml.ITcsXmlPlaceholderClass#makePublicationDetailed(tcsxml.TcsXmlImportConfigurator, org.jdom.Element, eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see tcsxml.ITcsXmlPlaceholderClass#makePublicationDetailed(tcsxml.TcsXmlImportConfigurator, org.jdom.Element, eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public boolean makePublicationDetailed(TcsXmlImportConfigurator config, Element elPublicationDetailed, ReferenceBase publication){\r
+       public boolean makePublicationDetailed(TcsXmlImportConfigurator config, Element elPublicationDetailed, Reference publication){\r
                ResultWrapper<Boolean> success = ResultWrapper.NewInstance(true);\r
                if (config == null){\r
                        return false;\r
index 4c4efc22c99343f7b37132638111d0331617c399..ce5dd7d5a4dff9513221da048072c464baa93ae8 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.cdm.io.tcsxml;
 import org.jdom.Element;\r
 \r
 import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 public interface ITcsXmlPlaceholderClass {\r
 \r
@@ -20,6 +20,6 @@ public interface ITcsXmlPlaceholderClass {
                        TcsXmlImportConfigurator tcsConfig, Element elMetaDataDetailed);\r
 \r
        public abstract boolean makePublicationDetailed(TcsXmlImportConfigurator tcsConfig, \r
-                       Element elPublicationDetailed, ReferenceBase publication);\r
+                       Element elPublicationDetailed, Reference publication);\r
 \r
 }
\ No newline at end of file
index c040d785959130e124f9f156a4b137fd12cebcf7..0156f0438155538c65e57563ab3f8cf1776720cf 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.reference.BookSection;
 import eu.etaxonomy.cdm.model.reference.Journal;\r
 import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
 import eu.etaxonomy.cdm.model.reference.PrintSeries;*/\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 //import eu.etaxonomy.cdm.model.reference.WebPage;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -164,7 +164,7 @@ public final class TcsXmlTransformer {
        \r
        /** Creates an cdm-Rank by the tcs rank\r
         */\r
-       public static ReferenceBase pubTypeStr2PubType (String strPubType) throws UnknownCdmTypeException{\r
+       public static Reference pubTypeStr2PubType (String strPubType) throws UnknownCdmTypeException{\r
                String tcsRoot = "http://rs.tdwg.org/ontology/voc/PublicationCitation#";\r
                String tcsBook = tcsRoot + "Book";\r
                String tcsJournal = tcsRoot + "Journal";\r
index 8a3883d769ed7757c9983f116140d081872238c3..3a25b627d933040a37fbeef7a90a982253e0d044 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.agent.Team;
 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.ReferenceBase;\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
@@ -219,8 +219,8 @@ public abstract class TcsXmlImportBase  extends CdmImportBase<TcsXmlImportConfig
        }\r
        \r
        \r
-       protected ReferenceBase makeAccordingTo(Element elAccordingTo, MapWrapper<ReferenceBase> referenceMap, ResultWrapper<Boolean> success){\r
-               ReferenceBase result = null;\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
@@ -242,8 +242,8 @@ public abstract class TcsXmlImportBase  extends CdmImportBase<TcsXmlImportConfig
        }\r
        \r
        \r
-       private ReferenceBase makeAccordingToDetailed(Element elAccordingToDetailed, MapWrapper<ReferenceBase> referenceMap, ResultWrapper<Boolean> success){\r
-               ReferenceBase result = null;\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
@@ -256,7 +256,7 @@ public abstract class TcsXmlImportBase  extends CdmImportBase<TcsXmlImportConfig
                        childName = "PublishedIn";\r
                        obligatory = false;\r
                        Element elPublishedIn = XmlHelp.getSingleChildElement(success, elAccordingToDetailed, childName, tcsNamespace, obligatory);\r
-                       result = makeReferenceType(elPublishedIn, ReferenceBase.class, referenceMap, success);\r
+                       result = makeReferenceType(elPublishedIn, Reference.class, referenceMap, success);\r
                        \r
                        //MicroReference\r
                        childName = "MicroReference";\r
index 40b2cad701a75f80ac545ac41506d3e69a888a5a..dc024d45976c928117a9fc96fb7af8e90a406918 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
 import eu.etaxonomy.cdm.io.tcsxml.DefaultTcsXmlPlaceholders;\r
 import eu.etaxonomy.cdm.io.tcsxml.ITcsXmlPlaceholderClass;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 @Component\r
@@ -176,7 +176,7 @@ public class TcsXmlImportConfigurator extends ImportConfiguratorBase<TcsXmlImpor
         * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
         */\r
        @Override\r
-       public ReferenceBase getSourceReference() {\r
+       public Reference getSourceReference() {\r
                //TODO\r
                if (this.sourceReference == null){\r
                        logger.warn("getSource Reference not yet fully implemented");\r
index 2dac0fb5df98fbca10a3d46304f9152e431b862d..d447155fe94ab89ac59288dc56dabbd9375ab852 100644 (file)
@@ -56,7 +56,7 @@ public class TcsXmlMetaDataImport extends TcsXmlImportBase implements ICdmIO<Tcs
                String childName;\r
                boolean obligatory;\r
                \r
-//             MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)stores.get(ICdmIO.REFERENCE_STORE);\r
+//             MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)stores.get(ICdmIO.REFERENCE_STORE);\r
                \r
                TcsXmlImportConfigurator config = state.getConfig();\r
                Element elDataSet = getDataSetElement(config);\r
index b4d722432d33793b26904525931fbe63404c4b6e..4f1fcb2e6528ddb83d080e9264b4a55cbf4b83ae 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.io.common.ICdmIO;
 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.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -73,7 +73,7 @@ public class TcsXmlPublicationsImport extends TcsXmlImportBase implements ICdmIO
                String childName;\r
                boolean obligatory;\r
        \r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
                IReferenceService referenceService = getReferenceService();\r
                \r
                TcsXmlImportConfigurator config = state.getConfig();\r
@@ -108,7 +108,7 @@ public class TcsXmlPublicationsImport extends TcsXmlImportBase implements ICdmIO
 \r
                        String simple = elSimple.getTextNormalize();\r
                        \r
-                       ReferenceBase reference = refFactory.newGeneric();\r
+                       Reference reference = refFactory.newGeneric();\r
                        reference.setTitleCache(simple, true);\r
 \r
                        childName = "PublicationDetailed";\r
index 83b820af80d6ed312200aca562be42256836e148..0ab5cbe953a08fccb340f74f4ddda63550f2fdb0 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -117,9 +117,9 @@ public class TcsXmlTaxonImport  extends TcsXmlImportBase implements ICdmIO<TcsXm
        }\r
        \r
        \r
-       protected static final ReferenceBase unknownSec(){\r
+       protected static final Reference unknownSec(){\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
-               ReferenceBase result = refFactory.newGeneric();\r
+               Reference result = refFactory.newGeneric();\r
                result.setTitleCache("UNKNOWN", true);\r
                return result;\r
        }\r
@@ -130,7 +130,7 @@ public class TcsXmlTaxonImport  extends TcsXmlImportBase implements ICdmIO<TcsXm
                logger.info("start make TaxonConcepts ...");\r
                MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)state.getStore(ICdmIO.TAXON_STORE);\r
                MapWrapper<TaxonNameBase<?,?>> taxonNameMap = (MapWrapper<TaxonNameBase<?,?>>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
                Map<String, CommonTaxonName> commonNameMap = new HashMap<String, CommonTaxonName>();\r
                \r
                ITaxonService taxonService = getTaxonService();\r
@@ -190,7 +190,7 @@ public class TcsXmlTaxonImport  extends TcsXmlImportBase implements ICdmIO<TcsXm
                                childName = "AccordingTo";\r
                                obligatory = false;\r
                                Element elAccordingTo = XmlHelp.getSingleChildElement(success, elTaxonConcept, childName, tcsNamespace, obligatory);\r
-                               ReferenceBase sec = makeAccordingTo(elAccordingTo, referenceMap, success);\r
+                               Reference sec = makeAccordingTo(elAccordingTo, referenceMap, success);\r
                                elementList.add(childName.toString());\r
                                // TODO may sec be null?\r
                                if (sec == null){\r
index f00c4456845d188790c856f649c92632dead7d85..ca134ea01f0a272e0280a89d9db254aca0ff6fb1 100644 (file)
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 @Component("tcsXmlTaxonNameIO")\r
@@ -66,7 +66,7 @@ public class TcsXmlTaxonNameImport extends TcsXmlImportBase implements ICdmIO<Tc
                logger.info("start make TaxonNames ...");\r
                MapWrapper<Person> authorMap = (MapWrapper<Person>)state.getStore(ICdmIO.TEAM_STORE);\r
                MapWrapper<TaxonNameBase> taxonNameMap = (MapWrapper<TaxonNameBase>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap =  (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap =  (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
 \r
                ResultWrapper<Boolean> success = ResultWrapper.NewInstance(true);\r
                String childName;\r
@@ -469,10 +469,10 @@ public class TcsXmlTaxonNameImport extends TcsXmlImportBase implements ICdmIO<Tc
        }\r
 \r
        \r
-       private void makePublishedIn(TaxonNameBase name, Element elPublishedIn, MapWrapper<ReferenceBase> referenceMap, ResultWrapper<Boolean> success){\r
+       private void makePublishedIn(TaxonNameBase name, Element elPublishedIn, MapWrapper<Reference> referenceMap, ResultWrapper<Boolean> success){\r
                if (elPublishedIn != null && name != null){\r
-                       Class<? extends ReferenceBase> clazz = ReferenceBase.class;\r
-                       ReferenceBase ref = makeReferenceType(elPublishedIn, clazz, referenceMap, success);\r
+                       Class<? extends Reference> clazz = Reference.class;\r
+                       Reference ref = makeReferenceType(elPublishedIn, clazz, referenceMap, success);\r
                        if (ref instanceof INomenclaturalReference){\r
                                name.setNomenclaturalReference(ref);\r
                        }else{\r
index 78573e19a59230936923d16e93ff0041de094795..b8a87a505a5f6d2370e7dd3a50bec9f00f6275b2 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.io.common.MapWrapper;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 @Component\r
 public class TcsXmlTaxonNameRelationsImport extends TcsXmlImportBase implements ICdmIO<TcsXmlImportState> {\r
@@ -57,7 +57,7 @@ public class TcsXmlTaxonNameRelationsImport extends TcsXmlImportBase implements
                \r
                logger.info("start make taxon name relations ...");\r
                MapWrapper<TaxonNameBase<?,?>> taxonNameMap = (MapWrapper<TaxonNameBase<?,?>>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
 \r
                Set<TaxonNameBase> nameStore = new HashSet<TaxonNameBase>();\r
 \r
index 1bfa73bcd9f451da2c8041eb276764e919682dbe..d0e8c64999f8568533071993c05e5addb85aa425 100644 (file)
@@ -30,14 +30,14 @@ import eu.etaxonomy.cdm.model.description.CommonTaxonName;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
 \r
@@ -73,7 +73,7 @@ public class TcsXmlTaxonRelationsImport extends TcsXmlImportBase implements ICdm
                logger.info("start make taxon relations ...");\r
                MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)state.getStore(ICdmIO.TAXON_STORE);\r
                MapWrapper<TaxonNameBase<?,?>> taxonNameMap = (MapWrapper<TaxonNameBase<?,?>>)state.getStore(ICdmIO.TAXONNAME_STORE);\r
-               MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)state.getStore(ICdmIO.REFERENCE_STORE);\r
+               MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);\r
 \r
                Set<TaxonBase> taxonStore = new HashSet<TaxonBase>();\r
 \r
@@ -148,7 +148,7 @@ public class TcsXmlTaxonRelationsImport extends TcsXmlImportBase implements ICdm
        private int makeTaxonRelationshipAssertion(\r
                        TcsXmlImportState state, \r
                        MapWrapper<TaxonBase> taxonMap,\r
-                       MapWrapper<ReferenceBase> referenceMap,\r
+                       MapWrapper<Reference> referenceMap,\r
                        Set<TaxonBase> taxonStore, \r
                        Element elDataSet, \r
                        Namespace tcsNamespace, \r
@@ -173,7 +173,7 @@ public class TcsXmlTaxonRelationsImport extends TcsXmlImportBase implements ICdm
                        childName = "AccordingTo";\r
                        obligatory = true;\r
                        Element elAccordingTo = XmlHelp.getSingleChildElement(success, elTaxonRelationshipAssertion, childName, tcsNamespace, obligatory);\r
-                       ReferenceBase ref = makeAccordingTo(elAccordingTo, referenceMap, success);\r
+                       Reference ref = makeAccordingTo(elAccordingTo, referenceMap, success);\r
                        \r
                        childName = "FromTaxonConcept";\r
                        obligatory = true;\r
@@ -240,7 +240,7 @@ public class TcsXmlTaxonRelationsImport extends TcsXmlImportBase implements ICdm
                                                success.setValue(false);\r
                                        }else{\r
                                                Taxon taxonTo = (Taxon)toTaxon;\r
-                                               ReferenceBase citation = null;\r
+                                               Reference citation = null;\r
                                                String microReference = null;\r
                                                if (relType instanceof SynonymRelationshipType){\r
                                                        SynonymRelationshipType synRelType = (SynonymRelationshipType)relType;\r
@@ -336,7 +336,7 @@ public class TcsXmlTaxonRelationsImport extends TcsXmlImportBase implements ICdm
                return result;\r
        }\r
 \r
-       private void makeTaxonRelationship(TcsXmlImportState state, TaxonRelationshipType relType, TaxonBase fromTaxon, Taxon taxonTo, ReferenceBase citation, String microReference, ResultWrapper<Boolean> success){\r
+       private void makeTaxonRelationship(TcsXmlImportState state, TaxonRelationshipType relType, TaxonBase fromTaxon, Taxon taxonTo, Reference citation, String microReference, ResultWrapper<Boolean> success){\r
                TaxonRelationshipType taxRelType = (TaxonRelationshipType)relType;\r
                if (! (fromTaxon instanceof Taxon )){\r
                        logger.warn("TaxonBase fromTaxon " + /*strTaxonAbout +*/ "is not of Type 'Taxon'. Relationship is not added.");\r
@@ -351,9 +351,9 @@ public class TcsXmlTaxonRelationsImport extends TcsXmlImportBase implements ICdm
                }\r
        }\r
        \r
-       private boolean makeTaxonomicallyIncluded(TcsXmlImportState state, Taxon toTaxon, Taxon fromTaxon, ReferenceBase citation, String microCitation){\r
-               ReferenceBase sec = toTaxon.getSec();\r
-               TaxonomicTree tree = state.getTree(sec);\r
+       private boolean makeTaxonomicallyIncluded(TcsXmlImportState state, Taxon toTaxon, Taxon fromTaxon, Reference citation, String microCitation){\r
+               Reference sec = toTaxon.getSec();\r
+               Classification tree = state.getTree(sec);\r
                if (tree == null){\r
                        tree = makeTree(state, sec);\r
                }\r
index 8454aaa0d0ac7170edb00564ceb0db3a8f5d85f4..4b3403769a1fc10d4b90b85989b22dc95b9fa45c 100644 (file)
@@ -185,10 +185,10 @@ http://www.w3.org/2001/XMLSchema
           </xs:sequence>
         </xs:complexType>
       </xs:element>
-      <xs:element name="TaxonomicTrees" minOccurs="0">
+      <xs:element name="Classification" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
-            <xs:element ref="taxon:TaxonomicTree" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="taxon:Classification" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
index fbdd47675a7e22d100b222d72539c664b3f00c3b..41ef92f26c461e2f908a699efb246a553ee0d78c 100644 (file)
@@ -30,7 +30,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
   <xs:element name="TaxonRelationshipType" type="taxon:TaxonRelationshipType"/>
 
-  <xs:element name="TaxonomicTree" type="taxon:TaxonomicTree"/>
+  <xs:element name="Classification" type="taxon:Classification"/>
 
   <xs:complexType name="Taxon">
     <xs:complexContent>
@@ -99,7 +99,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:sequence>
           <xs:element name="taxon" type="xs:IDREF" minOccurs="0"/>
           <xs:element name="parent" type="xs:IDREF" minOccurs="0"/>
-          <xs:element name="taxonomicTree" type="xs:IDREF" minOccurs="0"/>
+          <xs:element name="classification" type="xs:IDREF" minOccurs="0"/>
           <xs:element name="childNodes" minOccurs="0">
             <xs:complexType>
               <xs:sequence>
@@ -116,7 +116,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema">
     </xs:complexContent>
   </xs:complexType>
 
-  <xs:complexType name="TaxonomicTree">
+  <xs:complexType name="Classification">
     <xs:complexContent>
       <xs:extension base="common:IdentifiableEntity">
         <xs:sequence>
index 694545e797f8a58dc49a9a377d80cbe250ab46fd..995061d9abd0bb72cda468aa300cedbe3a2c18f6 100644 (file)
@@ -34,7 +34,7 @@ import org.unitils.spring.annotation.SpringBeanByType;
 \r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.io.common.CdmApplicationAwareDefaultImport;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
@@ -45,7 +45,7 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
 \r
 /**\r
@@ -67,7 +67,7 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{
        ITaxonService taxonService;\r
        \r
        @SpringBeanByType\r
-       ITaxonTreeService taxonTreeService;\r
+       IClassificationService classificationService;\r
 \r
        private IImportConfigurator configurator;\r
        \r
@@ -94,9 +94,9 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{
                boolean result = defaultImport.invoke(configurator);\r
                assertTrue("Return value for import.invoke should be true", result);\r
                assertEquals("Number of TaxonNames should be 9", 9, nameService.count(null));\r
-               List<TaxonomicTree> treeList = taxonTreeService.list(null, null,null,null,null);\r
-               assertEquals("Number of taxonomic trees should be 1", 1, treeList.size());\r
-               TaxonomicTree tree = treeList.get(0);\r
+               List<Classification> treeList = classificationService.list(null, null,null,null,null);\r
+               assertEquals("Number of classifications should be 1", 1, treeList.size());\r
+               Classification tree = treeList.get(0);\r
                Set<TaxonNode> rootNodes = tree.getChildNodes();\r
                assertEquals("Number of root nodes should be 1", 1, rootNodes.size());\r
                TaxonNode rootNode = rootNodes.iterator().next();\r
index 8af946cbc3c8075e7646f3e416952324cec94443..161e42380595ffb8a525478a1582db1028c36c9c 100644 (file)
@@ -68,7 +68,7 @@ public class CdmImporterTest  extends CdmTransactionalIntegrationTest{
                        //System.out.println(e);\r
                        //logger.error(e);\r
                        for(StackTraceElement ste : e.getStackTrace()) {\r
-                               //logger.error(ste);\r
+                               logger.error(ste);\r
                        }\r
                        fail("No exception expected in database validation method");\r
                } \r
index f576e3febb099c21666494236d8d66c955cc363d..44bdf467e1f81e4ade51df8fbcad01f6c53b8c9f 100644 (file)
@@ -14,15 +14,14 @@ import static org.junit.Assert.assertNotNull;
 import java.io.InputStreamReader;\r
 import java.net.URI;\r
 \r
-import org.junit.Test;\r
+import junitx.framework.Assert;\r
 \r
+import org.junit.Test;\r
 \r
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
 import eu.etaxonomy.cdm.model.reference.IGeneric;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 public class ReferenceTest {\r
                \r
@@ -34,6 +33,8 @@ public class ReferenceTest {
                URI uri = new URI(URIEncoder.encode(this.getClass().getResource(resource).toString()));\r
                DataSet dataSet = cdmDocumentBuilder.unmarshal(DataSet.class, new InputStreamReader(this.getClass().getResourceAsStream(resource)),uri.toString());\r
                        \r
+                       Assert.assertNotEquals("Reference list should not be empty", 0, dataSet.getReferences().size());\r
+               \r
                        IArticle article = (IArticle)dataSet.getReferences().get(0);    \r
                        assertNotNull("Article must not be null",article);\r
                        \r
@@ -51,10 +52,10 @@ public class ReferenceTest {
                        IArticle article = (IArticle)dataSet.getReferences().get(0);    \r
                        assertNotNull("Article must not be null",article);\r
                        \r
-                       IJournal journal = ((ReferenceBase)article).castReferenceToJournal();\r
+                       IJournal journal = ((Reference)article).castReferenceToJournal();\r
                        assertEquals("Journal", journal.getType().name());\r
                        \r
-                       IGeneric generic = ((ReferenceBase)journal).castReferenceToGeneric();\r
+                       IGeneric generic = ((Reference)journal).castReferenceToGeneric();\r
                        assertEquals("Generic", generic.getType().name());\r
                        \r
                        \r
index 1fc4fb12fb6368d236f1549961e9cfc22228f269..361c3515c9be7ab7f1bca6407c9b5a1f1d757e8a 100644 (file)
@@ -12,21 +12,17 @@ package eu.etaxonomy.cdm.io.sdd.in;
 import static org.junit.Assert.assertEquals;\r
 import static org.junit.Assert.assertNotNull;\r
 \r
-import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
 import java.net.URISyntaxException;\r
 import java.net.URL;\r
 \r
+import junit.framework.Assert;\r
+\r
 import org.junit.Before;\r
 import org.junit.Ignore;\r
 import org.junit.Test;\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
 import eu.etaxonomy.cdm.api.service.INameService;\r
-import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.sdd.in.SDDImport;\r
-import eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator;\r
-import eu.etaxonomy.cdm.io.sdd.in.SDDImportState;\r
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
 \r
 /**\r
@@ -35,12 +31,11 @@ import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
  * @version 1.0\r
  */\r
 \r
-\r
-@Ignore\r
+@Ignore // we ignore this test at the moment because it does not run with maven\r
 public class SDDImportTest extends CdmTransactionalIntegrationTest {\r
        \r
        @SpringBeanByType\r
-       SDDImport sddDescriptionIo;\r
+       SDDImport sddImport;\r
        \r
        @SpringBeanByType\r
        INameService nameService;\r
@@ -50,18 +45,19 @@ public class SDDImportTest extends CdmTransactionalIntegrationTest {
        @Before\r
        public void setUp() throws URISyntaxException {\r
                URL url = this.getClass().getResource("/eu/etaxonomy/cdm/io/sdd/SDDImportTest-input.xml");\r
+               Assert.assertNotNull(url);\r
                configurator = SDDImportConfigurator.NewInstance(url.toURI(), null);\r
        }\r
        \r
        @Test\r
        public void testInit() {\r
-               assertNotNull("sddDescriptionIo should not be null",sddDescriptionIo);\r
+               assertNotNull("sddImport should not be null", sddImport);\r
                assertNotNull("nameService should not be null", nameService);\r
        }\r
        \r
        @Test\r
        public void testDoInvoke() {\r
-               sddDescriptionIo.doInvoke(new SDDImportState(configurator));\r
+               sddImport.doInvoke(new SDDImportState(configurator));\r
                this.setComplete();\r
                this.endTransaction();\r
                assertEquals("Number of TaxonNames should be 1", 1, nameService.count(null));\r
index edcf421484dd897d7aaba477d96b14b791d033bd..7e3e26aaf496d52ba545668c341f97573c12309d 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -81,7 +81,7 @@ public class TestDatabase {
     }\r
     \r
        /**\r
-        * This method constructs a small sample taxonomic tree to test JAXB marshaling.\r
+        * This method constructs a small sample classification to test JAXB marshaling.\r
         * The sample tree contains four taxa. The root taxon has two children taxa, and\r
         * there is one "free" taxon without a parent and children.\r
         */\r
@@ -91,12 +91,12 @@ public class TestDatabase {
            List<VersionableEntity> agentData = new ArrayList<VersionableEntity>();\r
            //List<TermBase> terms = new ArrayList<TermBase>();\r
            List<DefinedTermBase> terms = new ArrayList<DefinedTermBase>();\r
-           List<ReferenceBase> references = new ArrayList<ReferenceBase>();\r
+           List<Reference> references = new ArrayList<Reference>();\r
            List<TaxonNameBase> taxonomicNames = new ArrayList<TaxonNameBase>();\r
            List<TaxonBase> taxonBases = new ArrayList<TaxonBase>();\r
            List<AnnotatableEntity> homotypicalGroups;\r
 \r
-               ReferenceBase<?> citRef, sec;\r
+               Reference<?> citRef, sec;\r
                BotanicalName name1, name2, name21, nameRoot1, nameFree, synName11, synName12, synName2, synNameFree;\r
                BotanicalName nameRoot2, nameR2_1, nameR2_2;\r
                Taxon child1, child2, child21, root1T, root2T, freeT;\r
index 4d6f983ac7fd783f8f51a540618b8afb27d776e8..ccc85065936f47f6215c0f11a325e41bc3609d7b 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -145,7 +145,7 @@ public class TestCdmDbComparator {
 //                     "OriginalSource_Annotation", \r
 //                     "OriginalSource_Marker", \r
 //                     "Person_Keyword", \r
-                       "ReferenceBase", \r
+                       "Reference", \r
 //                     "ReferenceBase_Annotation", \r
 //                     "ReferenceBase_Extension", \r
 //                     "ReferenceBase_Marker", \r
@@ -455,7 +455,7 @@ public class TestCdmDbComparator {
                //List<NameRelationship> nameRelationships = appCtr.getNameService().getAllNameRelationships(MAX_ROWS, 0);\r
                List<NomenclaturalStatus> nomenclaturalStatus = appCtr.getNameService().getAllNomenclaturalStatus(MAX_ROWS, 0);\r
                //List<OriginalSource> originalSources = appCtr.getNameService().getAllOriginalSources(MAX_ROWS, 0);\r
-               List<ReferenceBase> referenceBases = appCtr.getReferenceService().list(null,MAX_ROWS, 0,null,null);\r
+               List<Reference> references = appCtr.getReferenceService().list(null,MAX_ROWS, 0,null,null);\r
                List<Representation> representations = appCtr.getTermService().getAllRepresentations(MAX_ROWS, 0);\r
                List<SpecimenOrObservationBase> specimenOrObservationBases = appCtr.getOccurrenceService().list(null,MAX_ROWS, 0,null,null);\r
                //List<SynonymRelationship> synonymRelationships = appCtr.getTaxonService().getAllSynonymRelationships(MAX_ROWS, 0);\r
index 721e6fe7d8e4e7443b32a59667f54fc6915e38c6..f9e67c31e02ec47719822083d9203334e53414ad 100644 (file)
         primary key (CDM_VIEW_id, superviews_id),
         unique (superviews_id)
     );
+    
+        create table Classification (
+        id integer not null,
+        created timestamp,
+        uuid varchar(255),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit not null,
+        titleCache varchar(255),
+        microreference varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        name_id integer,
+        reference_id integer,
+        primary key (id)
+    );
+
+    create table Classification_AUD (
+        id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        created timestamp,
+        uuid varchar(255),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit,
+        titleCache varchar(255),
+        microreference varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        name_id integer,
+        reference_id integer,
+        primary key (id, REV)
+    );
+
+    create table Classification_Annotation (
+        Classification_id integer not null,
+        annotations_id integer not null,
+        primary key (Classification_id, annotations_id),
+        unique (annotations_id)
+    );
+
+    create table Classification_Annotation_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        annotations_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, annotations_id)
+    );
+
+    create table Classification_Credit (
+        Classification_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        primary key (Classification_id, sortIndex),
+        unique (credits_id)
+    );
+
+    create table Classification_Credit_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, credits_id, sortIndex)
+    );
+
+    create table Classification_Extension (
+        Classification_id integer not null,
+        extensions_id integer not null,
+        primary key (Classification_id, extensions_id),
+        unique (extensions_id)
+    );
+
+    create table Classification_Extension_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        extensions_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, extensions_id)
+    );
+
+    create table Classification_Marker (
+        Classification_id integer not null,
+        markers_id integer not null,
+        primary key (Classification_id, markers_id),
+        unique (markers_id)
+    );
+
+    create table Classification_Marker_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        markers_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, markers_id)
+    );
+
+    create table Classification_OriginalSourceBase (
+        Classification_id integer not null,
+        sources_id integer not null,
+        primary key (Classification_id, sources_id),
+        unique (sources_id)
+    );
+
+    create table Classification_OriginalSourceBase_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        sources_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, sources_id)
+    );
+
+    create table Classification_Rights (
+        Classification_id integer not null,
+        rights_id integer not null,
+        primary key (Classification_id, rights_id),
+        unique (rights_id)
+    );
+
+    create table Classification_Rights_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        rights_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, rights_id)
+    );
+
+    create table Classification_TaxonNode (
+        Classification_id integer not null,
+        rootnodes_id integer not null,
+        primary key (Classification_id, rootnodes_id),
+        unique (rootnodes_id)
+    );
+
+    create table Classification_TaxonNode_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        rootnodes_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, rootnodes_id)
+    );
 
     create table Collection (
         id integer not null,
         imagegallery bit not null,
         createdby_id integer,
         updatedby_id integer,
-        taxon_fk integer,
-        taxonName_fk integer,
+        taxon_id integer,
+        taxonName_id integer,
         primary key (id)
     );
 
         imagegallery bit,
         createdby_id integer,
         updatedby_id integer,
-        taxon_fk integer,
-        taxonName_fk integer,
+        taxon_id integer,
+        taxonName_id integer,
         primary key (id, REV)
     );
 
         updated timestamp,
         createdby_id integer,
         updatedby_id integer,
+        featureTree_id integer not null,
         feature_id integer,
-        parent_fk integer,
-               taxon_id integer,
-        primary key (id)
+        parent_id integer,
+       primary key (id)
     );
 
     create table FeatureNode_AUD (
         updated timestamp,
         createdby_id integer,
         updatedby_id integer,
+        featureTree_id integer not null,
         feature_id integer,
-        parent_fk integer,
+        parent_id integer,
         primary key (id, REV)
     );
 
-       create table FeatureNode_DefinedTermBase_OnlyApplicable (
+    create table FeatureNode_DefinedTermBase_OnlyApplicable (
         FeatureNode_id integer not null,
         OnlyApplicable_id integer not null,
         primary key (FeatureNode_id, OnlyApplicable_id)
         primary key (REV, FeatureNode_id, OnlyApplicable_id)
     );
 
-       create table FeatureNode_DefinedTermBase_InapplicableIf (
+    create table FeatureNode_DefinedTermBase_InapplicableIf (
         FeatureNode_id integer not null,
         InapplicableIf_id integer not null,
         primary key (FeatureNode_id, InapplicableIf_id)
         primary key (REV, FeatureNode_id, InapplicableIf_id)
     );
 
-       create table FeatureNode_Question (
-        FeatureNode_id integer not null,
-        questions_id integer not null,
-        primary key (FeatureNode_id, questions_id)
-    );
-
-    create table FeatureNode_Question_AUD (
-        REV integer not null,
-        FeatureNode_id integer not null,
-        questions_id integer not null,
-        revtype tinyint,
-        primary key (REV, FeatureNode_id, questions_id)
-    );
-
     create table FeatureTree (
         id integer not null,
         created timestamp,
         primary key (id),
         unique (authority)
     );
+       
+       create table hibernate_sequences (
+               sequence_name varchar(255),
+               next_val integer,
+               primary key (sequence_name)
+       );
 
     create table HomotypicalGroup (
         id integer not null,
         person_id integer,
         primary key (id, REV)
     );
+    
+              
+    create table KeyStatement (
+        id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        createdby_id integer,
+        updatedby_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+    
+    create table KeyStatement_AUD (
+        id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        createdby_id integer,
+        updatedby_id integer,
+        primary key (id, REV)
+      );
+      
+     create table KeyStatement_LanguageString (
+        keyStatement_id integer not null,
+        label_id integer not null,
+        label_mapkey_id integer not null,
+        primary key (keyStatement_id, label_mapkey_id),
+        unique (label_id)
+    );
+
+    create table KeyStatement_LanguageString_AUD (
+        REV integer not null,
+        keyStatement_id integer not null,
+        label_id integer not null,
+        label_mapkey_id integer not null,
+        revtype tinyint,
+        primary key (REV, keyStatement_id, label_id, label_mapkey_id)
+    );
+
 
     create table LSIDAuthority (
         id integer not null,
     );
 
     create table MediaKey_CoveredTaxon (
-        mediaKey_fk integer not null,
-        coveredTaxon_fk integer not null,
-        primary key (mediaKey_fk, coveredTaxon_fk)
+        mediaKey_id integer not null,
+        coveredTaxon_id integer not null,
+        primary key (mediaKey_id, coveredTaxon_id)
     );
 
     create table MediaKey_CoveredTaxon_AUD (
         REV integer not null,
-        mediaKey_fk integer not null,
-        coveredTaxon_fk integer not null,
+        mediaKey_id integer not null,
+        coveredTaxon_id integer not null,
         revtype tinyint,
-        primary key (REV, mediaKey_fk, coveredTaxon_fk)
+        primary key (REV, mediaKey_id, coveredTaxon_id)
     );
 
     create table MediaKey_NamedArea (
     );
 
     create table MediaKey_Taxon (
-        mediaKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (mediaKey_fk, taxon_fk)
+        mediaKey_id integer not null,
+        taxon_id integer not null,
+        primary key (mediaKey_id, taxon_id)
     );
 
     create table MediaKey_Taxon_AUD (
         REV integer not null,
-        mediaKey_fk integer not null,
-        taxon_fk integer not null,
+        mediaKey_id integer not null,
+        taxon_id integer not null,
         revtype tinyint,
-        primary key (REV, mediaKey_fk, taxon_fk)
+        primary key (REV, mediaKey_id, taxon_id)
     );
 
     create table MediaRepresentation (
     );
 
     create table MultiAccessKey_CoveredTaxon (
-        multiAccessKey_fk integer not null,
-        coveredTaxon_fk integer not null,
-        primary key (multiAccessKey_fk, coveredTaxon_fk)
+        multiAccessKey_id integer not null,
+        coveredTaxon_id integer not null,
+        primary key (multiAccessKey_id, coveredTaxon_id)
     );
 
     create table MultiAccessKey_CoveredTaxon_AUD (
         REV integer not null,
-        multiAccessKey_fk integer not null,
-        coveredTaxon_fk integer not null,
+        multiAccessKey_id integer not null,
+        coveredTaxon_id integer not null,
         revtype tinyint,
-        primary key (REV, multiAccessKey_fk, coveredTaxon_fk)
+        primary key (REV, multiAccessKey_id, coveredTaxon_id)
     );
 
     create table MultiAccessKey_NamedArea (
     );
 
     create table MultiAccessKey_Taxon (
-        multiAccessKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (multiAccessKey_fk, taxon_fk)
+        multiAccessKey_id integer not null,
+        taxon_id integer not null,
+        primary key (multiAccessKey_id, taxon_id)
     );
 
     create table MultiAccessKey_Taxon_AUD (
         REV integer not null,
-        multiAccessKey_fk integer not null,
-        taxon_fk integer not null,
+        multiAccessKey_id integer not null,
+        taxon_id integer not null,
         revtype tinyint,
-        primary key (REV, multiAccessKey_fk, taxon_fk)
+        primary key (REV, multiAccessKey_id, taxon_id)
     );
 
     create table NameRelationship (
         primary key (PermissionGroup_id, grantedauthorities_id)
     );
 
-    create table Person_Keyword (
-        person_fk integer not null,
-        keyword_fk integer not null,
-        primary key (person_fk, keyword_fk)
+    create table PublicationBase_Publisher_AUD (
+        REV integer not null,
+        Reference_id integer not null,
+        id integer not null,
+        sortIndex integer not null,
+        revtype tinyint,
+        primary key (REV, Reference_id, id, sortIndex)
     );
 
-    create table Person_Keyword_AUD (
+     
+   create table PolytomousKey (
+               id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit not null,
+        titleCache varchar(255),
+        uri varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        root_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+
+   create table PolytomousKey_AUD (
+               id integer not null,
         REV integer not null,
-        person_fk integer not null,
-        keyword_fk integer not null,
         revtype tinyint,
-        primary key (REV, person_fk, keyword_fk)
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit not null,
+        titleCache varchar(255),
+        uri varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        root_id integer,
+        primary key (id, REV)
     );
 
-    create table PublicationBase_Publisher_AUD (
+    create table PolytomousKey_Annotation (
+        PolytomousKey_id integer not null,
+        annotations_id integer not null,
+        primary key (PolytomousKey_id, annotations_id),
+        unique (annotations_id)
+    );
+
+    create table PolytomousKey_Annotation_AUD (
         REV integer not null,
-        Reference_id integer not null,
-        id integer not null,
+        PolytomousKey_id integer not null,
+        annotations_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, annotations_id)
+    );
+
+    create table PolytomousKey_Credit (
+        PolytomousKey_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        primary key (PolytomousKey_id, sortIndex),
+        unique (credits_id)
+    );
+
+    create table PolytomousKey_Credit_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        credits_id integer not null,
         sortIndex integer not null,
         revtype tinyint,
-        primary key (REV, Reference_id, id, sortIndex)
+        primary key (REV, PolytomousKey_id, credits_id, sortIndex)
     );
 
-    create table PolytomousKey_CoveredTaxon (
-        polytomousKey_fk integer not null,
-        coveredTaxon_fk integer not null,
-        primary key (polytomousKey_fk, coveredTaxon_fk)
+    create table PolytomousKey_Extension (
+        PolytomousKey_id integer not null,
+        extensions_id integer not null,
+        primary key (PolytomousKey_id, extensions_id),
+        unique (extensions_id)
     );
 
-    create table PolytomousKey_CoveredTaxon_AUD (
+    create table PolytomousKey_Extension_AUD (
         REV integer not null,
-        polytomousKey_fk integer not null,
-        coveredTaxon_fk integer not null,
+        PolytomousKey_id integer not null,
+        extensions_id integer not null,
         revtype tinyint,
-        primary key (REV, polytomousKey_fk, coveredTaxon_fk)
+        primary key (REV, PolytomousKey_id, extensions_id)
+    );
+
+    create table PolytomousKey_Marker (
+        PolytomousKey_id integer not null,
+        markers_id integer not null,
+        primary key (PolytomousKey_id, markers_id),
+        unique (markers_id)
+    );
+
+    create table PolytomousKey_Marker_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        markers_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, markers_id)
     );
 
     create table PolytomousKey_NamedArea (
         PolytomousKey_id integer not null,
-        geographicalScope_id integer not null,
-        primary key (PolytomousKey_id, geographicalScope_id)
+        geographicalscope_id integer not null,
+        primary key (PolytomousKey_id, geographicalscope_id)
     );
 
     create table PolytomousKey_NamedArea_AUD (
         REV integer not null,
         PolytomousKey_id integer not null,
-        geographicalScope_id integer not null,
+        geographicalscope_id integer not null,
         revtype tinyint,
-        primary key (REV, PolytomousKey_id, geographicalScope_id)
+        primary key (REV, PolytomousKey_id, geographicalscope_id)
+    );
+    
+    create table PolytomousKey_OriginalSourceBase (
+        PolytomousKey_id integer not null,
+        sources_id integer not null,
+        primary key (PolytomousKey_id, sources_id),
+        unique (sources_id)
+    );
+
+    create table PolytomousKey_OriginalSourceBase_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        sources_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, sources_id)
+    );
+
+    create table PolytomousKey_Rights (
+        PolytomousKey_id integer not null,
+        rights_id integer not null,
+        primary key (PolytomousKey_id, rights_id),
+        unique (rights_id)
     );
 
+    create table PolytomousKey_Rights_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        rights_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, rights_id)
+    );
+    
     create table PolytomousKey_Scope (
         PolytomousKey_id integer not null,
-        scopes_id integer not null,
-        primary key (PolytomousKey_id, scopes_id)
+        scoperestrictions_id integer not null,
+        primary key (PolytomousKey_id, scoperestrictions_id)
     );
 
     create table PolytomousKey_Scope_AUD (
         REV integer not null,
         PolytomousKey_id integer not null,
-        scopes_id integer not null,
+        scoperestrictions_id integer not null,
         revtype tinyint,
-        primary key (REV, PolytomousKey_id, scopes_id)
+        primary key (REV, PolytomousKey_id, scoperestrictions_id)
     );
 
     create table PolytomousKey_Taxon (
-        polytomousKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (polytomousKey_fk, taxon_fk)
+        polytomousKey_id integer not null,
+        taxon_id integer not null,
+        primary key (polytomousKey_id, taxon_id)
     );
 
     create table PolytomousKey_Taxon_AUD (
         REV integer not null,
-        polytomousKey_fk integer not null,
-        taxon_fk integer not null,
+        polytomousKey_id integer not null,
+        taxon_id integer not null,
         revtype tinyint,
-        primary key (REV, polytomousKey_fk, taxon_fk)
+        primary key (REV, polytomousKey_id, taxon_id)
     );
     
+        
+    create table PolytomousKeyNode (
+        id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        nodenumber integer,
+        sortindex integer,
+        createdby_id integer,
+        updatedby_id integer,
+        key_id integer,
+        parent_id integer,
+        question_id integer,
+        statement_id integer,
+        feature_id integer,
+        taxon_id integer,
+        subkey_id integer,
+        othernode_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+
+    create table PolytomousKeyNode_AUD (
+        id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        nodenumber integer,
+       sortindex integer,
+        createdby_id integer,
+        updatedby_id integer,
+        key_id integer,
+        parent_id integer,
+        question_id integer,
+        statement_id integer,
+        feature_id integer,
+        taxon_id integer,
+        subkey_id integer,
+        othernode_id integer,
+        primary key (id, REV)
+    );
+     
+    create table PolytomousKeyNode_PolytomousKeyNode_AUD(
+       id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        parent_id integer, 
+        sortIndex integer
+    )
+    
     create table Reference (
         DTYPE varchar(31) not null,
         id integer not null,
         datepublished_freetext varchar(255),
         datepublished_start varchar(255),
         title longvarchar,
-               referenceAbstract longvarchar,
+       referenceAbstract longvarchar,
         pages varchar(255),
         series varchar(255),
         volume varchar(255),
         datepublished_freetext varchar(255),
         datepublished_start varchar(255),
         title longvarchar,
-               referenceAbstract longvarchar,
+       referenceAbstract longvarchar,
         pages varchar(255),
         series varchar(255),
         volume varchar(255),
         fieldnotes varchar(255),
         fieldnumber varchar(255),
         barcode varchar(255),
-        createdby_id integer,
+        exsiccatum varchar(255),
+       createdby_id integer,
         updatedby_id integer,
+        primarycollector_id integer,
         lifestage_id integer,
         sex_id integer,
         collection_id integer,
-        derivationevent_id integer,
+        derivedfrom_id integer,
         storedunder_id integer,
         preservation_id integer,
         gatheringevent_id integer,
         fieldnotes varchar(255),
         fieldnumber varchar(255),
         barcode varchar(255),
+        exsiccatum varchar(255),
+       primarycollector_id integer,
         gatheringevent_id integer,
         accessionnumber varchar(255),
         catalognumber varchar(255),
         collectorsnumber varchar(255),
         collection_id integer,
-        derivationevent_id integer,
+        derivedfrom_id integer,
         storedunder_id integer,
         preservation_id integer,
         primary key (id, REV)
 
     create table SpecimenOrObservationBase_LanguageString (
         SpecimenOrObservationBase_id integer not null,
-        description_id integer not null,
-        description_mapkey_id integer not null,
-        primary key (SpecimenOrObservationBase_id, description_mapkey_id),
-        unique (description_id)
+        definition_id integer not null,
+        definition_mapkey_id integer not null,
+        primary key (SpecimenOrObservationBase_id, definition_mapkey_id),
+        unique (definition_id)
     );
 
     create table SpecimenOrObservationBase_LanguageString_AUD (
         REV integer not null,
         SpecimenOrObservationBase_id integer not null,
-        description_id integer not null,
-        description_mapkey_id integer not null,
+        definition_id integer not null,
+        definition_mapkey_id integer not null,
         revtype tinyint,
-        primary key (REV, SpecimenOrObservationBase_id, description_id, description_mapkey_id)
+        primary key (REV, SpecimenOrObservationBase_id, definition_id, definition_mapkey_id)
     );
-
+    
     create table SpecimenOrObservationBase_Marker (
         SpecimenOrObservationBase_id integer not null,
         markers_id integer not null,
         taxonomicchildrencount integer,
         createdby_id integer,
         updatedby_id integer,
-        taxonName_fk integer,
+        name_id integer,
         sec_id integer,
         taxonomicparentcache_id integer,
         primary key (id)
         useNameCache bit,
         createdby_id integer,
         updatedby_id integer,
-        taxonName_fk integer,
+        name_id integer,
         sec_id integer,
         taxonstatusunknown bit,
         unplaced bit,
         referenceforparentchildrelation_id integer,
         synonymtobeused_id integer,
         taxon_id integer,
-        taxonomictree_id integer,
+        classification_id integer,
         primary key (id)
     );
 
         referenceforparentchildrelation_id integer,
         synonymtobeused_id integer,
         taxon_id integer,
-        taxonomictree_id integer,
+        classification_id integer,
         primary key (id, REV)
     );
 
         primary key (REV, TaxonRelationship_id, markers_id)
     );
 
-    create table TaxonomicTree (
+    create table TermVocabulary (
+        DTYPE varchar(31) not null,
         id integer not null,
         created timestamp,
-        uuid varchar(255),
+        uuid varchar(36),
         updated timestamp,
         lsid_authority varchar(255),
         lsid_lsid varchar(255),
         lsid_revision varchar(255),
         protectedtitlecache bit not null,
         titleCache varchar(255),
-        microreference varchar(255),
+        uri varchar(255),
+        termsourceuri varchar(255),
         createdby_id integer,
         updatedby_id integer,
-        name_id integer,
-        reference_id integer,
-        primary key (id)
+        primary key (id),
+        unique (uuid)
     );
 
-    create table TaxonomicTree_AUD (
+    create table TermVocabulary_AUD (
+        DTYPE varchar(31) not null,
         id integer not null,
         REV integer not null,
         revtype tinyint,
         created timestamp,
-        uuid varchar(255),
+        uuid varchar(36),
         updated timestamp,
         lsid_authority varchar(255),
         lsid_lsid varchar(255),
         lsid_revision varchar(255),
         protectedtitlecache bit,
         titleCache varchar(255),
-        microreference varchar(255),
+        uri varchar(255),
+        termsourceuri varchar(255),
         createdby_id integer,
         updatedby_id integer,
-        name_id integer,
-        reference_id integer,
         primary key (id, REV)
     );
 
-    create table TaxonomicTree_Annotation (
-        TaxonomicTree_id integer not null,
+    create table TermVocabulary_Annotation (
+        TermVocabulary_id integer not null,
         annotations_id integer not null,
-        primary key (TaxonomicTree_id, annotations_id),
+        primary key (TermVocabulary_id, annotations_id),
         unique (annotations_id)
     );
 
-    create table TaxonomicTree_Annotation_AUD (
+    create table TermVocabulary_Annotation_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        TermVocabulary_id integer not null,
         annotations_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, annotations_id)
+        primary key (REV, TermVocabulary_id, annotations_id)
     );
 
-    create table TaxonomicTree_Credit (
-        TaxonomicTree_id integer not null,
+    create table TermVocabulary_Credit (
+        TermVocabulary_id integer not null,
         credits_id integer not null,
         sortIndex integer not null,
-        primary key (TaxonomicTree_id, sortIndex),
+        primary key (TermVocabulary_id, sortIndex),
         unique (credits_id)
     );
 
-    create table TaxonomicTree_Credit_AUD (
+    create table TermVocabulary_Credit_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        TermVocabulary_id integer not null,
         credits_id integer not null,
         sortIndex integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, credits_id, sortIndex)
+        primary key (REV, TermVocabulary_id, credits_id, sortIndex)
     );
 
-    create table TaxonomicTree_Extension (
-        TaxonomicTree_id integer not null,
+    create table TermVocabulary_Extension (
+        TermVocabulary_id integer not null,
         extensions_id integer not null,
-        primary key (TaxonomicTree_id, extensions_id),
+        primary key (TermVocabulary_id, extensions_id),
         unique (extensions_id)
     );
 
-    create table TaxonomicTree_Extension_AUD (
+    create table TermVocabulary_Extension_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        TermVocabulary_id integer not null,
         extensions_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, extensions_id)
+        primary key (REV, TermVocabulary_id, extensions_id)
     );
 
-    create table TaxonomicTree_Marker (
-        TaxonomicTree_id integer not null,
+    create table TermVocabulary_Marker (
+        TermVocabulary_id integer not null,
         markers_id integer not null,
-        primary key (TaxonomicTree_id, markers_id),
+        primary key (TermVocabulary_id, markers_id),
         unique (markers_id)
     );
 
-    create table TaxonomicTree_Marker_AUD (
+    create table TermVocabulary_Marker_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        TermVocabulary_id integer not null,
         markers_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, markers_id)
+        primary key (REV, TermVocabulary_id, markers_id)
     );
 
-    create table TaxonomicTree_OriginalSourceBase (
-        TaxonomicTree_id integer not null,
+    create table TermVocabulary_OriginalSourceBase (
+        TermVocabulary_id integer not null,
         sources_id integer not null,
-        primary key (TaxonomicTree_id, sources_id),
+        primary key (TermVocabulary_id, sources_id),
         unique (sources_id)
     );
 
-    create table TaxonomicTree_OriginalSourceBase_AUD (
+    create table TermVocabulary_OriginalSourceBase_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        TermVocabulary_id integer not null,
         sources_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, sources_id)
-    );
-
-    create table TaxonomicTree_Rights (
-        TaxonomicTree_id integer not null,
-        rights_id integer not null,
-        primary key (TaxonomicTree_id, rights_id),
-        unique (rights_id)
-    );
-
-    create table TaxonomicTree_Rights_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        rights_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, rights_id)
-    );
-
-    create table TaxonomicTree_TaxonNode (
-        TaxonomicTree_id integer not null,
-        rootnodes_id integer not null,
-        primary key (TaxonomicTree_id, rootnodes_id),
-        unique (rootnodes_id)
-    );
-
-    create table TaxonomicTree_TaxonNode_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        rootnodes_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, rootnodes_id)
-    );
-
-    create table TermVocabulary (
-        DTYPE varchar(31) not null,
-        id integer not null,
-        created timestamp,
-        uuid varchar(255),
-        updated timestamp,
-        uri varchar(255),
-        termsourceuri varchar(255),
-        createdby_id integer,
-        updatedby_id integer,
-               protectedtitlecache bit not null,
-        titlecache varchar(255),
-               lsid_authority varchar(255),
-        lsid_lsid varchar(255),
-        lsid_namespace varchar(255),
-        lsid_object varchar(255),
-        lsid_revision varchar(255),
-        primary key (id)
-    );
-
-    create table TermVocabulary_AUD (
-        DTYPE varchar(31) not null,
-        id integer not null,
-        REV integer not null,
-        revtype tinyint,
-        created timestamp,
-        uuid varchar(255),
-        updated timestamp,
-        uri varchar(255),
-        termsourceuri varchar(255),
-        createdby_id integer,
-        updatedby_id integer,
-           protectedtitlecache bit not null,
-        titlecache varchar(255),
-        lsid_authority varchar(255),
-        lsid_lsid varchar(255),
-        lsid_namespace varchar(255),
-        lsid_object varchar(255),
-        lsid_revision varchar(255),
-        primary key (id, REV)
+        primary key (REV, TermVocabulary_id, sources_id)
     );
 
     create table TermVocabulary_Representation (
         primary key (REV, TermVocabulary_id, representations_id)
     );
 
+    create table TermVocabulary_Rights (
+        TermVocabulary_id integer not null,
+        rights_id integer not null,
+        primary key (TermVocabulary_id, rights_id),
+        unique (rights_id)
+    );
+
+    create table TermVocabulary_Rights_AUD (
+        REV integer not null,
+        TermVocabulary_id integer not null,
+        rights_id integer not null,
+        revtype tinyint,
+        primary key (REV, TermVocabulary_id, rights_id)
+    );
+
+
     create table TypeDesignationBase (
         DTYPE varchar(31) not null,
         id integer not null,
 
     alter table DescriptionBase 
         add constraint FKFF4D58CDDA93512F 
-        foreign key (taxonName_fk
+        foreign key (taxonName_id
         references TaxonNameBase;
 
     alter table DescriptionBase 
 
     alter table DescriptionBase 
         add constraint FKFF4D58CDDE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table DescriptionBase_AUD 
 
     alter table FeatureNode 
         add constraint FK4CEED9F8E0AD2C03 
-        foreign key (parent_fk
+        foreign key (parent_id
         references FeatureNode;
 
     alter table FeatureNode 
         foreign key (createdby_id) 
         references UserAccount;
 
+    alter table FeatureNode 
+        add constraint FK4CEED9F8DE9A3E39 
+        foreign key (featureTree_id) 
+        references FeatureTree;
+
     alter table FeatureNode 
         add constraint FK4CEED9F84220AFEB 
         foreign key (feature_id) 
         foreign key (REV) 
         references AuditEvent;
 */
-       alter table FeatureNode_Question 
-        add constraint FK9B1410F03C6A411A
-        foreign key (FeatureNode_id) 
-        references FeatureNode;
-
-    alter table FeatureNode_Question 
-        add constraint FK8D2234F48AF8471C
-        foreign key (questions_id) 
-        references Representation;
-
-    alter table FeatureNode_Question_AUD 
-        add constraint FK72595A8589344fD6 
-        foreign key (REV) 
-        references AuditEvent;
-
     alter table FeatureTree 
         add constraint FK4CF19F944FF2DB2C 
         foreign key (createdby_id) 
 
    alter table MediaKey_CoveredTaxon 
         add constraint FKBE4F76E1FC8AD42E 
-        foreign key (mediaKey_fk
+        foreign key (mediaKey_id
         references Media;
 
     alter table MediaKey_CoveredTaxon 
         add constraint FK6372785CAB2B4887 
-        foreign key (coveredTaxon_fk)
+        foreign key (coveredTaxon_id)
         references TaxonBase;
 
     alter table MediaKey_CoveredTaxon_AUD 
 
     alter table MediaKey_Taxon 
         add constraint FKD847ADDC996CD055 
-        foreign key (mediaKey_fk
+        foreign key (mediaKey_id
         references Media;
 
     alter table MediaKey_Taxon 
         add constraint FKD847ADDCDE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table MediaKey_Taxon_AUD 
 
        alter table MultiAccessKey_CoveredTaxon 
         add constraint FK07E64A1DC70F4783 
-        foreign key (multiAccessKey_fk
+        foreign key (multiAccessKey_id
         references WorkingSet;
 
     alter table MultiAccessKey_CoveredTaxon 
         add constraint FK92B0DBED084C3C5B 
-        foreign key (coveredTaxon_fk
+        foreign key (coveredTaxon_id
         references TaxonBase;
 
     alter table MultiAccessKey_CoveredTaxon_AUD 
 
     alter table MultiAccessKey_Taxon 
         add constraint FKAE92842CCDAF4814 
-        foreign key (multiAccessKey_fk
+        foreign key (multiAccessKey_id
         references WorkingSet;
 
     alter table MultiAccessKey_Taxon 
         add constraint FKB29E6E958FD00045 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table MultiAccessKey_Taxon_AUD 
         foreign key (grantedauthorities_id) 
         references GrantedAuthorityImpl;
 
-    alter table Person_Keyword 
-        add constraint FK5F559EFF13A443BE 
-        foreign key (keyword_fk) 
-        references DefinedTermBase;
-
-    alter table Person_Keyword 
-        add constraint FK5F559EFFAAC1B7CA 
-        foreign key (person_fk) 
-        references AgentBase;
-
-    alter table Person_Keyword_AUD 
-        add constraint FK6D8C355034869AAE 
-        foreign key (REV) 
-        references AuditEvent;
-
-       alter table PolytomousKey_CoveredTaxon 
-        add constraint FK5D10620561FE4E83 
-        foreign key (polytomousKey_fk) 
-        references FeatureTree;
-
-    alter table PolytomousKey_CoveredTaxon 
-        add constraint FKB92FB32E5339CF05 
-        foreign key (coveredTaxon_fk) 
-        references TaxonBase;
-
-    alter table PolytomousKey_CoveredTaxon_AUD 
-        add constraint FKF6E40B9726674EEE 
-        foreign key (REV) 
-        references AuditEvent;
-
     alter table PolytomousKey_NamedArea 
         add constraint FKB3A8962EBDE6AA88 
         foreign key (PolytomousKey_id) 
-        references FeatureTree;
+        references PolytomousKey;
 
     alter table PolytomousKey_NamedArea 
         add constraint FK7A13F2876AE348D0 
     alter table PolytomousKey_Scope 
         add constraint FKC0AA0A4F46A84CA5 
         foreign key (PolytomousKey_id) 
-        references FeatureTree;
+        references PolytomousKey;
 
     alter table PolytomousKey_Scope 
         add constraint FK95F6137239A78EF4 
-        foreign key (scopes_id) 
+        foreign key (scoperestrictions_id) 
         references DefinedTermBase;
 
     alter table PolytomousKey_Scope_AUD 
 
     alter table PolytomousKey_Taxon 
         add constraint FK94EBDAF65411052A 
-        foreign key (polytomousKey_fk
-        references FeatureTree;
+        foreign key (polytomousKey_id
+        references PolytomousKey;
 
     alter table PolytomousKey_Taxon 
         add constraint FK890257C0688940C2 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table PolytomousKey_Taxon_AUD
 
     alter table SpecimenOrObservationBase 
         add constraint FK21CA32724AAB411A 
-        foreign key (derivationevent_id) 
+        foreign key (derivedfrom_id) 
         references DerivationEvent;
 
+    alter table SpecimenOrObservationBase 
+        add constraint FK11CB3232F75F225E 
+        foreign key (primarycollector_id) 
+        references AgentBase;
+
     alter table SpecimenOrObservationBase 
         add constraint FK21CA3272F95F225A 
         foreign key (gatheringevent_id) 
 
     alter table SpecimenOrObservationBase_LanguageString 
         add constraint FKCFAA93162BEBA58D 
-        foreign key (description_id) 
+        foreign key (definition_id) 
         references LanguageString;
 
     alter table SpecimenOrObservationBase_LanguageString 
         add constraint FKCFAA931628459272 
-        foreign key (description_mapkey_id) 
+        foreign key (definition_mapkey_id) 
         references DefinedTermBase;
 
     alter table SpecimenOrObservationBase_LanguageString_AUD 
 
     alter table TaxonBase 
         add constraint FK9249B49BDA93512F 
-        foreign key (taxonName_fk
+        foreign key (name_id
         references TaxonNameBase;
 
     alter table TaxonBase 
 
     alter table TaxonNode 
         add constraint FK924F5BCCD019B239 
-        foreign key (taxonomictree_id) 
-        references TaxonomicTree;
+        foreign key (classification_id) 
+        references Classification;
 
     alter table TaxonNode 
         add constraint FK924F5BCC215EDF26 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE333A2E7765B124B 
         foreign key (reference_id) 
         references Reference;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE333A2E74FF2DB2C 
         foreign key (createdby_id) 
         references UserAccount;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE333A2E777E2F09E 
         foreign key (name_id) 
         references LanguageString;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE333A2E7BC5DA539 
         foreign key (updatedby_id) 
         references UserAccount;
 
-    alter table TaxonomicTree_AUD 
+    alter table Classification_AUD 
         add constraint FK976053834869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Annotation 
+    alter table Classification_Annotation 
         add constraint FKE5DF73A7D019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Annotation 
+    alter table Classification_Annotation 
         add constraint FKE5DF73A71E403E0B 
         foreign key (annotations_id) 
         references Annotation;
 
-    alter table TaxonomicTree_Annotation_AUD 
+    alter table Classification_Annotation_AUD 
         add constraint FK3C4B75F834869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Credit 
+    alter table Classification_Credit 
         add constraint FK23C2F71D019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Credit 
+    alter table Classification_Credit 
         add constraint FK23C2F7132D1B9F 
         foreign key (credits_id) 
         references Credit;
 
-    alter table TaxonomicTree_Credit_AUD 
+    alter table Classification_Credit_AUD 
         add constraint FK20F13CC234869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Extension 
+    alter table Classification_Extension 
         add constraint FKCD1EA4C7927DE9DF 
         foreign key (extensions_id) 
         references Extension;
 
-    alter table TaxonomicTree_Extension 
+    alter table Classification_Extension 
         add constraint FKCD1EA4C7D019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Extension_AUD 
+    alter table Classification_Extension_AUD 
         add constraint FK204D171834869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Marker 
+    alter table Classification_Marker 
         add constraint FK126318B2D019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Marker 
+    alter table Classification_Marker 
         add constraint FK126318B2777265A1 
         foreign key (markers_id) 
         references Marker;
 
-    alter table TaxonomicTree_Marker_AUD 
+    alter table Classification_Marker_AUD 
         add constraint FK850F9D8334869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_OriginalSourceBase 
+    alter table Classification_OriginalSourceBase 
         add constraint FK447A09C43BAB2414 
         foreign key (sources_id) 
         references OriginalSourceBase;
 
-    alter table TaxonomicTree_OriginalSourceBase 
+    alter table Classification_OriginalSourceBase 
         add constraint FK447A09C4D019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_OriginalSourceBase_AUD 
+    alter table Classification_OriginalSourceBase_AUD 
         add constraint FK143B59534869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Rights 
+    alter table Classification_Rights 
         add constraint FK1B57064FD019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Rights 
+    alter table Classification_Rights 
         add constraint FK1B57064FC13F7B21 
         foreign key (rights_id) 
         references Rights;
 
-    alter table TaxonomicTree_Rights_AUD 
+    alter table Classification_Rights_AUD 
         add constraint FKF0E974A034869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_TaxonNode 
+    alter table Classification_TaxonNode 
         add constraint FKC7EC474D019B239 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_TaxonNode 
+    alter table Classification_TaxonNode 
         add constraint FKC7EC47418929176 
         foreign key (rootnodes_id) 
         references TaxonNode;
 
-    alter table TaxonomicTree_TaxonNode_AUD 
+    alter table Classification_TaxonNode_AUD 
         add constraint FK6E0B984534869AAE 
         foreign key (REV) 
         references AuditEvent;
index 677379003a0f43f149dff9417bc66b7a2f3566ce..68f8c33c6712cd38d9c28107db7c6e2cabf51788 100644 (file)
     GENBANKACCESSION*,
     GENBANKACCESSION_AUD*,
     GRANTEDAUTHORITYIMPL*,
+    HIBERNATE_SEQUENCES*,
     HOMOTYPICALGROUP*,
     HOMOTYPICALGROUP_ANNOTATION*,
     HOMOTYPICALGROUP_ANNOTATION_AUD*,
     ORIGINALSOURCEBASE_MARKER_AUD*,
     PERMISSIONGROUP*,
     PERMISSIONGROUP_GRANTEDAUTHORITYIMPL*,
-    PERSON_KEYWORD*,
-    PERSON_KEYWORD_AUD*,
     PUBLICATIONBASE_PUBLISHER_AUD*,
     PUBLISHER*,
     PUBLISHER_AUD*,
     TAXONNODE_AUD*,
     TAXONNODE_MARKER*,
     TAXONNODE_MARKER_AUD*,
-    TAXONOMICTREE*,
-    TAXONOMICTREE_ANNOTATION*,
-    TAXONOMICTREE_ANNOTATION_AUD*,
-    TAXONOMICTREE_AUD*,
-    TAXONOMICTREE_CREDIT*,
-    TAXONOMICTREE_CREDIT_AUD*,
-    TAXONOMICTREE_EXTENSION*,
-    TAXONOMICTREE_EXTENSION_AUD*,
-    TAXONOMICTREE_MARKER*,
-    TAXONOMICTREE_MARKER_AUD*,
-    TAXONOMICTREE_ORIGINALSOURCEBASE*,
-    TAXONOMICTREE_ORIGINALSOURCEBASE_AUD*,
-    TAXONOMICTREE_RIGHTS*,
-    TAXONOMICTREE_RIGHTS_AUD*,
-    TAXONOMICTREE_TAXONNODE*,
-    TAXONOMICTREE_TAXONNODE_AUD*,
+    CLASSIFICATION*,
+    CLASSIFICATION_ANNOTATION*,
+    CLASSIFICATION_ANNOTATION_AUD*,
+    CLASSIFICATION_AUD*,
+    CLASSIFICATION_CREDIT*,
+    CLASSIFICATION_CREDIT_AUD*,
+    CLASSIFICATION_EXTENSION*,
+    CLASSIFICATION_EXTENSION_AUD*,
+    CLASSIFICATION_MARKER*,
+    CLASSIFICATION_MARKER_AUD*,
+    CLASSIFICATION_ORIGINALSOURCEBASE*,
+    CLASSIFICATION_ORIGINALSOURCEBASE_AUD*,
+    CLASSIFICATION_RIGHTS*,
+    CLASSIFICATION_RIGHTS_AUD*,
+    CLASSIFICATION_TAXONNODE*,
+    CLASSIFICATION_TAXONNODE_AUD*,
     TAXONRELATIONSHIP*,
     TAXONRELATIONSHIP_ANNOTATION*,
     TAXONRELATIONSHIP_ANNOTATION_AUD*,
     IMAGEGALLERY CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
-    TAXON_FK CDATA #IMPLIED
-    TAXONNAME_FK CDATA #IMPLIED
+    TAXON_ID CDATA #IMPLIED
+    TAXONNAME_ID CDATA #IMPLIED
 >
 
 <!ELEMENT DESCRIPTIONBASE_ANNOTATION EMPTY>
     IMAGEGALLERY CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
-    TAXON_FK CDATA #IMPLIED
-    TAXONNAME_FK CDATA #IMPLIED
+    TAXON_ID CDATA #IMPLIED
+    TAXONNAME_ID CDATA #IMPLIED
 >
 
 <!ELEMENT DESCRIPTIONBASE_CREDIT EMPTY>
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
     FEATURE_ID CDATA #IMPLIED
-    PARENT_FK CDATA #IMPLIED
-    TAXON_ID CDATA #IMPLIED
+    PARENT_ID CDATA #IMPLIED
+    FEATURETREE_ID CDATA #IMPLIED 
 >
 
 <!ELEMENT FEATURENODE_AUD EMPTY>
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
     FEATURE_ID CDATA #IMPLIED
-    PARENT_FK CDATA #IMPLIED
+    PARENT_ID CDATA #IMPLIED
+    FEATURETREE_ID CDATA #IMPLIED 
 >
 
 <!ELEMENT FEATURETREE EMPTY>
     CREATEDBY_ID CDATA #IMPLIED
 >
 
+<!ELEMENT HIBERNATE_SEQUENCES EMPTY>
+<!ATTLIST HIBERNATE_SEQUENCES
+       SEQUENCE_NAME CDATA #IMPLIED
+       NEXT_VAL CDATA #IMPLIED 
+>
+
 <!ELEMENT HOMOTYPICALGROUP EMPTY>
 <!ATTLIST HOMOTYPICALGROUP
     ID CDATA #REQUIRED
 
 <!ELEMENT MEDIAKEY_TAXON EMPTY>
 <!ATTLIST MEDIAKEY_TAXON
-    MEDIAKEY_FK CDATA #REQUIRED
-    TAXON_FK CDATA #REQUIRED
+    MEDIAKEY_ID CDATA #REQUIRED
+    TAXON_ID CDATA #REQUIRED
 >
 
 <!ELEMENT MEDIAKEY_TAXON_AUD EMPTY>
 <!ATTLIST MEDIAKEY_TAXON_AUD
     REV CDATA #REQUIRED
-    MEDIAKEY_FK CDATA #REQUIRED
-    TAXON_FK CDATA #REQUIRED
+    MEDIAKEY_ID CDATA #REQUIRED
+    TAXON_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
     GRANTEDAUTHORITIES_ID CDATA #REQUIRED
 >
 
-<!ELEMENT PERSON_KEYWORD EMPTY>
-<!ATTLIST PERSON_KEYWORD
-    PERSON_FK CDATA #REQUIRED
-    KEYWORD_FK CDATA #REQUIRED
+<!ELEMENT POLYTOMOUSKEY EMPTY>
+<!ATTLIST POLYTOMOUSKEY
+    ID CDATA #REQUIRED
+    CREATED CDATA #IMPLIED
+    UUID CDATA #IMPLIED
+    UPDATED CDATA #IMPLIED
+    CREATEDBY_ID CDATA #IMPLIED
+    UPDATEDBY_ID CDATA #IMPLIED
+    LSID_AUTHORITY CDATA #IMPLIED
+    LSID_LSID CDATA #IMPLIED
+    LSID_NAMESPACE CDATA #IMPLIED
+    LSID_OBJECT CDATA #IMPLIED
+    LSID_REVISION CDATA #IMPLIED
+    PROTECTEDTITLECACHE CDATA #IMPLIED
+    TITLECACHE CDATA #IMPLIED
+    ROOT_ID CDATA #IMPLIED
 >
 
-<!ELEMENT PERSON_KEYWORD_AUD EMPTY>
-<!ATTLIST PERSON_KEYWORD_AUD
+<!ELEMENT POLYTOMOUSKEY_AUD EMPTY>
+<!ATTLIST POLYTOMOUSKEY_AUD
+    ID CDATA #REQUIRED
     REV CDATA #REQUIRED
-    PERSON_FK CDATA #REQUIRED
-    KEYWORD_FK CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
+    CREATED CDATA #IMPLIED
+    UUID CDATA #IMPLIED
+    UPDATED CDATA #IMPLIED
+    CREATEDBY_ID CDATA #IMPLIED
+    UPDATEDBY_ID CDATA #IMPLIED
+    LSID_AUTHORITY CDATA #IMPLIED
+    LSID_LSID CDATA #IMPLIED
+    LSID_NAMESPACE CDATA #IMPLIED
+    LSID_OBJECT CDATA #IMPLIED
+    LSID_REVISION CDATA #IMPLIED
+    PROTECTEDTITLECACHE CDATA #IMPLIED
+    TITLECACHE CDATA #IMPLIED
+    ROOT_ID CDATA #IMPLIED
+>
+
+<!ELEMENT POLYTOMOUSKEYNODE EMPTY>
+<!ATTLIST POLYTOMOUSKEYNODE
+    ID CDATA #REQUIRED
+    CREATED CDATA #IMPLIED
+    UUID CDATA #IMPLIED
+    UPDATED CDATA #IMPLIED
+    CREATEDBY_ID CDATA #IMPLIED
+    UPDATEDBY_ID CDATA #IMPLIED
+    NODENUMBER CDATA #IMPLIED
+    SORTINDEX CDATA #IMPLIED 
+    KEY_ID CDATA #IMPLIED
+    PARENT_ID CDATA #IMPLIED
+    QUESTION_ID CDATA #IMPLIED
+    STATEMENT_ID CDATA #IMPLIED
+    FEATURE_ID CDATA #IMPLIED
+    TAXON_ID CDATA #IMPLIED
+    SUBKEY_ID CDATA #IMPLIED
+    OTHERNODE_ID CDATA #IMPLIED
+>
+
+<!ELEMENT POLYTOMOUSKEYNODE_AUD EMPTY>
+<!ATTLIST POLYTOMOUSKEYNODE_AUD
+    ID CDATA #REQUIRED
+    REV CDATA #REQUIRED
+    REVTYPE CDATA #IMPLIED
+    CREATED CDATA #IMPLIED
+    UUID CDATA #IMPLIED
+    UPDATED CDATA #IMPLIED
+    CREATEDBY_ID CDATA #IMPLIED
+    UPDATEDBY_ID CDATA #IMPLIED
+    NODENUMBER CDATA #IMPLIED
+    SORTINDEX CDATA #IMPLIED 
+    KEY_ID CDATA #IMPLIED
+    PARENT_ID CDATA #IMPLIED
+    QUESTION_ID CDATA #IMPLIED
+    STATEMENT_ID CDATA #IMPLIED
+    FEATURE_ID CDATA #IMPLIED
+    TAXON_ID CDATA #IMPLIED
+    SUBKEY_ID CDATA #IMPLIED
+    OTHERNODE_ID CDATA #IMPLIED
 >
 
 <!ELEMENT PUBLICATIONBASE_PUBLISHER_AUD EMPTY>
     COLLECTORSNUMBER CDATA #IMPLIED
     FIELDNOTES CDATA #IMPLIED
     FIELDNUMBER CDATA #IMPLIED
+    PRIMARYCOLLECTOR_ID CDATA #IMPLIED
     BARCODE CDATA #IMPLIED
+    EXSICCATUM CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
     LIFESTAGE_ID CDATA #IMPLIED
     SEX_ID CDATA #IMPLIED
     COLLECTION_ID CDATA #IMPLIED
-    DERIVATIONEVENT_ID CDATA #IMPLIED
+    DERIVEDFROM_ID CDATA #IMPLIED
     STOREDUNDER_ID CDATA #IMPLIED
     PRESERVATION_ID CDATA #IMPLIED
     GATHERINGEVENT_ID CDATA #IMPLIED
     SEX_ID CDATA #IMPLIED
     FIELDNOTES CDATA #IMPLIED
     FIELDNUMBER CDATA #IMPLIED
+    PRIMARYCOLLECTOR_ID CDATA #IMPLIED
     BARCODE CDATA #IMPLIED
+    EXSICCATUM CDATA #IMPLIED
     GATHERINGEVENT_ID CDATA #IMPLIED
     ACCESSIONNUMBER CDATA #IMPLIED
     CATALOGNUMBER CDATA #IMPLIED
     COLLECTORSNUMBER CDATA #IMPLIED
     COLLECTION_ID CDATA #IMPLIED
-    DERIVATIONEVENT_ID CDATA #IMPLIED
+    DERIVEDFROM_ID CDATA #IMPLIED
     STOREDUNDER_ID CDATA #IMPLIED
     PRESERVATION_ID CDATA #IMPLIED
 >
 <!ELEMENT SPECIMENOROBSERVATIONBASE_LANGUAGESTRING EMPTY>
 <!ATTLIST SPECIMENOROBSERVATIONBASE_LANGUAGESTRING
     SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #IMPLIED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
+    DEFINITION_ID CDATA #IMPLIED
+    DEFINITION_MAPKEY_ID CDATA #REQUIRED
 >
 
 <!ELEMENT SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD EMPTY>
 <!ATTLIST SPECIMENOROBSERVATIONBASE_LANGUAGESTRING_AUD
     REV CDATA #REQUIRED
     SPECIMENOROBSERVATIONBASE_ID CDATA #REQUIRED
-    DESCRIPTION_ID CDATA #REQUIRED
-    DESCRIPTION_MAPKEY_ID CDATA #REQUIRED
+    DEFINITION_ID CDATA #REQUIRED
+    DEFINITION_MAPKEY_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
     TAXONOMICCHILDRENCOUNT CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
-    TAXONNAME_FK CDATA #IMPLIED
+    NAME_ID CDATA #IMPLIED
     SEC_ID CDATA #IMPLIED
     TAXONOMICPARENTCACHE_ID CDATA #IMPLIED
 >
     APPENDEDPHRASE CDATA #IMPLIED
     CREATEDBY_ID CDATA #IMPLIED
     UPDATEDBY_ID CDATA #IMPLIED
-    TAXONNAME_FK CDATA #IMPLIED
+    NAME_ID CDATA #IMPLIED
     SEC_ID CDATA #IMPLIED
     TAXONSTATUSUNKNOWN CDATA #IMPLIED
     UNPLACED CDATA #IMPLIED
     REFERENCEFORPARENTCHILDRELATION_ID CDATA #IMPLIED
     SYNONYMTOBEUSED_ID CDATA #IMPLIED
     TAXON_ID CDATA #IMPLIED
-    TAXONOMICTREE_ID CDATA #IMPLIED
+    CLASSIFICATION_ID CDATA #IMPLIED
 >
 
 <!ELEMENT TAXONNODE_ANNOTATION EMPTY>
     REFERENCEFORPARENTCHILDRELATION_ID CDATA #IMPLIED
     SYNONYMTOBEUSED_ID CDATA #IMPLIED
     TAXON_ID CDATA #IMPLIED
-    TAXONOMICTREE_ID CDATA #IMPLIED
+    CLASSIFICATION_ID CDATA #IMPLIED
 >
 
 <!ELEMENT TAXONNODE_MARKER EMPTY>
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE EMPTY>
-<!ATTLIST TAXONOMICTREE
+<!ELEMENT CLASSIFICATION EMPTY>
+<!ATTLIST CLASSIFICATION
     ID CDATA #REQUIRED
     CREATED CDATA #IMPLIED
     UUID CDATA #IMPLIED
     REFERENCE_ID CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_ANNOTATION EMPTY>
-<!ATTLIST TAXONOMICTREE_ANNOTATION
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_ANNOTATION EMPTY>
+<!ATTLIST CLASSIFICATION_ANNOTATION
+    CLASSIFICATION_ID CDATA #REQUIRED
     ANNOTATIONS_ID CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_ANNOTATION_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_ANNOTATION_AUD
+<!ELEMENT CLASSIFICATION_ANNOTATION_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_ANNOTATION_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     ANNOTATIONS_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_AUD
+<!ELEMENT CLASSIFICATION_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_AUD
     ID CDATA #REQUIRED
     REV CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
     REFERENCE_ID CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_CREDIT EMPTY>
-<!ATTLIST TAXONOMICTREE_CREDIT
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_CREDIT EMPTY>
+<!ATTLIST CLASSIFICATION_CREDIT
+    CLASSIFICATION_ID CDATA #REQUIRED
     CREDITS_ID CDATA #IMPLIED
     SORTINDEX CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_CREDIT_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_CREDIT_AUD
+<!ELEMENT CLASSIFICATION_CREDIT_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_CREDIT_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     CREDITS_ID CDATA #REQUIRED
     SORTINDEX CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_EXTENSION EMPTY>
-<!ATTLIST TAXONOMICTREE_EXTENSION
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_EXTENSION EMPTY>
+<!ATTLIST CLASSIFICATION_EXTENSION
+    CLASSIFICATION_ID CDATA #REQUIRED
     EXTENSIONS_ID CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_EXTENSION_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_EXTENSION_AUD
+<!ELEMENT CLASSIFICATION_EXTENSION_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_EXTENSION_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     EXTENSIONS_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_MARKER EMPTY>
-<!ATTLIST TAXONOMICTREE_MARKER
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_MARKER EMPTY>
+<!ATTLIST CLASSIFICATION_MARKER
+    CLASSIFICATION_ID CDATA #REQUIRED
     MARKERS_ID CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_MARKER_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_MARKER_AUD
+<!ELEMENT CLASSIFICATION_MARKER_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_MARKER_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     MARKERS_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_ORIGINALSOURCEBASE EMPTY>
-<!ATTLIST TAXONOMICTREE_ORIGINALSOURCEBASE
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_ORIGINALSOURCEBASE EMPTY>
+<!ATTLIST CLASSIFICATION_ORIGINALSOURCEBASE
+    CLASSIFICATION_ID CDATA #REQUIRED
     SOURCES_ID CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_ORIGINALSOURCEBASE_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_ORIGINALSOURCEBASE_AUD
+<!ELEMENT CLASSIFICATION_ORIGINALSOURCEBASE_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_ORIGINALSOURCEBASE_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     SOURCES_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_RIGHTS EMPTY>
-<!ATTLIST TAXONOMICTREE_RIGHTS
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_RIGHTS EMPTY>
+<!ATTLIST CLASSIFICATION_RIGHTS
+    CLASSIFICATION_ID CDATA #REQUIRED
     RIGHTS_ID CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_RIGHTS_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_RIGHTS_AUD
+<!ELEMENT CLASSIFICATION_RIGHTS_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_RIGHTS_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     RIGHTS_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
 
-<!ELEMENT TAXONOMICTREE_TAXONNODE EMPTY>
-<!ATTLIST TAXONOMICTREE_TAXONNODE
-    TAXONOMICTREE_ID CDATA #REQUIRED
+<!ELEMENT CLASSIFICATION_TAXONNODE EMPTY>
+<!ATTLIST CLASSIFICATION_TAXONNODE
+    CLASSIFICATION_ID CDATA #REQUIRED
     ROOTNODES_ID CDATA #REQUIRED
 >
 
-<!ELEMENT TAXONOMICTREE_TAXONNODE_AUD EMPTY>
-<!ATTLIST TAXONOMICTREE_TAXONNODE_AUD
+<!ELEMENT CLASSIFICATION_TAXONNODE_AUD EMPTY>
+<!ATTLIST CLASSIFICATION_TAXONNODE_AUD
     REV CDATA #REQUIRED
-    TAXONOMICTREE_ID CDATA #REQUIRED
+    CLASSIFICATION_ID CDATA #REQUIRED
     ROOTNODES_ID CDATA #REQUIRED
     REVTYPE CDATA #IMPLIED
 >
index b742392d199432944937b53cef87f23dca59e1bb..bd661e9edfd6a1003bea63f4a40b1a7597d9d5ff 100644 (file)
   <ORIGINALSOURCEBASE_MARKER/>
   <PERMISSIONGROUP/>
   <PERMISSIONGROUP_GRANTEDAUTHORITYIMPL/>
-  <PERSON_KEYWORD/>
   <REFERENCE/>
   <REFERENCE_ANNOTATION/>
   <REFERENCE_EXTENSION/>
index 4586d0947a311a06613a58d272ab7e8ee699c90d..35dfc5c9de08ef0ad2510222b475866d5c730916 100644 (file)
   <ORIGINALSOURCEBASE_MARKER/>
   <PERMISSIONGROUP/>
   <PERMISSIONGROUP_GRANTEDAUTHORITYIMPL/>
-  <PERSON_KEYWORD/>
   <REFERENCE/>
   <REFERENCE_ANNOTATION/>
   <REFERENCE_EXTENSION/>
index 725144c75dd0fc1abafe86863fd8bdaadd57f5b9..4662dc6d86992749e6291902b1403b683d96546e 100644 (file)
@@ -23,7 +23,7 @@
         </agent:Person>\r
     </Agents>\r
     <References>\r
-        <reference:ReferenceBase id="1" uuid="urn-uuid-818946e6-351b-456b-91cd-6d03eca32026" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Article">\r
+        <reference:Reference id="1" uuid="urn-uuid-818946e6-351b-456b-91cd-6d03eca32026" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Article">\r
             <common:TitleCache>Godfray, 2002</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
@@ -36,8 +36,8 @@
                 <common:Start>2002-05-02</common:Start>\r
                 <common:End>2002-05-02</common:End>\r
             </reference:DatePublished>\r
-        </reference:ReferenceBase>\r
-        <reference:ReferenceBase id="2" uuid="urn-uuid-b29ebbae-03c4-4162-ad33-34ede873b233" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Journal">\r
+        </reference:Reference>\r
+        <reference:Reference id="2" uuid="urn-uuid-b29ebbae-03c4-4162-ad33-34ede873b233" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Journal">\r
             <common:TitleCache>Nature</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
@@ -47,8 +47,8 @@
                 <common:Start>1869-11-04</common:Start>\r
                 <common:End>2008-01-17</common:End>\r
             </reference:DatePublished>\r
-        </reference:ReferenceBase>\r
-        <reference:ReferenceBase id="3" uuid="urn-uuid-09e7c521-5f9b-4223-a13f-042f74a99d8f" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Book">\r
+        </reference:Reference>\r
+        <reference:Reference id="3" uuid="urn-uuid-09e7c521-5f9b-4223-a13f-042f74a99d8f" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Book">\r
             <common:TitleCache>Darwin, 1859</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
@@ -58,8 +58,8 @@
                 <common:Start>1859-11-24</common:Start>\r
                 <common:End>1859-11-24</common:End>\r
             </reference:DatePublished>            \r
-        </reference:ReferenceBase>\r
-        <reference:ReferenceBase id="4" uuid="urn-uuid-60b73f57-ebe9-43b4-aedf-05608be0497b" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Book">\r
+        </reference:Reference>\r
+        <reference:Reference id="4" uuid="urn-uuid-60b73f57-ebe9-43b4-aedf-05608be0497b" parsingProblem="0" problemStarts="-1" problemEnds="-1" type="Book">\r
             <common:TitleCache>Darwin, 2005</common:TitleCache>\r
             <common:ProtectedTitleCache>false</common:ProtectedTitleCache>\r
             <reference:IsNomenclaturallyRelevant>false</reference:IsNomenclaturallyRelevant>\r
@@ -71,6 +71,6 @@
             </reference:DatePublished>\r
             <reference:Editor>Edward O. Wilson</reference:Editor>\r
             <reference:ISBN>9780393061345</reference:ISBN> \r
-        </reference:ReferenceBase>\r
+        </reference:Reference>\r
     </References>\r
 </DataSet>
\ No newline at end of file
index db70049451e822f5bdcd63e6d536c32ccfbf7557..006bf043760a961fecd66bb4e20ec2b2d91c10f0 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <artifactId>cdmlib-parent</artifactId>
     <groupId>eu.etaxonomy</groupId>
-    <version>2.5</version>
+    <version>3.0</version>
        <relativePath>pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
similarity index 95%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PartialUserType.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/PartialUserType.java
index 4df55c3283cd8075ae5b9a3f082d94fbb56a886f..dc24c47df1ffc8b52e02ed50c41c9f5d5784c7b1 100644 (file)
@@ -7,7 +7,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
 \r
-package eu.etaxonomy.cdm.model.common;\r
+package eu.etaxonomy.cdm.hibernate;\r
 \r
 import java.io.Serializable;\r
 import java.sql.PreparedStatement;\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/URIUserType.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/URIUserType.java
new file mode 100644 (file)
index 0000000..cea1f15
--- /dev/null
@@ -0,0 +1,159 @@
+/**\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.hibernate;\r
+\r
+\r
+import java.io.Serializable;\r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
+import java.sql.PreparedStatement;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.sql.Types;\r
+\r
+import org.hibernate.TypeMismatchException;\r
+import org.hibernate.usertype.UserType;\r
+\r
+/**\r
+ * This class maps java.net.URI to varchar(255)\r
+ * @author a.mueller\r
+ *\r
+ */\r
+public class URIUserType implements UserType, Serializable  {\r
+       private static final long serialVersionUID = -5825017496962569105L;\r
+       \r
+       /**\r
+     * SQL type for this usertype.\r
+     */\r
+    private static final int[] SQL_TYPES = {Types.VARCHAR};\r
+\r
+    /**\r
+     * @return returns SQL type for the column to which the UserType is mapped\r
+     */\r
+   public int[] sqlTypes() {\r
+        return SQL_TYPES;\r
+    }\r
+\r
+    /**\r
+     * @return returns the class of the instance being managed by the UserType\r
+     */\r
+    public Class returnedClass() {\r
+        return URI.class;\r
+    }\r
+\r
+    /**\r
+     * @param x first object to compare\r
+     * @param y second object to compare\r
+     * @return comparison result\r
+     * @throws HibernateException\r
+     */\r
+    public boolean equals(Object x, Object y) {\r
+        if (x == y) {\r
+            return true;\r
+        } else if (x == null || y == null) {\r
+            return false;\r
+        } else {\r
+            return x.equals(y);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * @param resultSet resultset object\r
+     * @param names names of the columns in the resultset\r
+     * @param owner parent object on which the value is to be set\r
+     * @return returns URI object\r
+     * @throws SQLException throws exception when error occurs in accessing the resultSet\r
+     */\r
+    public Object nullSafeGet(ResultSet resultSet, String[] names, Object owner)\r
+            throws SQLException {\r
+        String strURI = resultSet.getString(names[0]);\r
+        URI uri = null;\r
+        if (null != strURI) {\r
+            try {\r
+                uri = new URI(strURI);\r
+            } catch (URISyntaxException e) {\r
+                throw new TypeMismatchException(e);\r
+            }\r
+        }\r
+        return uri;\r
+    }\r
+\r
+    /**\r
+     * @param statement prepared statement object\r
+     * @param value value being set in the statement\r
+     * @param index location of the value in the statement\r
+     * @throws SQLException throws exception when error occurs in accessing the statement\r
+     */\r
+    public void nullSafeSet(PreparedStatement statement, Object value, int index)\r
+            throws SQLException {\r
+        if (value == null) {\r
+            statement.setString(index, null);\r
+        } else {\r
+            URI uri = (URI) value;\r
+            statement.setString(index, uri.toString());\r
+        }\r
+    }\r
+\r
+    /**\r
+     * @param value value being copied\r
+     * @return copied value\r
+     */\r
+    public Object deepCopy(Object value) {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+        try {\r
+            return new URI(((URI) value).toString());\r
+        } catch (URISyntaxException e) {\r
+            throw new TypeMismatchException(e);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * @return returns false\r
+     */\r
+    public boolean isMutable() {\r
+        return false;\r
+    }\r
+\r
+    /**\r
+     * @param arg0 object to be assembled\r
+     * @param arg1 object to be assembled\r
+     * @return returns assembled object\r
+     */\r
+    public Object assemble(Serializable arg0, Object arg1) {\r
+        return (Serializable) deepCopy(arg0);\r
+    }\r
+\r
+    /**\r
+     * @param arg0 object to be disassembled\r
+     * @return returns disassembled object\r
+     */\r
+    public Serializable disassemble(Object arg0) {\r
+        return (Serializable) deepCopy(arg0);\r
+    }\r
+\r
+    /**\r
+     * @param arg0 object whose hashcode is to be determined\r
+     * @return returns 0\r
+     */\r
+    public int hashCode(Object arg0) {\r
+        return 0;\r
+    }\r
+\r
+    /**\r
+     * @param arg0 argument 0\r
+     * @param arg1 argument 1\r
+     * @param arg2 argument 2\r
+     * @return returns arg0\r
+     */\r
+    public Object replace(Object arg0, Object arg1, Object arg2) {\r
+        return arg0;\r
+    }\r
+}\r
similarity index 95%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/UUIDUserType.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/UUIDUserType.java
index 998dc1126c734b691cfda06b29a54741f01a782c..5afb989f7edf37e59fd64eb7ae9adbbec8a473a3 100644 (file)
@@ -7,7 +7,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
 \r
-package eu.etaxonomy.cdm.model.common;\r
+package eu.etaxonomy.cdm.hibernate;\r
 \r
 import java.io.Serializable;\r
 import java.sql.PreparedStatement;\r
similarity index 95%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/WSDLDefinitionUserType.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/WSDLDefinitionUserType.java
index 2a8f8dc31c54b965a7f20c19cb57bab95bd1028f..365538959a005b8ed7591a58cbe835f00772c4a4 100644 (file)
@@ -7,7 +7,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */ \r
 \r
-package eu.etaxonomy.cdm.model.common;\r
+package eu.etaxonomy.cdm.hibernate;\r
 \r
 import java.io.Reader;\r
 import java.io.Serializable;\r
@@ -34,6 +34,8 @@ import org.hibernate.usertype.UserType;
 \r
 import com.ibm.wsdl.factory.WSDLFactoryImpl;\r
 \r
+import eu.etaxonomy.cdm.model.common.LSIDWSDLLocator;\r
+\r
 /**\r
  * UserType which allows persistence of a wsdl definition - used to persist the \r
  * wsdl definition of an LSIDAuthority\r
index 888ad493dae50611a4e2b6f6de891c5cd34b344b..fcfef5afe3d68efb37e17e3e7a14642a0e7e7593 100644 (file)
@@ -32,7 +32,6 @@ import org.hibernate.search.annotations.Field;
 import org.hibernate.search.annotations.Index;
 import org.hibernate.search.annotations.Indexed;
 import org.hibernate.search.annotations.IndexedEmbedded;
-import org.joda.time.DateTime;
 import org.joda.time.Partial;
 import org.springframework.beans.factory.annotation.Configurable;
 
index 014a29de6769080fff8d2757d5379571724beeda..baa1f5e6a457fafd9546ec593296e0ff8005dae8 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
 \r
 /**\r
  * The abstract class for such {@link AgentBase agents} ({@link Person persons} or {@link Team teams}) who might also be used\r
- * for authorship of {@link eu.etaxonomy.cdm.model.reference.ReferenceBase references} or of {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon names}.\r
+ * for authorship of {@link eu.etaxonomy.cdm.model.reference.Reference references} or of {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon names}.\r
  * \r
  * @author a.mueller\r
  * @version 1.0\r
index 8109563b1b61008911badfcc5b7b8a190b216ca2..f0f8fe22e40152da78147be1cb78083daaafc6d3 100644 (file)
@@ -85,8 +85,8 @@ public abstract class CdmBase implements Serializable, ICdmBase{
        //@XmlAttribute(name = "id", required = true)
        @XmlTransient
        @Id
-       @GeneratedValue(generator = "system-increment")
-//     @GeneratedValue(generator = "enhanced-table")
+//     @GeneratedValue(generator = "system-increment")
+       @GeneratedValue(generator = "enhanced-table")
        @DocumentId
        @Match(MatchMode.IGNORE)
        @NotNull
@@ -302,7 +302,16 @@ public abstract class CdmBase implements Serializable, ICdmBase{
        public int hashCode() {
                   int hashCode = 7;
                   if(this.getUuid() != null) {
-                      return 29 * hashCode + this.getUuid().hashCode();
+                          //this unfortunately leads to errors when loading maps via hibernate
+                          //as hibernate computes hash values for CdmBase objects used as key at 
+                          // a time when the uuid is not yet loaded from the database. Therefore 
+                          //the hash values later change and give wrong results when retrieving
+                          //data from the map (map.get(key) returns null, though there is an entry
+                          //for key in the map.
+                          //see further comments in #2114 
+                      int result = 29 * hashCode + this.getUuid().hashCode();
+//                    int shresult = 29 * hashCode + Integer.valueOf(this.getId()).hashCode();
+                          return result;
                   } else {
                           return 29 * hashCode;
                   }
index c4749fded75dfb784a9828489d33ff220b85697a..203148f262531fdba15adcae436315907840039c 100644 (file)
@@ -13,14 +13,12 @@ package eu.etaxonomy.cdm.model.common;
 import java.util.ArrayList;\r
 import java.util.Comparator;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
 import javax.persistence.Entity;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.joda.time.DateTime;\r
 \r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 \r
 /**\r
@@ -49,7 +47,7 @@ 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 = "2.5.0.0.201009211255";\r
+       private static final String dbSchemaVersion = "3.0.0.0.201011090000";\r
        \r
 \r
        /**\r
@@ -80,7 +78,7 @@ public class CdmMetaData extends CdmBase{
         * \r
         * The last number represents the date of change.\r
         */\r
-       private static final String termsVersion = "2.5.0.0.201009211255";\r
+       private static final String termsVersion = "3.0.0.0.201011170000";\r
        \r
        \r
        public enum MetaDataPropertyName{\r
index ea31207b54c94ca1a4a965e273d96c093f8a955e..48ee0b3fe83eeec3e79aeeb181a8d12cd1cd16b9 100644 (file)
@@ -27,7 +27,7 @@ public class DefaultTermInitializer implements ITermInitializer {
        private static final Logger logger = Logger.getLogger(DefaultTermInitializer.class);\r
        protected ITermLoader termLoader = new TermLoader();\r
        \r
-       public final void initialize() {\r
+       public void initialize() {\r
                termLoader.unloadAllTerms();\r
                doInitialize();\r
        }\r
index ceec421e57bfe7a427a96b2d215ba1f7ceb1de8b..db11d18629bc3b3c7e94de93a4580c43c36df0e2 100644 (file)
@@ -29,7 +29,7 @@ import org.hibernate.envers.NotAudited;
 \r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * This class represents an {@link eu.etaxonomy.cdm.model.common.IOriginalSource IOriginalSource}\r
@@ -80,34 +80,34 @@ public class DescriptionElementSource extends OriginalSourceBase<DescriptionElem
                return result;\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace, ReferenceBase citation){\r
+       public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation){\r
                DescriptionElementSource result = NewInstance(id, idNamespace);\r
                result.setCitation(citation);           \r
                return result;\r
        }\r
 \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace, ReferenceBase citation, String microCitation){\r
+       public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation, String microCitation){\r
                DescriptionElementSource result = NewInstance(id, idNamespace);\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(String id, String idNamespace, ReferenceBase citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
+       public static DescriptionElementSource NewInstance(String id, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
                DescriptionElementSource result = NewInstance(id, idNamespace, citation, microReference);\r
                result.setNameUsedInSource(nameUsedInSource);\r
                result.setOriginalNameString(originalNameString);\r
                return result;\r
        }\r
        \r
-       public static DescriptionElementSource NewInstance(ReferenceBase citation, String microCitation){\r
+       public static DescriptionElementSource NewInstance(Reference citation, String microCitation){\r
                DescriptionElementSource result = NewInstance();\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
        }\r
 \r
-       public static DescriptionElementSource NewInstance(ReferenceBase citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
+       public static DescriptionElementSource NewInstance(Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){\r
                DescriptionElementSource result = NewInstance(citation, microReference);\r
                result.setNameUsedInSource(nameUsedInSource);\r
                result.setOriginalNameString(originalNameString);\r
index 045f44e27d628339ac519602d40c846778cfbda5..078b7e56a315855daa25a80e08f2e2c44b26f4dc 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
 import org.hibernate.search.annotations.Indexed;
 
+
 /**
  * Extension types similar to dynamically defined attributes. These are not data
  * types, but rather content types like "DOI", "2nd nomenclatural reference", "3rd
index 64eefdc33793ec4c3701be328f55ab8a3c500d7f..df438d022c55e281dc80dbdd974810037c2dcabd 100644 (file)
@@ -10,7 +10,7 @@
 package eu.etaxonomy.cdm.model.common;
 
 
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 
 /**
@@ -20,6 +20,6 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase;
  */
 public interface IReferencedEntity {
 
-       public ReferenceBase getCitation();
+       public Reference getCitation();
 
 }
\ No newline at end of file
index e895a6bcd96c62b1c87c9291833c447b4a4c7707..c738bfe0a46bf15d38df1f822db25a939ea28146 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.cdm.model.common;
 
 import java.util.Set;
 
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
  
 public interface ISourceable<T extends IOriginalSource> {
@@ -37,7 +37,7 @@ public interface ISourceable<T extends IOriginalSource> {
         * @param citation
         * @param microCitation
         */
-       public T addSource(String id, String idNamespace, ReferenceBase citation, String microCitation);
+       public T addSource(String id, String idNamespace, Reference citation, String microCitation);
                
 
        /**
index 978791ddd2b2f7e3b1b8ca10368f9cf316f141e6..9a1058585bf6e1d0a73dcac1f4e6e097b78e6ee6 100644 (file)
@@ -47,7 +47,7 @@ import eu.etaxonomy.cdm.jaxb.LSIDAdapter;
 import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.match.Match;
@@ -376,9 +376,9 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
        }
        
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)
+        * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
         */
-       public IdentifiableSource addSource(String id, String idNamespace, ReferenceBase citation, String microCitation) {
+       public IdentifiableSource addSource(String id, String idNamespace, Reference citation, String microCitation) {
                if (id == null && idNamespace == null && citation == null && microCitation == null){
                        return null;
                }
@@ -448,10 +448,10 @@ public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrat
                         specifiedTitleCache = taxonNameBase.getTitleCache();
                         
                         specifiedReferenceTitleCache = ((TaxonBase)identifiableEntity).getSec().getTitleCache();
-                        ReferenceBase referenceBase = taxonBase.getSec();
-                        if (referenceBase != null) {
-                                referenceBase = HibernateProxyHelper.deproxy(referenceBase, ReferenceBase.class);
-                                specifiedReferenceTitleCache = referenceBase.getTitleCache();
+                        Reference reference = taxonBase.getSec();
+                        if (reference != null) {
+                                reference = HibernateProxyHelper.deproxy(reference, Reference.class);
+                                specifiedReferenceTitleCache = reference.getTitleCache();
                         }
                 }
                 
index e73afc15d20874e254be5ada1e2185806575cf58..4d4ae1a4db6d04d977dfc5828426c31c884ef320 100644 (file)
@@ -24,7 +24,7 @@ import org.hibernate.annotations.Any;
 import org.hibernate.envers.Audited;\r
 import org.hibernate.envers.NotAudited;\r
 \r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * This class represents an {@link eu.etaxonomy.cdm.model.common.IOriginalSource IOriginalSource}\r
@@ -67,14 +67,14 @@ public class IdentifiableSource extends OriginalSourceBase<IdentifiableEntity>{
                return result;\r
        }\r
        \r
-       public static IdentifiableSource NewInstance(String id, String idNamespace, ReferenceBase citation, String microCitation){\r
+       public static IdentifiableSource NewInstance(String id, String idNamespace, Reference citation, String microCitation){\r
                IdentifiableSource result = NewInstance(id, idNamespace);\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
                return result;\r
        }\r
 \r
-       public static IdentifiableSource NewInstance(ReferenceBase citation, String microCitation){\r
+       public static IdentifiableSource NewInstance(Reference citation, String microCitation){\r
                IdentifiableSource result = NewInstance();\r
                result.setCitation(citation);\r
                result.setCitationMicroReference(microCitation);\r
index 26b37baa008e2a44eacd708f066cb89695c4ccd0..fbea7c8ca475d6385d26fb66a7b5275713b85b17 100644 (file)
@@ -32,6 +32,7 @@ import org.hibernate.annotations.TypeDefs;
 \r
 import com.ibm.lsid.MalformedLSIDException;\r
 \r
+import eu.etaxonomy.cdm.hibernate.WSDLDefinitionUserType;\r
 import eu.etaxonomy.cdm.jaxb.NamespacesAdapter;\r
 \r
 @XmlAccessorType(XmlAccessType.FIELD)\r
index 83764ef071a964d328fc98b3b2b0cad296647468..38fc2684f0464fb9297cbf70c901d696e9a7c6e3 100644 (file)
@@ -28,8 +28,6 @@ import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
 import org.hibernate.search.annotations.Indexed;
 
-import eu.etaxonomy.cdm.common.CdmUtils;
-
 import au.com.bytecode.opencsv.CSVWriter;
 
 /**
@@ -535,8 +533,12 @@ public class Language extends DefinedTermBase<Language> {
        private static final UUID uuidZulu = UUID.fromString("1f8d4fcb-e888-4ac6-8113-63fe7ea77180");
        private static final UUID uuidZuni = UUID.fromString("d8ce3c47-243b-4a09-835b-01918829a2e7");
        private static final UUID uuidNoLinguisticContent = UUID.fromString("fb85de23-0e3c-4042-b56b-71ec3c7566cf");
-       private static final UUID uuidZaza_Dimili_Dimli_Kirdki_Kirmanjki_Zazaki = UUID.fromString("e4bf2ec8-4c1a-4ece-9df1-4890a7f18457");
+       public static final UUID uuidZaza_Dimili_Dimli_Kirdki_Kirmanjki_Zazaki = UUID.fromString("e4bf2ec8-4c1a-4ece-9df1-4890a7f18457");
 
+       public static final UUID uuidUnknownLanguage = UUID.fromString("3d05ab93-2d92-400d-a3dd-fc8dcc5f8203");
+       public static final UUID uuidOriginalLanguage = UUID.fromString("42b893f3-16dd-417d-aa92-96cf6c695ca1");
+       
+       
        protected static Map<UUID, Language> termMap = null;            
 
        public static Language NewInstance(){
@@ -611,6 +613,8 @@ public class Language extends DefinedTermBase<Language> {
        @Override
        public void resetTerms(){
                termMap = null;
+               defaultLanguage = null;
+               csvLanguage = null;
        }
 
        
@@ -1115,7 +1119,8 @@ public class Language extends DefinedTermBase<Language> {
        public static final Language ZUNI(){/*@*/ return getTermByUuid(uuidZuni);/*@*/}
        public static final Language NO_LINGUISTIC_CONTENT(){/*@*/ return getTermByUuid(uuidNoLinguisticContent);/*@*/}
        public static final Language ZAZA_DIMILI_DIMLI_KIRDKI_KIRMANJKI_ZAZAKI(){/*@*/ return getTermByUuid(uuidZaza_Dimili_Dimli_Kirdki_Kirmanjki_Zazaki);/*@*/}
-       
+       public static final Language UNKNOWN_LANGUAGE() {/*@*/ return getTermByUuid(uuidUnknownLanguage);/*@*/}
+       public static final Language ORIGINAL_LANGUAGE() {/*@*/ return getTermByUuid(uuidOriginalLanguage);/*@*/}
        
        private static Language defaultLanguage = null;  //is set in setDefaultTerms()
        private static Language csvLanguage = null;  //is set in setDefaultTerms()
@@ -1176,8 +1181,8 @@ public class Language extends DefinedTermBase<Language> {
                            DefinedTermBase.readCsvLine(newInstance,csvLine,(Language)terms.get(Language.uuidEnglish));
                    }
                
-                   newInstance.setIso639_1(csvLine.get(5).trim());
                    newInstance.setIso639_2(csvLine.get(4).trim());
+                   newInstance.setIso639_1(csvLine.get(5).trim());
                    //TODO could replace with generic validation
                    if(iso639_1 != null && iso639_1.length() > 2){
                            logger.warn("Iso639-1: "+ newInstance.getIso639_1() +" from "+csvLine.get(3)+" ,"+csvLine.get(2)+" too long");
@@ -1200,8 +1205,8 @@ public class Language extends DefinedTermBase<Language> {
                line[1] = language.getUri();
                line[2] = language.getLabel(Language.CSV_LANGUAGE());
                line[3] = language.getDescription(Language.CSV_LANGUAGE());
-               line[4] = language.getIso639_1();
-               line[5] = language.getIso639_2();
+               line[4] = language.getIso639_2();
+               line[5] = language.getIso639_1();
                writer.writeNext(line);
        }
 
@@ -1243,7 +1248,9 @@ public class Language extends DefinedTermBase<Language> {
 
        @Override
        protected void setDefaultTerms(TermVocabulary<Language> termVocabulary) {
-               termMap = new HashMap<UUID, Language>();
+               if (termMap == null){  //there are 2 language vocabularies now
+                       termMap = new HashMap<UUID, Language>();
+               }
                for (Language term : termVocabulary.getTerms()){
                        termMap.put(term.getUuid(), (Language)term);
                }
index ed6dce10bcce884412b9fb1d46bef191dd77728f..51ec29c2dbdfeac11e90bd6d2eec9a4a86aabb44 100644 (file)
@@ -16,6 +16,7 @@ import org.hibernate.search.annotations.Field;
 import org.hibernate.search.annotations.Index;
 import org.hibernate.search.annotations.Indexed;
 
+
 import java.util.*;
 
 import javax.persistence.*;
index 5ce748a60df5e2a201204e2ced54515a2964c95a..0f865b7caf8d1825296066fe7d8a47d367f52408 100644 (file)
@@ -25,7 +25,7 @@ import org.apache.log4j.Logger;
 import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
  * abstract class for all objects that may have a reference
@@ -53,7 +53,7 @@ public abstract class ReferencedEntityBase extends AnnotatableEntity implements
     @XmlSchemaType(name = "IDREF")
     @ManyToOne(fetch = FetchType.LAZY)
     @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE})
-       private ReferenceBase citation;
+       private Reference citation;
 
     @XmlElement(name = "CitationMicroReference")
        private String citationMicroReference;
@@ -66,7 +66,7 @@ public abstract class ReferencedEntityBase extends AnnotatableEntity implements
        }
 
 
-       public ReferencedEntityBase(ReferenceBase citation, String citationMicroReference,
+       public ReferencedEntityBase(Reference citation, String citationMicroReference,
                        String originalNameString) {
                super();
                this.citationMicroReference = citationMicroReference;
@@ -89,10 +89,10 @@ public abstract class ReferencedEntityBase extends AnnotatableEntity implements
                this.originalNameString = originalNameString;
        }
 
-       public ReferenceBase getCitation(){
+       public Reference getCitation(){
                return this.citation;
        }
-       public void setCitation(ReferenceBase citation) {
+       public void setCitation(Reference citation) {
                this.citation = citation;
        }
        
index b9eefeeb95f844b927018e67d2308ffea6481190..3dca9a1cee8144f96c4a8a332310604e6ee95567 100644 (file)
@@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.log4j.Logger;
 
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
  * @author m.doering
@@ -75,7 +75,7 @@ public abstract class RelationshipBase<FROM extends IRelated, TO extends IRelate
         * @param citation
         * @param citationMicroReference
         */
-       protected RelationshipBase(FROM from, TO to, TYPE type, ReferenceBase citation, String citationMicroReference) {
+       protected RelationshipBase(FROM from, TO to, TYPE type, Reference citation, String citationMicroReference) {
                super(citation, citationMicroReference, null);
                setRelatedFrom(from);
                setRelatedTo(to);
index bf83b35232a001c1c287cd77c751ddc9ce8ddfd7..4692496ea253c1c44035a7032c99b71b2f7ccff8 100644 (file)
@@ -52,6 +52,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 public enum VocabularyEnum {
 
        Language("45ac7043-7f5e-4f37-92f2-3874aaaef2de", Language.class),
+       UndefinedLanguage("7fd1e6d0-2e76-4dfa-bad9-2673dd042c28", Language.class),
        Continent("e72cbcb6-58f8-4201-9774-15d0c6abc128", Continent.class),
        WaterbodyOrCountry("006b1870-7347-4624-990f-e5ed78484a1a", WaterbodyOrCountry.class),
        Rank("ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b", Rank.class),
index 83dd5ed7c8a8feafc478b61fb6f3da448a1f91d2..eaeb438fc663af06f50af18ed5cc883188902b9f 100644 (file)
@@ -83,8 +83,9 @@
 @org.hibernate.annotations.TypeDefs( { \r
        @org.hibernate.annotations.TypeDef(name="persistentDuration", typeClass=org.joda.time.contrib.hibernate.PersistentDuration.class),\r
        @org.hibernate.annotations.TypeDef(name="dateTimeUserType", typeClass=org.joda.time.contrib.hibernate.PersistentDateTime.class),\r
-       @org.hibernate.annotations.TypeDef(name="partialUserType", typeClass=eu.etaxonomy.cdm.model.common.PartialUserType.class),\r
-       @org.hibernate.annotations.TypeDef(name="uuidUserType", typeClass=eu.etaxonomy.cdm.model.common.UUIDUserType.class)\r
+       @org.hibernate.annotations.TypeDef(name="partialUserType", typeClass=eu.etaxonomy.cdm.hibernate.PartialUserType.class),\r
+       @org.hibernate.annotations.TypeDef(name="uuidUserType", typeClass=eu.etaxonomy.cdm.hibernate.UUIDUserType.class),\r
+       @org.hibernate.annotations.TypeDef(name="uriUserType", typeClass=eu.etaxonomy.cdm.hibernate.URIUserType.class)\r
 })\r
 @org.hibernate.annotations.AnyMetaDef(name = "CdmBase" ,\r
                                              metaType="string", \r
                @MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.LivingBeing", targetEntity = LivingBeing.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.Observation", targetEntity = Observation.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.occurrence.Specimen", targetEntity = Specimen.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.ReferenceBase", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Journal", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Article", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Book", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Generic", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Database", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.BookSection", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Reference", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.PrintSeries", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Proceedings", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.Thesis", targetEntity = ReferenceBase.class),\r
-               @MetaValue(value = "eu.etaxonomy.cdm.model.reference.WebPage", targetEntity = ReferenceBase.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.TaxonomicTree", targetEntity = TaxonomicTree.class),\r
+               @MetaValue(value = "eu.etaxonomy.cdm.model.taxon.Classification", targetEntity = Classification.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.description.TextData", targetEntity = TextData.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.agent.TeamOrPersonBase", targetEntity = TeamOrPersonBase.class),\r
                @MetaValue(value = "eu.etaxonomy.cdm.model.common.User", targetEntity = User.class)\r
@@ -172,8 +173,8 @@ import eu.etaxonomy.cdm.model.occurrence.Fossil;
 import eu.etaxonomy.cdm.model.occurrence.LivingBeing;\r
 import eu.etaxonomy.cdm.model.occurrence.Observation;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
        
\ No newline at end of file
index 25002c301469a16a35e3c8c4ec4f2b53234b223b..b671a7b7157cb5401e833a8975628350bba46516 100644 (file)
@@ -36,7 +36,7 @@ import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 
 /**
@@ -83,7 +83,7 @@ public abstract class DescriptionBase<S extends IIdentifiableEntityCacheStrategy
        @XmlIDREF
        @XmlSchemaType(name="IDREF")
        @ManyToMany(fetch = FetchType.LAZY)  //FIXME what is the difference between this and IdentifiableEntity.sources
-       private Set<ReferenceBase> descriptionSources = new HashSet<ReferenceBase>();
+       private Set<Reference> descriptionSources = new HashSet<Reference>();
        
        @XmlElementWrapper(name = "DescriptiveSystem")
        @XmlElement(name = "Feature")
@@ -165,26 +165,26 @@ public abstract class DescriptionBase<S extends IIdentifiableEntityCacheStrategy
        }
 
        /**
-        * Returns the set of {@link ReferenceBase references} used as sources for <i>this</i> description as a
+        * Returns the set of {@link Reference references} used as sources for <i>this</i> description as a
         * whole. More than one source can be used for a general description without
         * assigning for each data element of the description one of those sources. 
         * 
-        * @see    #addDescriptionSource(ReferenceBase)
-        * @see    #removeDescriptionSource(ReferenceBase)
+        * @see    #addDescriptionSource(Reference)
+        * @see    #removeDescriptionSource(Reference)
         */
-       public Set<ReferenceBase> getDescriptionSources() {
+       public Set<Reference> getDescriptionSources() {
                return this.descriptionSources;
        }
        
        /**
-        * Adds an existing {@link ReferenceBase reference} to the set of
+        * Adds an existing {@link Reference reference} to the set of
         * {@link #getDescriptionSources() references} used as sources for <i>this</i>
         * description.
         * 
         * @param descriptionSource     the reference source to be added to <i>this</i> description
         * @see                                         #getDescriptionSources()
         */
-       public void addDescriptionSource(ReferenceBase descriptionSource) {
+       public void addDescriptionSource(Reference descriptionSource) {
                this.descriptionSources.add(descriptionSource);
        }
        
@@ -194,9 +194,9 @@ public abstract class DescriptionBase<S extends IIdentifiableEntityCacheStrategy
         *
         * @param  descriptionSource    the reference source which should be deleted
         * @see                                         #getDescriptionSources()
-        * @see                                         #addDescriptionSource(ReferenceBase)
+        * @see                                         #addDescriptionSource(Reference)
         */
-       public void removeDescriptionSource(ReferenceBase descriptionSource) {
+       public void removeDescriptionSource(Reference descriptionSource) {
                this.descriptionSources.remove(descriptionSource);
        }
 
index f1d4559fa048e13be96d7674d7fbc432c5b1291b..ba88ff41ee5b0fcb7dddfdfdac42a0b91211466a 100644 (file)
@@ -53,7 +53,7 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.strategy.merge.Merge;
 import eu.etaxonomy.cdm.strategy.merge.MergeMode;
@@ -212,31 +212,6 @@ public abstract class DescriptionElementBase extends AnnotatableEntity implement
        protected void setInDescription(DescriptionBase inDescription) {
                this.inDescription = inDescription;
        }
-
-       /**
-        * Does exactly the same as getFeature().
-        * @author ben.clark
-        * FIXME Is there a need to have two methods with different names which do the same thing?
-        * 
-        * @see #getFeature() 
-        */
-       @Transient
-       @Deprecated //will be removed in version 3. 
-       public Feature getType(){
-               return this.getFeature();
-       }
-       
-       /**
-        * Does exactly the same as setFeature(Feature).
-        * 
-        * @param type  the feature to be described or measured
-        * @see                 #setFeature(Feature) 
-        * @see                 #getFeature() 
-        */
-       @Deprecated  //will be removed in version 3
-       public void setType(Feature type){
-               this.setFeature(type);
-       }
        
        /** 
         * Returns the {@link Feature feature} <i>this</i> description element is for.
@@ -362,9 +337,9 @@ public abstract class DescriptionElementBase extends AnnotatableEntity implement
        }
        
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)
+        * @see eu.etaxonomy.cdm.model.common.ISourceable#addSource(java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
         */
-       public DescriptionElementSource addSource(String id, String idNamespace, ReferenceBase citation, String microCitation) {
+       public DescriptionElementSource addSource(String id, String idNamespace, Reference citation, String microCitation) {
                if (id == null && idNamespace == null && citation == null && microCitation == null){
                        return null;
                }
@@ -373,7 +348,7 @@ public abstract class DescriptionElementBase extends AnnotatableEntity implement
                return source;
        }
        
-       public void addSource(String id, String idNamespace, ReferenceBase citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){
+       public void addSource(String id, String idNamespace, Reference citation, String microReference, TaxonNameBase nameUsedInSource, String originalNameString){
                DescriptionElementSource newSource = DescriptionElementSource.NewInstance(id, idNamespace, citation, microReference, nameUsedInSource, originalNameString);
                addSource(newSource);
        }
@@ -384,134 +359,42 @@ public abstract class DescriptionElementBase extends AnnotatableEntity implement
        public void removeSource(DescriptionElementSource source) {
                this.sources.remove(source);
        }
-
-       
-       /**
-        * Gets the citation micro reference of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        * @return
-        */
-       @Transient
-       @Deprecated
-       public String getCitationMicroReference(){
-               if (this.sources.size() < 1){
-                       return null;
-               }else{
-                       return this.sources.iterator().next().getCitationMicroReference();
-               }
-       }
        
-       /**
-        * Sets the citation micro reference of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        * If more than one source exists an IllegalStateException is thrown
-        **/
-       @Transient
-       @Deprecated
-       public void setCitationMicroReference(String citationMicroReference){
-               if (this.sources.size() < 1){
-                       ReferenceBase citation = null;
-                       this.addSource(DescriptionElementSource.NewInstance(null, null, citation, citationMicroReference));
-               }else if (this.sources.size() > 1){
-                       throw new IllegalStateException("When adding a microcitation via the setCitationMicroReference method there must be only one source available");
-               }else{
-                       this.sources.iterator().next().setCitationMicroReference(citationMicroReference);
-               }
-       }
-
-       /**
-        * Gets the citation of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        */ 
-       @Transient
-       @Deprecated
-       public ReferenceBase getCitation(){
-               if (this.sources.size() < 1){
-                       return null;
-               }else{
-                       return this.sources.iterator().next().getCitation();
-               }
-       }
+//     
+//     /**
+//      * Sets the citation micro reference of the first source. This method is deprecated and exists only to be compliant with version 2.0.
+//      * It will be removed in v2.3
+//      * If more than one source exists an IllegalStateException is thrown
+//      **/
+//     @Transient
+//     @Deprecated
+//     public void setCitationMicroReference(String citationMicroReference){
+//             if (this.sources.size() < 1){
+//                     Reference citation = null;
+//                     this.addSource(DescriptionElementSource.NewInstance(null, null, citation, citationMicroReference));
+//             }else if (this.sources.size() > 1){
+//                     throw new IllegalStateException("When adding a microcitation via the setCitationMicroReference method there must be only one source available");
+//             }else{
+//                     this.sources.iterator().next().setCitationMicroReference(citationMicroReference);
+//             }
+//     }
+//     
+//     /**
+//      * Sets the citation of the first source. This method is deprecated and exists only to be compliant with version 2.0.
+//      * It will be removed in v2.3
+//      * If more than one source exists an IllegalStateException is thrown
+//      **/
+//     @Deprecated
+//     public void setCitation(Reference citation) {
+//             if (this.sources.size() < 1){
+//                     this.addSource(DescriptionElementSource.NewInstance(null, null, citation, null));
+//             }else if (this.sources.size() > 1){
+//                     throw new IllegalStateException("When adding a citation via the setCitation method there must be only one source available");
+//             }else{
+//                     this.sources.iterator().next().setCitation(citation);
+//             }
+//     }
        
-       /**
-        * Sets the citation of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        * If more than one source exists an IllegalStateException is thrown
-        **/
-       @Deprecated
-       public void setCitation(ReferenceBase citation) {
-               if (this.sources.size() < 1){
-                       this.addSource(DescriptionElementSource.NewInstance(null, null, citation, null));
-               }else if (this.sources.size() > 1){
-                       throw new IllegalStateException("When adding a citation via the setCitation method there must be only one source available");
-               }else{
-                       this.sources.iterator().next().setCitation(citation);
-               }
-       }
-       
-       
-       /**
-        * Gets the original name string of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        * @return
-        */
-       @Transient
-       @Deprecated
-       public String getOriginalNameString(){
-               if (this.sources.size() < 1){
-                       return null;
-               }else{
-                       return this.sources.iterator().next().getOriginalNameString();
-               }
-       }
-       
-       /**
-        * Sets the original name string of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        * If more than one source exists an IllegalStateException is thrown
-        **/
-       @Transient
-       @Deprecated
-       public void setOriginalNameString(String originalNameString){
-               if (this.sources.size() < 1){
-                       this.addSource(DescriptionElementSource.NewInstance(null, null, null, null, null, originalNameString));
-               }else if (this.sources.size() > 1){
-                       throw new IllegalStateException("When adding a microcitation via the setCitationMicroReference method there must be only one source available");
-               }else{
-                       this.sources.iterator().next().setOriginalNameString(originalNameString);
-               }
-       }
-       
-
-       /**
-        * Gets the name used in source of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        */ 
-       @Transient
-       @Deprecated
-       public TaxonNameBase getNameUsedInReference(){
-               if (this.sources.size() < 1){
-                       return null;
-               }else{
-                       return this.sources.iterator().next().getNameUsedInSource();
-               }
-       }
-       
-       /**
-        * Sets the name used in reference of the first source. This method is deprecated and exists only to be compliant with version 2.0.
-        * It will be removed in v2.3
-        * If more than one source exists an IllegalStateException is thrown
-        **/
-       @Deprecated
-       public void setNameUsedInReference(TaxonNameBase nameUsedInSource) {
-               if (this.sources.size() < 1){
-                       this.addSource(DescriptionElementSource.NewInstance(null, null, null, null, nameUsedInSource, null));
-               }else if (this.sources.size() > 1){
-                       throw new IllegalStateException("When adding a citation via the setCitation method there must be only one source available");
-               }else{
-                       this.sources.iterator().next().setNameUsedInSource(nameUsedInSource);
-               }
-       }
 
 //************************** CLONE **********************************************************/ 
        
index ca6ad3c2e96fd6cecfb4a464a9da5746ce3ac640..ca50009c571b5946337cd91830137ed617850183 100644 (file)
@@ -23,6 +23,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.OrderBy;
 import javax.persistence.Transient;
+import javax.validation.constraints.NotNull;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -38,10 +39,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.annotations.IndexColumn;
 import org.hibernate.envers.Audited;
 
-import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
-import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 
 /**
  * The class for tree nodes within a {@link FeatureTree feature tree} structure.
@@ -59,14 +57,15 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 @SuppressWarnings("serial")
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "FeatureNode", propOrder = {
+               "featureTree",
                "feature",
                "parent",
                "children",
                "sortIndex",
                "onlyApplicableIf",
-               "inapplicableIf",
-               "questions",
-               "taxon"
+               "inapplicableIf"
+//             ,"questions",
+//             ,"taxon"
 })
 @XmlRootElement(name = "FeatureNode")
 @Entity
@@ -74,7 +73,17 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 public class FeatureNode extends VersionableEntity {
        private static final Logger logger = Logger.getLogger(FeatureNode.class);
        
-    @XmlElement(name = "Feature")
+    //This is the main key a node belongs to. Although other keys may also reference
+       //<code>this</code> node, a node usually belongs to a given key.
+       @XmlElement(name = "FeatureTree")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN})
+    @NotNull
+       private FeatureTree featureTree;
+       
+       @XmlElement(name = "Feature")
     @XmlIDREF
     @XmlSchemaType(name = "IDREF")
     @ManyToOne(fetch = FetchType.LAZY)
@@ -86,7 +95,7 @@ public class FeatureNode extends VersionableEntity {
     @ManyToOne(fetch = FetchType.LAZY, targetEntity=FeatureNode.class)
 //    @IndexColumn(name="sortIndex", base = 0)
     @Cascade(CascadeType.SAVE_UPDATE)
-       @JoinColumn(name="parent_fk" /*, insertable=false, updatable=false, nullable=false*/)
+       @JoinColumn(name="parent_id" /*, insertable=false, updatable=false, nullable=false*/)
        private FeatureNode parent;
     
     @XmlElementWrapper(name = "Children")
@@ -127,25 +136,18 @@ public class FeatureNode extends VersionableEntity {
        @JoinTable(name="FeatureNode_DefinedTermBase_InapplicableIf")
        private Set<State> inapplicableIf = new HashSet<State>();
 
-       @XmlElementWrapper(name = "Questions")
-       @XmlElement(name = "Question")
-    @OneToMany(fetch=FetchType.EAGER)
-       @Cascade( { CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE })
-       private Set<Representation> questions = new HashSet<Representation>();
-
-       @XmlElement(name = "Taxon")
-       @XmlIDREF
-       @XmlSchemaType(name = "IDREF")
-       @ManyToOne(fetch = FetchType.LAZY)
-       @Cascade(CascadeType.SAVE_UPDATE)
-       private Taxon taxon;
-       
-       /** 
-        * Class constructor: creates a new empty feature node instance.
-        */
-       protected FeatureNode() {
-               super();
-       }
+//     @XmlElementWrapper(name = "Questions")
+//     @XmlElement(name = "Question")
+//    @OneToMany(fetch=FetchType.EAGER)
+//     @Cascade( { CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE })
+//     private Set<Representation> questions = new HashSet<Representation>();
+//
+//     @XmlElement(name = "Taxon")
+//     @XmlIDREF
+//     @XmlSchemaType(name = "IDREF")
+//     @ManyToOne(fetch = FetchType.LAZY)
+//     @Cascade(CascadeType.SAVE_UPDATE)
+//     private Taxon taxon;
 
        /** 
         * Creates a new empty feature node instance.
@@ -169,6 +171,25 @@ public class FeatureNode extends VersionableEntity {
                return result;
        }
 
+       
+       /** 
+        * Class constructor: creates a new empty feature node instance.
+        */
+       protected FeatureNode() {
+               super();
+       }
+
+       
+//*************************** TREE ************************************/       
+
+       public FeatureTree getFeatureTree() {
+               return featureTree;
+       }
+
+       protected void setFeatureTree(FeatureTree featureTree) {
+               this.featureTree = featureTree;
+       }
+       
        //** ********************** FEATURE ******************************/
 
        /** 
@@ -255,11 +276,12 @@ public class FeatureNode extends VersionableEntity {
                        child.getParent().removeChild(child);
                }
                child.setParent(this);
+               child.setFeatureTree(this.getFeatureTree());
                children.add(index, child);
                //TODO workaround (see sortIndex doc)
                for(int i = 0; i < children.size(); i++){
                        children.get(i).sortIndex = i;
-       }
+               }
                child.sortIndex = index;
        }
        /** 
@@ -301,7 +323,7 @@ public class FeatureNode extends VersionableEntity {
                                childAt.sortIndex = i;
                }
                        child.sortIndex = null;
-       }
+               }
        }
 
        /** 
@@ -447,36 +469,36 @@ public class FeatureNode extends VersionableEntity {
                this.inapplicableIf.remove(inapplicableState);
        }
        
-       //** ********************** QUESTIONS ******************************/
-
-       /** 
-        * Returns the {@link Representation question} formulation that
-        * corresponds to <i>this</i> feature node and the corresponding
-        * {@link Feature feature} in case it is part of a 
-        * {@link PolytomousKey polytomous key}.
-        */
-       public Set<Representation> getQuestions() {
-               return this.questions;
-       }
-
-       public void addQuestion(Representation question) {
-               this.questions.add(question);
-       }
-
-       public void removeQuestion(Representation question) {
-               this.questions.remove(question);
-       }
-
-       @Transient
-       public Representation getQuestion(Language lang) {
-               for (Representation question : questions){
-                       Language reprLanguage = question.getLanguage();
-                       if (reprLanguage != null && reprLanguage.equals(lang)){
-                               return question;
-                       }
-               }
-               return null;
-       }
+//     //** ********************** QUESTIONS ******************************/
+//
+//     /** 
+//      * Returns the {@link Representation question} formulation that
+//      * corresponds to <i>this</i> feature node and the corresponding
+//      * {@link Feature feature} in case it is part of a 
+//      * {@link PolytomousKey polytomous key}.
+//      */
+//     public Set<Representation> getQuestions() {
+//             return this.questions;
+//     }
+//
+//     public void addQuestion(Representation question) {
+//             this.questions.add(question);
+//     }
+//
+//     public void removeQuestion(Representation question) {
+//             this.questions.remove(question);
+//     }
+//
+//     @Transient
+//     public Representation getQuestion(Language lang) {
+//             for (Representation question : questions){
+//                     Language reprLanguage = question.getLanguage();
+//                     if (reprLanguage != null && reprLanguage.equals(lang)){
+//                             return question;
+//                     }
+//             }
+//             return null;
+//     }
        
        /**
         * Returns all features that are contained in this node or a child node
@@ -497,24 +519,25 @@ public class FeatureNode extends VersionableEntity {
                
                return features;
        }
-       
-       //** ********************** TAXON ******************************/
-       
-       /** 
-        * Returns the {@link Taxon taxon} <i>this</i> terminal node is
-        * associated with.
-        */
-       public Taxon getTaxon() {
-               return taxon;
-       }
 
-       /**
-        * Assigns the given taxon to <i>this</i> feature node.
-        * 
-        * @param       taxon   the taxon to be set 
-        * @see                         #getTaxon() 
-        */
-       public void setTaxon(Taxon taxon) {
-               this.taxon = taxon;
-       }
+       
+//     //** ********************** TAXON ******************************/
+//     
+//     /** 
+//      * Returns the {@link Taxon taxon} <i>this</i> terminal node is
+//      * associated with.
+//      */
+//     public Taxon getTaxon() {
+//             return taxon;
+//     }
+//
+//     /**
+//      * Assigns the given taxon to <i>this</i> feature node.
+//      * 
+//      * @param       taxon   the taxon to be set 
+//      * @see                         #getTaxon() 
+//      */
+//     public void setTaxon(Taxon taxon) {
+//             this.taxon = taxon;
+//     }
 }
\ No newline at end of file
index 8a8f568cd26347e9e9028b0c5b5d71ef1b9002be..33f7d0e5fddac28c2951e9fdd34269c12f9f7183 100644 (file)
@@ -83,6 +83,7 @@ public class FeatureTree extends TermBase {
        protected FeatureTree() {
                super();
                root = FeatureNode.NewInstance();
+               root.setFeatureTree(this);
        }
 
        /** 
index ca8766b772515d7fac296e5323bafb66f000dafa..34fb914b49ed5adf2ebb1393f147a681edbb41ba 100644 (file)
@@ -16,19 +16,22 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
 /**\r
+ * \r
  * @author a.mueller\r
  * @created 22.07.2009\r
  * @version 1.0\r
  */\r
 public interface IIdentificationKey {\r
-           public Set<NamedArea> getGeographicalScope();\r
-           public void addGeographicalScope(NamedArea geographicalScope);\r
-           public void removeGeographicalScope(NamedArea geographicalScope);\r
-           public Set<Taxon> getTaxonomicScope();\r
-           public void addTaxonomicScope(Taxon taxon);\r
-           public void removeTaxonomicScope(Taxon taxon);\r
-           public Set<Scope> getScopeRestrictions();\r
-           public Set<Taxon> getCoveredTaxa();\r
-           public void addCoveredTaxon(Taxon taxon);\r
-           public void removeCoveredTaxon(Taxon taxon);\r
+    public Set<NamedArea> getGeographicalScope();\r
+    public void addGeographicalScope(NamedArea geographicalScope);\r
+    public void removeGeographicalScope(NamedArea geographicalScope);\r
+    public Set<Taxon> getTaxonomicScope();\r
+    public void addTaxonomicScope(Taxon taxon);\r
+    public void removeTaxonomicScope(Taxon taxon);\r
+    public void addScopeRestriction(Scope scope);\r
+    public void removeScopeRestriction(Scope scope);\r
+    public Set<Scope> getScopeRestrictions();\r
+    public Set<Taxon> getCoveredTaxa();\r
+    public void addCoveredTaxon(Taxon taxon);\r
+    public void removeCoveredTaxon(Taxon taxon);\r
 }\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/KeyStatement.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/KeyStatement.java
new file mode 100644 (file)
index 0000000..1cc4244
--- /dev/null
@@ -0,0 +1,205 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.cdm.model.description;\r
+\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import javax.persistence.Entity;\r
+import javax.persistence.FetchType;\r
+import javax.persistence.OneToMany;\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
+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.IndexedEmbedded;\r
+\r
+import eu.etaxonomy.cdm.jaxb.MultilanguageTextAdapter;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;\r
+import eu.etaxonomy.cdm.model.common.TermBase;\r
+import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
+\r
+/**\r
+ * This class represents a statement or a question within a (polytomous) key.\r
+ * Compare with SDD SimpleRepresentation.\r
+ * \r
+ * @author a.mueller\r
+ *\r
+ */\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+@XmlType(name = "KeyStatement", propOrder = {\r
+    "label"\r
+//    ,"mediaObject"\r
+})\r
+@XmlRootElement(name = "KeyStatement")\r
+@Entity\r
+@Audited\r
+public class KeyStatement extends VersionableEntity {\r
+       private static final long serialVersionUID = 3771323100914695139L;\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(KeyStatement.class);\r
\r
+       \r
+       @XmlElement(name = "MultiLanguageText")\r
+    @XmlJavaTypeAdapter(MultilanguageTextAdapter.class)\r
+    @OneToMany (fetch= FetchType.LAZY)\r
+    @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN })\r
+//    @IndexedEmbedded\r
+    private Map<Language, LanguageString> label = new HashMap<Language, LanguageString>();\r
+       \r
+       //private mediaObjects needs to be discussed (how to implement the role of the media)\r
+\r
+       \r
+          \r
+       public static KeyStatement NewInstance(){\r
+               KeyStatement result = new KeyStatement();\r
+               return result;\r
+       }\r
+\r
+       \r
+       public static KeyStatement NewInstance(String defaultLabel){\r
+               KeyStatement result = new KeyStatement();\r
+               result.putLabel(defaultLabel, Language.DEFAULT());\r
+               return result;\r
+       }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       public KeyStatement() {\r
+       }\r
+\r
+// ********************************* METHODS ***************************/\r
+       \r
+       /** \r
+        * Returns the label with the content of <i>this</i> key statement. \r
+        * The different {@link LanguageString language strings} (texts) contained in the\r
+        * label should all have the same meaning.\r
+        * \r
+        * @see #getText(Language)\r
+        */\r
+    public Map<Language, LanguageString> getLabel() {\r
+               return label;\r
+       }\r
+    \r
+    /**\r
+     * Returns the label with the content of <i>this</i> key statement for\r
+     * a specific language.\r
+     * \r
+     * @param language the language in which the label is formulated\r
+     * @return\r
+     */\r
+    public LanguageString getLabel(Language language){\r
+       return label.get(language);\r
+    }\r
+    \r
+    public void setLabel(Map<Language,LanguageString> label) {\r
+       this.label = label;\r
+    }\r
+\r
+       /** \r
+        * Returns the text string in the given {@link Language language} with the content\r
+        * of <i>this</i> key statement.\r
+        * \r
+        * @param language      the language in which the label is formulated\r
+        * @see                         #getLabel(Language)\r
+        */ \r
+       public String getLabelText(Language language) {\r
+               LanguageString languageString = label.get(language);\r
+               if (languageString == null){\r
+                       return null;\r
+               }else{\r
+                       return languageString.getText();\r
+               }\r
+       }\r
+    \r
+    /**\r
+        * Returns the LanguageString in the preferred language. Preferred languages\r
+        * are specified by the parameter languages, which receives a list of\r
+        * Language instances in the order of preference. If no representation in\r
+        * any preferred languages is found the method falls back to return the\r
+        * Representation in Language.DEFAULT() and if necessary further falls back\r
+        * to return the first element found if any.\r
+        * \r
+        * TODO think about this fall-back strategy & \r
+        * see also {@link TermBase#getPreferredRepresentation(List)}\r
+        * \r
+        * @param languages\r
+        * @return\r
+        */\r
+       public LanguageString getPreferredLanguageString(List<Language> languages) {\r
+               return MultilanguageTextHelper.getPreferredLanguageString(label, languages);\r
+       }\r
+       \r
+       /**\r
+        * Creates a {@link LanguageString language string} based on the given text string\r
+        * and the given {@link Language language}, returns it and adds it to the multilanguage \r
+        * text representing the content of <i>this</i> text data.\r
+        * \r
+        * @param text          the string representing the content of the text data\r
+        *                                      in a particular language\r
+        * @param language      the language in which the text string is formulated\r
+        * @return                      the language string\r
+        * @see                         #getMultilanguageText()\r
+        * @see                         #putText(LanguageString)\r
+        */\r
+       public LanguageString putLabel(String label, Language language) {\r
+               LanguageString result = this.label.put(language , LanguageString.NewInstance(label, language));\r
+               return (result == null ? null : result);\r
+       }\r
+       /**\r
+        * Adds a translated {@link LanguageString text in a particular language}\r
+        * to the label.\r
+        * The given language string will be returned. \r
+        * \r
+        * @param languageString        the language string representing the content of\r
+        *                                                      the text data in a particular language\r
+        * @return                                      the language string\r
+        * @see                                         #getMultilanguageText()\r
+        * @see                                         #putText(String, Language)\r
+        */\r
+       public LanguageString putText(LanguageString languageString) {\r
+               if (languageString == null){\r
+                       return null;\r
+               }else{\r
+                       Language language = languageString.getLanguage();\r
+                       return this.label.put(language, languageString);\r
+               }\r
+       }\r
+       /** \r
+        * Removes from label the one {@link LanguageString language string}\r
+        * with the given {@link Language language}. Returns the removed\r
+        * language string.\r
+        *\r
+        * @param  language     the language in which the language string to be removed\r
+        *                                      has been formulated\r
+        * @return                      the language string associated with the given language\r
+        * @see                 #getLabelText()\r
+        */\r
+       public LanguageString removeText(Language language) {\r
+               return this.label.remove(language);\r
+       }\r
+       \r
+       /** \r
+        * Returns the number of {@link Language languages} in which the label\r
+        * of <i>this</i> key statement has been formulated.\r
+        * \r
+        * @see #getMultilanguageText()\r
+        */\r
+       public int countLanguages(){\r
+               return label.size();\r
+       }\r
+\r
+\r
+}\r
index 5388848f3aa3ec56975ebe0218c4c540ebb77996..5c35ed1fc14a2e0d1d6fcf73f717448d57c3a119 100644 (file)
@@ -91,8 +91,8 @@ public class MediaKey extends Media implements IIdentificationKey{
        @ManyToMany(fetch = FetchType.LAZY)
        @JoinTable(
                name="MediaKey_Taxon",
-               joinColumns=@JoinColumn(name="mediaKey_fk"),
-               inverseJoinColumns=@JoinColumn(name="taxon_fk")
+               joinColumns=@JoinColumn(name="mediaKey_id"),
+               inverseJoinColumns=@JoinColumn(name="taxon_id")
        )
        @NotNull
        private Set<Taxon> taxonomicScope = new HashSet<Taxon>();
index 96163e8c0a0bbc5cabc91935e7e4d321afee231b..7d5e8343acc7024ecf0f2498de48bcaf04f200a0 100644 (file)
@@ -78,8 +78,8 @@ public class MultiAccessKey extends WorkingSet implements IIdentificationKey{
        @ManyToMany(fetch = FetchType.LAZY)\r
        @JoinTable(\r
                name="MultiAccessKey_Taxon",\r
-               joinColumns=@JoinColumn(name="multiAccessKey_fk"),\r
-               inverseJoinColumns=@JoinColumn(name="taxon_fk")\r
+               joinColumns=@JoinColumn(name="multiAccessKey_id"),\r
+               inverseJoinColumns=@JoinColumn(name="taxon_id")\r
        )\r
        @NotNull\r
        private Set<Taxon> taxonomicScope = new HashSet<Taxon>();\r
index 7e1a3407a5f97bc3f1ffb6de8ab9f1ca57792985..9d5e7bf81fa188011379aaacf593633d32efdac3 100644 (file)
@@ -10,7 +10,6 @@
 \r
 package eu.etaxonomy.cdm.model.description;\r
 \r
-import java.io.OutputStream;\r
 import java.io.PrintStream;\r
 import java.util.HashSet;\r
 import java.util.Set;\r
@@ -20,6 +19,7 @@ import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;\r
 import javax.persistence.JoinTable;\r
 import javax.persistence.ManyToMany;\r
+import javax.persistence.OneToOne;\r
 import javax.validation.constraints.NotNull;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
@@ -31,13 +31,17 @@ import javax.xml.bind.annotation.XmlSchemaType;
 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.envers.Audited;\r
 import org.hibernate.search.annotations.Indexed;\r
+import org.hibernate.tool.hbm2x.StringUtils;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.Representation;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
 /**\r
@@ -46,11 +50,16 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
  * polytomous authored decision keys used to identify\r
  * {@link SpecimenOrObservationBase specimens or observations} (this means to\r
  * assign {@link Taxon taxa} to).\r
- * The different paths are expressed by a {@link FeatureTree decision tree}.\r
+ * The different paths are expressed by a {@link PolytomousKey decision tree}.\r
  * \r
  * @author h.fradin\r
  * @created 13.08.2009\r
  * @version 1.0\r
+ * \r
+ * @author a.mueller\r
+ * @created 08.11.2010\r
+ * @version 2.0\r
+\r
  */\r
 \r
 @XmlAccessorType(XmlAccessType.FIELD)\r
@@ -58,13 +67,14 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
     "coveredTaxa",\r
     "taxonomicScope",\r
     "geographicalScope",\r
-    "scopeRestrictions"\r
+    "scopeRestrictions",\r
+    "root"\r
 })\r
 @XmlRootElement(name = "PolytomousKey")\r
 @Entity\r
 @Indexed(index = "eu.etaxonomy.cdm.model.media.FeatureTree")\r
 @Audited\r
-public class PolytomousKey extends FeatureTree implements IIdentificationKey{\r
+public class PolytomousKey extends IdentifiableEntity implements IIdentificationKey{\r
        private static final long serialVersionUID = -3368243754557343942L;\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(PolytomousKey.class);\r
@@ -84,8 +94,8 @@ public class PolytomousKey extends FeatureTree implements IIdentificationKey{
        @ManyToMany(fetch = FetchType.LAZY)\r
        @JoinTable(\r
                name="PolytomousKey_Taxon",\r
-               joinColumns=@JoinColumn(name="polytomousKey_fk"),\r
-               inverseJoinColumns=@JoinColumn(name="taxon_fk")\r
+               joinColumns=@JoinColumn(name="polytomousKey_id"),\r
+               inverseJoinColumns=@JoinColumn(name="taxon_id")\r
        )\r
        @NotNull\r
        private Set<Taxon> taxonomicScope = new HashSet<Taxon>();\r
@@ -108,6 +118,11 @@ public class PolytomousKey extends FeatureTree implements IIdentificationKey{
        @NotNull\r
        private Set<Scope> scopeRestrictions = new HashSet<Scope>();\r
        \r
+       @XmlElement(name = "Root")\r
+       @OneToOne(fetch = FetchType.LAZY)\r
+       @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})\r
+       private PolytomousKeyNode root;\r
+       \r
 //******************************** STATIC METHODS ********************************/    \r
        \r
        /** \r
@@ -118,7 +133,7 @@ public class PolytomousKey extends FeatureTree implements IIdentificationKey{
        }\r
        \r
        /** \r
-        * Creates a new empty identification multi-access key instance.\r
+        * Creates a new empty identification polytomous key instance.\r
         */\r
        public static PolytomousKey NewTitledInstance(String title){\r
                PolytomousKey result = new PolytomousKey();\r
@@ -134,6 +149,28 @@ public class PolytomousKey extends FeatureTree implements IIdentificationKey{
         */\r
        protected PolytomousKey() {\r
                super();\r
+               root = PolytomousKeyNode.NewRootInstance();\r
+               root.setKey(this);\r
+       }\r
+       \r
+       \r
+//************************ GETTER/ SETTER \r
+       \r
+       \r
+       /** \r
+        * Returns the topmost {@link PolytomousKeyNode polytomous key node} (root node) of <i>this</i>\r
+        * polytomous key. The root node does not have any parent. Since polytomous key nodes\r
+        * recursively point to their child nodes the complete polytomous key is\r
+        * defined by its root node.\r
+        */\r
+       public PolytomousKeyNode getRoot() {\r
+               return root;\r
+       }\r
+       /**\r
+        * @see #getRoot() \r
+        */\r
+       public void setRoot(PolytomousKeyNode root) {\r
+               this.root = root;\r
        }\r
        \r
        /** \r
@@ -282,41 +319,109 @@ public class PolytomousKey extends FeatureTree implements IIdentificationKey{
        private class IntegerObject{\r
                int number = 0;\r
                int inc(){return number++;};\r
-               @Override public String toString(){ return String.valueOf(number);}\r
+               @Override \r
+               public String toString(){ \r
+                       return String.valueOf(number);\r
+               }\r
        }\r
        \r
        public String print(PrintStream stream){\r
                String title = this.getTitleCache() + "\n";\r
                String strPrint = title;\r
-               stream.print(title);\r
                \r
-               FeatureNode root = this.getRoot();\r
-               IntegerObject no = new IntegerObject();\r
-               no.inc();\r
-               strPrint += printNode(root, "  ", no, "Root", stream);\r
+               if (stream != null){\r
+                       stream.print(title);\r
+               }\r
+               \r
+               PolytomousKeyNode root = this.getRoot();\r
+               strPrint += printNode(root, null, "  ", stream);\r
                return strPrint;\r
        }\r
 \r
-       private String printNode(FeatureNode node, String identation, IntegerObject no, String myNumber, PrintStream stream) {\r
-               int myInt = no.number;\r
-               String result = identation + myNumber + ". ";\r
+       \r
+       /**\r
+        * TODO this is a preliminary implementation\r
+        * @param node\r
+        * @param identation\r
+        * @param no\r
+        * @param myNumber\r
+        * @param stream\r
+        * @return\r
+        */\r
+       private String printNode(PolytomousKeyNode node, PolytomousKeyNode parent2, String identation, PrintStream stream) {\r
+               String separator = ", ";\r
+               \r
+               String result = identation + node.getNodeNumber() + ". ";\r
                if (node != null){\r
-                       result += node.getFeature() == null ? "" : (node.getFeature().getTitleCache() + " - ");\r
-                       Representation question = node.getQuestion(Language.DEFAULT());\r
-                       result +=  ( question == null ? "" : (question.getText()))  ;\r
-                       result +=  ( node.getTaxon() == null ? "" : ": " + node.getTaxon().getName().getTitleCache())  ;\r
-                       result += "\n";\r
-                       stream.print(result);\r
+                       //key choice\r
+                       String question = null;\r
+                       String feature = null;\r
+                       if (node.getQuestion() != null){\r
+                               question = node.getQuestion().getLabelText(Language.DEFAULT());\r
+                       }\r
+                       if (node.getFeature() != null){\r
+                               feature = node.getFeature().getLabel(Language.DEFAULT());\r
+                       }\r
+                       result +=  CdmUtils.concat(" - ", question, feature) + "\n" ; ;\r
+                       \r
+                       //Leads\r
                        char nextCounter = 'a';\r
-                       if (! node.getChildren().isEmpty()){\r
-                               no.inc();\r
+                       for (PolytomousKeyNode child: node.getChildren()){\r
+                               String leadNumber = String.valueOf(nextCounter++);\r
+                               if (child.getStatement() != null){\r
+                                       String statement = child.getStatement().getLabelText(Language.DEFAULT());\r
+                                       result +=  identation + "  " + leadNumber + ") " + ( statement == null ? "" : (statement));\r
+                                       result += " ... ";\r
+                                       // child node\r
+                                       if (! child.isLeaf()){\r
+                                               result += child.getNodeNumber() + separator;\r
+                                       }\r
+                                       //taxon\r
+                                       if (child.getTaxon() != null){\r
+                                               String strTaxon = "";\r
+                                               if (child.getTaxon().getName() != null){\r
+                                                       strTaxon = child.getTaxon().getName().getTitleCache() ;\r
+                                               }else{\r
+                                                       strTaxon = child.getTaxon().getTitleCache() ;\r
+                                               }\r
+                                               result +=  strTaxon + separator;\r
+                                       }\r
+                                       //subkey\r
+                                       if (child.getSubkey() != null){\r
+                                               String subkey = child.getSubkey().getTitleCache();\r
+                                               result += subkey + separator;\r
+                                       }\r
+                                       //other node\r
+                                       if (child.getOtherNode() != null){\r
+                                               PolytomousKeyNode otherNode = child.getOtherNode();\r
+                                               String otherNodeString = null;\r
+                                               if (child.getKey().equals(otherNode.getKey())){\r
+                                                       otherNodeString = String.valueOf(otherNode.getNodeNumber());\r
+                                               }else{\r
+                                                       otherNodeString = otherNode.getKey() + " " + otherNode.getNodeNumber();\r
+                                               }\r
+                                               result += otherNodeString + separator;\r
+                                       }\r
+                                       \r
+                                       result = StringUtils.chompLast(result, separator);\r
+                                       result += "\n"; \r
+                               }\r
+                       }\r
+\r
+                       if (stream != null){\r
+                               stream.print(result);\r
                        }\r
-                       for (FeatureNode child : node.getChildren()){\r
-                               String nextNumber = myInt + String.valueOf(nextCounter++);\r
-                               result += printNode(child, identation + "  ", no, nextNumber, stream);\r
+                       for (PolytomousKeyNode child : node.getChildren()){\r
+                               if (! child.isLeaf()){\r
+                                       result += printNode(child, node, identation + "", stream);\r
+                               }\r
                        }\r
                }\r
                return result;\r
        }\r
-       \r
+//\r
+//     public List<PolytomousKeyNode> getChildren() {\r
+//             return getRoot().getChildren();\r
+//     }\r
+\r
 }\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PolytomousKeyNode.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/PolytomousKeyNode.java
new file mode 100644 (file)
index 0000000..237fef1
--- /dev/null
@@ -0,0 +1,635 @@
+/**
+ * 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.description;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+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.Cascade;
+import org.hibernate.annotations.CascadeType;
+import org.hibernate.annotations.IndexColumn;
+import org.hibernate.envers.Audited;
+
+import eu.etaxonomy.cdm.jaxb.MultilanguageTextAdapter;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.common.MultilanguageText;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.common.VersionableEntity;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+
+/**
+ * The class represents a node within a {@link PolytomousKey polytomous key} structure.
+ * A polytomous key node can be referenced from multiple other nodes. Therefore a node does
+ * not have a single parent. Nevertheless it always belongs to a main key though it may be
+ * referenced also by other key nodes.
+ * 
+ * @author  a.mueller
+ * @created 13-Oct-2010
+ * 
+ */
+@SuppressWarnings("serial")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PolytomousKeyNode", propOrder = {
+               "key",
+               "children",
+               "sortIndex",
+               "nodeNumber",
+               "statement",
+               "question",
+               "feature",
+               "taxon",
+               "subkey",
+               "otherNode",
+               "modifyingText"
+})
+@XmlRootElement(name = "FeatureNode")
+@Entity
+@Audited
+public class PolytomousKeyNode extends VersionableEntity  {
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(PolytomousKeyNode.class);
+    
+    //This is the main key a node belongs to. Although other keys may also reference
+       //<code>this</code> node, a node usually belongs to a given key.
+       @XmlElement(name = "PolytomousKey")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+       private PolytomousKey key;
+    
+    @XmlElementWrapper(name = "Children")
+    @XmlElement(name = "Child")
+//    @OrderColumn("sortIndex")  //JPA 2.0 same as @IndexColumn
+    // @IndexColumn does not work because not every FeatureNode has a parent. But only NotNull will solve the problem (otherwise 
+    // we will need a join table 
+    // http://stackoverflow.com/questions/2956171/jpa-2-0-ordercolumn-annotation-in-hibernate-3-5
+    // http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype-indexbidir
+    //see also https://forum.hibernate.org/viewtopic.php?p=2392563
+    //http://opensource.atlassian.com/projects/hibernate/browse/HHH-4390
+    // reading works, but writing doesn't
+    //
+    @IndexColumn(name="sortIndex", base = 0)
+    @JoinColumn(name="parent_id")
+    @OrderBy("sortIndex")
+       @OneToMany(fetch = FetchType.LAZY /*, mappedBy="parent"*/)
+       @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})
+       private List<PolytomousKeyNode> children = new ArrayList<PolytomousKeyNode>();
+
+    //see comment on children @IndexColumn
+    private Integer sortIndex;
+       @XmlElement(name = "Statement")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN})
+       private KeyStatement statement;
+
+       @XmlElement(name = "Question")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN})
+       private KeyStatement question;
+
+       @XmlElement(name = "Feature")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+       private Feature feature;
+       
+       @XmlElement(name = "Taxon")
+       @XmlIDREF
+       @XmlSchemaType(name = "IDREF")
+       @ManyToOne(fetch = FetchType.LAZY)
+       @Cascade(CascadeType.SAVE_UPDATE)
+       private Taxon taxon;
+       
+    //Refers to an entire key
+       //<code>this</code> node, a node usually belongs to a given key.
+       @XmlElement(name = "SubKey")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+       @Cascade(CascadeType.SAVE_UPDATE)
+       private PolytomousKey subkey;
+       
+    //Refers to an other node within this key or an other key
+       @XmlElement(name = "PolytomousKey")
+    @XmlIDREF
+    @XmlSchemaType(name = "IDREF")
+    @ManyToOne(fetch = FetchType.LAZY)
+       private PolytomousKeyNode otherNode;
+       
+       private Integer nodeNumber = 0;
+    
+    
+       //a modifying text may be a text like "an unusual form of", commenting the taxa
+       //TODO should be available for each taxon/result
+       @XmlElement(name = "ModifyingText")
+    @XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
+    @OneToMany(fetch = FetchType.LAZY)
+//    @JoinTable(name = "DescriptionElementBase_ModifyingText")
+    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})
+       private Map<Language,LanguageString> modifyingText = new HashMap<Language,LanguageString>();
+
+    
+       
+       /** 
+        * Class constructor: creates a new empty feature node instance.
+        */
+       protected PolytomousKeyNode() {
+               super();
+       }
+
+       /** 
+        * Creates a new empty polytomous key node instance.
+        */
+       public static PolytomousKeyNode NewInstance(){
+               return new PolytomousKeyNode();
+       }
+       
+       /** 
+        * Creates a new empty polytomous key node instance and sets the node number to 0.
+        */
+       public static PolytomousKeyNode NewRootInstance(){
+               PolytomousKeyNode result = new PolytomousKeyNode();
+               result.setNodeNumber(0);
+               return result;
+       }
+
+       /** 
+        * Creates a new polytomous key node instance.
+        * 
+        */
+       public static PolytomousKeyNode NewInstance(String statement){
+               PolytomousKeyNode result = new PolytomousKeyNode();
+               result.setStatement(KeyStatement.NewInstance(statement));
+               return result;
+       }
+       
+       /** 
+        * Creates a new polytomous key node instance.
+        * 
+        */
+       public static PolytomousKeyNode NewInstance(String statement, String question, Taxon taxon, Feature feature){
+               PolytomousKeyNode result = new PolytomousKeyNode();
+               result.setTaxon(taxon);
+               result.setStatement(KeyStatement.NewInstance(statement));
+               result.setQuestion(KeyStatement.NewInstance(question));
+               result.setFeature(feature);
+               return result;
+       }
+
+       
+       //** ********************** CHILDREN ******************************/
+
+       
+       /**
+        * @return
+        */
+       public PolytomousKey getKey() {
+               return key;
+       }
+
+       /**
+        * @param key
+        */
+       public void setKey(PolytomousKey key) {
+               this.key = key;
+       }
+       
+
+       /**
+        * The node number is the number of the node within the key. This corresponds to the
+        * number for key choices in written keys.
+        */
+       public Integer getNodeNumber() {
+               return nodeNumber;
+       }
+       
+       /**
+        * Is computed automatically and therefore should not be set by the user.
+        */
+       private void setNodeNumber(Integer nodeNumber) {
+               this.nodeNumber = nodeNumber;
+       }
+
+
+       
+       /** 
+        * Returns the (ordered) list of feature nodes which are children nodes of
+        * <i>this</i> feature node.
+        */
+       public List<PolytomousKeyNode> getChildren() {
+               return children;
+       }
+
+       /**
+        * Adds the given polytomous key node at the end of the list of children of
+        * <i>this</i> polytomous key node. 
+        * 
+        * @param       child   the feature node to be added 
+        * @see                         #getChildren() 
+        * @see                         #setChildren(List)
+        * @see                         #addChild(PolytomousKeyNode, int) 
+        * @see                         #removeChild(PolytomousKeyNode)
+        * @see                         #removeChild(int) 
+        */
+       public void addChild(PolytomousKeyNode child){
+               addChild(child, children.size());
+       }
+       /**
+        * Inserts the given child node in the list of children of <i>this</i> polytomous key node
+        * at the given (index + 1) position. If the given index is out of bounds
+        * an exception will be thrown.<BR>
+        * 
+        * @param       child   the polytomous key node to be added 
+        * @param       index   the integer indicating the position at which the child
+        *                                      should be added 
+        * @see                         #getChildren() 
+        * @see                         #setChildren(List)
+        * @see                         #addChild(PolytomousKeyNode) 
+        * @see                         #removeChild(PolytomousKeyNode)
+        * @see                         #removeChild(int) 
+        */
+       public void addChild(PolytomousKeyNode child, int index){
+               if (index < 0 || index > children.size() + 1){
+                       throw new IndexOutOfBoundsException("Wrong index: " + index);
+               }
+               
+               children.add(index, child);
+               child.setKey(this.getKey());
+               //TODO workaround (see sortIndex doc)
+               for(int i = 0; i < children.size(); i++){
+                       children.get(i).sortIndex = i;
+               }
+               child.sortIndex = index;
+               updateNodeNumber();
+               
+       }
+       private void updateNodeNumber() {
+               int nodeNumber = 0;
+               PolytomousKeyNode root = getKey().getRoot();
+               root.setNodeNumber(nodeNumber++);
+               nodeNumber = updateChildNodeNumbers(nodeNumber, root);
+               
+       }
+
+       private int updateChildNodeNumbers(int nodeNumber, PolytomousKeyNode parent) {
+               if (parent.isLeaf()){
+                       parent.setNodeNumber(null);
+               }else{
+                       for (PolytomousKeyNode child : parent.getChildren()){
+                               child.setNodeNumber(nodeNumber++);
+                               nodeNumber = updateChildNodeNumbers(nodeNumber, child);
+                       }
+               }
+               return nodeNumber;
+       }
+
+       /** 
+        * Removes the given polytomous key node from the list of {@link #getChildren() children}
+        * of <i>this</i> polytomous key node.
+        *
+        * @param  child        the feature node which should be removed
+        * @see                 #getChildren()
+        * @see                         #addChild(PolytomousKeyNode, int) 
+        * @see                         #addChild(PolytomousKeyNode) 
+        * @see                         #removeChild(int) 
+        */
+       public void removeChild(PolytomousKeyNode child){
+               int index = children.indexOf(child);
+               if (index >= 0){
+                       removeChild(index);
+               }
+       }
+       /** 
+        * Removes the feature node placed at the given (index + 1) position from
+        * the list of {@link #getChildren() children} of <i>this</i> feature node.
+        * If the given index is out of bounds no child will be removed. 
+        *
+        * @param  index        the integer indicating the position of the feature node to
+        *                                      be removed
+        * @see                 #getChildren()
+        * @see                         #addChild(PolytomousKeyNode, int) 
+        * @see                         #addChild(PolytomousKeyNode) 
+        * @see                         #removeChild(PolytomousKeyNode) 
+        */
+       public void removeChild(int index){
+               children.remove(index);
+               
+               PolytomousKeyNode child = children.get(index);
+               if (child != null){
+                       children.remove(index);
+//                     child.setParent(null);
+                       //TODO workaround (see sortIndex doc)
+                       for(int i = 0; i < children.size(); i++){
+                               PolytomousKeyNode childAt = children.get(i);
+                               childAt.sortIndex = i;
+               }
+                       child.sortIndex = null;
+               }
+               updateNodeNumber();
+       }
+
+       /** 
+        * Returns the feature node placed at the given (childIndex + 1) position
+        * within the list of {@link #getChildren() children} of <i>this</i> feature node.
+        * If the given index is out of bounds no child will be returned. 
+        * 
+        * @param  childIndex   the integer indicating the position of the feature node
+        * @see                         #getChildren()
+        * @see                                 #addChild(PolytomousKeyNode, int) 
+        * @see                                 #removeChild(int) 
+        */
+       public PolytomousKeyNode getChildAt(int childIndex) {
+                       return children.get(childIndex);
+       }
+
+       /** 
+        * Returns the number of children nodes of <i>this</i> feature node.
+        * 
+        * @see #getChildren()
+        */
+       @Transient
+       public int childCount() {
+               return children.size();
+       }
+
+       /** 
+        * Returns the integer indicating the position of the given feature node
+        * within the list of {@link #getChildren() children} of <i>this</i> feature node.
+        * If the list does not contain this node then -1 will be returned. 
+        * 
+        * @param  node the feature node the position of which is being searched
+        * @see                 #addChild(PolytomousKeyNode, int) 
+        * @see                 #removeChild(int) 
+        */
+       public int getIndex(PolytomousKeyNode node) {
+               if (! children.contains(node)){
+                       return -1;
+               }else{
+                       return children.indexOf(node);
+               }
+       }
+
+       /** 
+        * Returns the boolean value indicating if <i>this</i> feature node has
+        * children (false) or not (true). A node without children is at the
+        * bottommost level of a tree and is called a leaf.
+        * 
+        * @see #getChildren()
+        * @see #getChildCount()
+        */
+       @Transient
+       public boolean isLeaf() {
+               return children.size() < 1;
+       }
+
+       
+       //** ********************** QUESTIONS AND STATEMENTS ******************************/
+
+       /**
+        * Returns the statement for <code>this</code> PolytomousKeyNode. If the user
+        * agrees with the statement, the node will be followed.
+        * @return the statement
+        * @see #getQuestion()
+        */
+       public KeyStatement getStatement() {
+               return statement;
+       }
+       
+       /**
+        * This is a convenience method to set the statement text for this node 
+        * in the given language. <BR>
+        * If no statement exists yet a new statement is created. <BR>
+        * If a statement text in the given language exists already it is overwritten 
+        * and the old text is returned.
+        * If language is <code>null</code> the default language is used instead.
+        *  
+        * @param text the statement text
+        * @param language the language of the statement text
+        * @return the old statement text in the given language as LanguageString
+        */
+        public LanguageString addStatementText(String text, Language language){
+               if (language == null){
+                       language = Language.DEFAULT();
+               }
+               if (this.statement == null){
+                       setStatement(KeyStatement.NewInstance());
+               }
+               return getStatement().putLabel(text, language);
+       }
+
+       /**
+        * @param statement
+        * @see #getStatement()
+        */
+       public void setStatement(KeyStatement statement) {
+               this.statement = statement;
+       }
+
+       /**
+        * Returns the question for <code>this</code> PolytomousKeyNode. <BR>
+        * A question is answered by statements in leads below this tree node.
+        * Questions are optional and are usually empty in traditional keys. 
+        * @return the statement
+        * @see #getStatement()
+        */
+       public KeyStatement getQuestion() {
+               return question;
+       }
+       
+       /**
+        * This is a convenience method to sets the question text for this node 
+        * in the given language. <BR>
+        * If no question exists yet a new question is created. <BR>
+        * If a question text in the given language exists already it is overwritten 
+        * and the old text is returned.
+        * If language is <code>null</code> the default language is used instead.
+        *  
+        * @param text
+        * @param language
+        * @return
+        */
+        public LanguageString addQuestionText(String text, Language language){
+               if (language == null){
+                       language = Language.DEFAULT();
+               }
+               if (this.question == null){
+                       setQuestion(KeyStatement.NewInstance());
+               }
+               return getQuestion().putLabel(text, language);
+       }
+
+       /**
+        * @param question
+        * @see #getQuestion()
+        */
+       public void setQuestion(KeyStatement question) {
+               this.question = question;
+       }
+       
+       
+//**************** modifying text ***************************************
+       
+       /** 
+        * Returns the {@link MultilanguageText multilanguage text} used to qualify the validity
+        * of <i>this</i> description element.  The different {@link LanguageString language strings}
+        * contained in the multilanguage text should all have the same meaning.<BR>
+        * A multilanguage text does not belong to a controlled {@link TermVocabulary term vocabulary}
+        * as a {@link Modifier modifier} does.
+        * <P>
+        * NOTE: the actual content of <i>this</i> description element is NOT
+        * stored in the modifying text. This is only metainformation
+        * (like "Some experts express doubt about this assertion").
+        */
+       public Map<Language,LanguageString> getModifyingText(){
+               return this.modifyingText;
+       }
+
+
+
+       /**
+        * Adds a translated {@link LanguageString text in a particular language}
+        * to the {@link MultilanguageText multilanguage text} used to qualify the validity
+        * of <i>this</i> description element.
+        * 
+        * @param description   the language string describing the validity
+        *                                              in a particular language
+        * @see                                 #getModifyingText()
+        * @see                                 #addModifyingText(String, Language)
+        */
+       public LanguageString addModifyingText(LanguageString description){
+               return this.modifyingText.put(description.getLanguage(),description);
+       }
+       /**
+        * Creates a {@link LanguageString language string} based on the given text string
+        * and the given {@link Language language} and adds it to the {@link MultilanguageText multilanguage text} 
+        * used to qualify the validity of <i>this</i> description element.
+        * 
+        * @param text          the string describing the validity
+        *                                      in a particular language
+        * @param language      the language in which the text string is formulated
+        * @see                         #getModifyingText()
+        * @see                         #addModifyingText(LanguageString)
+        */
+       public LanguageString addModifyingText(String text, Language language){
+               return this.modifyingText.put(language, LanguageString.NewInstance(text, language));
+       }
+       /** 
+        * Removes from the {@link MultilanguageText multilanguage text} used to qualify the validity
+        * of <i>this</i> description element the one {@link LanguageString language string}
+        * with the given {@link Language language}.
+        *
+        * @param  language     the language in which the language string to be removed
+        *                                      has been formulated
+        * @see                 #getModifyingText()
+        */
+       public LanguageString removeModifyingText(Language language){
+               return this.modifyingText.remove(language);
+       }
+
+
+       /**
+        * Returns the taxon this node links to. This is usually the case when this node is a leaf.
+        * 
+        * @return
+        * @see #setTaxon(Taxon)
+        * @see #getSubkey()
+        * @see #getChildren()
+        * @see #getOtherNode()
+        */
+       public Taxon getTaxon() {
+               return taxon;
+       }
+       
+       /**
+        * Sets the taxon this node links to. <BR>
+        * If a tax
+        * @param taxon
+        * @see #getTaxon()
+        */
+       public void setTaxon(Taxon taxon) {
+               this.taxon = taxon;
+       }
+
+       /**
+        * @return
+        * @see #setSubkey(PolytomousKey)
+        * @see #getTaxon()
+        * @see #getChildren()
+        * @see #getOtherNode()
+        */
+       public PolytomousKey getSubkey() {
+               return subkey;
+       }
+
+       /**
+        * @param subkey
+        * @see #getSubkey()
+        */
+       public void setSubkey(PolytomousKey subkey) {
+               this.subkey = subkey;
+       }
+
+       /**
+        * @return
+        * @see #setOtherNode(PolytomousKeyNode)
+        * @see #getTaxon()
+        * @see #getChildren()
+        * @see #getSubkey()
+        */
+       public PolytomousKeyNode getOtherNode() {
+               return otherNode;
+       }
+
+       /**
+        * @param otherNode
+        * @see #getOtherNode()
+        */
+       public void setOtherNode(PolytomousKeyNode otherNode) {
+               this.otherNode = otherNode;
+       }
+
+//     TODO
+       public void setFeature(Feature feature) {
+               this.feature = feature;
+       }
+
+       public Feature getFeature() {
+               return feature;
+       }
+
+       
+
+}
\ No newline at end of file
index fec1bcf3b52741711a5934a32ff3b1484c244eb2..9d5addb3fdadc97b478fae5566df282a5e786ec8 100644 (file)
@@ -92,7 +92,7 @@ public class TaxonDescription extends DescriptionBase<IIdentifiableEntityCacheSt
        @ManyToOne(fetch = FetchType.LAZY)
        @XmlIDREF
        @XmlSchemaType(name="IDREF")
-       @JoinColumn(name="taxon_fk")
+//     @JoinColumn(name="taxon_fk")
        @Cascade(CascadeType.SAVE_UPDATE)
        private Taxon taxon;
 
index fec7254f6cdaeb2ba27affc6eccd082f5274b731..1cf4adc20c4e02bcfd51061e202fae067d621ee0 100644 (file)
@@ -60,7 +60,7 @@ public class TaxonNameDescription extends DescriptionBase<IIdentifiableEntityCac
        @XmlIDREF
        @XmlSchemaType(name="IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
-       @JoinColumn(name="taxonName_fk")
+//     @JoinColumn(name="taxonName_id")
        @Cascade(CascadeType.SAVE_UPDATE)
        private TaxonNameBase<?,?> taxonName;
 
index 0b462da82d8d450e2558ead111397639066c5471..4914da3d0b043755c50522df0cf5ff50c9440011 100644 (file)
@@ -10,7 +10,6 @@
 package eu.etaxonomy.cdm.model.description;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -145,16 +144,30 @@ public class TextData extends DescriptionElementBase {
        }
 
        /** 
-        * Returns the multilanguage text with the content of <i>this</i> text data. 
+        * Returns a copy of the multilanguage text with the content of <i>this</i> text data. 
         * The different {@link LanguageString language strings} (texts) contained in the
         * multilanguage text should all have the same meaning.
         * 
         * @see #getText(Language)
         */
     public Map<Language, LanguageString> getMultilanguageText() {
-               return multilanguageText;
+               HashMap<Language, LanguageString> result = new HashMap<Language, LanguageString>();
+               result.putAll(multilanguageText);
+               return result;
+//     return multilanguageText;
        }
     
+//    /**
+//     * Sets the multilanguage text. 
+//      * The different {@link LanguageString language strings} (texts) contained in the
+//      * multilanguage text should all have the same meaning.
+//     * 
+//     * @param multilanguageText
+//     */
+//    private void setMultilanguageText(Map<Language,LanguageString> multilanguageText) {
+//     this.multilanguageText = multilanguageText;
+//    }
+    
     /**
      * Returns the multilanguage text with the content of <i>this</i> text data for
      * a specific language.
@@ -163,20 +176,26 @@ public class TextData extends DescriptionElementBase {
      * @return
      */
     public LanguageString getLanguageText(Language language){
-       return multilanguageText.get(language);
-    }
-    
-    /**
-     * @deprecated Method name is misleading. Use {@link #getLanguageText(Language)} instead.
-     */
-    @Deprecated
-    public LanguageString getMultilanguageText(Language language){
-       return multilanguageText.get(language);
+       //work around for the problem that contains does not work correctly in persisted maps.
+       //This is because the persisted uuid is not present when loading the map key and
+       //therefore the hash code for language is not computed correctly
+       //see DescriptionElementDaoHibernateTest and #2114
+//     for (Map.Entry<Language, LanguageString> entry : multilanguageText.entrySet()){
+//             if (entry.getKey() != null){
+//                     if (entry.getKey().equals(language)){
+//                             return entry.getValue();
+//                     }
+//             }else{
+//                     if (language == null){
+//                             return entry.getValue();
+//                     }
+//             }
+//     }
+//     return null;
+       //old
+       return getMultilanguageText().get(language);
     }
-    public void setMultilanguageText(Map<Language,LanguageString> multilanguageText) {
-       this.multilanguageText = multilanguageText;
-    }
-
        /** 
         * Returns the text string in the given {@link Language language} with the content
         * of <i>this</i> text data.
@@ -185,7 +204,7 @@ public class TextData extends DescriptionElementBase {
         * @see                         #getMultilanguageText(Language)
         */ 
        public String getText(Language language) {
-               LanguageString languageString = multilanguageText.get(language);
+               LanguageString languageString = getLanguageText(language);
                if (languageString == null){
                        return null;
                }else{
@@ -208,7 +227,7 @@ public class TextData extends DescriptionElementBase {
         * @return
         */
        public LanguageString getPreferredLanguageString(List<Language> languages) {
-               return MultilanguageTextHelper.getPreferredLanguageString(multilanguageText, languages);
+               return MultilanguageTextHelper.getPreferredLanguageString(getMultilanguageText(), languages);
        }
        
        /**
@@ -224,9 +243,25 @@ public class TextData extends DescriptionElementBase {
         * @see                         #putText(LanguageString)
         */
        public LanguageString putText(String text, Language language) {
-               LanguageString result = this.multilanguageText.put(language , LanguageString.NewInstance(text, language));
+               fixHashMapHibernateBug();
+               //** end workaround
+               LanguageString languageString = multilanguageText.get(language);
+               if (languageString != null){
+                       languageString.setText(text);
+               }else{
+                       languageString = LanguageString.NewInstance(text, language);
+               }
+               LanguageString result = this.multilanguageText.put(language , languageString);
                return (result == null ? null : result);
        }
+
+       private void fixHashMapHibernateBug() {
+               //workaround for key problem
+               HashMap<Language, LanguageString> tmp = new HashMap<Language, LanguageString>();
+               tmp.putAll(multilanguageText);
+               multilanguageText.clear();
+               multilanguageText.putAll(tmp);
+       }
        /**
         * Adds a translated {@link LanguageString text in a particular language}
         * to the multilanguage text representing the content of <i>this</i> text data.
@@ -259,6 +294,7 @@ public class TextData extends DescriptionElementBase {
         * @see                 #getMultilanguageText()
         */
        public LanguageString removeText(Language language) {
+               fixHashMapHibernateBug();               
                return this.multilanguageText.remove(language);
        }
        
@@ -288,5 +324,33 @@ public class TextData extends DescriptionElementBase {
        public void setFormat(TextFormat format) {
                this.format = format;
        }
+       
+       /**
+        * @see {@link java.util.Map#containsKey(Object)}
+        * @param language
+        * @return
+        */
+       public boolean containsKey(Language language){
+               return getMultilanguageText().containsKey(language);
+       }
+       
+       /**
+        * @see {@link java.util.Map#containsValue(Object)}
+        * @param languageString
+        * @return
+        */
+       public boolean containsValue(LanguageString languageString){
+               return getMultilanguageText().containsValue(languageString);
+       }
+       
+       
+       /**
+        * Returns the number of languages available for this text data.
+        * @see {@link java.util.Map#size()}
+        * @return
+        */
+       public int size(){
+               return this.multilanguageText.size();
+       }
 
 }
\ No newline at end of file
index 01e56285267732c81d4be580a4fad23fd911cced..02677c0c9a68a940a2f54765c9fad52473ccefdc 100644 (file)
@@ -211,7 +211,7 @@ public class WorkingSet extends AnnotatableEntity {
        public FeatureTree getDescriptiveSystem() {\r
                return descriptiveSystem;\r
        }\r
-       protected void setDescriptiveSystem(FeatureTree descriptiveSystem) {\r
+       public void setDescriptiveSystem(FeatureTree descriptiveSystem) {\r
                this.descriptiveSystem = descriptiveSystem;\r
        }\r
        \r
index 1f240b49efdc83e90e29552bf6cbd799624baef0..164c7e1fc6b357a69f6ff82fb8393612617114e3 100644 (file)
@@ -9,6 +9,8 @@
 
 package eu.etaxonomy.cdm.model.media;
 
+import java.net.URI;
+
 import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
 
@@ -39,7 +41,7 @@ public class AudioFile extends MediaRepresentationPart {
        @XmlElement(name = "Duration")
        private int duration;
 
-       public static AudioFile NewInstance(String uri, Integer size){
+       public static AudioFile NewInstance(URI uri, Integer size){
                logger.debug("NewInstance");
                return new AudioFile(uri, size);
        }
@@ -62,7 +64,7 @@ public class AudioFile extends MediaRepresentationPart {
        /**
         * Constructor
         */
-       protected AudioFile(String uri, Integer size) {
+       protected AudioFile(URI uri, Integer size) {
                super(uri, size);
        }
        
index 34eeeffe4f3feaa63a98996d6e672c0786fd34fc..b742d69278ce895440420bae785a573010515abc 100644 (file)
@@ -10,6 +10,8 @@
 package eu.etaxonomy.cdm.model.media;
 
 
+import java.net.URI;
+
 import javax.persistence.Entity;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -49,16 +51,16 @@ public class ImageFile extends MediaRepresentationPart {
        @XmlElement(name = "Width")
        private int width;
 
-       public static ImageFile NewInstance(String uri, Integer size){
+       public static ImageFile NewInstance(URI uri, Integer size){
                logger.debug("NewInstance");
                return new ImageFile(uri, size);
        }
        
-       public static ImageFile NewInstance(String uri, Integer size, Integer height, Integer width){
+       public static ImageFile NewInstance(URI uri, Integer size, Integer height, Integer width){
                return new ImageFile(uri, size, height, width);
        }
        
-       public static ImageFile NewInstance(String uri, Integer size, ImageMetaData imageMetaData){
+       public static ImageFile NewInstance(URI uri, Integer size, ImageMetaData imageMetaData){
                return new ImageFile(uri, size, imageMetaData.getHeight(), imageMetaData.getWidth());
        }
        
@@ -74,7 +76,7 @@ public class ImageFile extends MediaRepresentationPart {
         * @param width the width of the image file
         * @return
         */
-       public static Media NewMediaInstance(DateTime mediaCreated, AgentBase artist, String uri, String mimeType, String suffix, Integer size, Integer height, Integer width){
+       public static Media NewMediaInstance(DateTime mediaCreated, AgentBase artist, URI uri, String mimeType, String suffix, Integer size, Integer height, Integer width){
                Media media = Media.NewInstance();
                media.setMediaCreated(mediaCreated);
                media.setArtist(artist);
@@ -92,11 +94,11 @@ public class ImageFile extends MediaRepresentationPart {
                super();
        }
        
-       protected ImageFile(String uri, Integer size){
+       protected ImageFile(URI uri, Integer size){
                super(uri, size);
        }
        
-       protected ImageFile(String uri, Integer size, Integer height, Integer width){
+       protected ImageFile(URI uri, Integer size, Integer height, Integer width){
                super(uri, size);
                if (height != null){
                        this.setHeight(height);
index 02fcd75a5f486ac33aee965eb06205490ad41218..429d5b448ebcdd91e8fbc110cf60777dc4b1a251 100644 (file)
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.cdm.model.media;
 
+import java.net.URI;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -79,6 +80,7 @@ import eu.etaxonomy.cdm.validation.Level2;
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
 public class Media extends IdentifiableEntity implements Cloneable {
        private static final long serialVersionUID = -1927421567263473658L;
+       @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(Media.class);
 
     // TODO once hibernate annotations support custom collection type
@@ -144,7 +146,7 @@ public class Media extends IdentifiableEntity implements Cloneable {
         * Returns <code>null</code> if uri is empty
         * @return Media
         */
-       public static Media NewInstance(String uri, Integer size, String mimeType, String suffix){
+       public static Media NewInstance(URI uri, Integer size, String mimeType, String suffix){
                MediaRepresentation representation = MediaRepresentation.NewInstance(mimeType, suffix, uri, size);
                if (representation == null){
                        return null;
@@ -285,12 +287,7 @@ public class Media extends IdentifiableEntity implements Cloneable {
        }
 
        //************* Descriptions
-       
-       @Deprecated // will be removed in next release; use getAllDescriptions instead
-       public Map<Language,LanguageString> getDescription(){
-               return getAllDescriptions();
-       }
-       
+
        public Map<Language,LanguageString> getAllDescriptions(){
                if(this.description == null) {
                        this.description = new HashMap<Language,LanguageString>();
index 7221cfc57950acb167f5438eb1aa6acd13c258f9..78deb1fe1a2ffc190fc78eef78b3b283593886d9 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.cdm.model.media;
 
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -114,12 +115,12 @@ public class MediaRepresentation extends VersionableEntity implements Cloneable{
        
        /**
         * Factory method which creates a new media representation and adds a media representation part
-        * for the <code>uri</code> and the given size.
+        * for the {@link URI uri} and the given size.
         * Returns <code>null</code> if uri is empty
         * @return
         */
-       public static MediaRepresentation NewInstance(String mimeType, String suffix, String uri, Integer size){
-               if (CdmUtils.isEmpty(uri)){
+       public static MediaRepresentation NewInstance(String mimeType, String suffix, URI uri, Integer size){
+               if (uri == null || CdmUtils.isEmpty(uri.toString())){
                        return null;
                }
                MediaRepresentationPart part = MediaRepresentationPart.NewInstance(uri, size);
index 31d2feb45c1f7ea764c79356bea6d0a44a39fe85..e6db308a3aee3a7e6d3372632d7d46480b77c6b4 100644 (file)
@@ -9,6 +9,8 @@
 \r
 package eu.etaxonomy.cdm.model.media;\r
 \r
+import java.net.URI;\r
+\r
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
 import javax.persistence.JoinColumn;\r
@@ -23,6 +25,7 @@ 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.Type;\r
 import org.hibernate.envers.Audited;\r
 \r
 import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
@@ -46,11 +49,13 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity;
 @Audited\r
 public class MediaRepresentationPart extends VersionableEntity implements Cloneable{\r
        private static final long serialVersionUID = -1674422508643785796L;\r
+       @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(MediaRepresentationPart.class);\r
 \r
        // where the media file is stored\r
        @XmlElement(name = "URI")\r
-       private String uri;\r
+       @Type(type="uriUserType")\r
+       private URI uri;\r
 \r
        // in bytes\r
        @XmlElement(name = "Size")\r
@@ -70,7 +75,7 @@ public class MediaRepresentationPart extends VersionableEntity implements Clonea
         * \r
         * @return\r
         */\r
-       public static MediaRepresentationPart NewInstance(String uri, Integer size) {\r
+       public static MediaRepresentationPart NewInstance(URI uri, Integer size) {\r
                MediaRepresentationPart result = new MediaRepresentationPart(uri, size);\r
                return result;\r
        }\r
@@ -85,7 +90,7 @@ public class MediaRepresentationPart extends VersionableEntity implements Clonea
        /**\r
         * \r
         */\r
-       protected MediaRepresentationPart(String uri, Integer size) {\r
+       protected MediaRepresentationPart(URI uri, Integer size) {\r
                this();\r
                this.setUri(uri);\r
                this.setSize(size);\r
@@ -105,7 +110,7 @@ public class MediaRepresentationPart extends VersionableEntity implements Clonea
                this.mediaRepresentation = mediaRepresentation;\r
        }\r
 \r
-       public String getUri() {\r
+       public URI getUri() {\r
                return this.uri;\r
        }\r
 \r
@@ -114,7 +119,7 @@ public class MediaRepresentationPart extends VersionableEntity implements Clonea
         * @param uri\r
         *            uri\r
         */\r
-       public void setUri(String uri) {\r
+       public void setUri(URI uri) {\r
                this.uri = uri;\r
        }\r
 \r
index 41e230000de759036d6e7ea7e42d89d4d5091932..16ebc9a8b64761e58807fc1fa130828f562ef279 100644 (file)
@@ -9,6 +9,8 @@
 
 package eu.etaxonomy.cdm.model.media;
 
+import java.net.URI;
+
 import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
 
@@ -40,7 +42,7 @@ public class MovieFile extends MediaRepresentationPart {
        @XmlElement(name = "Duration")
        private int duration;
 
-       public static MovieFile NewInstance(String uri, Integer size){
+       public static MovieFile NewInstance(URI uri, Integer size){
                logger.debug("NewInstance");
                return new MovieFile(uri, size);
        }
@@ -63,7 +65,7 @@ public class MovieFile extends MediaRepresentationPart {
        /**
         * Constructor
         */
-       protected MovieFile(String uri, Integer size) {
+       protected MovieFile(URI uri, Integer size) {
                super(uri, size);
        }
        
index cb07a01fd813c7ce3d3065078cfb108c3c9449c9..d5dbf1bdbda58e908120384e4a55cd47463c5ce3 100644 (file)
@@ -27,7 +27,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.common.IReferencedEntity;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
  * @author m.doering
@@ -54,13 +54,13 @@ public abstract class ReferencedMedia extends Media implements IReferencedEntity
        @XmlSchemaType(name = "IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade(CascadeType.SAVE_UPDATE)
-       private ReferenceBase citation;
+       private Reference citation;
 
-       public ReferenceBase getCitation(){
+       public Reference getCitation(){
                return this.citation;
        }
        
-       public void setCitation(ReferenceBase citation){
+       public void setCitation(Reference citation){
                this.citation = citation;
        }
 
index 9254a3f3b36c1307d384ed6a859888db74b221fc..fe96e8770805dde13b0e5005fa55ed4d3a6f8022 100644 (file)
@@ -45,7 +45,7 @@ import eu.etaxonomy.cdm.model.common.IReferencedEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.media.IMediaDocumented;
 import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.common.IdentifiableEntityDefaultCacheStrategy;
 
@@ -104,14 +104,14 @@ public class Sequence extends IdentifiableEntity<IIdentifiableEntityCacheStrateg
     @XmlSchemaType(name = "IDREF")
     @ManyToOne(fetch = FetchType.LAZY)
     @Cascade(CascadeType.SAVE_UPDATE)
-       private ReferenceBase publishedIn;
+       private Reference publishedIn;
        
        @XmlElementWrapper(name = "Citations")
        @XmlElement(name = "Citation")
     @XmlIDREF
     @XmlSchemaType(name = "IDREF")
     @OneToMany(fetch = FetchType.LAZY)
-       private Set<ReferenceBase> citations = new HashSet<ReferenceBase>();
+       private Set<Reference> citations = new HashSet<Reference>();
        
        @XmlElementWrapper(name = "GenBankAccessions")
        @XmlElement(name = "GenBankAccession")
@@ -146,24 +146,24 @@ public class Sequence extends IdentifiableEntity<IIdentifiableEntityCacheStrateg
                this.locus = locus;
        }
 
-       public ReferenceBase getPublishedIn(){
+       public Reference getPublishedIn(){
                return this.publishedIn;
        }
        
-       public void setPublishedIn(ReferenceBase publishedIn){
+       public void setPublishedIn(Reference publishedIn){
                this.publishedIn = publishedIn;
        }
 
-       public Set<ReferenceBase> getCitations() {
+       public Set<Reference> getCitations() {
                return citations;
        }
-       protected void setCitations(Set<ReferenceBase> citations) {
+       protected void setCitations(Set<Reference> citations) {
                this.citations = citations;
        }
-       public void addCitation(ReferenceBase citation) {
+       public void addCitation(Reference citation) {
                this.citations.add(citation);
        }
-       public void removeCitation(ReferenceBase citation) {
+       public void removeCitation(Reference citation) {
                this.citations.remove(citation);
        }
 
@@ -256,7 +256,7 @@ public class Sequence extends IdentifiableEntity<IIdentifiableEntityCacheStrateg
                this.citationMicroReference = citationMicroReference;
        }
 
-       public ReferenceBase getCitation(){
+       public Reference getCitation(){
                return publishedIn;
        }
 }
\ No newline at end of file
index ab47d2ea3bacb86af3724349c3c2e3f3560ce5f0..274fc78d5c03285e8eafd60c2a50353840f94bd7 100644 (file)
@@ -31,7 +31,7 @@ import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.TaxonComparator;
 
@@ -357,7 +357,7 @@ public class HomotypicalGroup extends AnnotatableEntity {
         * @see                 TaxonNameBase#getTaxa()
         * @see                 taxon.Synonym
         */
-       public List<Synonym> getSynonymsInGroup(ReferenceBase sec){
+       public List<Synonym> getSynonymsInGroup(Reference sec){
                List<Synonym> result = new ArrayList();
                for (TaxonNameBase<?, ?>name : this.getTypifiedNames()){
                        for (Synonym synonym : name.getSynonyms()){
@@ -385,7 +385,7 @@ public class HomotypicalGroup extends AnnotatableEntity {
        setGroupBasionym(basionymName, null, null, null);
     }  
     
-       public void setGroupBasionym(TaxonNameBase basionymName, ReferenceBase citation, String microCitation, String ruleConsidered) 
+       public void setGroupBasionym(TaxonNameBase basionymName, Reference citation, String microCitation, String ruleConsidered) 
                        throws IllegalArgumentException {
        if (! typifiedNames.contains(basionymName)){
                throw new IllegalArgumentException("Name to be set as basionym/original combination must be part of the homotypical group but is not");
index 46dd3ee3a0ee33f11f296a0f769aeb8084120410..6e2be51bf2d2a95f6265054fa87ca960e5f40fcc 100644 (file)
@@ -26,7 +26,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
  * The class representing a hybrid relationship between one of the {@link BotanicalName parents}
@@ -104,7 +104,7 @@ public class HybridRelationship extends RelationshipBase<NonViralName, NonViralN
         * @param fromName                      the taxon name to be set as source for the new hybrid relationship
         * @param type                          the relationship type to be assigned to the new hybrid relationship
         * @param ruleConsidered        the string indicating the article of the ICBN for the hybrid taxon name
-        * @see                                         #HybridRelationship(BotanicalName, BotanicalName, HybridRelationshipType, ReferenceBase, String, String)
+        * @see                                         #HybridRelationship(BotanicalName, BotanicalName, HybridRelationshipType, Reference, String, String)
         * @see                                         BotanicalName#addHybridRelationship(HybridRelationship)
         */
        protected HybridRelationship(NonViralName hybridName, NonViralName parentName, HybridRelationshipType type, String ruleConsidered) {
@@ -113,7 +113,7 @@ public class HybridRelationship extends RelationshipBase<NonViralName, NonViralN
        
        /**
         * Class constructor: creates a new hybrid relationship instance including
-        * its {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} and adds it to the respective 
+        * its {@link eu.etaxonomy.cdm.model.reference.Reference reference source} and adds it to the respective 
         *{@link BotanicalName#getHybridRelationships() botanical taxon name relation sets} of both involved names.
         * 
         * @param toName                                the taxon name to be set as target for the new hybrid relationship
@@ -125,7 +125,7 @@ public class HybridRelationship extends RelationshipBase<NonViralName, NonViralN
         * @see                                                 #HybridRelationship(BotanicalName, BotanicalName, HybridRelationshipType, String)
         * @see                                                 BotanicalName#addHybridRelationship(HybridRelationship)
         */
-       protected HybridRelationship(NonViralName  hybridName, NonViralName parentName, HybridRelationshipType type, ReferenceBase citation, String citationMicroReference, String ruleConsidered) {
+       protected HybridRelationship(NonViralName  hybridName, NonViralName parentName, HybridRelationshipType type, Reference citation, String citationMicroReference, String ruleConsidered) {
                super(parentName, hybridName, type, citation, citationMicroReference);
                this.setRuleConsidered(ruleConsidered);
        }       
index 499561c3862ad6e8b02d73b28aa89a5da2b175e2..064f3c578fd9ef86e0517f5e9301d475a7b0d79b 100644 (file)
@@ -26,7 +26,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.validation.Level3;
 import eu.etaxonomy.cdm.validation.annotation.NamesWithHomotypicRelationshipsMustBelongToSameGroup;
 
@@ -104,7 +104,7 @@ public class NameRelationship extends RelationshipBase<TaxonNameBase, TaxonNameB
         * @param fromName                      the taxon name to be set as source for the new name relationship
         * @param type                          the relationship type to be assigned to the new name relationship
         * @param ruleConsidered        the string indicating the article of the nomenclatural code for the new name relationship
-        * @see                                         #NameRelationship(TaxonNameBase, TaxonNameBase, NameRelationshipType, ReferenceBase, String, String)
+        * @see                                         #NameRelationship(TaxonNameBase, TaxonNameBase, NameRelationshipType, Reference, String, String)
         * @see                                         TaxonNameBase#addNameRelationship(NameRelationship)
         * @see                                         TaxonNameBase#addRelationshipFromName(TaxonNameBase, NameRelationshipType, String)
         * @see                                         TaxonNameBase#addRelationshipToName(TaxonNameBase, NameRelationshipType, String)
@@ -115,7 +115,7 @@ public class NameRelationship extends RelationshipBase<TaxonNameBase, TaxonNameB
        
        /**
         * Class constructor: creates a new name relationship instance including
-        * its {@link  eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} and adds it to the respective 
+        * its {@link  eu.etaxonomy.cdm.model.reference.Reference reference source} and adds it to the respective 
         *{@link TaxonNameBase#getNameRelations() taxon name relation sets} of both involved names.
         * 
         * @param toName                                the taxon name to be set as target for the new name relationship
@@ -129,7 +129,7 @@ public class NameRelationship extends RelationshipBase<TaxonNameBase, TaxonNameB
         * @see                                                 TaxonNameBase#addRelationshipFromName(TaxonNameBase, NameRelationshipType, String)
         * @see                                                 TaxonNameBase#addRelationshipToName(TaxonNameBase, NameRelationshipType, String)
         */
-       protected NameRelationship(TaxonNameBase  toName, TaxonNameBase fromName, NameRelationshipType type, ReferenceBase citation, String citationMicroReference, String ruleConsidered) {
+       protected NameRelationship(TaxonNameBase  toName, TaxonNameBase fromName, NameRelationshipType type, Reference citation, String citationMicroReference, String ruleConsidered) {
                super(fromName, toName, type, citation, citationMicroReference);
                this.setRuleConsidered(ruleConsidered);
        }
index df57551d996c0a4951f127c4c7d52aa46e3be6e0..dcf0040b06587dfa5ce3a1defc7d0f5619cb3c9b 100644 (file)
@@ -26,7 +26,7 @@ import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
 
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
  * The class representing a typification of a {@link TaxonNameBase taxon name} with a {@link Rank rank}
@@ -89,7 +89,7 @@ implements ITypeDesignation {
        /** 
         * Class constructor: creates a new empty name type designation.
         * 
-        * @see #NameTypeDesignation(TaxonNameBase, ReferenceBase, String, String, boolean, boolean, boolean)
+        * @see #NameTypeDesignation(TaxonNameBase, Reference, String, String, boolean, boolean, boolean)
         */
        protected NameTypeDesignation() {
        }
@@ -97,7 +97,7 @@ implements ITypeDesignation {
 
        /**
         * Class constructor: creates a new name type designation instance
-        * (including its {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} and eventually
+        * (including its {@link eu.etaxonomy.cdm.model.reference.Reference reference source} and eventually
         * the taxon name string originally used by this reference when establishing
         * the former designation).
         * 
@@ -113,10 +113,10 @@ implements ITypeDesignation {
         *                                                              <i>this</i> name type designation
         * @see                                                 #NameTypeDesignation()
         * @see                                                 TypeDesignationBase#isNotDesignated()
-        * @see                                                 TaxonNameBase#addNameTypeDesignation(TaxonNameBase, ReferenceBase, String, String, boolean, boolean, boolean, boolean, boolean)
+        * @see                                                 TaxonNameBase#addNameTypeDesignation(TaxonNameBase, Reference, String, String, boolean, boolean, boolean, boolean, boolean)
         */
        protected NameTypeDesignation(TaxonNameBase typeName, NameTypeDesignationStatus status,
-                       ReferenceBase citation, String citationMicroReference, String originalNameString) {
+                       Reference citation, String citationMicroReference, String originalNameString) {
                super(citation, citationMicroReference, originalNameString);
                this.setTypeName(typeName);
                this.setTypeStatus(status);
@@ -124,7 +124,7 @@ implements ITypeDesignation {
 
        /**
         * Class constructor: creates a new name type designation instance
-        * (including its {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} and eventually
+        * (including its {@link eu.etaxonomy.cdm.model.reference.Reference reference source} and eventually
         * the taxon name string originally used by this reference when establishing
         * the former designation).
         * 
@@ -140,10 +140,10 @@ implements ITypeDesignation {
         *                                                              <i>this</i> name type designation
         * @see                                                 #NameTypeDesignation()
         * @see                                                 TypeDesignationBase#isNotDesignated()
-        * @see                                                 TaxonNameBase#addNameTypeDesignation(TaxonNameBase, ReferenceBase, String, String, boolean, boolean, boolean, boolean, boolean)
+        * @see                                                 TaxonNameBase#addNameTypeDesignation(TaxonNameBase, Reference, String, String, boolean, boolean, boolean, boolean, boolean)
         */
        protected NameTypeDesignation(  TaxonNameBase typeName, 
-                                                                       ReferenceBase citation, 
+                                                                       Reference citation, 
                                                                        String citationMicroReference,
                                                                        String originalNameString, 
                                                                        NameTypeDesignationStatus status, 
@@ -221,7 +221,7 @@ implements ITypeDesignation {
         * Returns the boolean value "true" if the use of the species {@link TaxonNameBase taxon name}
         * as the type for <i>this</i> taxon name type designation was posterior to the
         * publication of the typified taxon name. In this case the taxon name type
-        * designation should have a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference} that is different to the
+        * designation should have a {@link eu.etaxonomy.cdm.model.reference.Reference reference} that is different to the
         * {@link TaxonNameBase#getNomenclaturalReference() nomenclatural reference} of the typified taxon name.
         *  
         * @see   ReferencedEntityBase#getCitation()
index d116d288129efda9024802e516578fbecca1f2e5..f2a49cb3529663272e3fc85f204de22c3623f243 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.cdm.model.name;
 
 
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
@@ -81,7 +81,7 @@ public class NomenclaturalStatus extends ReferencedEntityBase {
         * 
         * @see #NomenclaturalStatus()
         */
-       public static NomenclaturalStatus NewInstance(NomenclaturalStatusType nomStatusType, ReferenceBase citation, String microCitation){
+       public static NomenclaturalStatus NewInstance(NomenclaturalStatusType nomStatusType, Reference citation, String microCitation){
                NomenclaturalStatus status = new NomenclaturalStatus();
                status.setType(nomStatusType);
                status.setCitation(citation);
index 7daf43202e5d6a702d7aa3fa633650a9b376ef58..ba9e24eaa8e6a1427439ef86357edf01f79c9f9f 100644 (file)
@@ -52,7 +52,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.name.CacheUpdate;
 import eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy;
@@ -72,7 +72,7 @@ import eu.etaxonomy.cdm.validation.annotation.NoDuplicateNames;
  * The taxon name class for all non viral taxa. Parenthetical authorship is derived
  * from basionym relationship. The scientific name including author strings and
  * maybe year can be stored as a string in the inherited {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache() titleCache} attribute.
- * The year itself is an information obtained from the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase#getYear() nomenclatural reference}.
+ * The year itself is an information obtained from the {@link eu.etaxonomy.cdm.model.reference.Reference#getYear() nomenclatural reference}.
  * The scientific name string without author strings and year can be stored in the {@link #getNameCache() nameCache} attribute.
  * <P>
  * This class corresponds partially to: <ul>
@@ -277,7 +277,7 @@ public class NonViralName<T extends NonViralName> extends TaxonNameBase<T, INonV
         * @see    #NewInstance(Rank, HomotypicalGroup)
         * @see    #NonViralName(Rank, HomotypicalGroup)
         * @see    #NonViralName()
-        * @see    #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, ReferenceBase, String, HomotypicalGroup)
+        * @see    #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, Reference, String, HomotypicalGroup)
         * @see    eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy
         * @see    eu.etaxonomy.cdm.strategy.cache.name.INameCacheStrategy
         * @see    eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy
@@ -299,7 +299,7 @@ public class NonViralName<T extends NonViralName> extends TaxonNameBase<T, INonV
         * @see    #NewInstance(Rank)
         * @see    #NonViralName(Rank, HomotypicalGroup)
         * @see    #NonViralName()
-        * @see    #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, ReferenceBase, String, HomotypicalGroup)
+        * @see    #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, Reference, String, HomotypicalGroup)
         * @see    eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy
         * @see    eu.etaxonomy.cdm.strategy.cache.name.INameCacheStrategy
         * @see    eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy
@@ -316,7 +316,7 @@ public class NonViralName<T extends NonViralName> extends TaxonNameBase<T, INonV
         * only containing the {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy default cache strategy}.
         * 
         * @see #NonViralName(Rank, HomotypicalGroup)
-        * @see #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, ReferenceBase, String, HomotypicalGroup)
+        * @see #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, Reference, String, HomotypicalGroup)
         * @see eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy
         * @see eu.etaxonomy.cdm.strategy.cache.name.INameCacheStrategy
         * @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy
@@ -337,7 +337,7 @@ public class NonViralName<T extends NonViralName> extends TaxonNameBase<T, INonV
         * @param       rank  the rank to be assigned to <i>this</i> non viral taxon name
         * @param       homotypicalGroup  the homotypical group to which <i>this</i> non viral taxon name belongs
         * @see         #NonViralName()
-        * @see         #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, ReferenceBase, String, HomotypicalGroup)
+        * @see         #NonViralName(Rank, String, String, String, String, TeamOrPersonBase, Reference, String, HomotypicalGroup)
         * @see         #NewInstance(Rank, HomotypicalGroup)
         * @see         eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy
         * @see         eu.etaxonomy.cdm.strategy.cache.name.INameCacheStrategy
@@ -352,7 +352,7 @@ public class NonViralName<T extends NonViralName> extends TaxonNameBase<T, INonV
         * containing its {@link Rank rank},
         * its {@link HomotypicalGroup homotypical group},
         * its scientific name components, its {@link eu.etaxonomy.cdm.model.agent.TeamOrPersonBase author(team)},
-        * its {@link eu.etaxonomy.cdm.model.reference.ReferenceBase nomenclatural reference} and
+        * its {@link eu.etaxonomy.cdm.model.reference.Reference nomenclatural reference} and
         * the {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy default cache strategy}.
         * The new non viral taxon name instance will be also added to the set of
         * non viral taxon names belonging to this homotypical group.
@@ -387,7 +387,7 @@ public class NonViralName<T extends NonViralName> extends TaxonNameBase<T, INonV
                setSpecificEpithet(specificEpithet);
                setInfraSpecificEpithet(infraSpecificEpithet);
                setCombinationAuthorTeam(combinationAuthorTeam);
-               setNomenclaturalReference((ReferenceBase)nomenclaturalReference);
+               setNomenclaturalReference((Reference)nomenclaturalReference);
                this.setNomenclaturalMicroReference(nomenclMicroRef);
        }
        
index 493597e41bfc44642f9f6527918ee9f876aa70d6..b1c9a4f358886e876f3a2bd5fda0a2fc3ec8c6e9 100644 (file)
@@ -29,7 +29,7 @@ import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
  * The class representing a typification of one or several {@link TaxonNameBase taxon names} by a
@@ -72,7 +72,7 @@ implements ITypeDesignation {
        
 //     /**
 //      * Creates a new specimen type designation instance
-//      * (including its {@link reference.ReferenceBase reference source} and eventually
+//      * (including its {@link reference.Reference reference source} and eventually
 //      * the taxon name string originally used by this reference when establishing
 //      * the former designation) and adds it to the corresponding 
 //      * {@link HomotypicalGroup#getSpecimenTypeDesignations() specimen type designation set} of the
@@ -83,12 +83,12 @@ implements ITypeDesignation {
 //      * @param citation                              the reference source for the new designation
 //      * @param citationMicroReference        the string with the details describing the exact localisation within the reference
 //      * @param originalNameString    the taxon name string used originally in the reference source for the new designation
-//      * @see                                                 #SpecimenTypeDesignation(DerivedUnitBase, TypeDesignationStatus, ReferenceBase, String, String)
+//      * @see                                                 #SpecimenTypeDesignation(DerivedUnitBase, TypeDesignationStatus, Reference, String, String)
 //      * @see                                                 HomotypicalGroup#addSpecimenTypeDesignation(SpecimenTypeDesignation, boolean)
 //      * @see                                                 occurrence.DerivedUnitBase
 //      */
 //     protected static SpecimenTypeDesignation NewInstance2(DerivedUnitBase specimen, TypeDesignationStatus status,
-//                     ReferenceBase citation, String citationMicroReference, String originalNameString){
+//                     Reference citation, String citationMicroReference, String originalNameString){
 //             SpecimenTypeDesignation specTypeDesig = new SpecimenTypeDesignation(specimen, status, citation, citationMicroReference, originalNameString);
 //             return specTypeDesig;
 //     }
@@ -99,7 +99,7 @@ implements ITypeDesignation {
         * Class constructor: creates a new empty specimen type designation.
         * 
         * @see #SpecimenTypeDesignation(DerivedUnitBase, SpecimenTypeDesignationStatus,
-        * ReferenceBase, String, String, boolean)
+        * Reference, String, String, boolean)
         */
        protected SpecimenTypeDesignation(){
        }
@@ -110,7 +110,7 @@ implements ITypeDesignation {
        
        /**
         * Class constructor: creates a new specimen type designation instance
-        * (including its {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} and 
+        * (including its {@link eu.etaxonomy.cdm.model.reference.Reference reference source} and 
         * eventually the taxon name string originally used by this reference when 
         * establishing the former designation).
         * 
@@ -125,11 +125,11 @@ implements ITypeDesignation {
         * @param isNotDesignated               the boolean flag indicating whether there is no specimen type at all for 
         *                                                              <i>this</i> specimen type designation
         * @see                                                 #SpecimenTypeDesignation()
-        * @see                                                 TaxonNameBase#addSpecimenTypeDesignation(Specimen, SpecimenTypeDesignationStatus, ReferenceBase, String, String, boolean, boolean)
+        * @see                                                 TaxonNameBase#addSpecimenTypeDesignation(Specimen, SpecimenTypeDesignationStatus, Reference, String, String, boolean, boolean)
         * @see                                                 TypeDesignationBase#isNotDesignated()
         * @see                                                 eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase
         */
-       protected SpecimenTypeDesignation(DerivedUnitBase specimen, SpecimenTypeDesignationStatus status, ReferenceBase citation, String citationMicroReference, 
+       protected SpecimenTypeDesignation(DerivedUnitBase specimen, SpecimenTypeDesignationStatus status, Reference citation, String citationMicroReference, 
                        String originalNameString, boolean isNotDesignated) {
                super(citation, citationMicroReference, originalNameString, isNotDesignated);
                this.setTypeSpecimen(specimen);
index 796164d19b7fa40f95eb2293c8c98c03cfc1f214..bd6a078c5592fc82bfa209bebc6deacde04ba1cc 100644 (file)
@@ -56,7 +56,7 @@ import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
@@ -231,7 +231,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
        @Cascade({CascadeType.SAVE_UPDATE})
        @CacheUpdate(noUpdate ="titleCache")
        @IndexedEmbedded
-       private ReferenceBase nomenclaturalReference;
+       private Reference nomenclaturalReference;
        
 // ************* CONSTRUCTORS *************/   
        /** 
@@ -401,7 +401,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see                                   #addRelationshipFromName(TaxonNameBase, NameRelationshipType, String)
         * @see                                   #addNameRelationship(NameRelationship)
         */
-       public NameRelationship addRelationshipToName(TaxonNameBase toName, NameRelationshipType type, ReferenceBase citation, String microCitation, String ruleConsidered){
+       public NameRelationship addRelationshipToName(TaxonNameBase toName, NameRelationshipType type, Reference citation, String microCitation, String ruleConsidered){
                if (toName == null){
                        throw new NullPointerException("Null is not allowed as name for a name relationship");
                }
@@ -443,7 +443,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see                                   #addRelationshipToName(TaxonNameBase, NameRelationshipType, String)
         * @see                                   #addNameRelationship(NameRelationship)
         */
-       public void addRelationshipFromName(TaxonNameBase fromName, NameRelationshipType type, ReferenceBase citation, String microCitation, String ruleConsidered){
+       public void addRelationshipFromName(TaxonNameBase fromName, NameRelationshipType type, Reference citation, String microCitation, String ruleConsidered){
                fromName.addRelationshipToName(this, type, citation, microCitation, ruleConsidered);
        }
 
@@ -701,7 +701,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see                                         #getBasionym()
         * @see                                         #addBasionym(TaxonNameBase)
         */
-       public NameRelationship addBasionym(T basionym, ReferenceBase citation, String microcitation, String ruleConsidered){
+       public NameRelationship addBasionym(T basionym, Reference citation, String microcitation, String ruleConsidered){
                if (basionym != null){
                        return basionym.addRelationshipToName(this, NameRelationshipType.BASIONYM(), citation, microcitation, ruleConsidered);
                }else{
@@ -722,7 +722,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see                                         #addBasionym(TaxonNameBase)
         */
        //TODO: Check if true: The replaced synonym cannot have itself a replaced synonym (?).
-       public void addReplacedSynonym(T replacedSynonym, ReferenceBase citation, String microcitation, String ruleConsidered){
+       public void addReplacedSynonym(T replacedSynonym, Reference citation, String microcitation, String ruleConsidered){
                if (replacedSynonym != null){
                        replacedSynonym.addRelationshipToName(this, NameRelationshipType.REPLACED_SYNONYM(), citation, microcitation, ruleConsidered);
                }
@@ -775,14 +775,14 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * requirements as specified by the corresponding {@link NomenclaturalCode nomenclatural code}.
         *
         * @see         eu.etaxonomy.cdm.model.reference.INomenclaturalReference
-        * @see         eu.etaxonomy.cdm.model.reference.ReferenceBase
+        * @see         eu.etaxonomy.cdm.model.reference.Reference
         */
        public INomenclaturalReference getNomenclaturalReference(){
                return this.nomenclaturalReference;
        }
        /**
         * Assigns a {@link eu.etaxonomy.cdm.model.reference.INomenclaturalReference nomenclatural reference} to <i>this</i> taxon name.
-        * The corresponding {@link eu.etaxonomy.cdm.model.reference.ReferenceBase.isNomenclaturallyRelevant nomenclaturally relevant flag} will be set to true
+        * The corresponding {@link eu.etaxonomy.cdm.model.reference.Reference.isNomenclaturallyRelevant nomenclaturally relevant flag} will be set to true
         * as it is obviously used for nomenclatural purposes.
         *
         * @throws IllegalArgumentException if parameter <code>nomenclaturalReference</code> is not assignable from {@link INomenclaturalReference}
@@ -793,7 +793,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
                        if(!INomenclaturalReference.class.isAssignableFrom(nomenclaturalReference.getClass())){
                                throw new IllegalArgumentException("Parameter nomenclaturalReference is not assignable from INomenclaturalReference");
                        }
-                       this.nomenclaturalReference = (ReferenceBase)nomenclaturalReference;
+                       this.nomenclaturalReference = (Reference)nomenclaturalReference;
                } else {
                        this.nomenclaturalReference = null;
                }
@@ -1001,7 +1001,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see                                                         TypeDesignationBase#isNotDesignated()
         */
        public NameTypeDesignation addNameTypeDesignation(TaxonNameBase typeSpecies, 
-                               ReferenceBase citation, 
+                               Reference citation, 
                                String citationMicroReference, 
                                String originalNameString, 
                                NameTypeDesignationStatus status,
@@ -1033,7 +1033,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see                                                         TypeDesignationBase#isNotDesignated()
         */
        public NameTypeDesignation addNameTypeDesignation(TaxonNameBase typeSpecies, 
-                               ReferenceBase citation, 
+                               Reference citation, 
                                String citationMicroReference, 
                                String originalNameString,
                                NameTypeDesignationStatus status,
@@ -1082,7 +1082,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         */
        public SpecimenTypeDesignation addSpecimenTypeDesignation(Specimen typeSpecimen, 
                                SpecimenTypeDesignationStatus status, 
-                               ReferenceBase citation, 
+                               Reference citation, 
                                String citationMicroReference, 
                                String originalNameString, 
                                boolean isNotDesignated, 
@@ -1181,7 +1181,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * @see #getNomenclaturalReference()
         */
        @Transient
-       public ReferenceBase getCitation(){
+       public Reference getCitation(){
                //TODO What is the purpose of this method differing from the getNomenclaturalReference method? 
                logger.warn("getCitation not yet implemented");
                return null;
@@ -1232,7 +1232,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase<?,?>, S extends INam
         * In this context a taxon base means the use of a taxon name by a reference
         * either as a {@link eu.etaxonomy.cdm.model.taxon.Taxon taxon} ("accepted/correct" name) or
         * as a (junior) {@link eu.etaxonomy.cdm.model.taxon.Synonym synonym}.
-        * A taxon name can be used by several distinct {@link eu.etaxonomy.cdm.model.reference.ReferenceBase references} but only once
+        * A taxon name can be used by several distinct {@link eu.etaxonomy.cdm.model.reference.Reference references} but only once
         * within a taxonomic treatment (identified by one reference).
         *
         * @see #getTaxa()
index c2da87a2b62aa7389031bfdfbd8876b40aed77fd..581e8590def838ad2d0e595d67d0de003c0c59c2 100644 (file)
@@ -32,7 +32,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;\r
 \r
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * The (abstract) class representing a typification of one or several {@link TaxonNameBase taxon names}.<BR>\r
@@ -98,7 +98,7 @@ public abstract class TypeDesignationBase<T extends TypeDesignationStatusBase> e
        /** \r
         * Class constructor: creates a new empty type designation.\r
         * \r
-        * @see #TypeDesignationBase(ReferenceBase, String, String, Boolean)\r
+        * @see #TypeDesignationBase(Reference, String, String, Boolean)\r
         */\r
        protected TypeDesignationBase(){\r
                super();\r
@@ -106,7 +106,7 @@ public abstract class TypeDesignationBase<T extends TypeDesignationStatusBase> e
        \r
        /**\r
         * Class constructor: creates a new type designation\r
-        * (including its {@link ReferenceBase reference source} and eventually\r
+        * (including its {@link Reference reference source} and eventually\r
         * the taxon name string originally used by this reference when establishing\r
         * the former designation).\r
         * \r
@@ -117,13 +117,13 @@ public abstract class TypeDesignationBase<T extends TypeDesignationStatusBase> e
         * @see                                                 #isNotDesignated()\r
         * @see                                                 TaxonNameBase#getTypeDesignations()\r
         */\r
-       protected TypeDesignationBase(ReferenceBase citation, String citationMicroReference, String originalNameString) {\r
+       protected TypeDesignationBase(Reference citation, String citationMicroReference, String originalNameString) {\r
                this(citation, citationMicroReference, originalNameString, false);\r
        }\r
 \r
        /**\r
         * Class constructor: creates a new type designation\r
-        * (including its {@link ReferenceBase reference source} and eventually\r
+        * (including its {@link Reference reference source} and eventually\r
         * the taxon name string originally used by this reference when establishing\r
         * the former designation).\r
         * \r
@@ -136,7 +136,7 @@ public abstract class TypeDesignationBase<T extends TypeDesignationStatusBase> e
         * @see                                                 #isNotDesignated()\r
         * @see                                                 TaxonNameBase#getTypeDesignations()\r
         */\r
-       protected TypeDesignationBase(ReferenceBase citation, String citationMicroReference, String originalNameString, boolean notDesignated){\r
+       protected TypeDesignationBase(Reference citation, String citationMicroReference, String originalNameString, boolean notDesignated){\r
                super(citation, citationMicroReference, originalNameString);\r
                this.notDesignated = notDesignated;\r
        }\r
index a260d9d1451e66a282f454a437775ef89fa1a29f..f73641a199339a707bff6c71280286bd500f149c 100644 (file)
@@ -67,7 +67,7 @@ public class DerivationEvent extends EventBase implements Cloneable{
        @XmlElement(name = "Derivative")
        @XmlIDREF
        @XmlSchemaType(name = "IDREF")
-       @OneToMany(fetch=FetchType.LAZY, mappedBy="derivationEvent")
+       @OneToMany(fetch=FetchType.LAZY, mappedBy="derivedFrom")
        @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})
        protected Set<DerivedUnitBase> derivatives = new HashSet<DerivedUnitBase>();
        
index f6f2120d767b386811ec29ecfea390d3cc2070c2..7bb7307a0445374311bf24e4e7037dfc7e1b92cd 100644 (file)
@@ -50,7 +50,7 @@ import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
     "collection",
     "catalogNumber",
     "storedUnder",
-    "derivationEvent",
+    "derivedFrom",
     "accessionNumber",
     "collectorsNumber",
     "barcode"
@@ -107,7 +107,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade(CascadeType.SAVE_UPDATE)
        @IndexedEmbedded(depth = 4)
-       private DerivationEvent derivationEvent;
+       private DerivationEvent derivedFrom;
 
        /**
         * Constructor
@@ -141,14 +141,14 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
 
 
        public DerivationEvent getDerivedFrom() {
-               return derivationEvent;
+               return derivedFrom;
        }
        
        public void setDerivedFrom(DerivationEvent derivedFrom){
                if (getDerivedFrom() != null){
                        getDerivedFrom().getDerivatives().remove(derivedFrom);
                }
-               this.derivationEvent = derivedFrom;
+               this.derivedFrom = derivedFrom;
                if (derivedFrom != null){
                        derivedFrom.addDerivative(this);
                }
@@ -226,7 +226,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
                //collection
                result.setCollection(this.collection);
                //derivedFrom
-               result.setDerivedFrom(this.derivationEvent);
+               result.setDerivedFrom(this.derivedFrom);
                //storedUnder
                result.setStoredUnder(this.storedUnder);
                //no changes to: accessionNumber, catalogNumber, collectorsNumber
index cee7ddd7af18256969dace0769286d41eecebeae..3caabda854e8c177374c3c89d5b0608a09850416 100644 (file)
@@ -38,7 +38,7 @@ import org.joda.time.Partial;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.EventBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 
 /**
@@ -90,7 +90,7 @@ public class DeterminationEvent extends EventBase {
        @XmlIDREF
        @XmlSchemaType(name = "IDREF")
        @ManyToMany(fetch = FetchType.LAZY)
-       private Set<ReferenceBase> setOfReferences = new HashSet<ReferenceBase>();
+       private Set<Reference> setOfReferences = new HashSet<Reference>();
 
        
        
@@ -167,15 +167,15 @@ public class DeterminationEvent extends EventBase {
                this.preferredFlag = preferredFlag;
        }
        
-       public Set<ReferenceBase> getReferences() {
+       public Set<Reference> getReferences() {
                return setOfReferences;
        }
 
-       public void setReferences(Set<ReferenceBase> references) {
+       public void setReferences(Set<Reference> references) {
                this.setOfReferences = references;
        }
        
-       public void addReference(ReferenceBase reference) {
+       public void addReference(Reference reference) {
                this.setOfReferences.add(reference);
        }
        
index a7f72db612f8833fdafbce15f7e5686f272fdc74..476a8dfae0d10258b80804399700eefd0a0cdcb1 100644 (file)
@@ -24,6 +24,7 @@ import org.hibernate.envers.Audited;
 import org.hibernate.search.annotations.Indexed;
 
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.description.AbsenceTerm;
 import eu.etaxonomy.cdm.model.description.Modifier;
 
 /**
@@ -42,7 +43,8 @@ public class DeterminationModifier extends Modifier {
        @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(DeterminationModifier.class);
 
-       private static final UUID uuidUnknown = UUID.fromString("00000000-0000-0000-0000-000000000000");
+       public static final UUID uuidConfer = UUID.fromString("20db670a-2db2-49cc-bbdd-eace33694b7f");
+       public static final UUID uuidAffinis = UUID.fromString("128f0b54-73e2-4efb-bfda-a6243185a562");
 
        protected static Map<UUID, DeterminationModifier> termMap = null;               
        
@@ -81,6 +83,25 @@ public class DeterminationModifier extends Modifier {
        
 //************************** METHODS ********************************
        
+       protected static DeterminationModifier getTermByUuid(UUID uuid){
+               if (termMap == null){
+                       return null;
+               }else{
+                       return (DeterminationModifier)termMap.get(uuid);
+               }
+       }
+
+       
+       public static final DeterminationModifier AFFINIS(){
+               return getTermByUuid(uuidAffinis);
+       }
+
+       public static final DeterminationModifier CONFER(){
+               return getTermByUuid(uuidConfer);
+       }
+
+       
+       
        /* (non-Javadoc)
         * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms()
         */
index 2e7f84c3fd5e12e85a67b58ae83fe4c25e6409b3..074587529f64579d81be5cf09c8705bc0a10efb4 100644 (file)
@@ -36,6 +36,7 @@ import org.hibernate.search.annotations.IndexedEmbedded;
 import org.hibernate.validator.constraints.Length;
 import org.springframework.beans.factory.annotation.Configurable;
 
+import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.common.IdentifiableEntityDefaultCacheStrategy;
 import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
@@ -50,6 +51,7 @@ import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "FieldObservation", propOrder = {
     "fieldNumber",
+    "primaryCollector",
     "fieldNotes",
     "gatheringEvent"
 })
@@ -67,6 +69,15 @@ public class FieldObservation extends SpecimenOrObservationBase<IIdentifiableEnt
        @Length(max = 255)
        private String fieldNumber;
        
+       @XmlElement(name = "PrimaryCollector")
+       @XmlIDREF
+       @XmlSchemaType(name = "IDREF")
+       @ManyToOne(fetch = FetchType.LAZY)
+    @Cascade( { CascadeType.SAVE_UPDATE })
+    @IndexedEmbedded(depth = 2)
+    @Valid
+       private Person primaryCollector;
+       
        @XmlElement(name = "FieldNotes")
        @Field(index=Index.TOKENIZED)
        @NullOrNotEmpty
@@ -90,6 +101,8 @@ public class FieldObservation extends SpecimenOrObservationBase<IIdentifiableEnt
                return new FieldObservation();
        }
        
+//****************************** CONSTRUCTOR **************************************/
+       
        /**
         * Constructor
         */
@@ -97,6 +110,8 @@ public class FieldObservation extends SpecimenOrObservationBase<IIdentifiableEnt
                super();
                this.cacheStrategy = new IdentifiableEntityDefaultCacheStrategy<FieldObservation>();
        }
+       
+// ************************ GETTER / SETTER *******************************************
 
        public GatheringEvent getGatheringEvent() {
        return gatheringEvent;
@@ -114,6 +129,12 @@ public class FieldObservation extends SpecimenOrObservationBase<IIdentifiableEnt
                }
        }
 
+       /**
+        * The collectors field number. If the collector is a team the field number
+        * is taken from the field book of the primary collector.
+        * @see #primaryCollector
+        * @return
+        */
        public String getFieldNumber() {
                return fieldNumber;
        }
@@ -122,6 +143,21 @@ public class FieldObservation extends SpecimenOrObservationBase<IIdentifiableEnt
                this.fieldNumber = fieldNumber;
        }
 
+
+       /**
+        * The primary collector is the person who the field books belongs to.
+        * So the field number is also taken from him (his field book).
+        * @see #fieldNumber
+        * @param primaryCollector
+        */
+       public void setPrimaryCollector(Person primaryCollector) {
+               this.primaryCollector = primaryCollector;
+       }
+
+       public Person getPrimaryCollector() {
+               return primaryCollector;
+       }
+       
        public String getFieldNotes() {
                return fieldNotes;
        }
@@ -168,4 +204,5 @@ public class FieldObservation extends SpecimenOrObservationBase<IIdentifiableEnt
                }
                
        }
+
 }
\ No newline at end of file
index 2e09f50735a48feb86d4773c5e9f9ce69d8f36bd..f6675b47935e8e24a108211981152542e3829799 100644 (file)
@@ -46,7 +46,7 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.Point;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.name.CacheUpdate;
 import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
 
index 675506d366bfa0c4be06444e1c86cc9fc8980b6a..f9ae25ef5ac36aeb6b8dccb2265c18c693ddeaa6 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.cdm.model.occurrence;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.ManyToOne;
+import javax.validation.constraints.Size;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -22,11 +23,14 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.log4j.Logger;
 import org.hibernate.envers.Audited;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
 import org.hibernate.search.annotations.Indexed;
 import org.springframework.beans.factory.annotation.Configurable;
 
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.common.IdentifiableEntityDefaultCacheStrategy;
+import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
 
 /**
  * A specimen is regarded as derived from an field observation, 
@@ -38,7 +42,8 @@ import eu.etaxonomy.cdm.strategy.cache.common.IdentifiableEntityDefaultCacheStra
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "Specimen", propOrder = {
-               "preservation"
+               "preservation",
+               "exsiccatum"
 })
 @XmlRootElement(name = "Specimen")
 @Entity
@@ -55,6 +60,14 @@ public class Specimen extends DerivedUnitBase<IIdentifiableEntityCacheStrategy<S
        @ManyToOne(fetch = FetchType.LAZY)
        private PreservationMethod preservation;
        
+       
+       @XmlElement(name = "Exsiccatum")
+       @NullOrNotEmpty
+       @Field(index=Index.TOKENIZED)
+       @Size(max = 255)
+    private String exsiccatum;
+       
+       
        /**
         * Factory method
         * @return
@@ -70,6 +83,8 @@ public class Specimen extends DerivedUnitBase<IIdentifiableEntityCacheStrategy<S
                super();
                this.cacheStrategy = new IdentifiableEntityDefaultCacheStrategy<Specimen>();
        }
+
+//***************************** GETTER / SETTER ************************************** 
        
        public PreservationMethod getPreservation(){
                return this.preservation;
@@ -78,6 +93,15 @@ public class Specimen extends DerivedUnitBase<IIdentifiableEntityCacheStrategy<S
        public void setPreservation(PreservationMethod preservation){
                this.preservation = preservation;
        }
+
+
+       public void setExsiccatum(String exsiccatum) {
+               this.exsiccatum = exsiccatum;
+       }
+
+       public String getExsiccatum() {
+               return exsiccatum;
+       }
        
        
 //*********** CLONE **********************************/        
@@ -105,6 +129,7 @@ public class Specimen extends DerivedUnitBase<IIdentifiableEntityCacheStrategy<S
                        return null;
                }
        }
+
        
 
 }
\ No newline at end of file
index 572e5e50881b7086d4564b15b3ab62fc3aedcab7..80155733ff6b496c3cb2d088bf6f0bc7f13e536a 100644 (file)
@@ -66,7 +66,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
        "sex",
     "individualCount",
     "lifeStage",
-    "description",
+    "definition",
     "descriptions",
     "determinations",
     "derivationEvents"
@@ -120,7 +120,7 @@ public abstract class SpecimenOrObservationBase<S extends IIdentifiableEntityCac
        @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN})
        @IndexedEmbedded
        @NotNull
-       protected Map<Language,LanguageString> description = new HashMap<Language,LanguageString>();
+       protected Map<Language,LanguageString> definition = new HashMap<Language,LanguageString>();
        
        // events that created derivedUnits from this unit
        @XmlElementWrapper(name = "DerivationEvents")
@@ -293,18 +293,18 @@ public abstract class SpecimenOrObservationBase<S extends IIdentifiableEntityCac
        }
 
        public Map<Language,LanguageString> getDefinition(){
-               return this.description;
+               return this.definition;
        }
        
        public void addDefinition(LanguageString description){
-               this.description.put(description.getLanguage(),description);
+               this.definition.put(description.getLanguage(),description);
        }
        
        public void addDefinition(String text, Language language){
-               this.description.put(language, LanguageString.NewInstance(text, language));
+               this.definition.put(language, LanguageString.NewInstance(text, language));
        }
        public void removeDefinition(Language lang){
-               this.description.remove(lang);
+               this.definition.remove(lang);
        }
        
        /**
@@ -332,8 +332,8 @@ public abstract class SpecimenOrObservationBase<S extends IIdentifiableEntityCac
                result = (SpecimenOrObservationBase)super.clone();
                
                //defininion (description, languageString)
-               result.description = new HashMap<Language,LanguageString>();
-               for(LanguageString languageString : this.description.values()) {
+               result.definition = new HashMap<Language,LanguageString>();
+               for(LanguageString languageString : this.definition.values()) {
                        LanguageString newLanguageString = (LanguageString)languageString.clone();
                        result.addDefinition(newLanguageString);
                } 
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Article.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Article.java
deleted file mode 100644 (file)
index 0e6a1b3..0000000
+++ /dev/null
@@ -1,305 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
-
-
-/**
- * This class represents articles in a {@link Journal journal}. An article is an independent
- * piece of prose written by an {@link TeamOrPersonBase author (team)} which is published among
- * other articles within a particular issue of a journal.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * terms (from PublicationTypeTerm): <ul>
- * <li> "JournalArticle"
- * <li> "NewspaperArticle"
- * <li> "MagazineArticle"
- * </ul>
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:10
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Article", propOrder = {
-//             "volume",
-//             "pages",
-//             "series",
-//             "inJournal"
-})
-@XmlRootElement(name = "Article")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Article extends ReferenceBase<INomenclaturalReferenceCacheStrategy<Article>> implements INomenclaturalReference, IVolumeReference, Cloneable {
-       private static final long serialVersionUID = -1528079480114388117L;
-       private static final Logger logger = Logger.getLogger(Article.class);
-       
-//    @XmlElement(name = "Series")
-//    @Field(index=Index.TOKENIZED)
-//     private String series;
-//     
-//    @XmlElement(name = "Volume")
-//    @Field(index=Index.TOKENIZED)
-//     private String volume;
-//     
-//    @XmlElement(name = "Pages")
-//    @Field(index=Index.TOKENIZED)
-//     private String pages;
-//     
-//    @XmlElement(name = "InJournal")
-//    @XmlIDREF
-//    @XmlSchemaType(name = "IDREF")
-//    @ManyToOne(fetch = FetchType.LAZY)
-//    @IndexedEmbedded
-//    @Cascade(CascadeType.SAVE_UPDATE)
-//     private Journal inJournal;
-
-
-       /** 
-        * Class constructor: creates a new empty article instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy
-        */
-       protected Article(){
-               super();
-               this.type = ReferenceType.Article;
-               this.cacheStrategy = ArticleDefaultCacheStrategy.NewInstance();
-       }       
-       
-       /** 
-        * Creates a new empty article instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see #Article()
-        * @see #NewInstance(Journal, TeamOrPersonBase, String, String, String, String, TimePeriod)
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy
-        */
-       public static Article NewInstance(){
-               Article result = new Article();
-               return result;
-       }
-       
-       /** 
-        * Creates a new article instance with the given values and with the
-        * {@link eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy default cache strategy}.
-        * 
-        * @param       inJournal               the journal in which <i>this</i> article has
-        *                                                      been published 
-        * @param       authorTeam              the team or person who wrote <i>this</i> article
-        * @param       articleTitle    the string representing the title of <i>this</i>
-        *                                                      article
-        * @param       pages                   the string representing the pages in the journal
-        *                                                      issue where <i>this</i> article can be found  
-        * @param       series                  the string representing the series (within the
-        *                                                      journal) in which <i>this</i> article has been 
-        *                                                      published
-        * @param       volume                  the string representing the volume of the journal
-        *                                                      in which <i>this</i> article has been published
-        * @param       datePublished   the date (time period) in which <i>this</i>
-        *                                                      article has been published
-        * @see                                         #NewInstance()
-        * @see                                         Journal
-        * @see                                         TeamOrPersonBase
-        * @see                                         TimePeriod
-        * @see                                         eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy
-        */
-       public static Article NewInstance(Journal inJournal, TeamOrPersonBase authorTeam, String articleTitle, String pages, String series, String volume, TimePeriod datePublished ){
-               Article result = new Article();
-               result.setInJournal(inJournal);
-               result.setTitle(articleTitle);
-               result.setPages(pages);
-               result.setAuthorTeam(authorTeam);
-               result.setSeries(series);
-               result.setDatePublished(datePublished);
-               result.setVolume(volume);
-               return result;
-       }
-       
-
-
-       /**
-        * Returns the {@link Journal journal} in which <i>this</i> article has been published.
-        * 
-        * @return  the journal
-        * @see         Journal
-        */
-       @Transient
-       public Journal getInJournal(){
-               if (inReference == null){
-                       return null;
-               }
-               if (! this.inReference.isInstanceOf(Journal.class)){
-                       throw new IllegalStateException("The in-reference of an article may only be of type Journal");
-               }
-               return CdmBase.deproxy(this.inReference,Journal.class);
-       }
-       
-       /**
-        * @see #getInJournal()
-        */
-       public void setInJournal(Journal inJournal){
-               this.inReference = inJournal;
-       }
-
-       /**
-        * Returns the string representing the series (within the journal) in which
-        * <i>this</i> article was published.
-        * 
-        * @return  the string identifying the series
-        */
-       public String getSeries(){
-               return this.series;
-       }
-
-       /**
-        * @see #getSeries()
-        *//*
-       public void setSeries(String series){
-               this.series = series;
-       }
-
-       /**
-        * Returns the string representing the volume of the journal in which
-        * <i>this</i> article was published.
-        * 
-        * @return  the string identifying the series
-        */
-       public String getVolume(){
-               return this.volume;
-       }
-
-       /**
-        * @see #getVolume()
-        */
-       public void setVolume(String volume){
-               this.volume = volume;
-       }
-
-       /**
-        * Returns the string representing the page(s) where the content of
-        * <i>this</i> article is located within the journal issue.
-        * 
-        * @return  the string with the pages corresponding to <i>this</i> article
-        */
-       public String getPages(){
-               return this.pages;
-       }
-
-       /**
-        * @see #getPages()
-        */
-       public void setPages(String pages){
-               this.pages = pages;
-       }
-
-
-       /**
-        * Returns a formatted string containing the entire reference citation,
-        * including authors, title, journal, pages, corresponding to <i>this</i>
-        * article.<BR>
-        * This method overrides the generic and inherited getCitation method
-        * from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see  #getNomenclaturalCitation(String)
-        * @see  StrictReferenceBase#getCitation()
-        */
-//     @Override
-//     @Transient
-//     public String getCitation(){
-//             return nomRefBase.getCitation();
-//     }
-
-       /**
-        * Returns a formatted string containing the entire citation used for
-        * nomenclatural purposes based on <i>this</i> article - including
-        * (abbreviated) title of the journal but not authors of the article -
-        * and on the given details.
-        * 
-        * @param  microReference       the string with the details (generally pages)
-        *                                                      within the journal
-        * @return                                      the formatted string representing the
-        *                                                      nomenclatural citation
-        * 
-        * @see                                         #getCitation()
-        */
-       @Transient
-       public String getNomenclaturalCitation(String microReference) {
-               if (cacheStrategy == null){
-                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
-                       return null;
-               }else{
-                       return cacheStrategy.getNomenclaturalCitation(this,microReference);
-               }
-       }
-
-
-       /**
-        * Generates, according to the {@link eu.etaxonomy.cdm.strategy.cache.reference.ArticleDefaultCacheStrategy default cache strategy}
-        * assigned to <i>this</i> article, a string that identifies <i>this</i>
-        * article and returns it. This string may be stored in the inherited
-        * {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache() titleCache} attribute.<BR>
-        * This method overrides the generic and inherited generateTitle method
-        * from {@link ReferenceBase ReferenceBase}.
-        *
-        * @return  the string identifying <i>this</i> article
-        * @see         #getCitation()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#generateTitle()
-        */
-//     @Override
-//     public String generateTitle(){
-//             return nomRefBase.generateTitle();
-//     }
-       
-
-       
-       
-       /** 
-        * Clones <i>this</i> article. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> article
-        * by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Article clone(){
-               Article result = (Article)super.clone();
-               result.cacheStrategy = ArticleDefaultCacheStrategy.NewInstance();
-               //no changes to: inJournal, pages, series, volume
-               return result;
-       }
-       
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Book.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Book.java
deleted file mode 100644 (file)
index 41cbe0c..0000000
+++ /dev/null
@@ -1,210 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
-
-/**
- * This class represents books. A book is a  {@link PrintedUnitBase printed unit} usually
- * published by a publishing company.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * terms (from PublicationTypeTerm): <ul>
- * <li> "Book"
- * <li> "EditedBook"
- * </ul>
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:13
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Book", propOrder = {
-//    "edition",
-//    "isbn"
-})
-@XmlRootElement(name = "Book")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Book extends PrintedUnitBase<INomenclaturalReferenceCacheStrategy<Book>> implements INomenclaturalReference, Cloneable {
-       private static final long serialVersionUID = 2703962996516519037L;
-       private static final Logger logger = Logger.getLogger(Book.class);
-       
-//    @XmlElement(name = "Edition")
-//    @Field(index=Index.TOKENIZED)
-//     private String edition;
-//
-//    @XmlElement(name = "ISBN")
-//    @Field(index=Index.TOKENIZED)
-//     private String isbn;
-       
-//    @XmlTransient
-//    @Transient
-//     private NomenclaturalReferenceHelper nomRefBase = NomenclaturalReferenceHelper.NewInstance(this);
-       
-       /** 
-        * Class constructor: creates a new empty book instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy
-        */
-       protected Book(){
-               super();
-               this.type = ReferenceType.Book;
-               this.cacheStrategy = BookDefaultCacheStrategy.NewInstance();
-       }
-       
-       /** 
-        * Creates a new empty book instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see #Book()
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy
-        */
-       public static Book NewInstance(){
-               return new Book();
-       }
-
-       
-       /**
-        * Returns the string representing the edition of <i>this</i> book. A book which
-        * is published once more after having been editorially revised or updated
-        * corresponds to another superior edition as the book the content of which
-        * had to be revised or updated (previous edition). Different book editions
-        * have almost the same content but may differ in layout. Editions are
-        * therefore essential for accurate citations. 
-        * 
-        * @return  the string identifying the edition
-        */
-       public String getEdition(){
-               return this.edition;
-       }
-       /**
-        * @see #getEdition()
-        */
-       public void setEdition(String edition){
-               this.edition = edition;
-       }
-
-       /**
-        * Returns the string representing the ISBN (International Standard Book
-        * Number, a unique numerical commercial book identifier, based upon the
-        * 9-digit Standard Book Numbering code) of <i>this</i> book.
-        * 
-        * @return  the string representing the ISBN
-        */
-       public String getIsbn(){
-               return this.isbn;
-       }
-       /**
-        * @see #getIsbn()
-        */
-       public void setIsbn(String isbn){
-               this.isbn = isbn;
-       }
-
-
-       /**
-        * Returns a formatted string containing the entire reference citation,
-        * including authors, title, edition, volume, series, corresponding to
-        * <i>this</i> book.<BR>
-        * This method overrides the generic and inherited getCitation method
-        * from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see  #getNomenclaturalCitation(String)
-        * @see  StrictReferenceBase#getCitation()
-        */
-//     @Transient
-//     @Override
-//     public String getCitation(){
-//             return nomRefBase.getCitation();
-//     }
-
-       /**
-        * Returns a formatted string containing the entire citation used for
-        * nomenclatural purposes based on <i>this</i> book - including
-        * (abbreviated) title  but not authors - and on the given
-        * details.
-        * 
-        * @param  microReference       the string with the details (generally pages)
-        *                                                      within <i>this</i> book
-        * @return                                      the formatted string representing the
-        *                                                      nomenclatural citation
-        * @see                                         #getCitation()
-        */
-       @Transient
-       public String getNomenclaturalCitation(String microReference) {
-               if (cacheStrategy == null){
-                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
-                       return null;
-               }else{
-                       return cacheStrategy.getNomenclaturalCitation(this,microReference);
-               }
-       }
-
-
-       /**
-        * Generates, according to the {@link eu.etaxonomy.cdm.strategy.cache.reference.BookDefaultCacheStrategy default cache strategy}
-        * assigned to <i>this</i> book, a string that identifies <i>this</i>
-        * book and returns it. This string may be stored in the inherited
-        * {@link common.IdentifiableEntity#getTitleCache() titleCache} attribute.<BR>
-        * This method overrides the generic and inherited generateTitle method
-        * from {@link ReferenceBase ReferenceBase}.
-        *
-        * @return  the string identifying <i>this</i> book
-        * @see         #getCitation()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#generateTitle()
-        */
-//     @Override
-//     public String generateTitle(){
-//             return nomRefBase.generateTitle();
-//     }
-       
-       
-               
-               
-       /** 
-        * Clones <i>this</i> book. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> book
-        * by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Object clone(){
-               Book result = (Book)super.clone();
-               result.cacheStrategy = BookDefaultCacheStrategy.NewInstance();
-               //no changes to: edition, isbn
-               return result;
-       }
-
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/BookSection.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/BookSection.java
deleted file mode 100644 (file)
index cc8dcde..0000000
+++ /dev/null
@@ -1,236 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
-
-/**
- * This class represents isolated sections (parts or chapters) within a {@link Book book}.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "BookSection".
- *   
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:14
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "BookSection", propOrder = {
-//    "inBook"
-})
-@XmlRootElement(name = "BookSection")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class BookSection extends SectionBase<INomenclaturalReferenceCacheStrategy<BookSection>> implements INomenclaturalReference, Cloneable {
-       private static final long serialVersionUID = -1066199749700092670L;
-       private static final Logger logger = Logger.getLogger(BookSection.class);
-       
-//    @XmlElement(name = "InBook")
-//    @XmlIDREF
-//    @XmlSchemaType(name = "IDREF")
-//    @ManyToOne(fetch = FetchType.LAZY)
-//    @IndexedEmbedded
-//    @Cascade(CascadeType.SAVE_UPDATE)
-//     private Book inBook;
-       
-//    @XmlTransient
-//    @Transient
-//     private NomenclaturalReferenceHelper nomRefBase = NomenclaturalReferenceHelper.NewInstance(this);
-
-       
-       /** 
-        * Class constructor: creates a new empty book section instance only containing the
-        * {@link eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy
-        */
-       protected BookSection(){
-               super();
-               this.type = ReferenceType.BookSection;
-               this.cacheStrategy = BookSectionDefaultCacheStrategy.NewInstance();
-       }
-       
-
-       /** 
-        * Creates a new empty book section instance only containing the
-        * {@link eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see #NewInstance(Book, TeamOrPersonBase, String, String)
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy
-        */
-       public static BookSection NewInstance(){
-               BookSection result = new BookSection();
-               return result;
-       }
-       
-       /** 
-        * Creates a new book section instance with its given book, title, pages and
-        * author (team) and its {@link eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy default cache strategy}.
-        * 
-        * @param       inBook                  the book <i>this</i> book section belongs to
-        * @param       author                  the team or person who wrote <i>this</i> book section
-        * @param       sectionTitle    the string representing the title of <i>this</i>
-        *                                                      book section
-        * @param       pages                   the string representing the pages in the book
-        *                                                      where <i>this</i> book section can be found  
-        * @see                                         #NewInstance()
-        * @see                                         eu.etaxonomy.cdm.strategy.cache.reference.BookSectionDefaultCacheStrategy
-        */
-       public static BookSection NewInstance(Book inBook, TeamOrPersonBase author, String sectionTitle, String pages ){
-               BookSection result = new BookSection();
-               result.setInBook(inBook);
-               result.setTitle(sectionTitle);
-               result.setPages(pages);
-               result.setAuthorTeam(author);
-               return result;
-       }
-       
-       
-       /**
-        * Returns the {@link Book book} <i>this</i> book section belongs to.
-        * 
-        * @return  the book containing <i>this</i> book section
-        * @see         Book
-        */
-       @Transient
-       public Book getInBook(){
-               if (inReference == null){
-                       return null;
-               }
-               if (! this.inReference.isInstanceOf(Book.class)){
-                       throw new IllegalStateException("The in-reference of a BookSection may only be of type Book");
-               }
-               return CdmBase.deproxy(this.inReference,Book.class);
-       }
-
-       /**
-        * @see #getInBook()
-        */
-       public void setInBook(Book inBook){
-               this.inReference = inBook;
-       }
-
-
-       /**
-        * Returns a formatted string containing the entire reference citation,
-        * including authors, title, book authors, book title, pages, corresponding to <i>this</i>
-        * book section.<BR>
-        * This method overrides the generic and inherited getCitation method
-        * from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see  #getNomenclaturalCitation(String)
-        * @see  StrictReferenceBase#getCitation()
-        */
-//     @Transient
-//     @Override
-//     public String getCitation(){
-//             return nomRefBase.getCitation();
-//     }
-
-       /**
-        * Returns a formatted string containing the entire citation used for
-        * nomenclatural purposes based on <i>this</i> book section - including
-        * (abbreviated) book title, book authors, book section title but not its
-        * authors - and on the given details.
-        * 
-        * @param  microReference       the string with the details (generally pages)
-        *                                                      within t<i>this</i> book section
-        * @return                                      the formatted string representing the
-        *                                                      nomenclatural citation
-        * @see                                         #getCitation()
-        */
-       @Transient
-       public String getNomenclaturalCitation(String microReference) {
-               if (cacheStrategy == null){
-                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
-                       return null;
-               }else{
-                       return cacheStrategy.getNomenclaturalCitation(this,microReference);
-               }
-       }
-       
-        /** 
-         * If the publication date of a book section and it's inBook do differ this is usually 
-        * caused by the fact that a book has been published during a period, because originally 
-        * it consisted of several parts that only later where put together to one book.
-        * If so, the book section's publication date may be a point in time (year or month of year)
-        * whereas the books publication date may be a period of several years.
-        * Therefore a valid nomenclatural reference string should use the book sections 
-        * publication date rather then the book's publication date.
-        * 
-        * @see         StrictReferenceBase#getDatePublished()
-        **/
-        @Transient
-        @Override
-        // This method overrides StrictReferenceBase.getDatePublished() only to have 
-        // a specific Javadoc for BookSection.getDatePublished().
-       public TimePeriod getDatePublished(){
-               return super.getDatePublished();
-       }
-
-
-       /**
-        * Generates, according to the {@link strategy.cache.reference.BookSectionDefaultCacheStrategy default cache strategy}
-        * assigned to <i>this</i> book section, a string that identifies <i>this</i>
-        * book section and returns it. This string may be stored in the inherited
-        * {@link common.IdentifiableEntity#getTitleCache() titleCache} attribute.<BR>
-        * This method overrides the generic and inherited generateTitle method
-        * from {@link ReferenceBase ReferenceBase}.
-        *
-        * @return  the string identifying <i>this</i> book section
-        * @see         #getCitation()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#generateTitle()
-        */
-//     @Override
-//     public String generateTitle(){
-//             return nomRefBase.generateTitle();
-//     }
-       
-
-
-       /** 
-        * Clones <i>this</i> book section. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> book
-        * section by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Object clone(){
-               BookSection result = (BookSection)super.clone();
-               result.cacheStrategy = BookSectionDefaultCacheStrategy.NewInstance();
-               //no changes to: inBook
-               return result;
-       }
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/CdDvd.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/CdDvd.java
deleted file mode 100644 (file)
index 6be04a3..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
-* http://www.e-taxonomy.eu
-* 
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.cdm.model.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.CdDvdDefaultCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
-
-/**
- * This class represents electronic publications the support of which are Cds 
- * (Compact Discs) or Dvds (Digital Versatile Discs). This class applies for Cds
- * or Dvds as a whole but not for parts of it.
- * CdDvd implements INomenclaturalReference as this seems to be allowed by the ICZN
- * (see http://www.iczn.org/electronic_publication.html)
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:15
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "CdDvd")
-@XmlRootElement(name = "CdDvd")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class CdDvd extends PublicationBase<INomenclaturalReferenceCacheStrategy<CdDvd>> implements INomenclaturalReference, Cloneable{
-       private static final long serialVersionUID = -1010571682756717813L;
-       private static final Logger logger = Logger.getLogger(CdDvd.class);
-
-       public static CdDvd NewInstance() {
-               return new CdDvd();
-       }
-       
-       
-//    @XmlTransient
-//    @Transient
-//     private NomenclaturalReferenceHelper nomRefBase = NomenclaturalReferenceHelper.NewInstance(this);
-
-       
-       protected CdDvd(){
-               super();
-               this.type = ReferenceType.CdDvd;
-               this.cacheStrategy = CdDvdDefaultCacheStrategy.NewInstance();
-       }
-       
-
-        /**(non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.reference.INomenclaturalReference#getNomenclaturalCitation(java.lang.String)
-        */
-       @Transient
-       public String getNomenclaturalCitation(String microReference) {
-               if (cacheStrategy == null){
-                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
-                       return null;
-               }else{
-                       return cacheStrategy.getNomenclaturalCitation(this,microReference);
-               }
-       }
-       
-
-       
-       /** 
-        * Clones <i>this</i> Cd or Dvd instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * Cd or Dvd instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Object clone(){
-               CdDvd result = (CdDvd)super.clone();
-               //no changes to: -
-               return result;
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Database.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Database.java
deleted file mode 100644 (file)
index b621c18..0000000
+++ /dev/null
@@ -1,84 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents a database used as an information source. A database is
- * a structured collection of records or data.
- * <P>
- * This class corresponds, according to the TDWG ontology, partially to the
- * publication type term (from PublicationTypeTerm): "ComputerProgram".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:19
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Database")
-@XmlRootElement(name = "Database")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Database extends PublicationBase<IReferenceBaseCacheStrategy<Database>> implements Cloneable {
-       private static final long serialVersionUID = -7077612779393752878L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(Database.class);
-
-       /** 
-        * Creates a new empty database instance.
-        */
-       public static Database NewInstance(){
-               return new Database();
-       }
-       
-       protected Database() {
-               super();
-               this.type = ReferenceType.Database;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<Database>();
-       }
-
-       
-       
-       
-       /** 
-        * Clones <i>this</i> database instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * database instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Database clone(){
-               Database result = (Database)super.clone();
-               //no changes to: -
-               return result;
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Generic.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Generic.java
deleted file mode 100644 (file)
index e991c3e..0000000
+++ /dev/null
@@ -1,268 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.GenericDefaultCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
-
-/**
- * This class represents all references which cannot be clearly assigned to a
- * particular {@link StrictReferenceBase reference} subclass. Therefore attributes which are
- * characteristic for a unique reference subclass are not necessary here.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * terms (from PublicationTypeTerm): <ul>
- * <li> "Generic"
- * <li> "Artwork"
- * <li> "AudiovisualMaterial"
- * <li> "ComputerProgram"
- * <li> "Determination"
- * <li> "Commentary"
- * <li> "SubReference"
- * </ul>
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:26
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Generic", propOrder = {
-//             "editor",
-//             "volume",
-//             "pages",
-//             "series"
-})
-@XmlRootElement(name = "Generic")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Generic extends PublicationBase<INomenclaturalReferenceCacheStrategy<Generic>> implements INomenclaturalReference, IVolumeReference, Cloneable {
-       private static final long serialVersionUID = -2547067957118035042L;
-       private static final Logger logger = Logger.getLogger(Generic.class);
-
-//    @XmlElement(name = "Editor")
-//    @Field(index=Index.TOKENIZED)
-//     private String editor;
-//     
-//    @XmlElement(name = "Series")
-//    @Field(index=Index.TOKENIZED)
-//     private String series;
-//     
-//    @XmlElement(name = "Volume")
-//    @Field(index=Index.TOKENIZED)
-//     private String volume;
-//     
-//    @XmlElement(name = "Pages")
-//    @Field(index=Index.TOKENIZED)
-//     private String pages;
-//     
-       /** 
-        * Class constructor: creates a new empty generic reference instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.GenericDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.GenericDefaultCacheStrategy
-        */
-       public Generic(){
-               super();
-               this.type = ReferenceType.Generic;
-               this.cacheStrategy = GenericDefaultCacheStrategy.NewInstance();
-       }
-       
-       
-       /** 
-        * Creates a new empty generic reference instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.GenericDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see #Generic()
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.GenericDefaultCacheStrategy
-        */
-       @Deprecated
-       public static Generic NewInstance(){
-               return new Generic();
-       }
-       
-       /**
-        * Returns the string representing the name of the editor of <i>this</i>
-        * generic reference. An editor is mostly a person (team) who assumed the
-        * responsibility for the content of the publication as a whole without
-        * being the author of this content.<BR>
-        * If there is an editor then the generic reference must be some
-        * kind of {@link PrintedUnitBase physical printed unit}.
-        * 
-        * @return  the string identifying the editor of <i>this</i>
-        *                      generic reference
-        * @see         #getPublisher()
-        */
-       public String getEditor(){
-               return this.editor;
-       }
-
-       /**
-        * @see #getEditor()
-        */
-       public void setEditor(String editor){
-               this.editor = editor;
-       }
-
-       /**
-        * Returns the string representing the series (for instance for books or
-        * within journals) - and series part - in which <i>this</i> generic reference
-        * was published.<BR>
-        * If there is a series then the generic reference must be some
-        * kind of {@link PrintedUnitBase physical printed unit} or an {@link Article article}.
-        * 
-        * @return  the string identifying the series for <i>this</i>
-        *                      generic reference
-        */
-       public String getSeries(){
-               return this.series;
-       }
-
-       /**
-        * @see #getSeries()
-        */
-       public void setSeries(String series){
-               this.series = series;
-       }
-
-       /**
-        * Returns the string representing the volume (for instance for books or
-        * within journals) in which <i>this</i> generic reference was published.<BR>
-        * If there is a volume then the generic reference must be some
-        * kind of {@link PrintedUnitBase physical printed unit} or an {@link Article article}.
-        * 
-        * @return  the string identifying the volume for <i>this</i>
-        *                      generic reference
-        */
-       public String getVolume(){
-               return this.volume;
-       }
-
-       /**
-        * @see #getVolume()
-        */
-       public void setVolume(String volume){
-               this.volume = volume;
-       }
-
-       /**
-        * Returns the string representing the page(s) where the content of
-        * <i>this</i> generic reference is located.<BR>
-        * If there is a pages information then the generic reference must be some
-        * kind of {@link PrintedUnitBase physical printed unit} or an {@link Article article}.
-        * 
-        * @return  the string containing the pages corresponding to <i>this</i>
-        *                      generic reference
-        */
-       public String getPages(){
-               return this.pages;
-       }
-
-       /**
-        * @see #getPages()
-        */
-       public void setPages(String pages){
-               this.pages = pages;
-       }
-
-       /**
-        * Returns a formatted string containing the entire reference citation,
-        * including authors, corresponding to <i>this</i> generic reference.<BR>
-        * This method overrides the generic and inherited getCitation method
-        * from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see  #getNomenclaturalCitation(String)
-        * @see  StrictReferenceBase#getCitation()
-        */
-//     @Override
-//     @Transient
-//     public String getCitation(){
-//             return nomRefBase.getCitation();
-//     }
-
-       /**
-        * Returns a formatted string containing the entire citation used for
-        * nomenclatural purposes based on <i>this</i> generic reference - including
-        * (abbreviated) title but not authors - and on the given
-        * details.
-        * 
-        * @param  microReference       the string with the details (generally pages)
-        *                                                      within <i>this</i> generic reference
-        * @return                                      the formatted string representing the
-        *                                                      nomenclatural citation
-        * @see                                         #getCitation()
-        */
-       @Transient
-       public String getNomenclaturalCitation(String microReference) {
-               if (cacheStrategy == null){
-                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
-                       return null;
-               }else{
-                       return cacheStrategy.getNomenclaturalCitation(this,microReference);
-               }
-       }
-
-       /**
-        (non-Javadoc)
-        * @see eu.etaxonomy.cdm.model.reference.ReferenceBase#generateTitle()
-        * Generates, according to the {@link strategy.cache.reference.GenericDefaultCacheStrategy default cache strategy}
-        * assigned to <i>this</i> generic reference, a string that identifies <i>this</i>
-        * reference and returns it. This string may be stored in the inherited
-        * {@link common.IdentifiableEntity#getTitleCache() titleCache} attribute.<BR>
-        * This method overrides the generic and inherited generateTitle method
-        * from {@link ReferenceBase ReferenceBase}.
-        *
-        * @return  the string identifying <i>this</i> generic reference
-        * @see         #getCitation()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache()
-        * @see         eu.etaxonomy.cdm.model.common.IdentifiableEntity#generateTitle()
-        */
-//     @Override
-//     public String generateTitle(){
-//             return nomRefBase.generateTitle();
-//     }
-       
-       
-
-
-       /** 
-        * Clones <i>this</i> generic reference. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> generic
-        * reference by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Generic clone(){
-               Generic result = (Generic)super.clone();
-               result.cacheStrategy = GenericDefaultCacheStrategy.NewInstance();
-               //no changes to: editor, pages, placePublished,publisher, series, volume
-               return result;
-       }
-
-}
\ No newline at end of file
index 1e88913806b33ef4cb8fbc20a3fcdc402764de1c..bc97c6a7be9adc9371afb565e036f2653f8ee260 100644 (file)
@@ -71,7 +71,7 @@ public interface IGeneric extends IPublicationBase, INomenclaturalReference, IVo
         * Sets the inreference.\r
         * @param inReference\r
         */\r
-       public void setInReference(ReferenceBase inReference);\r
+       public void setInReference(Reference inReference);\r
 \r
        void setCacheStrategy(GenericDefaultCacheStrategy cacheStratefy);\r
        \r
index 31c966f90c680f763004d204b560e1d01d89c809..c528fc2f3ff0a6799195d5deb1079027bec8d8fa 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
  * @version 1.0
  * @created 08-Nov-2007 13:06:29
  */
-public interface INomenclaturalReference extends IReferenceBase{
+public interface INomenclaturalReference extends IReference{
 
        public final String MICRO_REFERENCE_TOKEN = "@@MicroReference";
        
index 20de195baaef3ea63813ecd1c753eba4c29999c2..b5e925727167c494397f8c3680b2fae9dba98175 100644 (file)
@@ -17,6 +17,6 @@ package eu.etaxonomy.cdm.model.reference;
  * This class corresponds, according to the TDWG ontology, to the publication type\r
  * term (from PublicationTypeTerm): "Patent".\r
  */\r
-public interface IPatent extends IReferenceBase {\r
+public interface IPatent extends IReference {\r
 \r
 }\r
index e3917f93f580a0ad6e9749cbae0329e6e4f06ba3..740e1d7b0a96565890d54c6efde9bf13ca864c31 100644 (file)
@@ -18,6 +18,6 @@ package eu.etaxonomy.cdm.model.reference;
  * <li> the term "Communication" from PublicationTypeTerm according to the TDWG ontology\r
  * </ul>\r
  */\r
-public interface IPersonalCommunication extends IReferenceBase{\r
+public interface IPersonalCommunication extends IReference{\r
 \r
 }\r
index da93e3dc7ac61b8e81f5a8c285220158502c2a75..37356847136cc3f0b2043767af663e42c911ee26 100644 (file)
@@ -11,11 +11,11 @@ package eu.etaxonomy.cdm.model.reference;
 \r
 /**\r
  * This base interface represents all different kind of published \r
- * {@link IReferenceBase references} which constitute a physical \r
+ * {@link IReference references} which constitute a physical \r
  * or virtual unit. A reference is a published\r
  * reference if it can be consulted by the general public.\r
  */\r
-public interface IPublicationBase extends IReferenceBase {\r
+public interface IPublicationBase extends IReference {\r
        \r
        /**\r
         * Returns the publisher string for this reference\r
similarity index 93%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReferenceBase.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IReference.java
index 3b3b79d825cc7ff2394bb0f48c1de53d1fe8de7f..a69ffa1665e46beb64b7b3aba2ac86695cfe6eb4 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.strategy.merge.IMergable;
  * <li> Reference according to the ABCD schema\r
  * </ul>\r
  */\r
-public interface IReferenceBase extends IIdentifiableEntity, IParsable, IMergable, IMatchable{\r
+public interface IReference extends IIdentifiableEntity, IParsable, IMergable, IMatchable{\r
 \r
        /**\r
         * Returns the reference type\r
index 4d9b54814ad309666267d36950b3d5d584df4a86..b38e8d86eaa1c6d49a9bdd19c0c4ac59d2a07644 100644 (file)
@@ -16,7 +16,7 @@ package eu.etaxonomy.cdm.model.reference;
  * This class corresponds, according to the TDWG ontology, to the publication type\r
  * term (from PublicationTypeTerm): "SubReference".\r
  */\r
-public interface ISectionBase extends IReferenceBase {\r
+public interface ISectionBase extends IReference {\r
        \r
        /**\r
         * Returns the pages this reference covers in its in-reference.\r
@@ -36,12 +36,12 @@ public interface ISectionBase extends IReferenceBase {
         * Returns the in-reference of this reference.\r
         * E.g. if this reference is a book section the according book is returned\r
         */\r
-       public ReferenceBase getInReference();\r
+       public Reference getInReference();\r
        \r
        /**\r
         * Sets the in-reference of this reference.\r
         * E.g. if this reference is a book section the according book is set via this\r
         * method.\r
         */\r
-       public void setInReference(ReferenceBase referenceBase);\r
+       public void setInReference(Reference reference);\r
 }\r
index 52bf7d2209503f23d1d67226a9a81c25ac6e8f0a..d09e7f3a629945a86c63b617a3437fb6ab235e72 100644 (file)
@@ -17,7 +17,7 @@ package eu.etaxonomy.cdm.model.reference;
  * @version 1.0
  * @created 24-Nov-2008 21:06:29
  */
-public interface IVolumeReference extends IReferenceBase {
+public interface IVolumeReference extends IReference {
 
        /**
         * Returns the volume of a reference.
index 9481ec9212d745b8178a099526432f095386a165..d424c13271d92587dc2ff49e1d3ddf9f06038307 100644 (file)
@@ -17,4 +17,18 @@ package eu.etaxonomy.cdm.model.reference;
  */ \r
  public interface IWebPage extends IPublicationBase {\r
 \r
+        \r
+               /**\r
+                * Returns this websites inReference (e.g. the underlying database).\r
+                * @return the inReference\r
+                */\r
+               public Reference getInReference();\r
+               \r
+               \r
+               /**\r
+                * Sets this websites inreference (e.g. the underlying database) \r
+                * @param inReference The inReference.\r
+                */\r
+               public void setInReference(Reference inReference);\r
\r
 }\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/InProceedings.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/InProceedings.java
deleted file mode 100644 (file)
index 33ce198..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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents isolated parts (usually papers or abstracts) within
- * {@link Proceedings conference proceedings}.
- * <P>
- * This class corresponds, according to the TDWG ontology, partially to the
- * publication type term (from PublicationTypeTerm): "SubReference".
- *   
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:29
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "InProceedings", propOrder = {
-//    "inProceedings"
-})
-@XmlRootElement(name = "InProceedings")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class InProceedings extends SectionBase<IReferenceBaseCacheStrategy<InProceedings>> {
-       private static final long serialVersionUID = -286946099144494551L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(InProceedings.class);
-       
-//     @XmlElement(name = "InProceedings")
-//     @XmlIDREF
-//     @XmlSchemaType(name = "InProceedings")
-//     @ManyToOne(fetch = FetchType.LAZY)
-//     @IndexedEmbedded
-//     @Cascade(CascadeType.SAVE_UPDATE)
-//     private Proceedings inProceedings;
-
-
-       /** 
-        * Creates a new empty "in proceedings" instance.
-        * 
-        * @see #NewInstance(Proceedings)
-        */
-       public static InProceedings NewInstance(){
-               InProceedings result = new InProceedings();
-               return result;
-       }
-       
-       /** 
-        * Creates a new "in proceedings" instance with the given proceedings it belongs to.
-        * 
-        * @param       inProceedings   the proceedings <i>this</i> "in proceedings" is part of
-        * @see                                         #NewInstance()
-        * @see                                         Proceedings
-        */
-       public static InProceedings NewInstance(Proceedings inProceedings){
-               InProceedings result = NewInstance();
-               result.setInProceedings(inProceedings);
-               return result;
-       }
-       
-       
-       protected InProceedings() {
-               super();
-               this.type = ReferenceType.InProceedings;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<InProceedings>();
-       }
-       
-       
-       /**
-        * Returns the {@link Proceedings proceedings} <i>this</i> "in proceedings" (usually 
-        * a paper or an abstract) is part of.
-        * 
-        * @return  the proceedings in which <i>this</i> "in proceedings" has been
-        *                      published
-        * @see         Proceedings
-        */
-       @Transient
-       public Proceedings getInProceedings(){
-               if (inReference == null){
-                       return null;
-               }
-               if (! this.inReference.isInstanceOf(Proceedings.class)){
-                       throw new IllegalStateException("The in-reference of an inproceeding may only be of type Proceedings");
-               }
-               return CdmBase.deproxy(this.inReference,Proceedings.class);
-       }
-
-       /**
-        * @see #getInProceedings()
-        */
-       public void setInProceedings(Proceedings inProceedings){
-               this.inReference = inProceedings;
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Journal.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Journal.java
deleted file mode 100644 (file)
index b073d89..0000000
+++ /dev/null
@@ -1,117 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy;
-
-/**
- * This class represents journals. A journal is a periodical {@link PublicationBase publication}
- * containing several {@link Article articles}.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "Journal".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:31
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Journal", propOrder = {
-//    "issn"
-})
-@XmlRootElement(name = "Journal")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Journal extends PublicationBase<IReferenceBaseCacheStrategy<Journal>> implements Cloneable {
-       static Logger logger = Logger.getLogger(Journal.class);
-       
-//     @XmlElement(name = "ISSN")
-//     @Field(index=Index.TOKENIZED)
-//     private String issn;
-
-       
-       /** 
-        * Class constructor: creates a new empty journal instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy
-        */
-       protected Journal(){
-               super();
-               this.type = ReferenceType.Journal;
-               cacheStrategy = JournalDefaultCacheStrategy.NewInstance();
-       }
-       
-
-       /** 
-        * Creates a new empty journal instance
-        * only containing the {@link eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy default cache strategy}.
-        * 
-        * @see #Journal()
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.JournalDefaultCacheStrategy
-        */
-       public static Journal NewInstance(){
-               Journal result = new Journal();
-               return result;
-       }
-       
-       /**
-        * Returns the string representing the ISSN (International Standard Serial
-        * Number, a unique eight-digit number used to identify a periodical
-        * publication) of <i>this</i> journal.
-        * 
-        * @return  the string representing the ISSN
-        */
-       public String getIssn(){
-               return this.issn;
-       }
-
-       /**
-        * @see #getIssn()
-        */
-       public void setIssn(String issn){
-               this.issn = issn;
-       }
-
-       
-       
-       
-       /** 
-        * Clones <i>this</i> journal instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * journal instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Journal clone(){
-               return (Journal)super.clone();
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Map.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Map.java
deleted file mode 100644 (file)
index 5302751..0000000
+++ /dev/null
@@ -1,84 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents published maps from which information can be derived.
- * A map is a visual representation of an area.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "Map".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:33
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Map")
-@XmlRootElement(name = "Map")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Map extends PublicationBase<IReferenceBaseCacheStrategy<Map>> implements Cloneable {
-       private static final long serialVersionUID = 5169607564182639395L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(Map.class);
-
-       /** 
-        * Creates a new empty map instance.
-        */
-       public static Map NewInstance(){
-               Map result = new Map();
-               return result;
-       }
-       
-       protected Map() {
-               super();
-               this.type = ReferenceType.Map;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<Map>();
-       }
-
-       
-       
-       /** 
-        * Clones <i>this</i> map instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * map instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Map clone(){
-               Map result = (Map)super.clone();
-               //no changes to: -
-               return result;
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Patent.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Patent.java
deleted file mode 100644 (file)
index 7349499..0000000
+++ /dev/null
@@ -1,82 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-/**
- * This class represents patents. A patent is a document containing the set of
- * exclusive rights granted by a state to an inventor or his assignee for a
- * fixed period of time in exchange for a disclosure of an invention.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "Patent".
- *  
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:42
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Patent")
-@XmlRootElement(name = "Patent")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Patent extends ReferenceBase<IReferenceBaseCacheStrategy<Patent>> implements Cloneable {
-       private static final long serialVersionUID = -5490088861369456472L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(Patent.class);
-       
-       protected Patent() {
-               super();
-               this.type = ReferenceType.Patent;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<Patent>();
-       }       
-       
-       /** 
-        * Creates a new empty patent instance
-        */
-       public static Patent NewInstance(){
-               Patent result = new Patent();
-               return result;
-       }
-       
-       /** 
-        * Clones <i>this</i> patent instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * patent instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Patent clone(){
-               Patent result = (Patent)super.clone();
-               //no changes to: -
-               return result;
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PersonalCommunication.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PersonalCommunication.java
deleted file mode 100644 (file)
index d692429..0000000
+++ /dev/null
@@ -1,84 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents personal communications. A personal communication is a
- * non published document originally written for information exchange between
- * private persons. 
- * <P>
- * This class corresponds to: <ul>
- * <li> the term "Communication" from PublicationTypeTerm according to the TDWG ontology
- * </ul>
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:43
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "PersonalCommunication")
-@XmlRootElement(name = "PersonalCommunication")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class PersonalCommunication extends ReferenceBase<IReferenceBaseCacheStrategy<PersonalCommunication>> implements Cloneable {
-       private static final long serialVersionUID = -2527724602502055339L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(PersonalCommunication.class);
-       
-       /**
-        * Creates a new empty personal communication instance.
-        */
-       public static PersonalCommunication NewInstance(){
-               PersonalCommunication result = new PersonalCommunication();
-               return result;
-       }
-       
-       protected PersonalCommunication() {
-               this.type = ReferenceType.PersonalCommunication;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<PersonalCommunication>();
-       }
-
-       
-
-       /** 
-        * Clones <i>this</i> personal communication instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * personal communication instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public PersonalCommunication clone(){
-               PersonalCommunication result = (PersonalCommunication)super.clone();
-               //no changes to: -
-               return result;
-       }
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintSeries.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintSeries.java
deleted file mode 100644 (file)
index bc0d489..0000000
+++ /dev/null
@@ -1,113 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents collections of {@link PrintedUnitBase printed published references} which
- * are grouped according to topic or any other feature. 
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "BookSeries".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:45
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "PrintSeries", propOrder = {
-//    "series"
-})
-@XmlRootElement(name = "PrintSeries")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class PrintSeries extends PublicationBase<IReferenceBaseCacheStrategy<PrintSeries>> implements Cloneable {
-       private static final long serialVersionUID = -6723799677497340157L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(PrintSeries.class);
-       
-//     @XmlElement(name = "Series")
-//     @Field(index=Index.TOKENIZED)
-//     private String series;
-
-       protected PrintSeries() {
-               this.type = ReferenceType.PrintSeries;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<PrintSeries>();
-       }
-       
-       /** 
-        * Creates a new empty print series instance.
-        */
-       public static PrintSeries NewInstance(){
-               PrintSeries result = new PrintSeries();
-               return result;
-       }
-       
-       /** 
-        * Creates a new print series instance with a given title string.
-        */
-       public static PrintSeries NewInstance(String series){
-               PrintSeries result = NewInstance();
-               result.setSeries(series);
-               return result;
-       }
-       
-       /**
-        * Returns the string representing the title of <i>this</i> print series.
-        * 
-        * @return  the string representing the print series
-        */
-       public String getSeries(){
-               return this.series;
-       }
-
-       /**
-        * @see #getSeries()
-        */
-       public void setSeries(String series){
-               this.series = series;
-       }
-       
-       
-       
-       /** 
-        * Clones <i>this</i> print series instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * print series instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public PrintSeries clone(){
-               PrintSeries result = (PrintSeries)super.clone();
-               //no changes to: series
-               return result;
-       }
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java
deleted file mode 100644 (file)
index f0fc541..0000000
+++ /dev/null
@@ -1,195 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-
-/**
- * This (abstract) class represents printed {@link PublicationBase published references} which
- * are recurrent products of publishing companies or of research organizations.
- * In this case it is generally possible to distinguish authors, editors and
- * publishers. 
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:45
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "PrintedUnitBase", propOrder = {
-//             "editor",       
-//             "volume",
-//             "pages",
-//             "inSeries",
-//             "seriesPart"
-})
-@XmlRootElement(name = "PrintedUnitBase")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Deprecated
-public abstract class PrintedUnitBase<S extends IReferenceBaseCacheStrategy> extends PublicationBase<S> implements IVolumeReference{
-       private static final long serialVersionUID = 7263496796924430088L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(PrintedUnitBase.class);
-       
-//    @XmlElement(name = "Editor")
-//    @Field(index=Index.TOKENIZED)
-//     private String editor;
-//     
-//    @XmlElement(name = "Volume")
-//    @Field(index=Index.TOKENIZED)
-//     private String volume;
-//     
-//    @XmlElement(name = "Pages")
-//    @Field(index=Index.TOKENIZED)
-//     private String pages;
-//     
-//    @XmlElement(name = "InSeries")
-//    @XmlIDREF
-//    @XmlSchemaType(name = "IDREF")
-//    @ManyToOne(fetch = FetchType.LAZY)
-//    @IndexedEmbedded
-//    @Cascade(CascadeType.SAVE_UPDATE)
-//     private PrintSeries inSeries;
-//     
-//    @XmlElement(name = "SeriesPart")
-//    @Field(index=Index.TOKENIZED)
-//     private String seriesPart;
-
-       /**
-        * Returns the printed series <i>this</i> printed unit belongs to.
-        * 
-        * @return  printed series
-        * @see         PrintSeries
-        */
-       @Transient
-       public PrintSeries getInSeries(){
-               if (inReference == null){
-                       return null;
-               }
-               if (! this.inReference.isInstanceOf(PrintSeries.class)){
-                       throw new IllegalStateException("The in-reference of a printed unit base may only be a PrintSeries");
-               }
-               return CdmBase.deproxy(this.inReference,PrintSeries.class);
-       }
-
-       /**
-        * @see #getInSeries()
-        */
-       public void setInSeries(PrintSeries inSeries){
-               this.inReference = inSeries;
-       }
-
-       /**
-        * Returns the string representing the name of the editor of <i>this</i>
-        * printed unit. An editor is mostly a person (team) who assumed the
-        * responsibility for the content of the publication as a whole without
-        * being the author of this content.<BR>
-        * 
-        * @return  the string identifying the editor of <i>this</i>
-        *                      printed unit
-        * @see         PublicationBase#getPublisher()
-        */
-       public String getEditor(){
-               return this.editor;
-       }
-
-       /**
-        * @see #getEditor()
-        */
-       public void setEditor(String editor){
-               this.editor = editor;
-       }
-
-       /**
-        * Returns the string representing the volume of <i>this</i> printed unit.<BR>
-        * 
-        * @return  the string identifying the volume of <i>this</i>
-        *                      printed unit
-        */
-       public String getVolume(){
-               return this.volume;
-       }
-
-       /**
-        * @see #getVolume()
-        */
-       public void setVolume(String volume){
-               this.volume = volume;
-       }
-
-       /**
-        * Returns the string representing the pages extent of <i>this</i> printed unit.
-        * 
-        * @return  the pages string
-        */
-       public String getPages(){
-               return this.pages;
-       }
-
-       /**
-        * @see #getPages()
-        */
-       public void setPages(String pages){
-               this.pages = pages;
-       }
-       
-
-       /**
-        * Returns the string representing the series part identifying <i>this</i>
-        * printed unit within the the {@link PrintSeries printed series} it belongs to.
-        * 
-        * @return  the string identifying the series part for <i>this</i>
-        *                      printed unit
-        */
-       public String getSeriesPart() {
-               return seriesPart;
-       }
-
-       /**
-        * @see #getSeriesPart()
-        */
-       public void setSeriesPart(String seriesPart) {
-               this.seriesPart = seriesPart;
-       }
-
-
-
-
-       /** 
-        * Clones <i>this</i> printed unit. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> printed unit
-        * by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Object clone(){
-               PrintedUnitBase result = (PrintedUnitBase)super.clone();
-               //no changes to: editor, inSeries, pages, volume, seriesPart
-               return result;
-       }
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Proceedings.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Proceedings.java
deleted file mode 100644 (file)
index f8b8992..0000000
+++ /dev/null
@@ -1,131 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Field;
-import org.hibernate.search.annotations.Index;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents conference proceedings. Proceedings are a
- * collection of academic papers that are published in the context of an
- * academic conference. Each paper typically is quite isolated from the other
- * papers in the proceedings. Proceedings are published in-house, by the
- * organizing institution of the conference, or via an academic publisher. 
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "ConferenceProceedings".
- *   
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:45
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Proceedings", propOrder = {
-//    "organization"
-})
-@XmlRootElement(name = "Proceedings")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Proceedings extends PrintedUnitBase<IReferenceBaseCacheStrategy<Proceedings>> implements Cloneable {
-       private static final long serialVersionUID = -2096638066963321309L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(Proceedings.class);
-       
-//     //The conference sponsor
-//     @XmlElement(name = "Organization")
-//     @Field(index=Index.TOKENIZED)
-//     private String organization;
-       
-       
-       /** 
-        * Creates a new empty proceedings instance.
-        * 
-        * @see #NewInstance(String)
-        */
-       public static Proceedings NewInstance(){
-               Proceedings result = new Proceedings();
-               return result;
-       }
-       
-       /** 
-        * Creates a new proceedings instance with the given organization
-        * responsible for the conference.
-        * 
-        * @see #NewInstance(String)
-        */
-       public static Proceedings NewInstance(String organization){
-               Proceedings result = NewInstance();
-               result.setOrganization(organization);
-               return result;
-       }
-       
-       protected Proceedings(){
-               super();
-               this.type = ReferenceType.Proceedings;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<Proceedings>();
-       }
-       
-
-       /**
-        * Returns the string representing the organization responsible for the
-        * conference in the context of which <i>this</i> conference proceedings
-        * has been printed.
-        * 
-        * @return  the string with the responsible organization
-        */
-       public String getOrganization(){
-               return this.organization;
-       }
-       /**
-        * @see #getOrganization()
-        */
-       public void setOrganization(String organization){
-               this.organization = organization;
-       }
-
-       
-                       
-                       
-       /** 
-        * Clones <i>this</i> conference proceedings. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> conference
-        * proceedings by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-               @Override
-               public Proceedings clone(){
-                       Proceedings result = (Proceedings)super.clone();
-                       //no changes to: organization
-                       return result;
-               }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PublicationBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PublicationBase.java
deleted file mode 100644 (file)
index f6ce443..0000000
+++ /dev/null
@@ -1,113 +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.reference;
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-
-/**
- * This (abstract) class represents all different kind of published {@link StrictReferenceBase references}
- * which constitute a physical or virtual unit. A reference is a published
- * reference if it can be consulted by the general public.
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:46
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "PublicationBase", propOrder = {
-//    "publisher",
-//    "placePublished"
-})
-@XmlRootElement(name = "PublicationBase")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Deprecated
-public abstract class PublicationBase<S extends IReferenceBaseCacheStrategy> extends ReferenceBase<S> {
-       private static final long serialVersionUID = -3050853696708743386L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(PublicationBase.class);
-//     
-//     @XmlElement(name = "Publisher")
-//     private String publisher;
-//     
-//     @XmlElement(name = "PlacePublished")
-//     private String placePublished;
-
-       
-       public PublicationBase(){
-               super();
-       }
-       
-
-       /**
-        * @return the publisher
-        */
-       public String getPublisher() {
-               return publisher;
-       }
-
-
-
-       /**
-        * @param publisher the publisher to set
-        */
-       public void setPublisher(String publisher) {
-               this.publisher = publisher;
-       }
-
-
-
-       /**
-        * @return the placePublished
-        */
-       public String getPlacePublished() {
-               return placePublished;
-       }
-
-
-
-       /**
-        * @param placePublished the placePublished to set
-        */
-       public void setPlacePublished(String placePublished) {
-               this.placePublished = placePublished;
-       }
-       
-       
-
-
-       /** 
-        * Clones <i>this</i> publication. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * publication by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Object clone() {
-               PublicationBase result = (PublicationBase)super.clone();
-               //No changes: - 
-               return result;
-       }
-}
\ No newline at end of file
similarity index 90%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceBase.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Reference.java
index 8e8c5ea650f2cf210b07919ef79f36a2600a442f..20e99df42b6c20f691cd0229d7136859ec11ed4d 100644 (file)
@@ -101,17 +101,17 @@ import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
 //    ,"fullReference",\r
 //    "abbreviatedReference"\r
 })\r
-@XmlRootElement(name = "ReferenceBase")\r
+@XmlRootElement(name = "Reference")\r
 @Entity\r
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)\r
 @Audited\r
 @javax.persistence.Table(name="Reference")\r
 @Table(appliesTo="Reference", indexes = { @org.hibernate.annotations.Index(name = "ReferenceTitleCacheIndex", columnNames = { "titleCache" }) })\r
 //@InReference(groups = Level2.class)\r
-//public abstract class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends IdentifiableMediaEntity<S> implements IParsable, IMergable, IMatchable, IArticle, IBook, IJournal, IBookSection,ICdDvd,IGeneric,IInProceedings, IProceedings, IPrintSeries, IReport, IThesis,IWebPage {\r
-public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends IdentifiableMediaEntity<S> implements INomenclaturalReference, IArticle, IBook, IPatent, IDatabase, IJournal, IBookSection,ICdDvd,IGeneric,IInProceedings, IProceedings, IPrintSeries, IReport, IThesis,IWebPage, IPersonalCommunication, IReferenceBase, Cloneable {\r
+//public abstract class Reference<S extends IReferenceBaseCacheStrategy> extends IdentifiableMediaEntity<S> implements IParsable, IMergable, IMatchable, IArticle, IBook, IJournal, IBookSection,ICdDvd,IGeneric,IInProceedings, IProceedings, IPrintSeries, IReport, IThesis,IWebPage {\r
+public class Reference<S extends IReferenceBaseCacheStrategy> extends IdentifiableMediaEntity<S> implements INomenclaturalReference, IArticle, IBook, IPatent, IDatabase, IJournal, IBookSection,ICdDvd,IGeneric,IInProceedings, IProceedings, IPrintSeries, IReport, IThesis,IWebPage, IPersonalCommunication, IReference, Cloneable {\r
        private static final long serialVersionUID = -2034764545042691295L;\r
-       private static final Logger logger = Logger.getLogger(ReferenceBase.class);\r
+       private static final Logger logger = Logger.getLogger(Reference.class);\r
        \r
        @XmlAttribute(name ="type")\r
        @Column(name="refType")\r
@@ -164,14 +164,14 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
     @Field(index=Index.TOKENIZED)\r
     @NullOrNotEmpty\r
        @Length(max = 255)\r
-       @Pattern(regexp = "(?=.{13}$)\\d{1,5}([- ])\\d{1,7}\\1\\d{1,6}\\1(\\d|X)$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.ReferenceBase.isbn.message}") \r
+       @Pattern(regexp = "(?=.{13}$)\\d{1,5}([- ])\\d{1,7}\\1\\d{1,6}\\1(\\d|X)$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.isbn.message}") \r
        protected String isbn;\r
     \r
        @XmlElement(name = "ISSN")\r
        @Field(index=Index.TOKENIZED)\r
        @NullOrNotEmpty\r
        @Length(max = 255)\r
-       @Pattern(regexp = "(?=.{9}$)\\d{4}([- ])\\d{4} (\\d|X)$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.ReferenceBase.issn.message}") \r
+       @Pattern(regexp = "(?=.{9}$)\\d{4}([- ])\\d{4} (\\d|X)$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.issn.message}") \r
        protected String issn;\r
        \r
     @XmlElement(name = "SeriesPart")\r
@@ -223,7 +223,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //    @IndexedEmbedded\r
     @Cascade(CascadeType.SAVE_UPDATE)\r
     //@InReference(groups=Level2.class)\r
-       protected ReferenceBase inReference;\r
+       protected Reference inReference;\r
     \r
 //    @XmlElement(name = "FullReference")\r
 //    @XmlIDREF\r
@@ -231,7 +231,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //    @ManyToOne(fetch = FetchType.LAZY)\r
 ////    @IndexedEmbedded\r
 //    @Cascade(CascadeType.SAVE_UPDATE)\r
-//    protected ReferenceBase fullReference;\r
+//    protected Reference fullReference;\r
 //    \r
 //    @XmlElement(name = "AbbreviatedReference")\r
 //    @XmlIDREF\r
@@ -239,7 +239,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //    @ManyToOne(fetch = FetchType.LAZY)\r
 ////    @IndexedEmbedded\r
 //    @Cascade(CascadeType.SAVE_UPDATE)\r
-//    protected ReferenceBase abbreviatedReference;\r
+//    protected Reference abbreviatedReference;\r
     \r
     \r
 //********************************************************/    \r
@@ -263,7 +263,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)\r
        @NullOrNotEmpty\r
        @Length(max = 255)\r
-       @Pattern(regexp = "^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?)(?:\\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.ReferenceBase.uri.message}") \r
+       @Pattern(regexp = "^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?)(?:\\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.uri.message}") \r
        private String uri;\r
        \r
        //flag to subselect only references that could be useful for nomenclatural citations. If a reference is used as a\r
@@ -306,13 +306,13 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
     @Match(MatchMode.IGNORE)\r
        private boolean cacheStrategyRectified = false; \r
     \r
-    protected ReferenceBase(){\r
+    protected Reference(){\r
                super();\r
                this.type = ReferenceType.Generic;\r
                this.cacheStrategy =(S)this.type.getCacheStrategy();\r
        }\r
     \r
-       protected ReferenceBase(ReferenceType type) {\r
+       protected Reference(ReferenceType type) {\r
                this.type = type;\r
                this.cacheStrategy =(S) type.getCacheStrategy();\r
        }\r
@@ -428,11 +428,11 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
                this.school = school;\r
        }\r
 \r
-       public ReferenceBase getInReference() {\r
+       public Reference getInReference() {\r
                return inReference;\r
        }\r
 \r
-       public void setInReference(ReferenceBase inReference) {\r
+       public void setInReference(Reference inReference) {\r
                this.inReference = inReference;\r
        }       \r
 \r
@@ -577,7 +577,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //      * @see #getAbbreviatedReference()\r
 //      * @return the full reference\r
 //      */\r
-//     public ReferenceBase getFullReference() {\r
+//     public Reference getFullReference() {\r
 //             return fullReference;\r
 //     }\r
 //\r
@@ -585,7 +585,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //      * @see #getFullReference()\r
 //      * @param fullReference\r
 //      */\r
-//     public void setFullReference(ReferenceBase fullReference) {\r
+//     public void setFullReference(Reference fullReference) {\r
 //             this.fullReference = fullReference;\r
 //     }\r
 //\r
@@ -599,7 +599,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //      * @see #getFullReference()\r
 //      * @return the full reference\r
 //      */\r
-//     public ReferenceBase getAbbreviatedReference() {\r
+//     public Reference getAbbreviatedReference() {\r
 //             return abbreviatedReference;\r
 //     }\r
 //\r
@@ -608,7 +608,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //      * @param abbreviatedReference\r
 //      * \r
 //      */\r
-//     public void setAbbreviatedReference(ReferenceBase abbreviatedReference) {\r
+//     public void setAbbreviatedReference(Reference abbreviatedReference) {\r
 //             this.abbreviatedReference = abbreviatedReference;\r
 //     }\r
        \r
@@ -840,7 +840,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //     @Override\r
 //     public String generateTitle(){\r
 //             if (cacheStrategy == null){\r
-//                     logger.warn("No CacheStrategy defined for ReferenceBase: " + this.getUuid());\r
+//                     logger.warn("No CacheStrategy defined for Reference: " + this.getUuid());\r
 //                     return null;\r
 //             }else{\r
 //                     return cacheStrategy.getTitleCache(this);\r
@@ -870,7 +870,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
 //      * Returns the set of all identical references. Same as getReferenceIdentity().getReferences()\r
 //      * @return\r
 //      */\r
-//     public Set<ReferenceBase> identicalReferences(){\r
+//     public Set<Reference> identicalReferences(){\r
 //             return referenceIdentity.getReferences();\r
 //     }\r
        \r
@@ -887,7 +887,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        @Override\r
        public Object clone() {\r
                try {\r
-                       ReferenceBase result = (ReferenceBase)super.clone();\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
                        return result;\r
@@ -1019,7 +1019,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }\r
 \r
        public void setInJournal(IJournal journal) {\r
-               this.inReference = (ReferenceBase<JournalDefaultCacheStrategy<ReferenceBase>>) journal;\r
+               this.inReference = (Reference<JournalDefaultCacheStrategy<Reference>>) journal;\r
                \r
        }\r
 \r
@@ -1030,7 +1030,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }\r
        \r
        public void setInSeries(IPrintSeries inSeries) {\r
-               this.inReference = (ReferenceBase<IReferenceBaseCacheStrategy<ReferenceBase>>) inSeries;\r
+               this.inReference = (Reference<IReferenceBaseCacheStrategy<Reference>>) inSeries;\r
        }\r
 \r
        @Transient // prevent from being serialized by webservice\r
@@ -1040,7 +1040,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }\r
 \r
        public void setInBook(IBook book) {\r
-               this.inReference = (ReferenceBase<BookDefaultCacheStrategy<ReferenceBase>>) book;\r
+               this.inReference = (Reference<BookDefaultCacheStrategy<Reference>>) book;\r
        }\r
        \r
        @Transient // prevent from being serialized by webservice\r
@@ -1050,7 +1050,7 @@ public class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends Identi
        }\r
        \r
        public void setInProceedings(IProceedings proceeding) {\r
-               this.inReference = (ReferenceBase<BookDefaultCacheStrategy<ReferenceBase>>) proceeding;\r
+               this.inReference = (Reference<BookDefaultCacheStrategy<Reference>>) proceeding;\r
        }\r
 \r
        //public void setCacheStrategy(S cacheStrategy){\r
index 04ad690e1b4f7a3461eb0061ec42b20c46c2ea06..104dae1990c23ffbf770738069a1d175015b32d5 100644 (file)
@@ -34,82 +34,82 @@ public class ReferenceFactory {
                return new ReferenceFactory();\r
        }\r
        \r
-       public static ReferenceBase newArticle(){\r
-               ReferenceBase<ArticleDefaultCacheStrategy> article = new ReferenceBase(ReferenceType.Article);\r
+       public static Reference newArticle(){\r
+               Reference<ArticleDefaultCacheStrategy> article = new Reference(ReferenceType.Article);\r
                article.setCacheStrategy(ReferenceType.Article.getCacheStrategy());\r
                return article;\r
        }\r
 \r
-       public static ReferenceBase newJournal(){\r
-               ReferenceBase<JournalDefaultCacheStrategy<ReferenceBase>> journal = new ReferenceBase(ReferenceType.Journal);\r
+       public static Reference newJournal(){\r
+               Reference<JournalDefaultCacheStrategy<Reference>> journal = new Reference(ReferenceType.Journal);\r
                journal.setCacheStrategy(ReferenceType.Journal.getCacheStrategy());\r
                return journal;\r
        }\r
        \r
-       public static ReferenceBase newBook(){\r
-               ReferenceBase<BookDefaultCacheStrategy<ReferenceBase>> book = new ReferenceBase<BookDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Book);\r
+       public static Reference newBook(){\r
+               Reference<BookDefaultCacheStrategy<Reference>> book = new Reference<BookDefaultCacheStrategy<Reference>>(ReferenceType.Book);\r
                book.setCacheStrategy(ReferenceType.Book.getCacheStrategy());\r
                return book;\r
        }\r
        \r
-       public static ReferenceBase newThesis(){\r
-               ReferenceBase<ThesisDefaultCacheStrategy<ReferenceBase>> thesis = new ReferenceBase<ThesisDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Thesis);\r
+       public static Reference newThesis(){\r
+               Reference<ThesisDefaultCacheStrategy<Reference>> thesis = new Reference<ThesisDefaultCacheStrategy<Reference>>(ReferenceType.Thesis);\r
                thesis.setCacheStrategy(ReferenceType.Thesis.getCacheStrategy());\r
                return thesis;\r
        }\r
        \r
-       public static ReferenceBase newInProceedings(){\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> inProceedings = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.InProceedings);\r
+       public static Reference newInProceedings(){\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> inProceedings = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.InProceedings);\r
                inProceedings.setCacheStrategy(ReferenceType.InProceedings.getCacheStrategy());\r
                return inProceedings;\r
        }\r
        \r
-       public static ReferenceBase newProceedings(){\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> proceedings = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Proceedings);\r
+       public static Reference newProceedings(){\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> proceedings = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.Proceedings);\r
                proceedings.setCacheStrategy(ReferenceType.Proceedings.getCacheStrategy());\r
                return proceedings;\r
        }\r
        \r
-       public static ReferenceBase newBookSection(){\r
-               ReferenceBase<BookSectionDefaultCacheStrategy<ReferenceBase>> bookSection = new ReferenceBase<BookSectionDefaultCacheStrategy<ReferenceBase>>(ReferenceType.BookSection);\r
+       public static Reference newBookSection(){\r
+               Reference<BookSectionDefaultCacheStrategy<Reference>> bookSection = new Reference<BookSectionDefaultCacheStrategy<Reference>>(ReferenceType.BookSection);\r
                bookSection.setCacheStrategy(ReferenceType.BookSection.getCacheStrategy());\r
                return bookSection;\r
        }\r
        \r
-       public static ReferenceBase newCdDvd(){\r
-               ReferenceBase<CdDvdDefaultCacheStrategy<ReferenceBase>> cdDvd= new ReferenceBase<CdDvdDefaultCacheStrategy<ReferenceBase>>(ReferenceType.CdDvd);\r
+       public static Reference newCdDvd(){\r
+               Reference<CdDvdDefaultCacheStrategy<Reference>> cdDvd= new Reference<CdDvdDefaultCacheStrategy<Reference>>(ReferenceType.CdDvd);\r
                cdDvd.setCacheStrategy(ReferenceType.CdDvd.getCacheStrategy());\r
                return cdDvd;\r
        }\r
        \r
-       public static ReferenceBase newGeneric(){\r
-               ReferenceBase generic = new ReferenceBase<GenericDefaultCacheStrategy>(ReferenceType.Generic);\r
+       public static Reference newGeneric(){\r
+               Reference generic = new Reference<GenericDefaultCacheStrategy>(ReferenceType.Generic);\r
                generic.setCacheStrategy(ReferenceType.Generic.getCacheStrategy());\r
                return generic;\r
        }\r
        \r
-       public static ReferenceBase newMap(){\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> map = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Map);\r
+       public static Reference newMap(){\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> map = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.Map);\r
                map.setCacheStrategy(ReferenceType.Map.getCacheStrategy());\r
                return map;\r
                \r
        }\r
        \r
-       public static ReferenceBase newReport(){\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> report = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Report);\r
+       public static Reference newReport(){\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> report = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.Report);\r
                report.setCacheStrategy(ReferenceType.Report.getCacheStrategy());\r
                return report;\r
                \r
        }\r
        \r
-       public static ReferenceBase newWebPage(){\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> webPage = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.WebPage);\r
+       public static Reference newWebPage(){\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> webPage = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.WebPage);\r
                webPage.setCacheStrategy(ReferenceType.WebPage.getCacheStrategy());\r
                return webPage;\r
        }\r
        \r
-       public static ReferenceBase newDatabase(){\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> db = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Database);\r
+       public static Reference newDatabase(){\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> db = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.Database);\r
                db.setCacheStrategy(ReferenceType.Database.getCacheStrategy());\r
                return db;\r
        }\r
@@ -118,8 +118,8 @@ public class ReferenceFactory {
        /** \r
         * Creates a new empty print series instance.\r
         */\r
-       public static ReferenceBase newPrintSeries() {\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> refBase = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.PrintSeries);\r
+       public static Reference newPrintSeries() {\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> refBase = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.PrintSeries);\r
                refBase.setCacheStrategy(ReferenceType.PrintSeries.getCacheStrategy());\r
                return refBase;\r
        }\r
@@ -127,24 +127,24 @@ public class ReferenceFactory {
        /** \r
         * Creates a new print series instance with a given title string.\r
         */\r
-       public static ReferenceBase newPrintSeries(String series) {\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> refBase = newPrintSeries();\r
+       public static Reference newPrintSeries(String series) {\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> refBase = newPrintSeries();\r
                refBase.setCacheStrategy(ReferenceType.PrintSeries.getCacheStrategy());\r
                return refBase;\r
        }\r
 \r
-       public ReferenceBase newBookSection(ReferenceBase book, Person partAuthor,\r
+       public Reference newBookSection(Reference book, Person partAuthor,\r
                        String sectionTitle, String pages) {\r
-               ReferenceBase bookSection = newBookSection();\r
+               Reference bookSection = newBookSection();\r
                bookSection.setAuthorTeam(partAuthor);\r
                bookSection.setTitle(sectionTitle);\r
                bookSection.setPages(pages);\r
                return bookSection;\r
        }\r
 \r
-       public static ReferenceBase newArticle(ReferenceBase inJournal, Person partAuthor,\r
+       public static Reference newArticle(Reference inJournal, Person partAuthor,\r
                        String title, String pages, String series, String volume, TimePeriod datePublished) {\r
-               ReferenceBase article = newArticle();\r
+               Reference article = newArticle();\r
                article.setInReference(inJournal);\r
                article.setAuthorTeam(partAuthor);\r
                article.setTitle(title);\r
@@ -160,7 +160,7 @@ public class ReferenceFactory {
         * @param referenceType\r
         * @return\r
         */\r
-       public static ReferenceBase newReference(ReferenceType referenceType) {\r
+       public static Reference newReference(ReferenceType referenceType) {\r
                if (referenceType == null){\r
                        return null;\r
                }\r
@@ -203,14 +203,14 @@ public class ReferenceFactory {
                }\r
        }\r
 \r
-       public static ReferenceBase newPersonalCommunication() {\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> personalCommunication = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.PersonalCommunication);\r
+       public static Reference newPersonalCommunication() {\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> personalCommunication = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.PersonalCommunication);\r
                personalCommunication.setCacheStrategy(ReferenceType.PersonalCommunication.getCacheStrategy());\r
                return personalCommunication;\r
        }\r
 \r
-       public static ReferenceBase newPatent() {\r
-               ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>> patent = new ReferenceBase<ReferenceBaseDefaultCacheStrategy<ReferenceBase>>(ReferenceType.Patent);\r
+       public static Reference newPatent() {\r
+               Reference<ReferenceBaseDefaultCacheStrategy<Reference>> patent = new Reference<ReferenceBaseDefaultCacheStrategy<Reference>>(ReferenceType.Patent);\r
                patent.setCacheStrategy(ReferenceType.Patent.getCacheStrategy());\r
                return patent;\r
        }\r
index f48c289c3d162c8e1732088cd850195a7a5470c4..d2d8b69bc7529d8de8d1b94a830ec314b08c5c6e 100644 (file)
@@ -55,7 +55,7 @@ public class ReferenceIdentity extends VersionableEntity {
     @XmlIDREF\r
     @XmlSchemaType(name = "IDREF")\r
     @OneToMany(mappedBy="name", fetch= FetchType.LAZY)\r
-       private Set<ReferenceBase> references;\r
+       private Set<Reference> references;\r
        \r
        @XmlElement(name = "PreferredLongForm")\r
        @XmlIDREF\r
@@ -63,7 +63,7 @@ public class ReferenceIdentity extends VersionableEntity {
        @ManyToOne(fetch = FetchType.LAZY)\r
        //@IndexedEmbedded\r
        @Cascade(CascadeType.SAVE_UPDATE)\r
-       private ReferenceBase preferredLongForm;\r
+       private Reference preferredLongForm;\r
 \r
 \r
        @XmlElement(name = "PreferredAbbreviation")\r
@@ -72,13 +72,13 @@ public class ReferenceIdentity extends VersionableEntity {
        @ManyToOne(fetch = FetchType.LAZY)\r
        //@IndexedEmbedded\r
        @Cascade(CascadeType.SAVE_UPDATE)\r
-       private ReferenceBase preferredAbbreviation;\r
+       private Reference preferredAbbreviation;\r
        \r
        \r
        /**\r
         * @return the references\r
         */\r
-       public Set<ReferenceBase> getReferences() {\r
+       public Set<Reference> getReferences() {\r
                return references;\r
        }\r
 \r
@@ -88,7 +88,7 @@ public class ReferenceIdentity extends VersionableEntity {
 //      * @param reference\r
 //      * @return\r
 //      */\r
-//     public boolean addReference(ReferenceBase reference){\r
+//     public boolean addReference(Reference reference){\r
 //             if (reference == null){\r
 //                     return false;\r
 //             }\r
@@ -98,7 +98,7 @@ public class ReferenceIdentity extends VersionableEntity {
 //             return this.references.add(reference);\r
 //     }\r
 //     \r
-//     public boolean removeReference(ReferenceBase reference){\r
+//     public boolean removeReference(Reference reference){\r
 //             if (reference == null){\r
 //                     return false;\r
 //             }\r
@@ -110,28 +110,28 @@ public class ReferenceIdentity extends VersionableEntity {
        /**\r
         * @return the preferredLongForm\r
         */\r
-       public ReferenceBase getPreferredLongForm() {\r
+       public Reference getPreferredLongForm() {\r
                return preferredLongForm;\r
        }\r
 \r
        /**\r
         * @param preferredLongForm the preferredLongForm to set\r
         */\r
-       public void setPreferredLongForm(ReferenceBase preferredLongForm) {\r
+       public void setPreferredLongForm(Reference preferredLongForm) {\r
                this.preferredLongForm = preferredLongForm;\r
        }\r
 \r
        /**\r
         * @return the preferredAbbreviation\r
         */\r
-       public ReferenceBase getPreferredAbbreviation() {\r
+       public Reference getPreferredAbbreviation() {\r
                return preferredAbbreviation;\r
        }\r
 \r
        /**\r
         * @param preferredAbbreviation the preferredAbbreviation to set\r
         */\r
-       public void setPreferredAbbreviation(ReferenceBase preferredAbbreviation) {\r
+       public void setPreferredAbbreviation(Reference preferredAbbreviation) {\r
                this.preferredAbbreviation = preferredAbbreviation;\r
        }\r
        \r
index 1859a0fe0b9569ba179e4f8a61ffd09ff11677f6..8a78e839a1937fd9a236eaa3c83d7568158c7250 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.strategy.cache.reference.ThesisDefaultCacheStrategy;
 \r
 \r
 /**\r
- * The reference type is used to define the type of a {@link ReferenceBase reference}.<BR>\r
+ * The reference type is used to define the type of a {@link Reference reference}.<BR>\r
  * When changing the type of a reference one must be careful with handling attached information.\r
  * E.g. changing the type of a reference from article to book section requires to either exchange\r
  * the in reference or to change the type of the in reference which may have further consequences.\r
@@ -84,15 +84,7 @@ public enum ReferenceType {
        Thesis("Thesis", ThesisDefaultCacheStrategy.class),\r
        //15\r
        @XmlEnumValue("Web Page")\r
-       WebPage("Web Page", ReferenceBaseDefaultCacheStrategy.class), \r
-       //16\r
-       @XmlEnumValue("Printed Unit Base")\r
-       @Deprecated // all references are ReferenceBases this type should not longer be used. Use isPrintedUnit() for tests against this type instead.\r
-       PrintedUnitBase("Printed Unit Base", ReferenceBaseDefaultCacheStrategy.class), \r
-       //17\r
-       @XmlEnumValue("Publication Base")\r
-       @Deprecated // all references are ReferenceBases this type should not longer be used. Use isPublication() for tests against this type instead.\r
-       PublicationBase("Publication Base", ReferenceBaseDefaultCacheStrategy.class);\r
+       WebPage("Web Page", ReferenceBaseDefaultCacheStrategy.class);\r
        \r
        \r
        private String readableString;\r
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Report.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Report.java
deleted file mode 100644 (file)
index 6413f4e..0000000
+++ /dev/null
@@ -1,130 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents reports. A report is a document characterized by 
- * information reflective of inquiry or investigation. Reports often address
- * questions posed by individuals in government or science and are generally
- * elaborated within an {@link eu.etaxonomy.cdm.model.agent.Institution institution}.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "Report".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:49
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Report", propOrder = {
-//    "institution"
-})
-@XmlRootElement(name = "Report")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Report extends PublicationBase<IReferenceBaseCacheStrategy<Report>> implements Cloneable {
-       private static final long serialVersionUID = 2224085476416095383L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(Report.class);
-       
-//     @XmlElement(name = "Institution")
-//     @XmlIDREF
-//     @XmlSchemaType(name = "IDREF")
-//     @ManyToOne(fetch = FetchType.LAZY)
-//     @IndexedEmbedded
-//     @Cascade(CascadeType.SAVE_UPDATE)
-//     private Institution institution;
-
-       protected Report() {
-               super();
-               this.type = ReferenceType.Report;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<Report>();
-       }
-       
-       /** 
-        * Creates a new empty report instance
-        * 
-        * @see #NewInstance(Institution)
-        */
-       public static Report NewInstance(){
-               Report result = new Report();
-               return result;
-       }
-       
-       /** 
-        * Creates a new report instance with the given {@link eu.etaxonomy.cdm.model.agent.Institution institution}.
-        * 
-        * @param       institution             the institution where <i>this</i> report has
-        *                                                      been elaborated
-        * @see                                         #NewInstance()
-        */
-       public static Report NewInstance(Institution institution){
-               Report result = NewInstance();
-               result.setInstitution(institution);
-               return result;
-       }
-       
-       
-       /**
-        * Returns the {@link eu.etaxonomy.cdm.model.agent.Institution institution} in which <i>this</i>
-        * report has been elaborated.
-        * 
-        * @return  the institution
-        * @see         eu.etaxonomy.cdm.model.agent.Institution
-        */
-       public Institution getInstitution(){
-               return this.institution;
-       }
-       
-       /**
-        * @see #getInstitution()
-        */
-       public void setInstitution(Institution institution){
-               this.institution = institution;
-       }
-       
-       /** 
-        * Clones <i>this</i> report instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * report instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Report clone(){
-               Report result = (Report)super.clone();
-               //no changes to: institution
-               return result;
-       }
-
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/SectionBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/SectionBase.java
deleted file mode 100644 (file)
index ed0c030..0000000
+++ /dev/null
@@ -1,91 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-
-/**
- * This (abstract) class represents isolated sections (parts, chapters or
- * papers) within a {@link PrintedUnitBase printed unit}.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "SubReference".
- *   
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:51
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "SectionBase", propOrder = {
-//    "pages"
-})
-@XmlRootElement(name = "SectionBase")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Deprecated
-public abstract class SectionBase<S extends IReferenceBaseCacheStrategy> extends ReferenceBase<S> {
-       private static final long serialVersionUID = -2430228069266443975L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(SectionBase.class);
-       
-//     @XmlElement(name = "Pages")
-//     @Field(index=Index.TOKENIZED)
-//     private String pages;
-
-       /**
-        * Returns the string representing the page(s) where the content of
-        * <i>this</i> section is located within the {@link PrintedUnitBase printed unit}.
-        * 
-        * @return  the string with the pages corresponding to <i>this</i> section
-        */
-       public String getPages(){
-               return this.pages;
-       }
-
-       /**
-        * @see #getPages()
-        */
-       public void setPages(String pages){
-               this.pages = pages;
-       }
-
-
-       
-
-
-       /** 
-        * Clones <i>this</i> section. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i> section
-        * by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link StrictReferenceBase StrictReferenceBase}.
-        * 
-        * @see StrictReferenceBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Object clone(){
-               SectionBase result = (SectionBase)super.clone();
-               //no changes to: pages
-               return result;
-       }
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Thesis.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Thesis.java
deleted file mode 100644 (file)
index bf65e74..0000000
+++ /dev/null
@@ -1,154 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-
-import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ThesisDefaultCacheStrategy;
-
-/**
- * This class represents thesis. A thesis is a document that presents the
- * author's research and findings and is submitted at a
- * {@link eu.etaxonomy.cdm.model.agent.Institution high school institution} in support of candidature for
- * a degree or professional qualification.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "Thesis".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:59
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "Thesis", propOrder = {
-//    "school"
-})
-@XmlRootElement(name = "Thesis")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class Thesis extends PublicationBase<INomenclaturalReferenceCacheStrategy<Thesis>> implements INomenclaturalReference, Cloneable{
-       private static final long serialVersionUID = -1554558008861571165L;
-       private static final Logger logger = Logger.getLogger(Thesis.class);
-       
-//     @XmlElement(name = "School")
-//    @XmlIDREF
-//    @XmlSchemaType(name = "IDREF")
-//     @ManyToOne(fetch = FetchType.LAZY)
-//     @IndexedEmbedded
-//     @Cascade(CascadeType.SAVE_UPDATE)
-//     private Institution school;
-       
-       protected Thesis() {
-               super();
-               this.type = ReferenceType.Thesis;
-               this.cacheStrategy = ThesisDefaultCacheStrategy.NewInstance();
-       }
-
-       /** 
-        * Creates a new empty thesis instance
-        * 
-        * @see #NewInstance(Institution)
-        */
-       public static Thesis NewInstance(){
-               Thesis result = new Thesis();
-               return result;
-       }
-       
-       /** 
-        * Creates a new thesis instance with the given {@link eu.etaxonomy.cdm.model.agent.Institution high school institution}.
-        * 
-        * @param       school          the high school institution where <i>this</i> thesis
-        *                                              has been submitted
-        * @see                                 #NewInstance()
-        */
-       public static Thesis NewInstance(Institution school){
-               Thesis result = NewInstance();
-               result.setSchool(school);
-               return result;
-       }
-       
-       /**
-        * Returns the {@link eu.etaxonomy.cdm.model.agent.Institution high school institution} in which <i>this</i>
-        * report has been submitted.
-        * 
-        * @return  the high school institution
-        * @see         agent.Institution
-        */
-       public Institution getSchool(){
-               return this.school;
-       }
-
-       /**
-        * @see #getSchool()
-        */
-       public void setSchool(Institution school){
-               this.school = school;
-       }
-       
-       /**
-        * Returns a formatted string containing the entire citation used for
-        * nomenclatural purposes based on <i>this</i> generic reference - including
-        * (abbreviated) title but not authors - and on the given
-        * details.
-        * 
-        * @param  microReference       the string with the details (generally pages)
-        *                                                      within <i>this</i> generic reference
-        * @return                                      the formatted string representing the
-        *                                                      nomenclatural citation
-        * @see                                         #getCitation()
-        */
-       @Transient
-       public String getNomenclaturalCitation(String microReference) {
-               if (cacheStrategy == null){
-                       logger.warn("No CacheStrategy defined for "+ this.getClass() + ": " + this.getUuid());
-                       return null;
-               }else{
-                       return cacheStrategy.getNomenclaturalCitation(this,microReference);
-               }
-       }
-       
-       
-
-       
-       /** 
-        * Clones <i>this</i> thesis instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * thesis instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public Thesis clone(){
-               Thesis result = (Thesis)super.clone();
-               //no changes to: institution
-               return result;
-       }
-
-}
\ No newline at end of file
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/WebPage.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/WebPage.java
deleted file mode 100644 (file)
index a3d5c62..0000000
+++ /dev/null
@@ -1,83 +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.reference;
-
-
-import javax.persistence.Entity;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.log4j.Logger;
-import org.hibernate.envers.Audited;
-import org.hibernate.search.annotations.Indexed;
-import org.springframework.beans.factory.annotation.Configurable;
-
-import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceBaseCacheStrategy;
-import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrategy;
-
-/**
- * This class represents electronic publications available on the world wide web.
- * <P>
- * This class corresponds, according to the TDWG ontology, to the publication type
- * term (from PublicationTypeTerm): "WebPage".
- * 
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:07:03
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "WebPage")
-@XmlRootElement(name = "WebPage")
-@Entity
-@Indexed(index = "eu.etaxonomy.cdm.model.reference.ReferenceBase")
-@Audited
-@Configurable
-@Deprecated
-public class WebPage extends PublicationBase<IReferenceBaseCacheStrategy<WebPage>> implements Cloneable {
-       private static final long serialVersionUID = -1527430409075839226L;
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(WebPage.class);
-
-       /** 
-        * Class constructor: creates a new empty web page instance.
-        */
-       protected WebPage(){
-               super();
-               this.type = ReferenceType.WebPage;
-               this.cacheStrategy = new ReferenceBaseDefaultCacheStrategy<WebPage>();
-       }
-       
-       /** 
-        * Creates a new empty web page instance.
-        */
-       public static WebPage NewInstance(){
-               return new WebPage();
-       }
-       
-       
-       /** 
-        * Clones <i>this</i> web page instance. This is a shortcut that enables to
-        * create a new instance that differs only slightly from <i>this</i>
-        * web page instance by modifying only some of the attributes.<BR>
-        * This method overrides the clone method from {@link PublicationBase PublicationBase}.
-        * 
-        * @see PublicationBase#clone()
-        * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
-        * @see java.lang.Object#clone()
-        */
-       @Override
-       public WebPage clone(){
-               WebPage result = (WebPage)super.clone();
-               //no changes to: -
-               return result;
-       }
-}
\ No newline at end of file
index 2343603075736d8590516311db6ba5110d619759..733320fa771012a0e544eff203473e53f59684ad 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.cdm.model.taxon;
 \r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -28,8 +28,8 @@ public class AlternativeTreeRoot extends TaxonNode {
        private TaxonNode replacedTaxonNode; \r
        \r
        \r
-       protected AlternativeTreeRoot(TaxonNode oldRoot, TaxonNode replacedTaxonNodeFromParentView, ReferenceBase reference, String microReference) {\r
-               super(oldRoot.getTaxon(), oldRoot.getTaxonomicTree());\r
+       protected AlternativeTreeRoot(TaxonNode oldRoot, TaxonNode replacedTaxonNodeFromParentView, Reference reference, String microReference) {\r
+               super(oldRoot.getTaxon(), oldRoot.getClassification());\r
                this.setParent(replacedTaxonNodeFromParentView.getParentTreeNode());\r
                this.setReplacedTaxonNode(replacedTaxonNodeFromParentView);\r
        //      this.childNodes = oldRoot.getChildNodes());\r
similarity index 82%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonomicTree.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Classification.java
index 88116d378d08f278e047bcf29bd33434abe7f0b4..f0529884bb837d5603c7d248d5a0f98751de0b31 100644 (file)
@@ -21,7 +21,6 @@ import javax.persistence.ManyToOne;
 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
@@ -42,7 +41,7 @@ import eu.etaxonomy.cdm.model.common.IReferencedEntity;
 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.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -50,19 +49,19 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase;
  * @version 1.0\r
  */\r
 @XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "TaxonomicTree", propOrder = {\r
+@XmlType(name = "Classification", propOrder = {\r
     "name",\r
     "rootNodes",\r
     "reference",\r
     "microReference"\r
 })\r
-@XmlRootElement(name = "TaxonomicTree")\r
+@XmlRootElement(name = "Classification")\r
 @Entity\r
 @Audited\r
-@Indexed(index = "eu.etaxonomy.cdm.model.taxon.TaxonomicTree")\r
-public class TaxonomicTree extends IdentifiableEntity implements IReferencedEntity, ITreeNode{\r
+@Indexed(index = "eu.etaxonomy.cdm.model.taxon.Classification")\r
+public class Classification extends IdentifiableEntity implements IReferencedEntity, ITreeNode{\r
        private static final long serialVersionUID = -753804821474209635L;\r
-       private static final Logger logger = Logger.getLogger(TaxonomicTree.class);\r
+       private static final Logger logger = Logger.getLogger(Classification.class);\r
        \r
        @XmlElement(name = "Name")\r
        @OneToOne(fetch = FetchType.LAZY)\r
@@ -86,7 +85,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
        @XmlSchemaType(name = "IDREF")\r
        @ManyToOne(fetch = FetchType.LAZY)\r
        @Cascade({CascadeType.SAVE_UPDATE})\r
-       private ReferenceBase reference;\r
+       private Reference reference;\r
        \r
        @XmlElement(name = "microReference")\r
        private String microReference;\r
@@ -100,38 +99,38 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
 //     private AlternativeViewRoot alternativeViewRoot;\r
        \r
        \r
-       public static TaxonomicTree NewInstance(String name){\r
+       public static Classification NewInstance(String name){\r
                return NewInstance(name, null, Language.DEFAULT());\r
        }\r
        \r
-       public static TaxonomicTree NewInstance(String name, Language language){\r
+       public static Classification NewInstance(String name, Language language){\r
                return NewInstance(name, null, language);\r
        }\r
        \r
-       public static TaxonomicTree NewInstance(String name, ReferenceBase reference){\r
+       public static Classification NewInstance(String name, Reference reference){\r
                return NewInstance(name, reference, Language.DEFAULT());\r
        }\r
        \r
-       public static TaxonomicTree NewInstance(String name, ReferenceBase reference, Language language){\r
-               return new TaxonomicTree(name, reference, language);\r
+       public static Classification NewInstance(String name, Reference reference, Language language){\r
+               return new Classification(name, reference, language);\r
        }\r
        \r
-       protected TaxonomicTree(String name, ReferenceBase reference, Language language){\r
+       protected Classification(String name, Reference reference, Language language){\r
                this();\r
                LanguageString langName = LanguageString.NewInstance(name, language);\r
                setName(langName);\r
                setReference(reference);\r
        }\r
        \r
-       protected TaxonomicTree(){\r
+       protected Classification(){\r
                super();\r
        }\r
        \r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#addChildNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)\r
+        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#addChildNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)\r
         */\r
-       public TaxonNode addChildNode(TaxonNode childNode, ReferenceBase citation,\r
+       public TaxonNode addChildNode(TaxonNode childNode, Reference citation,\r
                        String microCitation, Synonym synonymToBeUsed) {\r
                \r
                childNode.setParentTreeNode(this);\r
@@ -144,9 +143,9 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#addChildTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)\r
+        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#addChildTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)\r
         */\r
-       public TaxonNode addChildTaxon(Taxon taxon, ReferenceBase citation,\r
+       public TaxonNode addChildTaxon(Taxon taxon, Reference citation,\r
                        String microCitation, Synonym synonymToBeUsed) {\r
                return addChildNode(new TaxonNode(taxon), citation, microCitation, synonymToBeUsed);\r
        }\r
@@ -177,13 +176,13 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
                boolean result = false;\r
                \r
                if(!rootNodes.contains(node)){\r
-                       throw new IllegalArgumentException("TaxonNode is a not a root node of this taxonomic tree");\r
+                       throw new IllegalArgumentException("TaxonNode is a not a root node of this classification");\r
                }\r
                \r
                result = rootNodes.remove(node);\r
 \r
                node.setParent(null);\r
-               node.setTaxonomicTree(null);\r
+               node.setClassification(null);\r
                \r
                return result;\r
        }\r
@@ -197,7 +196,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
         * @param microReference\r
         * @throws IllegalArgumentException\r
         */\r
-       public void makeTopmostNodeChildOfOtherNode(TaxonNode topmostNode, TaxonNode otherNode, ReferenceBase ref, String microReference)\r
+       public void makeTopmostNodeChildOfOtherNode(TaxonNode topmostNode, TaxonNode otherNode, Reference ref, String microReference)\r
                                throws IllegalArgumentException{\r
                if (otherNode == null){\r
                        throw new NullPointerException("other node must not be null");\r
@@ -205,7 +204,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
                if (! getChildNodes().contains(topmostNode)){\r
                        throw new IllegalArgumentException("root node to be added as child must already be root node within this tree");\r
                }\r
-               if (otherNode.getTaxonomicTree() == null || ! otherNode.getTaxonomicTree().equals(this)){\r
+               if (otherNode.getClassification() == null || ! otherNode.getClassification().equals(this)){\r
                        throw new IllegalArgumentException("other node must already be node within this tree");\r
                }\r
                if (otherNode.equals(topmostNode)){\r
@@ -236,7 +235,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
                        return null;\r
                }\r
                for (TaxonNode taxonNode: taxon.getTaxonNodes()){\r
-                       if (taxonNode.getTaxonomicTree().equals(this)){\r
+                       if (taxonNode.getClassification().equals(this)){\r
                                return taxonNode;\r
                        }\r
                }\r
@@ -264,10 +263,10 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
                        return null;\r
                }\r
                for (TaxonNode taxonNode: taxon.getTaxonNodes()){\r
-                       if (taxonNode.getTaxonomicTree().equals(this)){\r
+                       if (taxonNode.getClassification().equals(this)){\r
                                if (this.getChildNodes().contains(taxonNode)){\r
                                        if (taxonNode.getParentTreeNode() instanceof TaxonNode){\r
-                                               logger.warn("A topmost node should have a TaxonomicTree as parent but actually has a TaxonNode parent");\r
+                                               logger.warn("A topmost node should have a Classification as parent but actually has a TaxonNode parent");\r
                                        }\r
                                        return taxonNode;\r
                                }\r
@@ -276,7 +275,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
                return null;\r
        }\r
 \r
-       private boolean handleCitationOverwrite(TaxonNode childNode, ReferenceBase citation, String microCitation){\r
+       private boolean handleCitationOverwrite(TaxonNode childNode, Reference citation, String microCitation){\r
                if (citation != null){\r
                        if (childNode.getReference() != null && ! childNode.getReference().equals(citation)){\r
                                logger.warn("ReferenceForParentChildRelation will be overwritten");\r
@@ -293,7 +292,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
        }\r
        \r
        /**\r
-        * Relates two taxa as parent-child nodes within a taxonomic tree. <BR>\r
+        * Relates two taxa as parent-child nodes within a classification. <BR>\r
         * If the taxa are not yet part of the tree they are added to it.<Br>\r
         * If the child taxon is a topmost node still it is added as child and deleted from the rootNode set.<Br>\r
         * If the child is a child of another parent already an IllegalStateException is thrown because a child can have only \r
@@ -308,7 +307,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
         * @return the childNode\r
         * @throws IllegalStateException If the child is a child of another parent already\r
         */\r
-       public TaxonNode addParentChild (Taxon parent, Taxon child, ReferenceBase citation, String microCitation)\r
+       public TaxonNode addParentChild (Taxon parent, Taxon child, Reference citation, String microCitation)\r
                        throws IllegalStateException{\r
                try {\r
                        if (parent == null || child == null){\r
@@ -361,7 +360,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
        \r
        \r
        @Transient\r
-       public ReferenceBase getCitation() {\r
+       public Reference getCitation() {\r
                return reference;\r
        }\r
        \r
@@ -374,7 +373,7 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
        }\r
 \r
        /**\r
-        * Returns a set containing all nodes in this taxonomic tree.\r
+        * Returns a set containing all nodes in this classification.\r
         * \r
         * Caution: Use this method with care. It can be very time and resource consuming and might\r
         * run into OutOfMemoryExceptions for big trees. \r
@@ -400,11 +399,11 @@ public class TaxonomicTree extends IdentifiableEntity implements IReferencedEnti
                this.rootNodes = rootNodes;\r
        }\r
 \r
-       public ReferenceBase getReference() {\r
+       public Reference getReference() {\r
                return reference;\r
        }\r
 \r
-       public void setReference(ReferenceBase reference) {\r
+       public void setReference(Reference reference) {\r
                this.reference = reference;\r
        }\r
        \r
index 13711c43c6d1a5c49172ecc5e4399fae5693a6ee..31e2bbadf271d9f552092a322742a8ab195c87f2 100644 (file)
@@ -13,7 +13,7 @@ package eu.etaxonomy.cdm.model.taxon;
 import java.util.Set;
 
 import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 
 /**
@@ -32,7 +32,7 @@ public interface ITreeNode extends IAnnotatableEntity {
         * @param synonymToBeUsed
         * @return the child node 
         */
-       public TaxonNode addChildNode(TaxonNode childNode, ReferenceBase citation, String microCitation, Synonym synonymToBeUsed);
+       public TaxonNode addChildNode(TaxonNode childNode, Reference citation, String microCitation, Synonym synonymToBeUsed);
        
        /**
         * Adds a taxon as a child of the ITreeNode
@@ -43,7 +43,7 @@ public interface ITreeNode extends IAnnotatableEntity {
         * @param synonymToBeUsed
         * @return the child node
         */
-       public TaxonNode addChildTaxon(Taxon taxon, ReferenceBase citation, String microCitation, Synonym synonymToBeUsed);
+       public TaxonNode addChildTaxon(Taxon taxon, Reference citation, String microCitation, Synonym synonymToBeUsed);
        
        /**
         * Whether this TreeNode has child nodes attached
@@ -65,7 +65,7 @@ public interface ITreeNode extends IAnnotatableEntity {
        /**
         * @return the citation for the parent child relationship or the tree itself
         */
-       public ReferenceBase getReference();
+       public Reference getReference();
        
        public Set<TaxonNode> getChildNodes();
        
index b8e321447ef1bfbf0eef1828f0ba66bfe72520bf..6b2c979801ee6d11b4ff12281f9df1f9edfa77bc 100644 (file)
@@ -19,7 +19,7 @@ import org.springframework.beans.factory.annotation.Configurable;
 
 import eu.etaxonomy.cdm.model.common.IRelated;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseDefaultCacheStrategy;
 import eu.etaxonomy.cdm.validation.Level2;
@@ -83,7 +83,7 @@ public class Synonym extends TaxonBase<IIdentifiableEntityCacheStrategy<Synonym>
        /** 
         * Class constructor: creates a new empty synonym instance.
         * 
-        * @see         #Synonym(TaxonNameBase, ReferenceBase)
+        * @see         #Synonym(TaxonNameBase, Reference)
         */
        //TODO should be private, but still produces Spring init errors
        public Synonym(){
@@ -92,14 +92,14 @@ public class Synonym extends TaxonBase<IIdentifiableEntityCacheStrategy<Synonym>
        
        /** 
         * Class constructor: creates a new synonym instance with
-        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * using it as a synonym and not as an ("accepted/correct") {@link Taxon taxon}.
         * 
         * @param  taxonNameBase        the taxon name used
         * @param  sec                          the reference using the taxon name
-        * @see                                         Synonym#Synonym(TaxonNameBase, ReferenceBase)
+        * @see                                         Synonym#Synonym(TaxonNameBase, Reference)
         */
-       public Synonym(TaxonNameBase taxonNameBase, ReferenceBase sec){
+       public Synonym(TaxonNameBase taxonNameBase, Reference sec){
                super(taxonNameBase, sec);
                this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Synonym>();
        }
@@ -108,14 +108,14 @@ public class Synonym extends TaxonBase<IIdentifiableEntityCacheStrategy<Synonym>
 
        /** 
         * Creates a new synonym instance with
-        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * using it as a synonym and not as an ("accepted/correct") {@link Taxon taxon}.
         * 
         * @param  taxonNameBase        the taxon name used
         * @param  sec                          the reference using the taxon name
-        * @see                                         #Synonym(TaxonNameBase, ReferenceBase)
+        * @see                                         #Synonym(TaxonNameBase, Reference)
         */
-       public static Synonym NewInstance(TaxonNameBase taxonName, ReferenceBase sec){
+       public static Synonym NewInstance(TaxonNameBase taxonName, Reference sec){
                Synonym result = new Synonym(taxonName, sec);
                return result;
        }
index a55ad18184e76842c31005294b494067f7a0e1dd..db2b24667b169ccc55af9f6884f0d4af6268ba8e 100644 (file)
@@ -31,7 +31,7 @@ import org.hibernate.envers.Audited;
 import eu.etaxonomy.cdm.model.common.IRelated;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.validation.Level2;
 import eu.etaxonomy.cdm.validation.Level3;
 import eu.etaxonomy.cdm.validation.annotation.HomotypicSynonymsShouldBelongToGroup;
@@ -111,7 +111,7 @@ public class SynonymRelationship extends RelationshipBase<Synonym, Taxon, Synony
         * Class constructor: creates a new synonym relationship instance (with the
         * given {@link Synonym synonym}, the given "accepted/correct" {@link Taxon taxon},
         * the given {@link SynonymRelationshipType synonym relationship type} and with the
-        * {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} on which the relationship assertion is based).
+        * {@link eu.etaxonomy.cdm.model.reference.Reference reference source} on which the relationship assertion is based).
         * Moreover the new synonym relationship will be added to the respective
         * sets of synonym relationships assigned to the synonym and to the
         * "accepted/correct" taxon.
@@ -121,9 +121,9 @@ public class SynonymRelationship extends RelationshipBase<Synonym, Taxon, Synony
         * @param type                                          the synonym relationship type of the new synonym relationship
         * @param citation                                      the reference source for the new synonym relationship
         * @param citationMicroReference        the string with the details describing the exact localisation within the reference
-        * @see                                                         eu.etaxonomy.cdm.model.common.RelationshipBase#RelationshipBase(IRelated, IRelated, RelationshipTermBase, ReferenceBase, String)
+        * @see                                                         eu.etaxonomy.cdm.model.common.RelationshipBase#RelationshipBase(IRelated, IRelated, RelationshipTermBase, Reference, String)
         */
-       protected SynonymRelationship(Synonym synonym, Taxon taxon, SynonymRelationshipType type, ReferenceBase citation, String citationMicroReference) {
+       protected SynonymRelationship(Synonym synonym, Taxon taxon, SynonymRelationshipType type, Reference citation, String citationMicroReference) {
                super(synonym, taxon, type, citation, citationMicroReference);
        }
        
index 66290a1edfee961724c1e080391d372fe62c3ee8..ac9cb7898c99f3426985265877bc4c8dc676e816 100644 (file)
@@ -50,13 +50,13 @@ import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseDefaultCacheStrategy;
 
 /**
  * The class for "accepted/correct" {@link TaxonBase taxa} (only these taxa according to
- * the opinion of the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference} can build a taxonomic tree).
+ * the opinion of the {@link eu.etaxonomy.cdm.model.reference.Reference reference} can build a classification).
  * An {@link java.lang.Iterable interface} is supported to iterate through taxonomic children.<BR>
  * Splitting taxa in "accepted/correct" and {@link Synonym "synonyms"} makes it easier to handle
  * particular relationships between ("accepted/correct") taxa on the one hand
@@ -81,7 +81,7 @@ import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseDefaultCacheStrategy;
 @Indexed(index = "eu.etaxonomy.cdm.model.taxon.TaxonBase")
 @Audited
 @Configurable
-public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> implements Iterable<Taxon>, IRelated<RelationshipBase>{
+public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> implements IRelated<RelationshipBase>{
        private static final long serialVersionUID = -584946869762749006L;
        private static final Logger logger = Logger.getLogger(Taxon.class);
 
@@ -135,7 +135,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        @XmlIDREF
        @XmlSchemaType(name = "IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        private Taxon taxonomicParentCache;
        
        
@@ -150,7 +150,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
 
        //cached number of taxonomic children
        @XmlElement(name = "TaxonomicChildrenCount")
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        private int taxonomicChildrenCount;
        
 // ************* CONSTRUCTORS *************/   
@@ -163,14 +163,14 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        
        /** 
         * Class constructor: creates a new (accepted/correct) taxon instance with
-        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * using it.
         * 
         * @param  taxonNameBase        the taxon name used
         * @param  sec                          the reference using the taxon name
-        * @see                                         TaxonBase#TaxonBase(TaxonNameBase, ReferenceBase)
+        * @see                                         TaxonBase#TaxonBase(TaxonNameBase, Reference)
         */
-       public Taxon(TaxonNameBase taxonNameBase, ReferenceBase sec){
+       public Taxon(TaxonNameBase taxonNameBase, Reference sec){
                super(taxonNameBase, sec);
                this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Taxon>();
        }
@@ -179,28 +179,28 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
 
        /** 
         * Creates a new (accepted/correct) taxon instance with
-        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * using it.
         * 
         * @param  taxonNameBase        the taxon name used
         * @param  sec                          the reference using the taxon name
-        * @see                                         #Taxon(TaxonNameBase, ReferenceBase)
+        * @see                                         #Taxon(TaxonNameBase, Reference)
         */
-       public static Taxon NewInstance(TaxonNameBase taxonNameBase, ReferenceBase sec){
+       public static Taxon NewInstance(TaxonNameBase taxonNameBase, Reference sec){
                Taxon result = new Taxon(taxonNameBase, sec);
                return result;
        }
 
        /** 
         * Creates a new taxon instance with an unknown status (accepted/synonym) and with
-        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * using it.
         * 
         * @param  taxonNameBase        the taxon name used
         * @param  sec                          the reference using the taxon name
-        * @see                                         #Taxon(TaxonNameBase, ReferenceBase)
+        * @see                                         #Taxon(TaxonNameBase, Reference)
         */
-       public static Taxon NewUnknownStatusInstance(TaxonNameBase taxonNameBase, ReferenceBase sec){
+       public static Taxon NewUnknownStatusInstance(TaxonNameBase taxonNameBase, Reference sec){
                Taxon result = new Taxon(taxonNameBase, sec);
                result.setTaxonStatusUnknown(true);
                return result;
@@ -331,9 +331,9 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         *                                                      synonym relationships set
         * @see                                         #getSynonymRelations()
         * @see                                         #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                         #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                         #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                         #addSynonymName(TaxonNameBase, SynonymRelationshipType)
-        * @see                                         #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                         #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         */
        protected void addSynonymRelation(SynonymRelationship synonymRelation) {
                this.synonymRelations.add(synonymRelation);
@@ -469,7 +469,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * The taxon relationship will also be removed from one of both sets
         * belonging to the second taxon involved. Furthermore the inherited RelatedFrom and
         * RelatedTo attributes of the given taxon relationship will be nullified.<P>
-        * If the taxon relationship concerns the taxonomic tree possible
+        * If the taxon relationship concerns the classification possible
         * modifications of the {@link #getTaxonomicParent() parent taxon} or of the number of
         * {@link #getTaxonomicChildrenCount() childrens} will be stored.
         *
@@ -513,12 +513,12 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * source nor the target of the taxon relationship match with <i>this</i> taxon
         * no addition will be carried out. The taxon relationship will also be
         * added to the second taxon involved in the given relationship.<P>
-        * If the taxon relationship concerns the taxonomic tree possible
+        * If the taxon relationship concerns the classification possible
         * modifications of the {@link #getTaxonomicParent() parent taxon} or of the number of
         * {@link #getTaxonomicChildrenCount() childrens} will be stored.
         * 
         * @param rel  the taxon relationship to be added to one of <i>this</i> taxon's taxon relationships sets
-        * @see            #addTaxonRelation(Taxon, TaxonRelationshipType, ReferenceBase, String)
+        * @see            #addTaxonRelation(Taxon, TaxonRelationshipType, Reference, String)
         * @see            #getTaxonRelations()
         * @see            #getRelationsFromThisTaxon()
         * @see            #getRelationsToThisTaxon()
@@ -595,7 +595,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * {@link #getRelationsFromThisTaxon() "taxon relationships from"} belonging to <i>this</i> taxon.
         * The taxon relationship will also be added to the set of taxon
         * relationships to the second taxon involved in the created relationship.<P>
-        * If the taxon relationship concerns the taxonomic tree possible
+        * If the taxon relationship concerns the classification possible
         * modifications of the {@link #getTaxonomicParent() parent taxon} or of the number of
         * {@link #getTaxonomicChildrenCount() childrens} will be stored.
         * 
@@ -611,7 +611,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see                                 #getTaxonomicParent()
         * @see                                 #getTaxonomicChildrenCount()
         */
-       public TaxonRelationship addTaxonRelation(Taxon toTaxon, TaxonRelationshipType type, ReferenceBase citation, String microcitation) {
+       public TaxonRelationship addTaxonRelation(Taxon toTaxon, TaxonRelationshipType type, Reference citation, String microcitation) {
                return new TaxonRelationship(this, toTaxon, type, citation, microcitation);
        }
        /**
@@ -626,13 +626,13 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param microcitation                 the string with the details describing the exact localisation within the reference
         * @return 
         * @see                                                 #getMisappliedNames()
-        * @see                                                 #addTaxonRelation(Taxon, TaxonRelationshipType, ReferenceBase, String)
+        * @see                                                 #addTaxonRelation(Taxon, TaxonRelationshipType, Reference, String)
         * @see                                                 #addTaxonRelation(TaxonRelationship)
         * @see                                                 #getTaxonRelations()
         * @see                                                 #getRelationsFromThisTaxon()
         * @see                                                 #getRelationsToThisTaxon()
         */
-       public TaxonRelationship addMisappliedName(Taxon misappliedNameTaxon, ReferenceBase citation, String microcitation) {
+       public TaxonRelationship addMisappliedName(Taxon misappliedNameTaxon, Reference citation, String microcitation) {
                return misappliedNameTaxon.addTaxonRelation(this, TaxonRelationshipType.MISAPPLIED_NAME_FOR(), citation, microcitation);
        }
 
@@ -686,8 +686,8 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param child                 the taxon which plays the source role (child) in the new taxon relationship
         * @param citation              the reference source for the new taxon relationship
         * @param microcitation the string with the details describing the exact localisation within the reference
-        * @see                                 #setTaxonomicParent(Taxon, ReferenceBase, String)
-        * @see                                 #addTaxonRelation(Taxon, TaxonRelationshipType, ReferenceBase, String)
+        * @see                                 #setTaxonomicParent(Taxon, Reference, String)
+        * @see                                 #addTaxonRelation(Taxon, TaxonRelationshipType, Reference, String)
         * @see                                 #addTaxonRelation(TaxonRelationship)
         * @see                                 #getTaxonRelations()
         * @see                                 #getRelationsFromThisTaxon()
@@ -695,8 +695,8 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see                                 #getTaxonomicParent()
         * @see                                 #getTaxonomicChildrenCount()
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
-       public void addTaxonomicChild(Taxon child, ReferenceBase citation, String microcitation){
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
+       public void addTaxonomicChild(Taxon child, Reference citation, String microcitation){
                if (child == null){
                        throw new NullPointerException("Child Taxon is 'null'");
                }else{
@@ -712,7 +712,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * of {@link #getRelationsFromThisTaxon() "taxon relationships from"} belonging to the child taxon.
         * Furthermore the inherited RelatedFrom and RelatedTo attributes of the
         * taxon relationship will be nullified.<P>
-        * Since the taxon relationship concerns the taxonomic tree modifications
+        * Since the taxon relationship concerns the classification modifications
         * of the number of {@link #getTaxonomicChildrenCount() childrens} for <i>this</i> taxon and
         * of the {@link #getTaxonomicParent() parent taxon} for the child taxon will be stored.
         *
@@ -726,7 +726,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see                         eu.etaxonomy.cdm.model.common.RelationshipBase#getRelatedTo()
         * 
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use classification/TaxonNode instead
        public void removeTaxonomicChild(Taxon child){
                Set<TaxonRelationship> taxRels = this.getTaxonRelations();
                for (TaxonRelationship taxRel : taxRels ){
@@ -739,7 +739,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        
        /** 
         * Returns the taxon which is the next higher taxon (parent) of <i>this</i> taxon
-        * within the taxonomic tree and which is stored in the
+        * within the classification and which is stored in the
         * TaxonomicParentCache attribute. Each taxon can have only one parent taxon.
         * The child taxon and the parent taxon play the source respectively the
         * target role in one {@link TaxonRelationship taxon relationship} with
@@ -747,12 +747,12 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * The {@link name.Rank rank} of the taxon name used as a parent taxon must be higher
         * than the rank of the taxon name used as a child taxon.
         * 
-        * @see  #setTaxonomicParent(Taxon, ReferenceBase, String)
+        * @see  #setTaxonomicParent(Taxon, Reference, String)
         * @see  #getTaxonomicChildren()
         * @see  #getTaxonomicChildrenCount()
         * @see  #getRelationsFromThisTaxon()
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        public Taxon getTaxonomicParent() {
                return this.taxonomicParentCache;
        }
@@ -761,7 +761,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * Sets the taxononomic parent of <i>this</i> taxon to null.
         * Note that this method does not handle taxonomic relationships.
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        public void nullifyTaxonomicParent() {
                this.taxonomicParentCache = null;
        }
@@ -776,7 +776,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * The taxon relationship will also be added to the set of
         * {@link #getRelationsToThisTaxon() "taxon relationships to"} belonging to the second taxon
         * (parent) involved in the new relationship.<P>
-        * Since the taxon relationship concerns the taxonomic tree modifications
+        * Since the taxon relationship concerns the classification modifications
         * of the {@link #getTaxonomicParent() parent taxon} for <i>this</i> taxon and of the number of
         * {@link #getTaxonomicChildrenCount() childrens} for the child taxon will be stored.
         * 
@@ -785,15 +785,15 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param microcitation the string with the details describing the exact localisation within the reference
         * @see                                 #removeTaxonRelation(TaxonRelationship)
         * @see                                 #getTaxonomicParent()
-        * @see                                 #addTaxonRelation(Taxon, TaxonRelationshipType, ReferenceBase, String)
+        * @see                                 #addTaxonRelation(Taxon, TaxonRelationshipType, Reference, String)
         * @see                                 #addTaxonRelation(TaxonRelationship)
         * @see                                 #getTaxonRelations()
         * @see                                 #getRelationsFromThisTaxon()
         * @see                                 #getRelationsToThisTaxon()
         * @see                                 #getTaxonomicChildrenCount()
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
-       public void setTaxonomicParent(Taxon newParent, ReferenceBase citation, String microcitation){
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
+       public void setTaxonomicParent(Taxon newParent, Reference citation, String microcitation){
                //remove previously existing parent relationship!!!
                Taxon oldParent = this.getTaxonomicParent();
                Set<TaxonRelationship> taxRels = this.getTaxonRelations();
@@ -810,7 +810,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
 
        /** 
         * Returns the set of taxa which have <i>this</i> taxon as next higher taxon
-        * (parent) within the taxonomic tree. Each taxon can have several child
+        * (parent) within the classification. Each taxon can have several child
         * taxa. The child taxon and the parent taxon play the source respectively
         * the target role in one {@link TaxonRelationship taxon relationship} with
         * {@link TaxonRelationshipType taxon relationship type} "taxonomically included in".
@@ -818,12 +818,12 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * than the rank of the taxon name used as a child taxon.
         * 
         * @see  #getTaxonomicParent()
-        * @see  #addTaxonomicChild(Taxon, ReferenceBase, String)
+        * @see  #addTaxonomicChild(Taxon, Reference, String)
         * @see  #getTaxonomicChildrenCount()
         * @see  #getRelationsToThisTaxon()
         */
        @Transient
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        public Set<Taxon> getTaxonomicChildren() {
                Set<Taxon> taxa = new HashSet<Taxon>();
                Set<TaxonRelationship> rels = this.getRelationsToThisTaxon();
@@ -839,7 +839,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        
        /** 
         * Returns the number of taxa which have <i>this</i> taxon as next higher taxon
-        * (parent) within the taxonomic tree and the number of which is stored in
+        * (parent) within the classification and the number of which is stored in
         * the TaxonomicChildrenCount attribute. Each taxon can have several child
         * taxa. The child taxon and the parent taxon play the source respectively
         * the target role in one {@link TaxonRelationship taxon relationship} with
@@ -850,7 +850,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see  #getTaxonomicChildren()
         * @see  #getRelationsToThisTaxon()
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        public int getTaxonomicChildrenCount(){
                return taxonomicChildrenCount;
        }       
@@ -858,24 +858,24 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        /**
         * @see  #getTaxonomicChildrenCount()
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        public void setTaxonomicChildrenCount(int taxonomicChildrenCount) {
                this.taxonomicChildrenCount = taxonomicChildrenCount;
        }
 
        /**
         * Returns the boolean value indicating whether <i>this</i> taxon has at least one
-        * taxonomic child taxon within the taxonomic tree (true) or not (false).
+        * taxonomic child taxon within the classification (true) or not (false).
         * 
         * @see  #getTaxonomicChildrenCount()
         * @see  #getTaxonomicChildren()
         */
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        public boolean hasTaxonomicChildren(){
                return this.taxonomicChildrenCount > 0;
        }
 
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        private int computeTaxonomicChildrenCount(){
                int count = 0;
                for (TaxonRelationship rel: this.getRelationsToThisTaxon()){
@@ -897,17 +897,6 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
                return computeMisapliedNameRelations() > 0;
        }
        
-       
-       /**
-        * See {@link #isMisapplication()}.
-        * @deprecated use {@link #isMisapplication()} instead 
-        */
-       @Deprecated
-       @Transient
-       public boolean isMisappliedName(){
-               return isMisapplication();
-       }
-       
        /**
         * Counts the number of misaplied names relationships where this taxon represents the
         * misaplied name for another taxon.
@@ -992,7 +981,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * 
         * @see  #getTaxonRelations()
         * @see  #getRelationsToThisTaxon()
-        * @see  #addMisappliedName(Taxon, ReferenceBase, String)
+        * @see  #addMisappliedName(Taxon, Reference, String)
         */
        @Transient
        public Set<Taxon> getMisappliedNames(){
@@ -1025,7 +1014,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see    #getSynonymNames()
         * @see    #getSynonymRelations()
         * @see    #addSynonym(Synonym, SynonymRelationshipType)
-        * @see    #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see    #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see    #removeSynonymRelation(SynonymRelationship)
         * @see    #removeSynonym(Synonym)
         */
@@ -1047,7 +1036,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see    #getSynonymNames()
         * @see    #getSynonymRelations()
         * @see    #addSynonym(Synonym, SynonymRelationshipType)
-        * @see    #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see    #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see    #removeSynonymRelation(SynonymRelationship)
         * @see    #removeSynonym(Synonym)
         */
@@ -1067,7 +1056,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see    #getSynonymsSortedByType()
         * @see    #getSynonymRelations()
         * @see    #addSynonymName(TaxonNameBase, SynonymRelationshipType)
-        * @see    #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see    #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see    #removeSynonymRelation(SynonymRelationship)
         * @see    #removeSynonym(Synonym)
         */
@@ -1094,13 +1083,13 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         *                                              relationship to be added
         * @return                              the created synonym relationship
         * @see                                 #addSynonymRelation(SynonymRelationship)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType)
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
+        * @see                                 #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                 #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                 #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
@@ -1111,7 +1100,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        /**
         * Creates a new {@link SynonymRelationship synonym relationship} (with the given {@link Synonym synonym},
         * with the given {@link SynonymRelationshipType synonym relationship type} and with the
-        * {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} on which the relationship assertion is based),
+        * {@link eu.etaxonomy.cdm.model.reference.Reference reference source} on which the relationship assertion is based),
         * returns it and adds it to the set of {@link #getSynonymRelations() synonym relationships}
         * assigned to <i>this</i> taxon. The new synonym relationship will also be
         * added to the set of {@link Synonym#getSynonymRelations() synonym relationships} belonging to the synonym
@@ -1126,18 +1115,18 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param microcitation the string with the details describing the exact localisation within the reference
         * @return                              the created synonym relationship
         * @see                                 #addSynonymRelation(SynonymRelationship)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType)
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
+        * @see                                 #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                 #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                 #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
         */
-       public SynonymRelationship addSynonym(Synonym synonym, SynonymRelationshipType synonymType, ReferenceBase citation, String citationMicroReference){
+       public SynonymRelationship addSynonym(Synonym synonym, SynonymRelationshipType synonymType, Reference citation, String citationMicroReference){
                SynonymRelationship synonymRelationship = new SynonymRelationship(synonym, this, synonymType, citation, citationMicroReference);
                return synonymRelationship;
        }
@@ -1158,14 +1147,14 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param synonymType   the synonym relationship category of the synonym
         *                                              relationship to be added
         * @return                              the created synonym relationship
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymRelation(SynonymRelationship)
-        * @see                                 #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                 #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                 #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                 #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
@@ -1176,7 +1165,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        /**
         * Creates a new {@link Synonym synonym} (with the given {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name}),
         * a new {@link SynonymRelationship synonym relationship} (with the new synonym, with the given 
-        * {@link SynonymRelationshipType synonym relationship type} and with the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source}
+        * {@link SynonymRelationshipType synonym relationship type} and with the {@link eu.etaxonomy.cdm.model.reference.Reference reference source}
         * on which the relationship assertion is based), returns the relationship
         * and adds it to the set of {@link #getSynonymRelations() synonym relationships} assigned
         * to <i>this</i> taxon. The new synonym will have the same {@link TaxonBase#getSec() concept reference}
@@ -1192,19 +1181,19 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param citation              the reference source for the new synonym relationship
         * @param microcitation the string with the details describing the exact localisation within the reference
         * @return                              the created synonym relationship
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymRelation(SynonymRelationship)
-        * @see                                 #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                 #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                 #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                 #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
         */
-       public SynonymRelationship addSynonymName(TaxonNameBase synonymName, SynonymRelationshipType synonymType, ReferenceBase citation, String citationMicroReference){
+       public SynonymRelationship addSynonymName(TaxonNameBase synonymName, SynonymRelationshipType synonymType, Reference citation, String citationMicroReference){
                Synonym synonym = Synonym.NewInstance(synonymName, this.getSec());
                return addSynonym(synonym, synonymType, citation, citationMicroReference);
        }
@@ -1224,14 +1213,14 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param synonymName   the taxon name to be used as an heterotypic synonym
         *                                              to be added to <i>this</i> taxon's set of synonyms
         * @return                              the created synonym relationship
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType)
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymRelation(SynonymRelationship)
-        * @see                                 #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                 #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                 #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                 #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
@@ -1244,7 +1233,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * Creates a new {@link Synonym synonym} (with the given {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name}),
         * a new {@link SynonymRelationship synonym relationship} (with the new synonym, with the 
         * {@link SynonymRelationshipType#HETEROTYPIC_SYNONYM_OF() "is heterotypic synonym of" relationship type}
-        * and with the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source}
+        * and with the {@link eu.etaxonomy.cdm.model.reference.Reference reference source}
         * on which the relationship assertion is based), returns the relationship
         * and adds it to the set of {@link #getSynonymRelations() synonym relationships} assigned
         * to <i>this</i> taxon. The new synonym will have the same {@link TaxonBase#getSec() concept reference}
@@ -1263,18 +1252,18 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         *                                                      within the reference
         * @return                                      the created synonym relationship
         * @see                                         #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                         #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                         #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         * @see                                         #addSynonymName(TaxonNameBase, SynonymRelationshipType)
         * @see                                         #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                         #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                         #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                         #addSynonymRelation(SynonymRelationship)
-        * @see                                         #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                         #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                         #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                         #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                         #getSynonymRelations()
         * @see                                         #removeSynonym(Synonym)
         * @see                                         Synonym#getSynonymRelations()
         */
-       public SynonymRelationship addHeterotypicSynonymName(TaxonNameBase synonymName, HomotypicalGroup homotypicalGroup, ReferenceBase citation, String microCitation){
+       public SynonymRelationship addHeterotypicSynonymName(TaxonNameBase synonymName, HomotypicalGroup homotypicalGroup, Reference citation, String microCitation){
                Synonym synonym = Synonym.NewInstance(synonymName, this.getSec());
                if (homotypicalGroup != null){
                        homotypicalGroup.addTypifiedName(synonymName);
@@ -1286,7 +1275,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * Creates a new {@link Synonym synonym} (with the given {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name}),
         * a new {@link SynonymRelationship synonym relationship} (with the new synonym, with the 
         * {@link SynonymRelationshipType#HOMOTYPIC_SYNONYM_OF() "is homotypic synonym of" relationship type})
-        * and with the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source}
+        * and with the {@link eu.etaxonomy.cdm.model.reference.Reference reference source}
         * on which the relationship assertion is based), returns the relationship
         * and adds it to the set of {@link #getSynonymRelations() synonym relationships} assigned
         * to <i>this</i> taxon. The new synonym will have the same {@link TaxonBase#getSec() concept reference}
@@ -1303,19 +1292,19 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param microcitation the string with the details describing the exact localisation
         *                                              within the reference
         * @return                              the created synonym relationship
-        * @see                                 #addHomotypicSynonym(Synonym, ReferenceBase, String)
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addHomotypicSynonym(Synonym, Reference, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType)
         * @see                                 #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymRelation(SynonymRelationship)
         * @see                                 #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
         */
-       public SynonymRelationship addHomotypicSynonymName(TaxonNameBase synonymName, ReferenceBase citation, String microCitation){
+       public SynonymRelationship addHomotypicSynonymName(TaxonNameBase synonymName, Reference citation, String microCitation){
                Synonym synonym = Synonym.NewInstance(synonymName, this.getSec());
                return addHomotypicSynonym(synonym, citation, microCitation);
        }
@@ -1323,7 +1312,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        /**
         * Creates a new {@link SynonymRelationship synonym relationship} (with the given {@link Synonym synonym},
         * with the {@link SynonymRelationshipType#HOMOTYPIC_SYNONYM_OF() "is homotypic synonym of" relationship type}
-        * and with the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} on which the relationship
+        * and with the {@link eu.etaxonomy.cdm.model.reference.Reference reference source} on which the relationship
         * assertion is based), returns it and adds it to the set of
         * {@link #getSynonymRelations() synonym relationships} assigned to <i>this</i> taxon.
         * Furthermore the new synonym relationship will be added to the set of
@@ -1338,19 +1327,19 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param citation              the reference source for the new synonym relationship
         * @param microcitation the string with the details describing the exact localisation within the reference
         * @return                              the created synonym relationship
-        * @see                                 #addHomotypicSynonymName(TaxonNameBase, ReferenceBase, String)
+        * @see                                 #addHomotypicSynonymName(TaxonNameBase, Reference, String)
         * @see                                 #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
-        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, ReferenceBase, String)
+        * @see                                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
+        * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType, Reference, String)
         * @see                                 #addSynonymName(TaxonNameBase, SynonymRelationshipType)
         * @see                                 #addSynonymRelation(SynonymRelationship)
         * @see                                 #addHeterotypicSynonymName(TaxonNameBase)
-        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, ReferenceBase, String)
+        * @see                                 #addHeterotypicSynonymName(TaxonNameBase, HomotypicalGroup, Reference, String)
         * @see                                 #getSynonymRelations()
         * @see                                 #removeSynonym(Synonym)
         * @see                                 Synonym#getSynonymRelations()
         */
-       public SynonymRelationship addHomotypicSynonym(Synonym synonym, ReferenceBase citation, String microCitation){
+       public SynonymRelationship addHomotypicSynonym(Synonym synonym, Reference citation, String microCitation){
        if (this.getName() != null){
                        if (this.getName().getHomotypicalGroup().getTypifiedNames().isEmpty()){
                                this.getName().getHomotypicalGroup().getTypifiedNames().add(this.getName());
@@ -1376,7 +1365,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @param  synonym  the synonym involved in the synonym relationship which should be deleted
         * @see                 #getSynonymRelations()
         * @see                 #addSynonym(Synonym, SynonymRelationshipType)
-        * @see                 #addSynonym(Synonym, SynonymRelationshipType, ReferenceBase, String)
+        * @see                 #addSynonym(Synonym, SynonymRelationshipType, Reference, String)
         * @see                         #removeSynonymRelation(SynonymRelationship)
         */
        public void removeSynonym(Synonym synonym){
@@ -1389,39 +1378,10 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
                }
        }
        
-       /** 
-        * Returns an {@link java.lang.Iterable#iterator() iterator} over the set of taxa which
-        * are {@link #getTaxonomicChildren() taxonomic children} of <i>this</i> taxon.
-        * 
-        * @see #getTaxonomicChildren()
-        * @see java.lang.Iterable#iterator()
-        */
-       @Deprecated
-       public Iterator<Taxon> iterator() {
-               return new TaxonIterator(this.getTaxonomicChildren());
-       }
-       /**
-        * inner iterator class for the iterable interface
-        * @author m.doering
-        *
-        */
-       @Deprecated
-       private class TaxonIterator implements Iterator<Taxon> {
-                  private Taxon[] items;
-                  private int i= 0;
-                  public TaxonIterator(Set<Taxon> items) {
-                     // check for null being passed in etc.
-                     this.items= items.toArray(new Taxon[0]);
-                  }
-                  // interface implementation
-                  public boolean hasNext() { return i < items.length; }
-                  public Taxon next() { return items[i++]; }
-                  public void remove() { throw new UnsupportedOperationException(); }
-       }
        
        /**
         * Retrieves the ordered list (depending on the date of publication) of
-        * homotypic {@link Synonym synonyms} (according to the same {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * homotypic {@link Synonym synonyms} (according to the same {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * as for <i>this</i> taxon) under the condition that the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon names}
         * of these synonyms and the taxon name of <i>this</i> taxon belong to the
         * same {@link eu.etaxonomy.cdm.model.name.HomotypicalGroup homotypical group}.
@@ -1431,7 +1391,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
         * @see                 #getSynonyms()
         * @see                 #getHomotypicSynonymyGroups()
         * @see                 eu.etaxonomy.cdm.model.name.HomotypicalGroup
-        * @see                 eu.etaxonomy.cdm.model.name.HomotypicalGroup#getSynonymsInGroup(ReferenceBase)
+        * @see                 eu.etaxonomy.cdm.model.name.HomotypicalGroup#getSynonymsInGroup(Reference)
         */
        @Transient
        public List<Synonym> getHomotypicSynonymsByHomotypicGroup(){
@@ -1444,7 +1404,7 @@ public class Taxon extends TaxonBase<IIdentifiableEntityCacheStrategy<Taxon>> im
        
        /**
         * Retrieves the ordered list (depending on the date of publication) of
-        * homotypic {@link Synonym synonyms} (according to the same {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * homotypic {@link Synonym synonyms} (according to the same {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * as for <i>this</i> taxon) under the condition that these synonyms and
         * <i>this</i> taxon are involved in {@link SynonymRelationship synonym relationships} with an
         * "is homotypic synonym of" {@link SynonymRelationshipType#HOMOTYPIC_SYNONYM_OF() synonym relationship type}.
index 514b275949a132b2f59ef8e9ca549619814668c7..bc1c366d6a78e04ac337fb31b8063245e314a8dc 100644 (file)
@@ -13,7 +13,6 @@ import java.lang.reflect.Method;
 
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
-import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Transient;
 import javax.validation.constraints.NotNull;
@@ -36,14 +35,14 @@ import org.hibernate.search.annotations.IndexedEmbedded;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 import eu.etaxonomy.cdm.validation.Level2;
 import eu.etaxonomy.cdm.validation.Level3;
 import eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym;
 
 /**
- * The upmost (abstract) class for the use of a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} in a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+ * The upmost (abstract) class for the use of a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} in a {@link eu.etaxonomy.cdm.model.reference.Reference reference}
  * or within a taxonomic view/treatment either as a {@link Taxon taxon}
  * ("accepted" respectively "correct" name) or as a (junior) {@link Synonym synonym}.
  * Within a taxonomic view/treatment or a reference a taxon name can be used
@@ -98,7 +97,7 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
     @XmlIDREF
     @XmlSchemaType(name = "IDREF")
     @ManyToOne(fetch = FetchType.LAZY)
-       @JoinColumn(name="taxonName_fk")
+//     @JoinColumn(name="name_id")
        @IndexedEmbedded
        @Cascade(CascadeType.SAVE_UPDATE)
        @NotNull(groups = Level2.class)
@@ -112,7 +111,7 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
     @IndexedEmbedded
     @Cascade(CascadeType.SAVE_UPDATE)
     @NotNull(groups = Level2.class)
-       private ReferenceBase sec;
+       private Reference sec;
 
        
        @XmlElement(name = "AppendedPhrase")
@@ -126,7 +125,7 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
        /** 
         * Class constructor: creates a new empty (abstract) taxon.
         * 
-        * @see         #TaxonBase(TaxonNameBase, ReferenceBase)
+        * @see         #TaxonBase(TaxonNameBase, Reference)
         */
        protected TaxonBase(){
                super();
@@ -134,14 +133,14 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
        
        /** 
         * Class constructor: creates a new (abstract) taxon with the
-        * {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference}
+        * {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
         * using it.
         * 
         * @param  taxonNameBase        the taxon name used
         * @param  sec                          the reference using the taxon name
         * @see    #TaxonBase()
         */
-       protected TaxonBase(TaxonNameBase taxonNameBase, ReferenceBase sec){
+       protected TaxonBase(TaxonNameBase taxonNameBase, Reference sec){
                super();
                if (taxonNameBase != null){
                        this.invokeSetMethod(methodTaxonNameAddTaxonBase, taxonNameBase);  
@@ -154,7 +153,7 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
        /**
         * Generates and returns the string with the full scientific name (including
         * authorship) of the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used in <i>this</i>
-        * (abstract) taxon as well as the title of the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference} using
+        * (abstract) taxon as well as the title of the {@link eu.etaxonomy.cdm.model.reference.Reference reference} using
         * this taxon name. This string may be stored in the inherited
         * {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache() titleCache} attribute.
         * This method overrides the generic and inherited generateTitle() method
@@ -229,18 +228,18 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
        }
 
        /** 
-        * Returns the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference} of <i>this</i> (abstract) taxon.
+        * Returns the {@link eu.etaxonomy.cdm.model.reference.Reference reference} of <i>this</i> (abstract) taxon.
         * This is the reference or the treatment using the {@link TaxonNameBase taxon name}
         * in <i>this</i> (abstract) taxon.
         */
-       public ReferenceBase getSec() {
+       public Reference getSec() {
                return sec;
        }
 
        /**
         * @see  #getSec()
         */
-       public void setSec(ReferenceBase sec) {
+       public void setSec(Reference sec) {
                this.sec = sec;
        }
        
@@ -278,23 +277,4 @@ public abstract class TaxonBase<S extends IIdentifiableEntityCacheStrategy> exte
                this.useNameCache = useNameCache;
        }
 
-       /**
-        * Returns the boolean value indicating whether <i>this</i> (abstract) taxon
-        * might be saved (true) or not (false). An (abstract) taxon is meaningful
-        * as long as both its {@link #getName() taxon name} and its {@link #getSec() reference}
-        * exist (are not "null").
-        * FIXME This should be part of a more generic validation architecture
-        */
-       @Deprecated
-       @Transient
-       public boolean isSaveable(){
-               if (  (this.getName() == null)  ||  (this.getSec() == null)  ){
-                       return false;
-               }else{
-                       this.toString();
-                       return true;
-               }
-       }
-       
-
 }
\ No newline at end of file
index 91d592be450686e4f0716ffbbc1842e281723cd0..5e0ea1350d6045cec9d69451a5140da52a33284b 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * This class makes available a method to compare two {@link TaxonBase taxa} by\r
@@ -199,7 +199,7 @@ public class TaxonComparator implements Comparator<TaxonBase>, Serializable {
                                        \r
                                        result = (((ZoologicalName)name).getPublicationYear());\r
                                }else{\r
-                                       ReferenceBase ref = (ReferenceBase) name.getNomenclaturalReference();\r
+                                       Reference ref = (Reference) name.getNomenclaturalReference();\r
                                        if (ref == null){\r
                                                result = null;\r
                                        }else{\r
index 15ff164597aa9ac90dfb5addc5ac4f477347eb0f..d0823fd1a212732289156bf500c33c7ce50aee0f 100644 (file)
@@ -19,7 +19,6 @@ import javax.persistence.FetchType;
 import javax.persistence.ManyToOne;\r
 import javax.persistence.OneToMany;\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
@@ -36,7 +35,7 @@ import org.hibernate.envers.Audited;
 \r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -47,7 +46,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase;
 @XmlType(name = "TaxonNode", propOrder = {\r
     "taxon",\r
     "parent",\r
-    "taxonomicTree",\r
+    "classification",\r
     "childNodes",\r
     "referenceForParentChildRelation",\r
     "microReferenceForParentChildRelation",\r
@@ -78,14 +77,14 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        private TaxonNode parent;\r
        \r
        \r
-       @XmlElement(name = "taxonomicTree")\r
+       @XmlElement(name = "classification")\r
        @XmlIDREF\r
        @XmlSchemaType(name = "IDREF")\r
        @ManyToOne(fetch = FetchType.LAZY)\r
        @Cascade({CascadeType.SAVE_UPDATE})\r
        \r
 //     TODO @NotNull // avoids creating a UNIQUE key for this field\r
-       private TaxonomicTree taxonomicTree;\r
+       private Classification classification;\r
        \r
        @XmlElementWrapper(name = "childNodes")\r
        @XmlElement(name = "childNode")\r
@@ -100,7 +99,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        @XmlSchemaType(name = "IDREF")\r
        @ManyToOne(fetch = FetchType.LAZY)\r
        @Cascade({CascadeType.SAVE_UPDATE})\r
-       private ReferenceBase referenceForParentChildRelation;\r
+       private Reference referenceForParentChildRelation;\r
        \r
        @XmlElement(name = "microReference")\r
        private String microReferenceForParentChildRelation;\r
@@ -125,13 +124,13 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        /**\r
         * to create nodes either use TaxonomicView.addRoot() or TaxonNode.addChild();\r
         * @param taxon\r
-        * @param taxonomicTree\r
-        * @deprecated setting of taxonomic tree is handled in the addTaxonNode() method,\r
+        * @param classification\r
+        * @deprecated setting of classification is handled in the addTaxonNode() method,\r
         * use TaxonNode(taxon) instead\r
         */\r
-       protected TaxonNode (Taxon taxon, TaxonomicTree taxonomicTree){\r
+       protected TaxonNode (Taxon taxon, Classification classification){\r
                this(taxon);\r
-               setTaxonomicTree(taxonomicTree);\r
+               setClassification(classification);\r
        }\r
        \r
        /**\r
@@ -148,10 +147,10 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
 //************************ METHODS **************************/\r
        \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#addChildTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)\r
+        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#addChildTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)\r
         */\r
-       public TaxonNode addChildTaxon(Taxon taxon, ReferenceBase citation, String microCitation, Synonym synonymToBeUsed) {\r
-               if (this.getTaxonomicTree().isTaxonInTree(taxon)){\r
+       public TaxonNode addChildTaxon(Taxon taxon, Reference citation, String microCitation, Synonym synonymToBeUsed) {\r
+               if (this.getClassification().isTaxonInTree(taxon)){\r
                        throw new IllegalArgumentException("Taxon may not be in a taxonomic view twice: " + taxon == null? "(null)" : taxon.getTitleCache());\r
                }\r
                \r
@@ -164,7 +163,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
         * @param childNode the taxon node to be moved to the new parent\r
         * @return the child node in the state of having a new parent\r
         */\r
-       public TaxonNode addChildNode(TaxonNode childNode, ReferenceBase reference, String microReference, Synonym synonymToBeUsed){\r
+       public TaxonNode addChildNode(TaxonNode childNode, Reference reference, String microReference, Synonym synonymToBeUsed){\r
                \r
                // check if this node is a descendant of the childNode \r
                if(childNode.getParentTreeNode() != this && childNode.isAncestor(this)){\r
@@ -181,18 +180,18 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        }\r
        \r
        /**\r
-        * Sets this nodes taxonomic tree. Updates taxonomic tree of child nodes recursively\r
+        * Sets this nodes classification. Updates classification of child nodes recursively\r
         * \r
         * If the former and the actual tree are equal() this method does nothing\r
         * \r
         * @param newTree\r
         */\r
        @Transient\r
-       private void setTaxonomicTreeRecursively(TaxonomicTree newTree) {\r
-               if(! newTree.equals(this.getTaxonomicTree())){\r
-                       this.setTaxonomicTree(newTree);\r
+       private void setClassificationRecursively(Classification newTree) {\r
+               if(! newTree.equals(this.getClassification())){\r
+                       this.setClassification(newTree);\r
                        for(TaxonNode childNode : this.getChildNodes()){\r
-                               childNode.setTaxonomicTreeRecursively(newTree);\r
+                               childNode.setClassificationRecursively(newTree);\r
                        }\r
                }\r
        }\r
@@ -225,7 +224,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        }\r
        \r
        /**\r
-        * Removes the child node from this node. Sets the parent and the taxonomic tree of the child \r
+        * Removes the child node from this node. Sets the parent and the classification of the child \r
         * node to null\r
         * \r
         * @param childNode\r
@@ -247,7 +246,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
                        throw new IllegalStateException("children count must not be negative ");\r
                }\r
                childNode.setParent(null);\r
-               childNode.setTaxonomicTree(null);\r
+               childNode.setClassification(null);\r
                \r
                return result;\r
        }\r
@@ -260,7 +259,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
         */\r
        public boolean delete(){\r
                if(isTopmostNode()){\r
-                       return taxonomicTree.deleteChildNode(this);\r
+                       return classification.deleteChildNode(this);\r
                }else{\r
                        return getParent().deleteChildNode(this);\r
                }               \r
@@ -280,7 +279,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        @Transient\r
        public ITreeNode getParentTreeNode() {\r
                if(isTopmostNode())\r
-                       return getTaxonomicTree();\r
+                       return getClassification();\r
                return parent;\r
        }\r
        \r
@@ -299,7 +298,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
         * @see setParentTreeNode(ITreeNode)\r
         */\r
        protected void setParent(ITreeNode parent) {\r
-               if(parent instanceof TaxonomicTree){\r
+               if(parent instanceof Classification){\r
                        this.parent = null;\r
                        return;\r
                }\r
@@ -308,7 +307,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        \r
        /**\r
         * Sets the parent of this taxon node to the given parent. Cleans up references to \r
-        * old parents and sets the taxonomic tree to the new parents taxonomic tree \r
+        * old parents and sets the classification to the new parents classification \r
         * \r
         * @param parent\r
         */\r
@@ -319,16 +318,16 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
                if(formerParent instanceof TaxonNode){  //child was a child itself\r
                        ((TaxonNode) formerParent).removeChildNode(this);               \r
                }\r
-               else if((formerParent instanceof TaxonomicTree) && ! formerParent.equals(parent)){ //child was root in old tree\r
-                       ((TaxonomicTree) formerParent).removeChildNode(this);\r
+               else if((formerParent instanceof Classification) && ! formerParent.equals(parent)){ //child was root in old tree\r
+                       ((Classification) formerParent).removeChildNode(this);\r
                }               \r
                \r
                // set the new parent\r
                setParent(parent);\r
 \r
-               // set the taxonomic tree to the parents taxonomic tree         \r
-               TaxonomicTree classification = (parent instanceof TaxonomicTree) ? (TaxonomicTree) parent : ((TaxonNode) parent).getTaxonomicTree();\r
-               setTaxonomicTreeRecursively(classification);\r
+               // set the classification to the parents classification         \r
+               Classification classification = (parent instanceof Classification) ? (Classification) parent : ((TaxonNode) parent).getClassification();\r
+               setClassificationRecursively(classification);\r
                \r
                // add this node to the parent child nodes\r
                parent.getChildNodes().add(this);\r
@@ -340,16 +339,16 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
                }\r
        }\r
        \r
-       public TaxonomicTree getTaxonomicTree() {\r
-               return taxonomicTree;\r
+       public Classification getClassification() {\r
+               return classification;\r
        }\r
        /**\r
         * THIS METHOD SHOULD NOT BE CALLED!\r
         * invisible part of the bidirectional relationship, for public use TaxonomicView.addRoot() or TaxonNode.addChild()\r
-        * @param taxonomicTree\r
+        * @param classification\r
         */\r
-       protected void setTaxonomicTree(TaxonomicTree taxonomicTree) {\r
-               this.taxonomicTree = taxonomicTree;\r
+       protected void setClassification(Classification classification) {\r
+               this.classification = classification;\r
        }\r
        \r
        public Set<TaxonNode> getChildNodes() {\r
@@ -396,14 +395,14 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
         * \r
         * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#getReference()\r
         */\r
-       public ReferenceBase getReference() {\r
+       public Reference getReference() {\r
                return referenceForParentChildRelation;\r
        }\r
        \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#setReference(eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.model.taxon.ITreeNode#setReference(eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public void setReference(ReferenceBase reference) {\r
+       public void setReference(Reference reference) {\r
                this.referenceForParentChildRelation = reference;\r
        }\r
        \r
@@ -450,7 +449,7 @@ public class TaxonNode extends AnnotatableEntity implements ITreeNode{
        }\r
        \r
        /**\r
-        * Whether this TaxonNode is a direct child of the taxonomic tree TreeNode\r
+        * Whether this TaxonNode is a direct child of the classification TreeNode\r
         * @return\r
         */\r
        @Transient\r
index 9f9a353af6512285567ba7a12df2798db284863f..5ae4d6f7c719e429d1188558b787977e7075d04c 100644 (file)
@@ -27,7 +27,7 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
 
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.validation.Level3;
 import eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustBeLowerRankThanParent;
 import eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent;
@@ -93,7 +93,7 @@ public class TaxonRelationship extends RelationshipBase<Taxon, Taxon, TaxonRelat
        /**
         * Class constructor: creates a new taxon relationship instance (with the
         * given "accepted/correct" {@link Taxon taxa}, the given {@link SynonymRelationshipType synonym relationship type}
-        * and with the {@link eu.etaxonomy.cdm.model.reference.ReferenceBase reference source} on which the relationship
+        * and with the {@link eu.etaxonomy.cdm.model.reference.Reference reference source} on which the relationship
         * assertion is based). Moreover the new taxon relationship will be added to
         * the respective sets of taxon relationships assigned to both taxa.
         * 
@@ -104,7 +104,7 @@ public class TaxonRelationship extends RelationshipBase<Taxon, Taxon, TaxonRelat
         * @param citationMicroReference        the string with the details describing the exact localisation within the reference
         * @see                                                         eu.etaxonomy.cdm.model.common.RelationshipBase
         */
-       protected TaxonRelationship(Taxon from, Taxon to, TaxonRelationshipType type, ReferenceBase citation, String citationMicroReference) {
+       protected TaxonRelationship(Taxon from, Taxon to, TaxonRelationshipType type, Reference citation, String citationMicroReference) {
                super(from, to, type, citation, citationMicroReference);
        }
        
index 22a057579e0ad9675acdf7d72071a8b6c0fd192d..1eaa5ca5307f164862284052aff0e4b1c2d0c2f7 100644 (file)
@@ -59,7 +59,7 @@ public class TaxonRelationshipType extends RelationshipTermBase<TaxonRelationshi
 
        protected static Map<UUID, TaxonRelationshipType> termMap = null;               
        
-       @Deprecated //will be removed in future versions. Use Taxonomic Tree/TaxonNode instead
+       @Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
        private static final UUID uuidTaxonomicallyIncludedIn = UUID.fromString("d13fecdf-eb44-4dd7-9244-26679c05df1c");
 
        private static final UUID uuidMisappliedNameFor = UUID.fromString("1ed87175-59dd-437e-959e-0d71583d8417");
@@ -165,7 +165,7 @@ public class TaxonRelationshipType extends RelationshipTermBase<TaxonRelationshi
         * Returns the taxon relationship type "is taxonomically included in". This
         * indicates that the {@link TaxonRelationship#getFromTaxon() source taxon}
         * in such a {@link TaxonRelationship taxon relationship} has the target {@link Taxon taxon}
-        * as immediate next higher parent within the taxonomic tree. Generally
+        * as immediate next higher parent within the classification. Generally
         * the {@link Taxon#getSec() concept reference} of both taxa are the same
         * except if the concept reference follows the taxonomical opinion of
         * another reference.<BR>
index c2244ed5c704b923a8abed14f9f88d7427e5be87..69ba1a4441123dfd2f551a69efa2eaf46090b3df 100644 (file)
@@ -17,7 +17,7 @@ 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.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 import java.util.*;
 
@@ -39,7 +39,7 @@ public class View extends CdmBase implements IReferencedEntity{
        private String description;
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade(CascadeType.SAVE_UPDATE)
-       private ReferenceBase reference;
+       private Reference reference;
        @OneToMany(fetch = FetchType.LAZY)
        private Set<View> superViews = new HashSet<View>();
        @Transient
@@ -64,15 +64,15 @@ public class View extends CdmBase implements IReferencedEntity{
        }
 
        @Transient
-       public ReferenceBase getCitation() {
+       public Reference getCitation() {
                return getReference();
        }
 
-       public ReferenceBase getReference() {
+       public Reference getReference() {
                return reference;
        }
 
-       public void setReference(ReferenceBase reference) {
+       public void setReference(Reference reference) {
                this.reference = reference;
        }
        
index 64eff1f79c0da575ba477c11297593407266577e..5252903a628dd2561467a304535eca5dec13c08d 100644 (file)
@@ -57,7 +57,7 @@ public class MediaDefaultCacheStrategy extends StrategyBase implements IIdentifi
                if (StringUtils.isBlank(result)){\r
                        for (MediaRepresentation mediaRepresentation : media.getRepresentations()){\r
                                for (MediaRepresentationPart part : mediaRepresentation.getParts()){\r
-                                       result = part == null ? null : part.getUri();\r
+                                       result = (part == null || part.getUri() == null) ? null : part.getUri().toString();\r
                                        if (StringUtils.isBlank(result)){\r
                                                continue;\r
                                        }\r
index a02bc0c965ebaf17f95cee47dfc3062dee71d3da..7bd0f3967ff7d0355ffe237f6a5352706dc4e040 100644 (file)
@@ -27,7 +27,7 @@ public interface INameCacheStrategy<T extends TaxonNameBase> extends IIdentifiab
        /**\r
         * Returns an array of name tokens that together make up the full name\r
         * a token can be a String (for name parts), Rank, AuthorTeam (for entire authorship string), \r
-        * Date or ReferenceBase\r
+        * Date or Reference\r
         * Example: ["Abies","alba",Rank.SUBSPECIES,"alpina",AuthorTeam("Greuther (L.)")]\r
         * \r
         * @param taxonNameBase\r
index 5f8c6f8a4b24a52148a1b4d57292d285ed95e63f..cc69b6fd392bbf3730436f253e8d4e55374c02fa 100644 (file)
@@ -15,9 +15,9 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
-public class ArticleDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDefaultCacheStrategyBase<T> implements  INomenclaturalReferenceCacheStrategy<T> {\r
+public class ArticleDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T> implements  INomenclaturalReferenceCacheStrategy<T> {\r
        private static final Logger logger = Logger.getLogger(ArticleDefaultCacheStrategy.class);\r
        \r
        public static final String UNDEFINED_JOURNAL = "- undefined journal -";\r
index 07e1c327bd7a790e4b625c5884699527f6c65f26..56fb73e2792ed27ba4fa35a89eccb7b3e3edfa3b 100644 (file)
@@ -13,9 +13,9 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
-public class BookDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDefaultCacheStrategyBase<T>  implements  INomenclaturalReferenceCacheStrategy<T> {\r
+public class BookDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T>  implements  INomenclaturalReferenceCacheStrategy<T> {\r
        private static final Logger logger = Logger.getLogger(BookDefaultCacheStrategy.class);\r
        \r
        private String prefixEdition = "ed.";\r
@@ -41,7 +41,7 @@ public class BookDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDe
         * @return\r
         */\r
        public static BookDefaultCacheStrategy NewInstance(){\r
-               return new BookDefaultCacheStrategy<ReferenceBase>();\r
+               return new BookDefaultCacheStrategy<Reference>();\r
        }\r
        \r
        /**\r
index bf8718c430a1d843ffdb1176e0bc6bbf9d617703..2b34437b71490ff77956a4ad6a82be43fa3c16af 100644 (file)
@@ -17,9 +17,9 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
-public class BookSectionDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDefaultCacheStrategyBase<T>  implements  INomenclaturalReferenceCacheStrategy<T> {\r
+public class BookSectionDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T>  implements  INomenclaturalReferenceCacheStrategy<T> {\r
        private static final Logger logger = Logger.getLogger(BookSectionDefaultCacheStrategy.class);\r
        \r
        public static final String UNDEFINED_BOOK = "- undefined book -";\r
@@ -64,11 +64,11 @@ public class BookSectionDefaultCacheStrategy <T extends ReferenceBase> extends N
                if (bookSection == null || bookSection.getInReference() == null){\r
                        return null;\r
                }\r
-               ReferenceBase inBook = bookSection.getInReference();\r
+               Reference inBook = bookSection.getInReference();\r
                String result;\r
                //use booksection's publication date if it exists\r
                if (bookSection.getDatePublished() != null && bookSection.getDatePublished().getStart() != null){\r
-                       BookDefaultCacheStrategy<ReferenceBase> bookStrategy = BookDefaultCacheStrategy.NewInstance();\r
+                       BookDefaultCacheStrategy<Reference> bookStrategy = BookDefaultCacheStrategy.NewInstance();\r
                        result =  bookStrategy.getNomRefTitleWithoutYearAndAuthor(inBook);\r
                        result += INomenclaturalReference.MICRO_REFERENCE_TOKEN;\r
                        result = addYear(result, bookSection);\r
@@ -133,7 +133,7 @@ public class BookSectionDefaultCacheStrategy <T extends ReferenceBase> extends N
                return result;\r
        }\r
        \r
-       private String getBookAuthorPart(ReferenceBase book, String seperator){\r
+       private String getBookAuthorPart(Reference book, String seperator){\r
                if (book == null){\r
                        return "";\r
                }\r
@@ -147,7 +147,7 @@ public class BookSectionDefaultCacheStrategy <T extends ReferenceBase> extends N
 \r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.NomRefDefaultCacheStrategyBase#getNomRefTitleWithoutYearAndAuthor(eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.strategy.cache.reference.NomRefDefaultCacheStrategyBase#getNomRefTitleWithoutYearAndAuthor(eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
        @Override\r
        protected String getNomRefTitleWithoutYearAndAuthor(T reference) {\r
index c52c653a3ad42a541cc5ddd995f6984006d161ba..96f3ce3708ae81f840773445dd651aa71de730cd 100644 (file)
@@ -13,10 +13,10 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 //import eu.etaxonomy.cdm.model.reference.CdDvd;\r
 \r
-public class CdDvdDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDefaultCacheStrategyBase<T>  implements  INomenclaturalReferenceCacheStrategy<T> {\r
+public class CdDvdDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T>  implements  INomenclaturalReferenceCacheStrategy<T> {\r
        private static final Logger logger = Logger.getLogger(CdDvdDefaultCacheStrategy.class);\r
        \r
        private String prefixEdition = "ed.";\r
@@ -42,7 +42,7 @@ public class CdDvdDefaultCacheStrategy <T extends ReferenceBase> extends NomRefD
         * @return\r
         */\r
        public static CdDvdDefaultCacheStrategy NewInstance(){\r
-               return new CdDvdDefaultCacheStrategy<ReferenceBase>();\r
+               return new CdDvdDefaultCacheStrategy<Reference>();\r
        }\r
        \r
        /**\r
index 3a451fc81ab9aec2b112b332bd7adb376acdc4d2..5aa527d8d1e9416b85e85601079c3148ece78d8c 100644 (file)
@@ -13,9 +13,9 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
-public class GenericDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDefaultCacheStrategyBase<T> implements  INomenclaturalReferenceCacheStrategy<T> {\r
+public class GenericDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T> implements  INomenclaturalReferenceCacheStrategy<T> {\r
        private static final Logger logger = Logger.getLogger(GenericDefaultCacheStrategy.class);\r
        \r
 \r
index e5d7f03d04621d6900929d0e1e0a0f06be6b10dd..309a06c731788545b1663e451fd2765cc3dd56d8 100644 (file)
 package eu.etaxonomy.cdm.strategy.cache.reference;\r
 \r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * A reference cache rendering strategy for all subclasses implementing INomenclaturalReference.\r
  * @author a.mueller\r
  *\r
- * @param <T> The concrete ReferenceBase class this strategy applies for\r
+ * @param <T> The concrete Reference class this strategy applies for\r
  */\r
-public interface INomenclaturalReferenceCacheStrategy<T extends ReferenceBase> extends IReferenceBaseCacheStrategy<T> {\r
+public interface INomenclaturalReferenceCacheStrategy<T extends Reference> extends IReferenceBaseCacheStrategy<T> {\r
        \r
        \r
        /**\r
@@ -43,7 +43,7 @@ public interface INomenclaturalReferenceCacheStrategy<T extends ReferenceBase> e
        \r
        /**\r
         * Returns a formatted string containing the entire citation used for\r
-        * nomenclatural purposes based on the {@link ReferenceBase reference} supplied - including\r
+        * nomenclatural purposes based on the {@link Reference reference} supplied - including\r
         * (abbreviated) title  but not authors - and on the given details.<BR>\r
         * The returned string is build according to the corresponding\r
         * {@link INomenclaturalReferenceCacheStrategy cache strategy}.\r
index a3fcd32204021345d11be28ccbcaf83c34e30097..cff531a4f90c9e776193cb06356aae611426aa8f 100644 (file)
@@ -9,16 +9,16 @@
 \r
 package eu.etaxonomy.cdm.strategy.cache.reference;\r
 \r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
 \r
 /**\r
- * A reference cache rendering strategy for all subclasses of ReferenceBase.\r
+ * A reference cache rendering strategy for all subclasses of Reference.\r
  * @author a.mueller\r
  *\r
- * @param <T> The concrete ReferenceBase class this strategy applies for\r
+ * @param <T> The concrete Reference class this strategy applies for\r
  */\r
-public interface IReferenceBaseCacheStrategy<T extends ReferenceBase> extends IIdentifiableEntityCacheStrategy<T> {\r
+public interface IReferenceBaseCacheStrategy<T extends Reference> extends IIdentifiableEntityCacheStrategy<T> {\r
        \r
        /**\r
         * Returns a short version of the reference, suitable for citation (e.g. ${authorname}, ${year})\r
index 0fc8726b6b5256660e2cccf999f9ab313b16f962..de1f6f9b6fcbad6762c39b54cf6b16c33064ea46 100644 (file)
@@ -16,7 +16,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 \r
 /**\r
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.strategy.StrategyBase;
  * @created 29.06.2008\r
  * @version 1.0\r
  */\r
-public class JournalDefaultCacheStrategy<T extends ReferenceBase> extends StrategyBase implements IReferenceBaseCacheStrategy<T> {\r
+public class JournalDefaultCacheStrategy<T extends Reference> extends StrategyBase implements IReferenceBaseCacheStrategy<T> {\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(JournalDefaultCacheStrategy.class);\r
 \r
@@ -53,7 +53,7 @@ public class JournalDefaultCacheStrategy<T extends ReferenceBase> extends Strate
         * @return\r
         */\r
        public static JournalDefaultCacheStrategy NewInstance(){\r
-               return new JournalDefaultCacheStrategy<ReferenceBase>();\r
+               return new JournalDefaultCacheStrategy<Reference>();\r
        }\r
        \r
        /**\r
index 6dd086393ac659ffbc011d2ed9feab2448ca78af..0764ed572b0355781bd34120a76b58b84b03c676 100644 (file)
@@ -15,7 +15,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 \r
 /**\r
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.strategy.StrategyBase;
  * @created 29.06.2008\r
  * @version 1.0\r
  */\r
-public abstract class NomRefDefaultCacheStrategyBase<T extends ReferenceBase> extends StrategyBase implements  INomenclaturalReferenceCacheStrategy<T>{\r
+public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extends StrategyBase implements  INomenclaturalReferenceCacheStrategy<T>{\r
        private static final long serialVersionUID = -725290113353165022L;\r
 \r
        @SuppressWarnings("unused")\r
index c748276d913d8d41c846d0e70ff25ccd589e15c5..a54c4e5985f5c9e6e3c1133c5db9597c1ba6e878 100644 (file)
@@ -14,14 +14,14 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 /**\r
  * @author a.mueller\r
  * @version 1.0\r
  * @created 08-Aug-2008 22:06:45\r
  */\r
-public class ReferenceBaseDefaultCacheStrategy<T extends ReferenceBase> extends StrategyBase implements IReferenceBaseCacheStrategy<T> {\r
+public class ReferenceBaseDefaultCacheStrategy<T extends Reference> extends StrategyBase implements IReferenceBaseCacheStrategy<T> {\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(ReferenceBaseDefaultCacheStrategy.class);\r
        \r
index 63fb66e95e853c6ec1f4ca387252a0ee0dfbf0de..6ec728092b2ca552ee1758eb67cb117068206106 100644 (file)
@@ -15,9 +15,9 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 //import eu.etaxonomy.cdm.model.reference.Generic;\r
 //import eu.etaxonomy.cdm.model.reference.Thesis;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
-public class ThesisDefaultCacheStrategy <T extends ReferenceBase> extends NomRefDefaultCacheStrategyBase<T> implements  INomenclaturalReferenceCacheStrategy<T> {\r
+public class ThesisDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T> implements  INomenclaturalReferenceCacheStrategy<T> {\r
        private static final Logger logger = Logger.getLogger(ThesisDefaultCacheStrategy.class);\r
        \r
 \r
index 9a365c05b5102e9073a083fc3933acedac3aa180..4377cf6ca07b6d049e5e094b6235e588e45e2ce3 100644 (file)
@@ -14,7 +14,6 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;\r
 import java.lang.reflect.GenericDeclaration;\r
 import java.lang.reflect.Method;\r
-import java.lang.reflect.Modifier;\r
 import java.lang.reflect.Type;\r
 import java.util.ArrayList;\r
 import java.util.Collection;\r
@@ -25,21 +24,15 @@ import java.util.Map;
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
-import javax.persistence.Transient;\r
-\r
 import org.apache.log4j.Logger;\r
-import org.joda.time.DateTime;\r
 \r
 import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;\r
 import sun.reflect.generics.reflectiveObjects.TypeVariableImpl;\r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.model.agent.Contact;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.ICdmBase;\r
 import eu.etaxonomy.cdm.model.common.IRelated;\r
-import eu.etaxonomy.cdm.model.common.LSID;\r
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
-import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 \r
 /**\r
index c9fe638b54d54d7a2a956a2477ee10bc8dd4f602..ba9534da01489426205352d1a01862e414545cdd 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.reference.IBook;
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
 import eu.etaxonomy.cdm.model.reference.IVolumeReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\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
 import eu.etaxonomy.cdm.strategy.exceptions.StringNotParsableException;\r
@@ -374,8 +374,8 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                nameToBeFilled.addParsingProblems(ref.getParsingProblem());\r
            }\r
            \r
-           ReferenceBase nomRef;\r
-               if ( (nomRef = (ReferenceBase)nameToBeFilled.getNomenclaturalReference()) != null ){\r
+           Reference nomRef;\r
+               if ( (nomRef = (Reference)nameToBeFilled.getNomenclaturalReference()) != null ){\r
                        nomRef.setAuthorTeam((TeamOrPersonBase)nameToBeFilled.getCombinationAuthorTeam());\r
                }\r
        }\r
@@ -466,7 +466,7 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                if (ref.hasProblem()){\r
                        ref.setTitleCache( (isInReference?"in ":"") +  originalStrReference,true);\r
                }\r
-               nameToBeFilled.setNomenclaturalReference((ReferenceBase)ref);\r
+               nameToBeFilled.setNomenclaturalReference((Reference)ref);\r
                int end = Math.min(strReference.length(), ref.getProblemEnds());\r
                ref.setProblemEnds(end);\r
        }\r
@@ -485,7 +485,7 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                ref.setProblemEnds(strReference.length());\r
                ref.addParsingProblem(ParserProblem.CheckDetailOrYear);\r
                nameToBeFilled.addParsingProblem(ParserProblem.CheckDetailOrYear);\r
-               nameToBeFilled.setNomenclaturalReference((ReferenceBase)ref);\r
+               nameToBeFilled.setNomenclaturalReference((Reference)ref);\r
                return ref;\r
        }\r
                \r
@@ -591,10 +591,10 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
                \r
                if (nomRef.getType().equals(ReferenceType.BookSection)){\r
                        handleBookSectionYear((IBookSection)nomRef, datePublished);\r
-               }else if (nomRef instanceof ReferenceBase){\r
-                       ((ReferenceBase)nomRef).setDatePublished(datePublished);        \r
+               }else if (nomRef instanceof Reference){\r
+                       ((Reference)nomRef).setDatePublished(datePublished);    \r
                }else{\r
-                       throw new ClassCastException("nom Ref is not of type ReferenceBase but " + (nomRef == null? "(null)" : nomRef.getClass()));\r
+                       throw new ClassCastException("nom Ref is not of type Reference but " + (nomRef == null? "(null)" : nomRef.getClass()));\r
                }\r
                return result;  \r
        }\r
@@ -644,19 +644,19 @@ public class NonViralNameParserImpl extends NonViralNameParserImplRegExBase impl
        }\r
        \r
        \r
-       private ReferenceBase parseArticle(String reference){\r
+       private Reference parseArticle(String reference){\r
                //if (articlePatter)\r
                //(type, author, title, volume, editor, series;\r
-               ReferenceBase result = ReferenceFactory.newArticle();\r
+               Reference result = ReferenceFactory.newArticle();\r
                reference = makeVolume(result, reference);\r
-               ReferenceBase inJournal = ReferenceFactory.newJournal();\r
+               Reference inJournal = ReferenceFactory.newJournal();\r
                inJournal.setTitle(reference);\r
                result.setInReference(inJournal);\r
                return result;\r
        }\r
        \r
-       private ReferenceBase parseBookSection(String reference){\r
-               ReferenceBase result = ReferenceFactory.newBookSection();\r
+       private Reference parseBookSection(String reference){\r
+               Reference result = ReferenceFactory.newBookSection();\r
                String[] parts = reference.split(referenceAuthorSeparator, 2);\r
                if (parts.length != 2){\r
                        logger.warn("Unexpected number of parts");\r
index 76d2cdff5baef7b66f68a1317533b7aef54bedc2..8835a146cd339716cf665e8c4e56f417c063e14c 100644 (file)
@@ -7,9 +7,9 @@ eu.etaxonomy.cdm.model.name.NonViralName.allowedCharactersForEpithet.message=mus
 eu.etaxonomy.cdm.model.name.NonViralName.allowedCharactersForUninomial.message=must start with a capital letter and proceeded by lowercase characters a-z, a lowercase vowels with a diaeresis, or hyphens\r
 eu.etaxonomy.cdm.model.name.NonViralName.allowedCharactersForAuthority.message=must contain capital or lowercase roman characters, lowercase vowels with a diaeresis, numbers, ampersands, commas, periods, parenthesis or hyphens\r
 eu.etaxonomy.cdm.validation.annotation.MustHaveAuthority.message=must have an authority (at least a basionym author team / original author or a non-null, non-empty authorship cache)\r
-eu.etaxonomy.cdm.model.reference.ReferenceBase.uri.message=must be a valid Universal Resource Identifier. An example of a valid URI is http://www.e-taxonomy.eu\r
-eu.etaxonomy.cdm.model.reference.ReferenceBase.issn.message=must be a valid ISSN. An example of a valid International Standard Serial Number is ISSN 0378-5955 where the last digit may be X.\r
-eu.etaxonomy.cdm.model.reference.ReferenceBase.isbn.message=must be a valid ISBN. An example of a valid International Standard Book Number is ISBN 0-306-40615-2 where the last digit may be X.\r
+eu.etaxonomy.cdm.model.reference.Reference.uri.message=must be a valid Universal Resource Identifier. An example of a valid URI is http://www.e-taxonomy.eu\r
+eu.etaxonomy.cdm.model.reference.Reference.issn.message=must be a valid ISSN. An example of a valid International Standard Serial Number is ISSN 0378-5955 where the last digit may be X.\r
+eu.etaxonomy.cdm.model.reference.Reference.isbn.message=must be a valid ISBN. An example of a valid International Standard Book Number is ISBN 0-306-40615-2 where the last digit may be X.\r
 eu.etaxonomy.cdm.model.taxon.Synonym.noOrphanedSynonyms.message=Synonyms must be related to at least one accepted taxon\r
 eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.twoAcceptedTaxaNotAllowed.message=must not be the same as the name of an existing accepted taxon.\r
 eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.synonymAndTaxonNotAllowed.message=must not be the same as the name of an existing synonym / accepted name\r
index 585ea8b4ec9ee95fa5656444b5c803887ccf8758..7472dbec6ac09bf9200bdbe2a4755a87b8c800e1 100644 (file)
@@ -1,2 +1,3 @@
 "fe87ea8d-6e0a-4e5d-b0da-0ab8ea67ca77",,"determination modifier","determination modifier",\r
-"d314475b-40d0-4b02-816e-51cb7fa963ee",,"determination_modifier_dummy","dmdummy","d","dmd",
\ No newline at end of file
+"20db670a-2db2-49cc-bbdd-eace33694b7f",,"Confer","confer","cf.",\r
+"128f0b54-73e2-4efb-bfda-a6243185a562",,"Affinis","affinis","aff.",
\ No newline at end of file
index 83d9d38b77aeeecb3f3a33b9ce9691de7161807d..76ee04db45fb44cfe92bf837f46929e85ef35581 100644 (file)
 "1f8d4fcb-e888-4ac6-8113-63fe7ea77180",,"zul","Zulu","zul","zu","zul"
 "d8ce3c47-243b-4a09-835b-01918829a2e7",,"zun","Zuni","zun","","zun"
 "fb85de23-0e3c-4042-b56b-71ec3c7566cf",,"zxx","No linguistic content","zxx","","zxx"
-"e4bf2ec8-4c1a-4ece-9df1-4890a7f18457",,"zza","Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki","zza","","zza"
\ No newline at end of file
+"e4bf2ec8-4c1a-4ece-9df1-4890a7f18457",,"zza","Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki","zza","","zza"
diff --git a/cdmlib-model/src/main/resources/terms/UndefinedLanguage.csv b/cdmlib-model/src/main/resources/terms/UndefinedLanguage.csv
new file mode 100644 (file)
index 0000000..7d4a1ca
--- /dev/null
@@ -0,0 +1,3 @@
+"7fd1e6d0-2e76-4dfa-bad9-2673dd042c28",,"Undefined Languages","Undefined Languages",
+"3d05ab93-2d92-400d-a3dd-fc8dcc5f8203",,"unknown","Unknown Language","unk","--","---"
+"42b893f3-16dd-417d-aa92-96cf6c695ca1",,"original","Original Language","org","--","---"
index 069dd13d3754ccd5d973783d32ad9de4974d870c..913db38954e7b050d3d4aa5b094da81378410997 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.Rank;
 //import eu.etaxonomy.cdm.model.reference.Book;
 //import eu.etaxonomy.cdm.model.reference.Database;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
@@ -44,9 +44,9 @@ public class TaxonGenerator {
                ReferenceFactory refFactory = ReferenceFactory.newInstance();
                Person deCandolle = Person.NewInstance();
                deCandolle.setTitleCache("DC.", true);
-               ReferenceBase sec = refFactory.newDatabase();
+               Reference sec = refFactory.newDatabase();
                sec.setTitleCache("Flora lunaea", true);
-               ReferenceBase citationRef = refFactory.newBook();
+               Reference citationRef = refFactory.newBook();
                citationRef.setTitleCache("Sp. lunarum", true);
                
         //genus taxon with Name, combinationAuthor, 
index 3cb07a0dbce19fc3c4f687da3ca127ab3b5e8989..74051a0d27c0cdb94e7eea5d2734e9a7cd739298 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.Rank;
 //import eu.etaxonomy.cdm.model.reference.Journal;
 import eu.etaxonomy.cdm.model.reference.IJournal;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 
@@ -41,7 +41,7 @@ public class DatabaseInitialiser {
                ReferenceFactory refFactory = ReferenceFactory.newInstance();
                IJournal sec = refFactory.newJournal();
                NonViralName nvName = BotanicalName.NewInstance(Rank.SPECIES());
-               Taxon tax = Taxon.NewInstance(nvName, (ReferenceBase)sec);
+               Taxon tax = Taxon.NewInstance(nvName, (Reference)sec);
                //BotanicalName ve = nm.getNextVersion();
                nvName.setNameCache(speciesname);
                nvName.setTitleCache(speciesname, true);
index 35960fa64b85398ea00dac8e97c3a62e38692ea0..9f4ed517911ab801b37caf3ae65d14876863119c 100644 (file)
@@ -19,6 +19,7 @@ import org.junit.BeforeClass;
 import org.junit.Ignore;\r
 import org.junit.Test;\r
 \r
+\r
 /**\r
  * @author a.mueller\r
  * @created 02.03.2009\r
index cd790e1d4f793fe9aad8f2b7c8a2493acefd3615..4b540747a59ea7f7fdd34c728d2c8effa345e08d 100644 (file)
@@ -23,8 +23,6 @@ import org.junit.BeforeClass;
 import org.junit.Test;\r
 import org.springframework.util.Assert;\r
 \r
-import eu.etaxonomy.cdm.model.location.NamedArea;\r
-import eu.etaxonomy.cdm.model.location.TdwgArea;\r
 \r
 /**\r
  * @author a.mueller\r
diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/LanguageTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/common/LanguageTest.java
new file mode 100644 (file)
index 0000000..6b4a245
--- /dev/null
@@ -0,0 +1,147 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.cdm.model.common;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import org.apache.http.impl.EnglishReasonPhraseCatalog;\r
+import org.apache.log4j.Logger;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+\r
+/**\r
+ * @author a.mueller\r
+ *\r
+ */\r
+public class LanguageTest {\r
+       private static final Logger logger = Logger.getLogger(LanguageTest.class);\r
+       \r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @BeforeClass\r
+       public static void setUpBeforeClass() throws Exception {\r
+               new DefaultTermInitializer().initialize();\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @Before\r
+       public void setUp() throws Exception {\r
+       }\r
+\r
+// ************************** TESTS **********************************************/    \r
+       \r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#toString()}.\r
+        */\r
+       //tests needs to be adapted once the labels for languages are changed\r
+       @Test\r
+       public void testToString() {\r
+               Language lang = Language.ENGLISH();\r
+               Assert.assertEquals("English should return 'eng' by toString()", "eng", lang.toString());\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#resetTerms()}.\r
+        */\r
+       @Test\r
+       public void testResetTerms() {\r
+               Language lang = Language.ENGLISH();\r
+               Assert.assertNotNull("'English' should exist", lang);\r
+               Language unknown = Language.ENGLISH();\r
+               Assert.assertNotNull("'Unknown language' should exist", unknown);\r
+               lang.resetTerms();\r
+               Assert.assertNull("No language should exist anymore", Language.ENGLISH());\r
+               Assert.assertNull("No language should exist anymore", Language.UNKNOWN_LANGUAGE());\r
+               new DefaultTermInitializer().initialize();\r
+       }\r
+\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#getTermByUuid(java.util.UUID)}.\r
+        */\r
+       @Test\r
+       public void testGetTermByUuid() {\r
+               Language lang = Language.getTermByUuid(Language.uuidZaza_Dimili_Dimli_Kirdki_Kirmanjki_Zazaki);\r
+               Assert.assertNotNull("'Zaza' should exist", lang);\r
+               Assert.assertEquals("Uuid must be the equal", "e4bf2ec8-4c1a-4ece-9df1-4890a7f18457", lang.getUuid().toString());\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#ENGLISH()}.\r
+        */\r
+       @Test\r
+       public void testENGLISH() {\r
+               Language lang = Language.ENGLISH();\r
+               Assert.assertNotNull("'English' should exist", lang);\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#UNKNOWN_LANGUAGE()}.\r
+        */\r
+       @Test\r
+       public void testUNKNOWN_LANGUAGE() {\r
+               Language unknown = Language.UNKNOWN_LANGUAGE();\r
+               Assert.assertNotNull("'Unknown Language' of undefinedLanguages vocabulary should exist", unknown);\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#ORIGINAL_LANGUAGE()}.\r
+        */\r
+       @Test\r
+       public void testORIGINAL_LANGUAGE() {\r
+               Language original = Language.UNKNOWN_LANGUAGE();\r
+               Assert.assertNotNull("'Original Language' of undefinedLanguages vocabulary should exist", original);\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#DEFAULT()}.\r
+        */\r
+       @Test\r
+       public void testDEFAULT() {\r
+               Language lang = Language.DEFAULT();\r
+               Assert.assertNotNull("The default language must not be null", lang);\r
+               Assert.assertEquals("Uuid of defautl language should be 'e9f8cdb7-6819-44e8-95d3-e2d0690c3523'(english)", Language.uuidEnglish, lang.getUuid());\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#CSV_LANGUAGE()}.\r
+        */\r
+       @Test\r
+       public void testCSV_LANGUAGE() {\r
+               Language lang = Language.CSV_LANGUAGE();\r
+               Assert.assertNotNull("The csv language must not be null", lang);\r
+               Assert.assertEquals("Uuid of csv language should be 'e9f8cdb7-6819-44e8-95d3-e2d0690c3523'(english)", Language.uuidEnglish, lang.getUuid());\r
+\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#getLanguageByDescription(java.lang.String)}.\r
+        */\r
+       //once the descriptioin for languages are more explaining texts this test must be adapted\r
+       @Test\r
+       public void testGetLanguageByDescription() {\r
+               Language lang = Language.getLanguageByDescription("English"); \r
+               Assert.assertNotNull("A language should be found for label 'English'", lang);\r
+               Assert.assertEquals("Uuid of language 'English' should be 'e9f8cdb7-6819-44e8-95d3-e2d0690c3523'", Language.uuidEnglish, lang.getUuid());\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.common.Language#getLanguageByLabel(java.lang.String)}.\r
+        */\r
+       //once the labels for languages are changed from iso 639-2 to textual labels this test must be adapted\r
+       @Test\r
+       public void testGetLanguageByLabel() {\r
+               Language lang = Language.getLanguageByLabel("eng"); \r
+               Assert.assertNotNull("A language should be found for label 'eng'", lang);\r
+               Assert.assertEquals("Uuid of language 'eng' should be 'e9f8cdb7-6819-44e8-95d3-e2d0690c3523'", Language.uuidEnglish, lang.getUuid());\r
+       }\r
+\r
+}\r
index 1f5a32d90408e8b7cdc0a4ab1290dc44122f8e91..5d3d038c619f3b324e49a8ffb8f5c829761161a6 100644 (file)
@@ -18,6 +18,7 @@ import org.apache.log4j.Logger;
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
 \r
+\r
 /**\r
  * @author a.mueller\r
  * @created 23.04.2008\r
diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/PolytomousKeyTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/description/PolytomousKeyTest.java
new file mode 100644 (file)
index 0000000..1d0dcf5
--- /dev/null
@@ -0,0 +1,101 @@
+package eu.etaxonomy.cdm.model.description;\r
+\r
+import java.io.PrintStream;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
+public class PolytomousKeyTest {\r
+       private static Logger logger = Logger.getLogger(PolytomousKeyTest.class);\r
+\r
+       private PolytomousKey key1;\r
+       private Taxon taxon1;\r
+       \r
+       \r
+       @BeforeClass\r
+       public static void setUpBeforeClass() {\r
+               DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();\r
+               vocabularyStore.initialize();\r
+       }\r
+       \r
+       @Before\r
+       public void setUp() throws Exception {\r
+               key1 = PolytomousKey.NewInstance();\r
+               key1.setTitleCache("My Test Key", true);\r
+               PolytomousKeyNode root = key1.getRoot();\r
+               root.setQuestion(KeyStatement.NewInstance("Is this Aus bus?"));\r
+               //child1\r
+               taxon1 = Taxon.NewInstance(null, null);\r
+               taxon1.setTitleCache("Aus bus L.", true);\r
+               PolytomousKeyNode child1 = PolytomousKeyNode.NewInstance("Yes", null, taxon1, null);\r
+               Feature feature1 = Feature.NewInstance(null, "Leaf", null);\r
+               child1.setFeature(feature1);\r
+               root.addChild(child1);\r
+               \r
+               //child2\r
+               Taxon taxon2 = Taxon.NewInstance(null, null);\r
+               taxon2.setTitleCache("Cus dus Mill.", true);\r
+               PolytomousKeyNode child2 = PolytomousKeyNode.NewInstance("No");\r
+               child2.setTaxon(taxon2);\r
+               root.addChild(child2);\r
+               //child3\r
+               Taxon taxon3 = Taxon.NewInstance(null, null);\r
+               taxon3.setTitleCache("Cus dus subs. rus L.", true);\r
+               PolytomousKeyNode child3 = PolytomousKeyNode.NewInstance("Long and wide");\r
+               child3.setTaxon(taxon3);\r
+               child1.addChild(child3);\r
+               //child4\r
+               Taxon taxon4 = Taxon.NewInstance(null, null);\r
+               taxon4.setTitleCache("Cus dus subs. zus L.", true);\r
+               PolytomousKeyNode child4 = PolytomousKeyNode.NewInstance("Small and narrow");\r
+               child4.setTaxon(taxon4);\r
+               child1.addChild(child4);\r
+               \r
+               key1.setRoot(root);\r
+\r
+               PolytomousKey key2 = PolytomousKey.NewTitledInstance("Second Key");\r
+               child3.setSubkey(key2);\r
+               \r
+               child4.setOtherNode(key2.getRoot());\r
+               \r
+       }\r
+       \r
+//********************* Tests *******************************************************/ \r
+       \r
+       @Test\r
+       public void testNewInstance() {\r
+               PolytomousKey newKey = PolytomousKey.NewInstance();\r
+               Assert.assertNotNull(newKey);\r
+       }\r
+\r
+       @Test\r
+       public void testNewTitledInstance() {\r
+               logger.warn("testNewTitledInstance Not yet implemented");\r
+       }\r
+\r
+       @Test\r
+       public void testPolytomousKey() {\r
+               PolytomousKey newKey = new PolytomousKey();\r
+               Assert.assertNotNull(newKey);\r
+       }\r
+\r
+       @Test\r
+       public void testPrint() {\r
+               PrintStream stream = null;\r
+               String strKey = key1.print(stream);\r
+               System.out.println(strKey);\r
+               Assert.assertEquals("", "My Test Key\n  0. Is this Aus bus?\n    a) Yes ... 1, Aus bus L.\n    b) No ... Cus dus Mill.\n  1. Leaf\n    a) Long and wide ... Cus dus subs. rus L., Second Key\n    b) Small and narrow ... Cus dus subs. zus L., Second Key 0\n", strKey);\r
+       }\r
+\r
+//     @Test\r
+//     public void testGetChildren() {\r
+//             fail("Not yet implemented");\r
+//     }\r
+\r
+}\r
index e64d0af289a351f7d12e4349e2ea8ade9f20047f..5ac6c73eb65372c7c5421c5d6de9b5ea3fe9dc2c 100644 (file)
@@ -9,20 +9,20 @@
 \r
 package eu.etaxonomy.cdm.model.description;\r
 \r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertNull;\r
+import static org.junit.Assert.assertSame;\r
 \r
-import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
 import java.util.Map;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
 import org.junit.Before;\r
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
 \r
 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
@@ -70,7 +70,7 @@ public class TextDataTest {
        public void testNewInstance() {\r
                assertNotNull(textDataLeer);\r
                assertNotNull(textDataLeer.getMultilanguageText());\r
-               assertEquals(0, textDataLeer.getMultilanguageText().size());\r
+               assertEquals(0, textDataLeer.size());\r
                assertEquals(0, textDataLeer.countLanguages());\r
                assertNull(textDataLeer.getFormat());\r
        }\r
@@ -82,7 +82,7 @@ public class TextDataTest {
        public void testNewInstanceStringLanguageTextFormat() {\r
                assertNotNull(textData1);\r
                assertNotNull(textData1.getMultilanguageText());\r
-               assertEquals(1, textData1.getMultilanguageText().size());\r
+               assertEquals(1, textData1.size());\r
                assertEquals(1, textData1.countLanguages());\r
                LanguageString languageString = LanguageString.NewInstance("testText", Language.DEFAULT());\r
 //             assertEquals("testText", textData1.getMultilanguageText().getText(Language.DEFAULT()));\r
@@ -138,22 +138,21 @@ public class TextDataTest {
                assertNotNull(textData1.getPreferredLanguageString(preferredLanguages));\r
        }\r
        \r
-       /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.description.TextData#setMultilanguageText()}.\r
-        */\r
-       @Test\r
-       public void testSetMultilanguageText() {\r
-               MultilanguageText multilanguageText = MultilanguageText.NewInstance();\r
-               assertFalse(multilanguageText.equals(textData1.getMultilanguageText()));\r
-               Map<Language, LanguageString> texts = textData1.getMultilanguageText();\r
-               System.out.println(texts.size());\r
-               LanguageString text = texts.get(Language.DEFAULT());\r
-               text.setText("This is a test");\r
-               System.out.println(texts.size());\r
-               textData1.getMultilanguageText().clear();\r
-               assertNotNull(textData1.getMultilanguageText());\r
-               assertEquals(0, textData1.getMultilanguageText().size());\r
-       }\r
+//     /**\r
+//      * \r
+//     Test method for {@link eu.etaxonomy.cdm.model.description.TextData#setMultilanguageText()}.\r
+//      */\r
+//     @Test\r
+//     public void testSetMultilanguageText() {\r
+//             MultilanguageText multilanguageText = MultilanguageText.NewInstance();\r
+//             assertFalse(multilanguageText.equals(textData1.getMultilanguageText()));\r
+//             Map<Language, LanguageString> texts = textData1.getMultilanguageText();\r
+//             LanguageString text = texts.get(Language.DEFAULT());\r
+//             text.setText("This is a test");\r
+//             textData1.getMultilanguageText().clear();\r
+//             assertNotNull(textData1.getMultilanguageText());\r
+//             assertEquals(0, textData1.getMultilanguageText().size());\r
+//     }\r
        \r
        /**\r
         * Test method for {@link eu.etaxonomy.cdm.model.description.TextData#addText(java.lang.String, eu.etaxonomy.cdm.model.common.Language)}.\r
@@ -164,9 +163,8 @@ public class TextDataTest {
                assertNull(textDataLeer.putText("francais", Language.FRENCH()));\r
                textDataLeer.putText("nothing", null);\r
                textDataLeer.putText(null, Language.CHINESE());\r
-               assertNotNull(textDataLeer.getMultilanguageText());\r
-               assertEquals(4 , textDataLeer.getMultilanguageText().size());\r
-               assertEquals("xx", textDataLeer.putText("deutsch", Language.GERMAN()).getText() );\r
+               assertEquals(4 , textDataLeer.size());\r
+               assertEquals("deutsch", textDataLeer.putText("deutsch", Language.GERMAN()).getText() );\r
                assertEquals(4 , textDataLeer.getMultilanguageText().size());\r
                assertEquals("deutsch", textDataLeer.getText(Language.GERMAN()));\r
                assertEquals("francais", textDataLeer.getText(Language.FRENCH()));\r
index 98bc246cb51d6ea20040474e6573a15cff82f70c..26cd66dd47b0eb6a0b7df8e2d163f4835785eb6a 100644 (file)
@@ -11,6 +11,9 @@
 package eu.etaxonomy.cdm.model.media;\r
 \r
 import static org.junit.Assert.*;\r
+\r
+import java.net.URI;\r
+\r
 import junit.framework.Assert;\r
 \r
 import org.apache.log4j.Logger;\r
@@ -45,8 +48,9 @@ public class MediaTest {
        private final String germanDescription = "media1Desc2";\r
        private Rights rights1;\r
        private LanguageString languageString2;\r
-       private String uriString1 = "Path to image 1";\r
-       private String uriString2 = "Path to image 2";\r
+       private static URI uriString1;\r
+       private static URI uriString2;\r
+       \r
        /**\r
         * @throws java.lang.Exception\r
         */\r
@@ -54,6 +58,14 @@ public class MediaTest {
        public static void setUpBeforeClass() throws Exception {\r
                DefaultTermInitializer termInitializer = new DefaultTermInitializer();\r
                termInitializer.initialize();\r
+               try {\r
+                       uriString1 = new URI("http://Pathtoimage1/");\r
+                       uriString2 = new URI("http://Path_to_image_2/");\r
+               } catch (Exception e) {\r
+                       e.printStackTrace();\r
+                       Assert.fail("Error in URI syntax");\r
+               }\r
+               \r
        }\r
 \r
        /**\r
@@ -116,10 +128,10 @@ public class MediaTest {
                try {\r
                        Media mediaClone = (Media)media1.clone();\r
                        Assert.assertSame("Artist must be the same", team1, mediaClone.getArtist());\r
-                       Assert.assertTrue("Clone must have a default language description", mediaClone.getDescription().containsKey(Language.DEFAULT()));\r
-                       Assert.assertSame("Description1 must be the same", languageString1, mediaClone.getDescription().get(Language.DEFAULT()) );\r
-                       Assert.assertTrue("Clone must have a german description", mediaClone.getDescription().containsKey(Language.GERMAN()));\r
-                       Assert.assertEquals("German description must equal media1Desc2", germanDescription, mediaClone.getDescription().get(Language.GERMAN()).getText() );\r
+                       Assert.assertTrue("Clone must have a default language description", mediaClone.getAllDescriptions().containsKey(Language.DEFAULT()));\r
+                       Assert.assertSame("Description1 must be the same", languageString1, mediaClone.getAllDescriptions().get(Language.DEFAULT()) );\r
+                       Assert.assertTrue("Clone must have a german description", mediaClone.getAllDescriptions().containsKey(Language.GERMAN()));\r
+                       Assert.assertEquals("German description must equal media1Desc2", germanDescription, mediaClone.getAllDescriptions().get(Language.GERMAN()).getText() );\r
                        \r
                        Assert.assertEquals("Media created year must be 2002", 2002, mediaClone.getMediaCreated().getYear());\r
                        Assert.assertEquals("Number of media representations must be 2", 2, mediaClone.getRepresentations().size());\r
@@ -212,8 +224,8 @@ public class MediaTest {
         */\r
        @Test\r
        public void testGetDescription() {\r
-               Assert.assertTrue("Clone must have a default language description", media1.getDescription().containsKey(Language.DEFAULT()));\r
-               Assert.assertSame("Description1 must be the same", languageString1, media1.getDescription().get(Language.DEFAULT()) );\r
+               Assert.assertTrue("Clone must have a default language description", media1.getAllDescriptions().containsKey(Language.DEFAULT()));\r
+               Assert.assertSame("Description1 must be the same", languageString1, media1.getAllDescriptions().get(Language.DEFAULT()) );\r
        }\r
 \r
        /**\r
@@ -221,12 +233,12 @@ public class MediaTest {
         */\r
        @Test\r
        public void testAddDescriptionLanguageString() {\r
-               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );\r
-               Assert.assertTrue("Clone must have a default language description", media1.getDescription().containsKey(Language.DEFAULT()));\r
-               Assert.assertSame("Description1 must be the same", languageString1, media1.getDescription().get(Language.DEFAULT()) );\r
+               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );\r
+               Assert.assertTrue("Clone must have a default language description", media1.getAllDescriptions().containsKey(Language.DEFAULT()));\r
+               Assert.assertSame("Description1 must be the same", languageString1, media1.getAllDescriptions().get(Language.DEFAULT()) );\r
                media1.addDescription(languageString2);\r
-               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );\r
-               Assert.assertEquals("Default language description must be languageString2", languageString2, media1.getDescription().get(Language.DEFAULT()) );\r
+               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );\r
+               Assert.assertEquals("Default language description must be languageString2", languageString2, media1.getAllDescriptions().get(Language.DEFAULT()) );\r
        }\r
 \r
        /**\r
@@ -234,13 +246,13 @@ public class MediaTest {
         */\r
        @Test\r
        public void testAddDescriptionStringLanguage() {\r
-               Assert.assertTrue("Clone must have a german language description", media1.getDescription().containsKey(Language.GERMAN()));\r
-               Assert.assertSame("Description1 must be the same", "media1Desc2", media1.getDescription().get(Language.GERMAN()).getText() );\r
+               Assert.assertTrue("Clone must have a german language description", media1.getAllDescriptions().containsKey(Language.GERMAN()));\r
+               Assert.assertSame("Description1 must be the same", "media1Desc2", media1.getAllDescriptions().get(Language.GERMAN()).getText() );\r
                media1.addDescription("testDesc", Language.DEFAULT());\r
-               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );\r
+               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );\r
                media1.addDescription("testDesc2", Language.DEFAULT());\r
-               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );\r
-               Assert.assertSame("Default language description must be 'testDesc2'", "testDesc2", media1.getDescription().get(Language.DEFAULT()).getText() );\r
+               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );\r
+               Assert.assertSame("Default language description must be 'testDesc2'", "testDesc2", media1.getAllDescriptions().get(Language.DEFAULT()).getText() );\r
        }\r
 \r
        /**\r
@@ -248,17 +260,17 @@ public class MediaTest {
         */\r
        @Test\r
        public void testRemoveDescription() {\r
-               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );\r
-               Assert.assertTrue("Clone must have a default language description", media1.getDescription().containsKey(Language.DEFAULT()));\r
-               Assert.assertSame("Description1 must be the same", languageString1, media1.getDescription().get(Language.DEFAULT()) );\r
+               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );\r
+               Assert.assertTrue("Clone must have a default language description", media1.getAllDescriptions().containsKey(Language.DEFAULT()));\r
+               Assert.assertSame("Description1 must be the same", languageString1, media1.getAllDescriptions().get(Language.DEFAULT()) );\r
                media1.removeDescription(Language.JAPANESE());\r
-               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getDescription().size() );\r
+               Assert.assertEquals("Number of descriptions must be 2", 2, media1.getAllDescriptions().size() );\r
                media1.removeDescription(Language.DEFAULT());\r
-               Assert.assertEquals("Number of descriptions must be 1", 1, media1.getDescription().size() );\r
+               Assert.assertEquals("Number of descriptions must be 1", 1, media1.getAllDescriptions().size() );\r
                media1.removeDescription(Language.DEFAULT());\r
-               Assert.assertEquals("Number of descriptions must be 1", 1, media1.getDescription().size() );\r
+               Assert.assertEquals("Number of descriptions must be 1", 1, media1.getAllDescriptions().size() );\r
                media1.removeDescription(Language.GERMAN());\r
-               Assert.assertEquals("Number of descriptions must be 0", 0, media1.getDescription().size() );\r
+               Assert.assertEquals("Number of descriptions must be 0", 0, media1.getAllDescriptions().size() );\r
        }\r
        \r
        @Test\r
index d6dcbd1ad9c241be35e09f03449bf50c94522d5b..b6c8720b3d1c17110d1c79bec3d14cb391d52a61 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
 //import eu.etaxonomy.cdm.model.reference.Article;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.test.unit.EntityTestBase;\r
 \r
index 8d9638ec2bf65210fd5cec1076873854b08719d0..32facec5ea6d221b452cc0bec4a9f0c574bdd24e 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
 import eu.etaxonomy.cdm.model.reference.IGeneric;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.IReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.IReference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.test.unit.EntityTestBase;\r
 \r
index b1522f0bd230334b08580c145e5f4017169d68bf..9e4936e547b64f15bf45c6f1094cb87e5ee30890 100644 (file)
@@ -29,7 +29,7 @@ import org.junit.Test;
 import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
@@ -406,7 +406,7 @@ public class TaxonNameBaseTest {
        }\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.name.TaxonNameBase#addNameTypeDesignation(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, java.lang.String, boolean, boolean)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.name.TaxonNameBase#addNameTypeDesignation(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, java.lang.String, boolean, boolean)}.\r
         */\r
        @Test\r
        public void testAddNameTypeDesignation() {\r
@@ -446,7 +446,7 @@ public class TaxonNameBaseTest {
        }\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.name.TaxonNameBase#addSpecimenTypeDesignation(eu.etaxonomy.cdm.model.occurrence.Specimen, eu.etaxonomy.cdm.model.name.TypeDesignationStatus, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, java.lang.String, boolean)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.name.TaxonNameBase#addSpecimenTypeDesignation(eu.etaxonomy.cdm.model.occurrence.Specimen, eu.etaxonomy.cdm.model.name.TypeDesignationStatus, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, java.lang.String, boolean)}.\r
         */\r
        @Test\r
        public void testAddSpecimenTypeDesignationSpecimenTypeDesignationStatusReferenceBaseStringStringBoolean() {\r
index 1bb1a78848e90b58735126a31b84e851582bacfc..b3dc510a932e46354c5f850c0caf8ba6f32b2758 100644 (file)
@@ -98,7 +98,7 @@ public class PublicationBaseTest {
                IJournal journal = ReferenceFactory.newJournal();\r
                publicationBase2.setInJournal(journal);\r
                //TODO: to validate it, the object has to be saved to the db\r
-               IBookSection booksection = ((ReferenceBase)publicationBase2).castReferenceToBookSection();\r
+               IBookSection booksection = ((Reference)publicationBase2).castReferenceToBookSection();\r
                \r
                \r
        }\r
similarity index 73%
rename from cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonomicTreeTest.java
rename to cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/ClassificationTest.java
index d86a8f9a02a92ac9f962e0deb0fb91cc16834b53..909a2749d676e2adb35c438196e8ad2d66ecca67 100644 (file)
@@ -42,7 +42,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 //import eu.etaxonomy.cdm.model.reference.Book;\r
 //import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -50,11 +50,11 @@ import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
  * @created 01.04.2009\r
  * @version 1.0\r
  */\r
-public class TaxonomicTreeTest {\r
-       private static final Logger logger = Logger.getLogger(TaxonomicTreeTest.class);\r
+public class ClassificationTest {\r
+       private static final Logger logger = Logger.getLogger(ClassificationTest.class);\r
 \r
        private static String treeName1;\r
-       private static TaxonomicTree taxonomicTree1;\r
+       private static Classification classification1;\r
        private static TaxonNode taxonNode1;\r
        private static TaxonNode taxonNode2;\r
        private static TaxonNode taxonNode3;\r
@@ -62,8 +62,8 @@ public class TaxonomicTreeTest {
        private static Taxon taxon2;\r
        private static TaxonNameBase<?,?> taxonName1;\r
        private static TaxonNameBase<?,?> taxonName2;\r
-       private static ReferenceBase ref1;\r
-       private static ReferenceBase ref2;\r
+       private static Reference ref1;\r
+       private static Reference ref2;\r
        private ReferenceFactory refFactory;\r
        \r
        \r
@@ -89,7 +89,7 @@ public class TaxonomicTreeTest {
        public void setUp() throws Exception {\r
                treeName1 = "Greuther, 1993";\r
                refFactory = ReferenceFactory.newInstance();\r
-               taxonomicTree1 = TaxonomicTree.NewInstance(treeName1);\r
+               classification1 = Classification.NewInstance(treeName1);\r
                taxonName1 = BotanicalName.NewInstance(Rank.SPECIES());\r
                taxonName1 = ZoologicalName.NewInstance(Rank.SPECIES());\r
                ref1 = refFactory.newJournal();\r
@@ -110,19 +110,19 @@ public class TaxonomicTreeTest {
 //****************************** TESTS *****************************************/\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree#addRoot(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Classification#addRoot(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)}.\r
         */\r
        @Test\r
        public void testAddRoot() {\r
                TaxonNameBase<?,?> synonymName = BotanicalName.NewInstance(Rank.SPECIES());\r
                Synonym synonym = Synonym.NewInstance(synonymName, ref1);\r
-               TaxonNode taxonNode1 = taxonomicTree1.addChildTaxon(taxon1, null, null, synonym);\r
+               TaxonNode taxonNode1 = classification1.addChildTaxon(taxon1, null, null, synonym);\r
                \r
                \r
                \r
                \r
                //test root node\r
-               Set<TaxonNode> rootNodes = taxonomicTree1.getChildNodes();\r
+               Set<TaxonNode> rootNodes = classification1.getChildNodes();\r
                assertFalse("List of root nodes should not be empty", rootNodes.isEmpty());\r
                assertEquals("Number of root nodes should be 1", 1, rootNodes.size());\r
                TaxonNode root = rootNodes.iterator().next();\r
@@ -133,7 +133,7 @@ public class TaxonomicTreeTest {
                assertEquals(synonym, root.getSynonymToBeUsed());\r
                \r
                //any node\r
-               Set<TaxonNode> allNodes = taxonomicTree1.getChildNodes();\r
+               Set<TaxonNode> allNodes = classification1.getChildNodes();\r
                assertFalse("List of root nodes should not be empty", allNodes.isEmpty());\r
                assertEquals("Number of root nodes should be 1", 1, allNodes.size());\r
                TaxonNode anyNode = allNodes.iterator().next();\r
@@ -143,40 +143,40 @@ public class TaxonomicTreeTest {
        }\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree#isTaxonInView(eu.etaxonomy.cdm.model.taxon.Taxon)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Classification#isTaxonInView(eu.etaxonomy.cdm.model.taxon.Taxon)}.\r
         */\r
        @Test\r
        public void testIsTaxonInTree() {\r
-               taxonomicTree1.addChildTaxon(taxon1, null, null, null);\r
+               classification1.addChildTaxon(taxon1, null, null, null);\r
                \r
-               assertTrue(taxonomicTree1.isTaxonInTree(taxon1));\r
+               assertTrue(classification1.isTaxonInTree(taxon1));\r
                Taxon anyTaxon = Taxon.NewInstance(null, null);\r
-               assertFalse(taxonomicTree1.isTaxonInTree(anyTaxon));\r
+               assertFalse(classification1.isTaxonInTree(anyTaxon));\r
        }\r
        \r
        \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree#makeRootChildOfOtherNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.util.String)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Classification#makeRootChildOfOtherNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.reference.Reference, java.util.String)}.\r
         */\r
        @Test\r
        public void testMakeRootChildOfOtherNode() {\r
-               TaxonNode root1 = taxonomicTree1.addChildTaxon(taxon1, null, null, null);\r
-               TaxonNode root2 = taxonomicTree1.addChildTaxon(taxon2, null, null, null);\r
+               TaxonNode root1 = classification1.addChildTaxon(taxon1, null, null, null);\r
+               TaxonNode root2 = classification1.addChildTaxon(taxon2, null, null, null);\r
                Taxon taxon3 = Taxon.NewInstance(null, null);\r
                root2.addChildTaxon(taxon3, null, null, null);\r
                String microRef = "p55";\r
                \r
                assertFalse("Root1 must not yet be child of root 2", root2.getChildNodes().contains(root1));\r
                assertNotSame("Root2 must not yet be parent of root 1", root2, root1.getParent());\r
-               assertEquals("view must contain 3 nodes", 3, taxonomicTree1.getAllNodes().size());\r
-               assertEquals("view must still contain 2 root", 2, taxonomicTree1.getChildNodes().size());\r
+               assertEquals("view must contain 3 nodes", 3, classification1.getAllNodes().size());\r
+               assertEquals("view must still contain 2 root", 2, classification1.getChildNodes().size());\r
                assertEquals("root2 must have 1 child", 1, root2.getChildNodes().size());\r
                \r
-               taxonomicTree1.makeTopmostNodeChildOfOtherNode(root1, root2, ref1, microRef);\r
+               classification1.makeTopmostNodeChildOfOtherNode(root1, root2, ref1, microRef);\r
                assertTrue("Root1 must be child of root 2", root2.getChildNodes().contains(root1));\r
                assertSame("Root2 must be parent of root 1", root2, root1.getParent());\r
-               assertEquals("view must contain 3 nodes", 3, taxonomicTree1.getAllNodes().size());\r
-               assertEquals("view must contain 1 root", 1, taxonomicTree1.getChildNodes().size());\r
+               assertEquals("view must contain 3 nodes", 3, classification1.getAllNodes().size());\r
+               assertEquals("view must contain 1 root", 1, classification1.getChildNodes().size());\r
                assertEquals("new child node must have the expected reference for parent child relationship", ref1, root1.getReference());\r
                assertEquals("new child node must have the expected micro reference for parent child relationship", microRef, root1.getMicroReference());\r
                assertEquals("root2 must have 2 children", 2, root2.getChildNodes().size());\r
@@ -185,31 +185,31 @@ public class TaxonomicTreeTest {
        \r
        @Test\r
        public void testIsTopmostInTree() {\r
-               TaxonNode root = taxonomicTree1.addChildTaxon(taxon1, null, null, null);\r
+               TaxonNode root = classification1.addChildTaxon(taxon1, null, null, null);\r
                \r
-               assertTrue(taxonomicTree1.isTaxonInTree(taxon1));\r
-               assertTrue(taxonomicTree1.isTopmostInTree(taxon1));\r
+               assertTrue(classification1.isTaxonInTree(taxon1));\r
+               assertTrue(classification1.isTopmostInTree(taxon1));\r
                Taxon anyTaxon = Taxon.NewInstance(null, null);\r
-               assertFalse(taxonomicTree1.isTaxonInTree(anyTaxon));\r
-               assertFalse(taxonomicTree1.isTopmostInTree(anyTaxon));\r
+               assertFalse(classification1.isTaxonInTree(anyTaxon));\r
+               assertFalse(classification1.isTopmostInTree(anyTaxon));\r
                Taxon child = Taxon.NewInstance(null, null);\r
                root.addChildTaxon(child, null, null, null);\r
-               assertTrue(taxonomicTree1.isTaxonInTree(child));\r
-               assertFalse(taxonomicTree1.isTopmostInTree(child));\r
+               assertTrue(classification1.isTaxonInTree(child));\r
+               assertFalse(classification1.isTopmostInTree(child));\r
        }\r
        \r
        @Test\r
        public void testGetTopmostNode() {\r
-               TaxonNode root = taxonomicTree1.addChildTaxon(taxon1, null, null, null);\r
+               TaxonNode root = classification1.addChildTaxon(taxon1, null, null, null);\r
                \r
-               assertEquals(root, taxonomicTree1.getTopmostNode(taxon1));\r
+               assertEquals(root, classification1.getTopmostNode(taxon1));\r
                Taxon anyTaxon = Taxon.NewInstance(null, null);\r
-               assertFalse(taxonomicTree1.isTaxonInTree(anyTaxon));\r
-               assertNull(taxonomicTree1.getTopmostNode(anyTaxon));\r
+               assertFalse(classification1.isTaxonInTree(anyTaxon));\r
+               assertNull(classification1.getTopmostNode(anyTaxon));\r
                Taxon child = Taxon.NewInstance(null, null);\r
                root.addChildTaxon(child, null, null, null);\r
-               assertTrue(taxonomicTree1.isTaxonInTree(child));\r
-               assertNull(taxonomicTree1.getTopmostNode(child));\r
+               assertTrue(classification1.isTaxonInTree(child));\r
+               assertNull(classification1.getTopmostNode(child));\r
        }\r
        \r
        @Test\r
@@ -217,22 +217,22 @@ public class TaxonomicTreeTest {
 \r
                TaxonNameBase<?,?> synonymName = BotanicalName.NewInstance(Rank.SPECIES());\r
                Synonym synonym = Synonym.NewInstance(synonymName, ref1);\r
-               TaxonNode rootNode = taxonomicTree1.addChildTaxon(taxon1, null, null, synonym);\r
+               TaxonNode rootNode = classification1.addChildTaxon(taxon1, null, null, synonym);\r
                Assert.assertEquals(0,rootNode.getChildNodes().size());\r
                \r
                //add child to existing root\r
-               taxonomicTree1.addParentChild(taxon1, taxon2, ref1, "Micro1");\r
-               Assert.assertTrue(taxonomicTree1.isTaxonInTree(taxon2));\r
-               Assert.assertFalse(taxonomicTree1.isTopmostInTree(taxon2));\r
+               classification1.addParentChild(taxon1, taxon2, ref1, "Micro1");\r
+               Assert.assertTrue(classification1.isTaxonInTree(taxon2));\r
+               Assert.assertFalse(classification1.isTopmostInTree(taxon2));\r
                Assert.assertEquals(1,rootNode.getChildNodes().size());\r
                TaxonNode childNode = rootNode.getChildNodes().iterator().next();\r
                Assert.assertEquals(taxon2, childNode.getTaxon());\r
                \r
                //relationship already exists\r
-               taxonomicTree1.addParentChild(taxon1, taxon2, ref2, "Micro2");\r
-               Assert.assertTrue(taxonomicTree1.isTaxonInTree(taxon2));\r
-               Assert.assertFalse(taxonomicTree1.isTopmostInTree(taxon2));\r
-               Assert.assertEquals(2, taxonomicTree1.getAllNodes().size());\r
+               classification1.addParentChild(taxon1, taxon2, ref2, "Micro2");\r
+               Assert.assertTrue(classification1.isTaxonInTree(taxon2));\r
+               Assert.assertFalse(classification1.isTopmostInTree(taxon2));\r
+               Assert.assertEquals(2, classification1.getAllNodes().size());\r
                Assert.assertEquals(1,rootNode.getChildNodes().size());\r
                childNode = rootNode.getChildNodes().iterator().next();\r
                Assert.assertEquals(taxon2, childNode.getTaxon());\r
@@ -244,17 +244,17 @@ public class TaxonomicTreeTest {
        }\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree#generateTitle()}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Classification#generateTitle()}.\r
         */\r
        @Test\r
        public void testGenerateTitle() {\r
-               TaxonomicTree taxonomicViewLocal = TaxonomicTree.NewInstance(treeName1);\r
+               Classification taxonomicViewLocal = Classification.NewInstance(treeName1);\r
                //Maybe changed if title cache is generated in a different way\r
                assertEquals(treeName1, taxonomicViewLocal.getTitleCache());\r
        }\r
        \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree#generateTitle()}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Classification#generateTitle()}.\r
         */\r
        @Test\r
        public void play() {\r
@@ -333,7 +333,7 @@ public class TaxonomicTreeTest {
                        BotanicalName name = BotanicalName.NewInstance(Rank.GENUS());\r
                        name.setTitleCache("A dummy name", true);\r
                        result.add(name);\r
-                       ReferenceBase ref = refFactory.newBook();\r
+                       Reference ref = refFactory.newBook();\r
                        ref.setTitleCache("A dummy book", true);\r
                        result.add(ref);\r
                        \r
index e660cf4f1eb62ae5c7948fc990c2f493f5406b22..bfa08ef3a83d2b0604835dd2951d0b5a919cfe81 100644 (file)
@@ -9,11 +9,13 @@
  \r
 package eu.etaxonomy.cdm.model.taxon;\r
 \r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertNull;\r
+import static org.junit.Assert.assertSame;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.junit.After;\r
-import org.junit.AfterClass;\r
 import org.junit.Before;\r
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
@@ -23,8 +25,7 @@ import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
-import eu.etaxonomy.cdm.model.reference.IBook;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.test.unit.EntityTestBase;\r
 \r
@@ -35,7 +36,7 @@ import eu.etaxonomy.cdm.test.unit.EntityTestBase;
 public class TaxonBaseTest extends EntityTestBase {\r
        private static final Logger logger = Logger.getLogger(TaxonBaseTest.class);\r
        \r
-       private ReferenceBase sec;\r
+       private Reference sec;\r
        private ZoologicalName name1;\r
        private BotanicalName name2;\r
        private Taxon rootT;\r
@@ -128,7 +129,7 @@ public class TaxonBaseTest extends EntityTestBase {
        }\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonBase#setSec(eu.etaxonomy.cdm.model.reference.ReferenceBase)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonBase#setSec(eu.etaxonomy.cdm.model.reference.Reference)}.\r
         */\r
        @Test\r
        public final void testSetSec() {\r
@@ -138,16 +139,4 @@ public class TaxonBaseTest extends EntityTestBase {
                assertSame(freeT.getSec(), sec);\r
        }\r
 \r
-       /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonBase#isSaveable()}.\r
-        */\r
-       @Test\r
-       public final void testIsSaveable() {\r
-               assertFalse(freeT.isSaveable());\r
-               assertTrue(taxon1.isSaveable());\r
-               assertFalse(freeT.isSaveable());\r
-               freeT.setSec(sec);\r
-               assertFalse(freeT.isSaveable());\r
-       }\r
-\r
 }\r
index 89017ebdfa6698573459b6d8de0efd0623c976af..91117f518e84b0a9cf42b2f5ddc7a81254b1731d 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 //import eu.etaxonomy.cdm.model.reference.Book;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -75,11 +75,11 @@ public class TaxonComparatorTest {
                logger.debug("start testCompare");\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
                \r
-               ReferenceBase sec = refFactory.newBook();\r
+               Reference sec = refFactory.newBook();\r
                \r
-               ReferenceBase ref1 = refFactory.newBook();\r
-               ReferenceBase ref2 = refFactory.newBook();\r
-               ReferenceBase ref3 = refFactory.newBook();\r
+               Reference ref1 = refFactory.newBook();\r
+               Reference ref2 = refFactory.newBook();\r
+               Reference ref3 = refFactory.newBook();\r
                Calendar cal1 = Calendar.getInstance();\r
                Calendar cal2 = Calendar.getInstance();\r
                Calendar cal3 = Calendar.getInstance();\r
index e6c27f626d0dccab6fafc8855b5696f5a31c6649..109b2d69f1eb1ae7d3c90097d7dc4bdead7b7cd9 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 //import eu.etaxonomy.cdm.model.reference.Book;\r
 //import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -42,17 +42,17 @@ public class TaxonNodeTest {
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(TaxonNodeTest.class);\r
        private static String viewName1;\r
-       private static TaxonomicTree taxonomicView1;\r
-       private static TaxonomicTree taxonomicView2;\r
+       private static Classification taxonomicView1;\r
+       private static Classification taxonomicView2;\r
        private static Taxon taxon1;\r
        private static Taxon taxon2;\r
        private static Taxon taxon3;\r
        private static TaxonNameBase<?,?> taxonName1;\r
        private static TaxonNameBase<?,?> taxonName2;\r
        private static TaxonNameBase<?,?> taxonName3;\r
-       private static ReferenceBase ref1;\r
-       private static ReferenceBase ref2;\r
-       private static ReferenceBase ref3;\r
+       private static Reference ref1;\r
+       private static Reference ref2;\r
+       private static Reference ref3;\r
        private static Synonym syn1;\r
        /**\r
         * @throws java.lang.Exception\r
@@ -75,8 +75,8 @@ public class TaxonNodeTest {
        public void setUp() throws Exception {\r
                viewName1 = "Greuther, 1993";\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
-               taxonomicView1 = TaxonomicTree.NewInstance(viewName1);\r
-               taxonomicView2 = TaxonomicTree.NewInstance("Test View 2");\r
+               taxonomicView1 = Classification.NewInstance(viewName1);\r
+               taxonomicView2 = Classification.NewInstance("Test View 2");\r
                taxonName1 = BotanicalName.NewInstance(Rank.SPECIES());\r
                taxonName1 = BotanicalName.NewInstance(Rank.SUBSPECIES());\r
                taxonName3 = BotanicalName.NewInstance(Rank.SPECIES());\r
@@ -101,7 +101,7 @@ public class TaxonNodeTest {
 \r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonNode#NewInstance(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonomicTree)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonNode#NewInstance(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification)}.\r
         */\r
        @Test\r
        public void testNewTaxonTaxonomicView() {\r
@@ -110,12 +110,12 @@ public class TaxonNodeTest {
                \r
                assertNotNull("test node should not be null", testNode);\r
                assertEquals(taxon1,testNode.getTaxon());\r
-               assertEquals(taxonomicView1,testNode.getTaxonomicTree());\r
+               assertEquals(taxonomicView1,testNode.getClassification());\r
                assertTrue("taxon1 must become part of taxonomicView1", taxonomicView1.isTaxonInTree(taxon1));\r
        }\r
 \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonNode#addChild(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonNode#addChild(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, eu.etaxonomy.cdm.model.taxon.Synonym)}.\r
         */\r
        @Test\r
        public void testAddChild() {\r
@@ -235,10 +235,10 @@ public class TaxonNodeTest {
        @Test\r
        public void testMoveTaxonNodeToOtherTree(){\r
                TaxonNode node = taxonomicView1.addChildTaxon(taxon1, null, null, null);\r
-               assertEquals("The node should be in the classification we added it to", taxonomicView1, node.getTaxonomicTree());\r
+               assertEquals("The node should be in the classification we added it to", taxonomicView1, node.getClassification());\r
                \r
                TaxonNode movedNode = taxonomicView2.addChildNode(node, null, null, null);\r
-               assertEquals("The node should be in the classification we moved it to", taxonomicView2, movedNode.getTaxonomicTree());\r
+               assertEquals("The node should be in the classification we moved it to", taxonomicView2, movedNode.getClassification());\r
                assertEquals("The old tree should be empty now", 0, taxonomicView1.getChildNodes().size());\r
        }\r
        \r
@@ -248,7 +248,7 @@ public class TaxonNodeTest {
                TaxonNode node2 = node1.addChildTaxon(taxon3, null, null, null);\r
                \r
                assertEquals("The node should have exactly one child", 1, node1.getChildNodes().size());\r
-               assertEquals("The child is not in the correct tree", taxonomicView1, node2.getTaxonomicTree());\r
+               assertEquals("The child is not in the correct tree", taxonomicView1, node2.getClassification());\r
                assertEquals("The Classification should contain exactly two nodes", 2, taxonomicView1.getAllNodes().size());\r
                \r
                TaxonNode node3 = taxonomicView2.addChildTaxon(taxon3, null, null, null);\r
@@ -258,13 +258,13 @@ public class TaxonNodeTest {
                \r
                assertEquals("Old node should not have child nodes", 0, node1.getChildNodes().size());\r
                assertEquals("Old tree should contain only one node now", 1, taxonomicView1.getAllNodes().size());\r
-               assertEquals("Moved node not in expected tree", taxonomicView2, node2.getTaxonomicTree());\r
+               assertEquals("Moved node not in expected tree", taxonomicView2, node2.getClassification());\r
                assertEquals("Count of nodes in new tree:", 2, taxonomicView2.getAllNodes().size());\r
                \r
        }\r
        \r
        /**\r
-        * Basically tests setTaxonomicTreeRecursively(TaxonomicTree) which is a private method\r
+        * Basically tests #setClassificationRecursively(Classification) which is a private method\r
         */\r
        @Test\r
        public void testMoveTaxonNodesRecursivelyToOtherTaxonNodeInDifferentTree(){\r
@@ -276,9 +276,9 @@ public class TaxonNodeTest {
                taxonomicView2.addChildNode(node1, null, null, null);\r
                \r
                assertEquals("Old tree should be empty:", 0, taxonomicView1.getAllNodes().size());\r
-               assertEquals("Moved node not in expected tree:", taxonomicView2, node1.getTaxonomicTree());\r
-               assertEquals("Recursively moved node not in expected tree:", taxonomicView2, node2.getTaxonomicTree());\r
-               assertEquals("Recursively moved node not in expected tree:", taxonomicView2, node3.getTaxonomicTree());\r
+               assertEquals("Moved node not in expected tree:", taxonomicView2, node1.getClassification());\r
+               assertEquals("Recursively moved node not in expected tree:", taxonomicView2, node2.getClassification());\r
+               assertEquals("Recursively moved node not in expected tree:", taxonomicView2, node3.getClassification());\r
                \r
                assertEquals("Count of nodes in new tree:", 3, taxonomicView2.getAllNodes().size());\r
                \r
index fcbb80558cdb6971544a865e450afd7167e87cc8..4ec84c9f3893994caf12ed0de17d8ea1b8b0923a 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;
 //import eu.etaxonomy.cdm.model.reference.Book;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.test.unit.EntityTestBase;
 
@@ -38,8 +38,8 @@ public class TaxonTest extends EntityTestBase {
        private static final Logger logger = Logger.getLogger(TaxonTest.class);
 
        
-       private ReferenceBase sec;
-       private ReferenceBase misSec;
+       private Reference sec;
+       private Reference misSec;
        private ZoologicalName name1;
        private BotanicalName name2;
        private Taxon rootT;
@@ -181,7 +181,7 @@ public class TaxonTest extends EntityTestBase {
        }
        
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#NewInstance(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#NewInstance(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.Reference)}.
         */
        @Test
        public void testNewInstance() {
@@ -197,7 +197,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#Taxon(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#Taxon(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.Reference)}.
         */
        @Test
        public void testTaxonTaxonNameBaseReferenceBase() {
@@ -353,7 +353,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addTaxonRelation(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addTaxonRelation(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddTaxonRelationTaxonTaxonRelationshipTypeReferenceBaseString() {
@@ -361,7 +361,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addMisappliedName(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addMisappliedName(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddMisappliedName() {
@@ -403,7 +403,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddSynonymSynonymSynonymRelationshipTypeReferenceBaseString() {
@@ -419,7 +419,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddSynonymNameTaxonNameBaseSynonymRelationshipTypeReferenceBaseString() {
@@ -435,7 +435,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHeterotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.HomotypicalGroup, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHeterotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.HomotypicalGroup, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddHeterotypicSynonymNameTaxonNameBaseHomotypicalGroupReferenceBaseString() {
@@ -443,7 +443,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHomotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHomotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddHomotypicSynonymName() {
@@ -451,7 +451,7 @@ public class TaxonTest extends EntityTestBase {
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHomotypicSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHomotypicSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)}.
         */
        @Test
        public void testAddHomotypicSynonym() {
index 5948c098cf901af6e1a7fff4fbfa210394868f2f..b8ecf5c4317f52ae4467d59dbd3f6059e0c0ee94 100644 (file)
@@ -17,7 +17,7 @@ import org.junit.Test;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
@@ -44,7 +44,7 @@ public class TaxonDescriptionDefaultCacheStrategyTest {
                botName.setGenusOrUninomial("Genus");\r
                botName.setSpecificEpithet("species");\r
                \r
-               ReferenceBase sec = ReferenceFactory.newGeneric();\r
+               Reference sec = ReferenceFactory.newGeneric();\r
                sec.setTitleCache("My sec", true);\r
                Taxon taxon = Taxon.NewInstance(botName, sec);\r
                TaxonDescription taxonDescription = TaxonDescription.NewInstance(taxon);\r
index 04b79512a01ff578c1a36f758c17d9ba2b54bb1b..0b08c09ccbc7c006a5a0a053184f4413b09e7d09 100644 (file)
@@ -10,6 +10,9 @@
 package eu.etaxonomy.cdm.strategy.cache.media;\r
 \r
 \r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
+\r
 import org.junit.Assert;\r
 import org.junit.Before;\r
 import org.junit.BeforeClass;\r
@@ -22,7 +25,7 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
@@ -53,24 +56,34 @@ public class MediaDefaultCacheStrategyTest {
        @Test\r
        public void testGetTitleCache(){\r
                \r
+               try {\r
+                       Media media = Media.NewInstance();\r
+                       media.addTitle("My best media", Language.DEFAULT());\r
+                       Assert.assertEquals("Wrong title cache for media", "My best media", media.getTitleCache());\r
+                       \r
+                       media = Media.NewInstance();\r
+                       Assert.assertTrue("Wrong title cache for media", media.getTitleCache().startsWith("- empty"));\r
+                       \r
+                       MediaRepresentation representation = MediaRepresentation.NewInstance(null, null, new URI("www.abc.de/myFileName.jpg"), 0);\r
+                       media.addRepresentation(representation);\r
+                       Assert.assertEquals("Wrong title cache for media", "myFileName.jpg", media.getTitleCache());\r
+                       media.removeRepresentation(representation);\r
+                       \r
+                       representation = MediaRepresentation.NewInstance(null, null, new URI("www.abc.de/"), 0);\r
+                       media.addRepresentation(representation);\r
+                       Assert.assertEquals("Wrong title cache for media", "www.abc.de/", media.getTitleCache());\r
+               } catch (URISyntaxException e) {\r
+                       e.printStackTrace();\r
+                       Assert.fail("URI syntax exception");\r
+               }\r
+       }\r
+       \r
+       @Test \r
+       public void testHandleEmptyUri(){\r
                Media media = Media.NewInstance();\r
-               media.addTitle("My best media", Language.DEFAULT());\r
-               Assert.assertEquals("Wrong title cache for media", "My best media", media.getTitleCache());\r
-               \r
-               media = Media.NewInstance();\r
-               Assert.assertTrue("Wrong title cache for media", media.getTitleCache().startsWith("- empty"));\r
-               \r
-               MediaRepresentation representation = MediaRepresentation.NewInstance(null, null, "www.abc.de/myFileName.jpg", 0);\r
+               MediaRepresentation representation;\r
+               representation = MediaRepresentation.NewInstance(null, null, null, 0);\r
                media.addRepresentation(representation);\r
-               Assert.assertEquals("Wrong title cache for media", "myFileName.jpg", media.getTitleCache());\r
-               media.removeRepresentation(representation);\r
-               \r
-               representation = MediaRepresentation.NewInstance(null, null, "www.abc.de/", 0);\r
-               media.addRepresentation(representation);\r
-               Assert.assertEquals("Wrong title cache for media", "www.abc.de/", media.getTitleCache());\r
-               \r
-               \r
-               \r
        }\r
        \r
 }\r
index b6c676ee9cd62bc30d6d37a958deced5ec713229..231abebae6b4def5fb0601eb855e17cf460915db 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -62,7 +62,7 @@ public class BotanicNameCacheStrategyTest {
        private INomenclaturalAuthor exAuthor;\r
        private INomenclaturalAuthor basAuthor;\r
        private INomenclaturalAuthor exBasAuthor;\r
-       private ReferenceBase citationRef;\r
+       private Reference citationRef;\r
        ReferenceFactory refFactory;\r
        \r
        /**\r
index d3b2392ad3d19c0ee9f675f88588aba8876dfec6..9e74fa8647f04092c3a1431e0d0ff21dde9f21da 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -61,7 +61,7 @@ public class NonViralNameDefaultCacheStrategyTest {
        private INomenclaturalAuthor exAuthor;\r
        private INomenclaturalAuthor basAuthor;\r
        private INomenclaturalAuthor exBasAuthor;\r
-       private ReferenceBase citationRef;\r
+       private Reference citationRef;\r
        private ReferenceFactory refFactory;\r
        \r
        @BeforeClass\r
@@ -185,7 +185,7 @@ public class NonViralNameDefaultCacheStrategyTest {
        \r
        @Test\r
        public void testCacheListener() {\r
-               ReferenceBase ref = refFactory.newGeneric();\r
+               Reference ref = refFactory.newGeneric();\r
                ref.setTitleCache("GenericRef",true);\r
                this.subSpeciesName.setNomenclaturalReference(ref);\r
                Assert.assertEquals("Expected full title cache has error", "Abies alba subsp. beta, GenericRef", subSpeciesName.getFullTitleCache());\r
@@ -283,7 +283,7 @@ public class NonViralNameDefaultCacheStrategyTest {
                \r
                \r
                //ref + nomRef\r
-               ReferenceBase book = refFactory.newBook();\r
+               Reference book = refFactory.newBook();\r
                book.setTitle("Booktitle");\r
                Assert.assertNotNull("TitleCache should not be null", subSpeciesName.getTitleCache());\r
                subSpeciesName.setNomenclaturalReference(book);\r
index 8b7e6f8fa4797947e8dbdbd9430cca645d590fda..0bc9ddef3b0237765f13fb79945683d5544eecda 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -123,7 +123,7 @@ public class ArticleDefaultCacheStrategyTest {
                article1.setVolume("34");\r
                article1.setSeries("ser. 2");\r
                article1.setDatePublished(TimePeriod.NewInstance(1975));\r
-               Assert.assertEquals("in My journal ser. 2, 34", defaultStrategy.getNomRefTitleWithoutYearAndAuthor((ReferenceBase)article1));\r
+               Assert.assertEquals("in My journal ser. 2, 34", defaultStrategy.getNomRefTitleWithoutYearAndAuthor((Reference)article1));\r
        }\r
        \r
        @Test \r
@@ -137,7 +137,7 @@ public class ArticleDefaultCacheStrategyTest {
                article1.setAuthorTeam(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((ReferenceBase)article1));\r
+               Assert.assertEquals("Babc. & Stebbins in Univ. Calif. Publ. Bot. 18. 1943", defaultStrategy.getTitleCache((Reference)article1));\r
        }\r
        \r
 }\r
index 9d5b4145f71c5a2ecc721109a3a1e092efef8fb3..33a42daba8d75cd4285a3d9bad74f7b8cd52b254 100644 (file)
@@ -21,19 +21,19 @@ import org.junit.Test;
 \r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.reference.ICdDvd;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 public class CdDvdDefaultCacheStrategyTest {\r
        @SuppressWarnings("unused")\r
        private static Logger logger = Logger.getLogger(CdDvdDefaultCacheStrategyTest.class);\r
 \r
-       ReferenceBase cdDvd;\r
+       Reference cdDvd;\r
        String title;\r
        String publisher;\r
        String place;\r
        TimePeriod publicationDate;\r
-       CdDvdDefaultCacheStrategy<ReferenceBase> instance;\r
+       CdDvdDefaultCacheStrategy<Reference> instance;\r
        \r
        @BeforeClass\r
        public static void setUpBeforeClass() throws Exception {\r
index d896c55e1938fbc4a661987f10b5e71548199c6a..351b625db1bc2453510b86a1f98b740ae26ac42c 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 //import eu.etaxonomy.cdm.model.reference.Book;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -40,7 +40,7 @@ public class TaxonBaseDefaultCacheStrategyTest {
        private String expectedNameTitleCache = "Abies alba (L.) Mill.";\r
        private String expectedNameCache = "Abies alba";\r
        BotanicalName name;\r
-       ReferenceBase sec;\r
+       Reference sec;\r
        \r
        /**\r
         * @throws java.lang.Exception\r
index 28d4fe14288bab9cee466d16b1cdd99fe8cc9a9e..5bc301790e37f3c489f4ddb834da37721dc79e6e 100644 (file)
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.reference.IBook;\r
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
 import eu.etaxonomy.cdm.model.reference.IPrintSeries;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -119,7 +119,7 @@ public class DefaultMatchStrategyTest {
                book1.setParsingProblem(hasProblem1);\r
                lsid1 = new LSID("authority1", "namespace1", "object1", "revision1");\r
                book1.setLsid(lsid1);\r
-               ((ReferenceBase) book1).setNomenclaturallyRelevant(false);\r
+               ((Reference) book1).setNomenclaturallyRelevant(false);\r
                \r
                book2 = refFactory.newBook();\r
                book2.setAuthorTeam(team2);\r
@@ -133,7 +133,7 @@ public class DefaultMatchStrategyTest {
                book2.setParsingProblem(hasProblem2);\r
                lsid2 = new LSID("authority2", "namespace2", "object2", "revision2");\r
                book2.setLsid(lsid2);\r
-               ((ReferenceBase) book2).setNomenclaturallyRelevant(true);\r
+               ((Reference) book2).setNomenclaturallyRelevant(true);\r
                \r
        }\r
 \r
@@ -151,9 +151,9 @@ public class DefaultMatchStrategyTest {
         */\r
        @Test\r
        public void testNewInstance() {\r
-               matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                Assert.assertNotNull(matchStrategy);\r
-               Assert.assertEquals(ReferenceBase.class, matchStrategy.getMatchClass());\r
+               Assert.assertEquals(Reference.class, matchStrategy.getMatchClass());\r
        }\r
 \r
        /**\r
@@ -161,7 +161,7 @@ public class DefaultMatchStrategyTest {
         */\r
        @Test\r
        public void testGetMatchMode() {\r
-               matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                Assert.assertEquals("Match mode for isbn should be MatchMode.EQUAL_", MatchMode.EQUAL, matchStrategy.getMatchMode("isbn"));\r
                Assert.assertEquals("Match mode for title should be MatchMode.EQUAL", MatchMode.EQUAL_REQUIRED, matchStrategy.getMatchMode("title"));\r
        }\r
@@ -173,7 +173,7 @@ public class DefaultMatchStrategyTest {
        public void testGetSetMatchMode() {\r
                //legal value\r
                try {\r
-                       matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+                       matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                        matchStrategy.setMatchMode("edition", MatchMode.EQUAL_REQUIRED);\r
                        Assert.assertEquals("Match mode for edition should be", MatchMode.EQUAL_REQUIRED, matchStrategy.getMatchMode("edition"));\r
                } catch (MatchException e1) {\r
@@ -197,10 +197,10 @@ public class DefaultMatchStrategyTest {
 \r
        @Test\r
        public void testInvokeCache() throws MatchException {\r
-               matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                Assert.assertTrue("Same object should always match", matchStrategy.invoke(book1, book1));\r
                \r
-               IBook bookClone = (IBook) ((ReferenceBase) book1).clone();\r
+               IBook bookClone = (IBook) ((Reference) book1).clone();\r
                Assert.assertTrue("Cloned book should match", matchStrategy.invoke(book1, bookClone));\r
                book1.setTitleCache("cache1",true);\r
                Assert.assertFalse("Cached book should not match", matchStrategy.invoke(book1, bookClone));\r
@@ -237,10 +237,10 @@ public class DefaultMatchStrategyTest {
        \r
        @Test\r
        public void testInvokeReferences() throws MatchException {\r
-               matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                Assert.assertTrue("Same object should always match", matchStrategy.invoke(book1, book1));\r
                \r
-               IBook bookClone = (IBook) ((ReferenceBase) book1).clone();\r
+               IBook bookClone = (IBook) ((Reference) book1).clone();\r
                Assert.assertTrue("Cloned book should match", matchStrategy.invoke(book1, bookClone));\r
                bookClone.setTitle("Any title");\r
                Assert.assertFalse("Books with differing titles should not match", matchStrategy.invoke(book1, bookClone));\r
@@ -256,7 +256,7 @@ public class DefaultMatchStrategyTest {
                \r
                bookClone.setInSeries(printSeries2);\r
                Assert.assertFalse("Cloned book with differing print series should not match", matchStrategy.invoke(book1, bookClone));\r
-               IPrintSeries seriesClone = (IPrintSeries)((ReferenceBase)printSeries1).clone();\r
+               IPrintSeries seriesClone = (IPrintSeries)((Reference)printSeries1).clone();\r
                bookClone.setInSeries(seriesClone);\r
                Assert.assertTrue("Cloned book with cloned bookSeries should match", matchStrategy.invoke(book1, bookClone));\r
                seriesClone.setTitle("Another title");\r
@@ -298,7 +298,7 @@ public class DefaultMatchStrategyTest {
                section2.setPages("22-33");\r
                \r
                \r
-               IMatchStrategy bookSectionMatchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               IMatchStrategy bookSectionMatchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                Assert.assertTrue("Equal BookSections should match", bookSectionMatchStrategy.invoke(section1, section2));\r
                section2.setInBook(bookTitle2);\r
                Assert.assertTrue("Matching books should result in matching book sections", bookSectionMatchStrategy.invoke(section1, section2));\r
@@ -308,7 +308,7 @@ public class DefaultMatchStrategyTest {
                bookTitle2.setPages(null);\r
                Assert.assertTrue("Matching books should result in matching book sections", bookSectionMatchStrategy.invoke(section1, section2));\r
                printSeries2.setTitle("A new series title");\r
-               IMatchStrategy printSeriesMatchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               IMatchStrategy printSeriesMatchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                Assert.assertFalse("Print series with differing titles should not match", printSeriesMatchStrategy.invoke(printSeries1, printSeries2));\r
                bookTitle1.setInSeries(printSeries1);\r
                bookTitle2.setInSeries(printSeries2);\r
@@ -321,7 +321,7 @@ public class DefaultMatchStrategyTest {
                \r
                person1.setPrefix("pre1");\r
                person2.setPrefix("pre2");\r
-               book2= (IBook) ((ReferenceBase) book1).clone();\r
+               book2= (IBook) ((Reference) book1).clone();\r
                \r
                Assert.assertTrue("Equal books should match", matchStrategy.invoke(book1, book2));\r
                \r
index 57295ca299880d3c88ff6dbea2d3304261246612..71a0e4083becee7da9a29f2911cc210db1118f51 100644 (file)
@@ -44,7 +44,7 @@ import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 //import eu.etaxonomy.cdm.model.reference.PrintSeries;\r
 //import eu.etaxonomy.cdm.model.reference.Thesis;\r
@@ -62,22 +62,22 @@ public class DefaultMergeStrategyTest {
        private static final Logger logger = Logger.getLogger(DefaultMergeStrategyTest.class);\r
 \r
        private DefaultMergeStrategy bookMergeStrategy;\r
-       private ReferenceBase book1;\r
+       private Reference book1;\r
        private String editionString1 ="Ed.1";\r
        private String volumeString1 ="Vol.1";\r
        private Team team1;\r
-       private ReferenceBase printSeries1;\r
+       private Reference printSeries1;\r
        private Annotation annotation1;\r
        private String title1 = "Title1";\r
        private TimePeriod datePublished1 = TimePeriod.NewInstance(2000);\r
        private int hasProblem1 = 1;\r
        private LSID lsid1;\r
        \r
-       private ReferenceBase book2;\r
+       private Reference book2;\r
        private String editionString2 ="Ed.2";\r
        private String volumeString2 ="Vol.2";\r
        private Team team2;\r
-       private ReferenceBase printSeries2;\r
+       private Reference printSeries2;\r
        private Annotation annotation2;\r
        private String annotationString2;\r
        private String title2 = "Title2";\r
@@ -88,7 +88,7 @@ public class DefaultMergeStrategyTest {
        private ReferenceFactory refFactory;\r
        \r
        \r
-       private ReferenceBase book3;\r
+       private Reference book3;\r
        \r
        /**\r
         * @throws java.lang.Exception\r
@@ -112,7 +112,7 @@ public class DefaultMergeStrategyTest {
        @Before\r
        public void setUp() throws Exception {\r
                refFactory = ReferenceFactory.newInstance();\r
-               bookMergeStrategy = DefaultMergeStrategy.NewInstance(ReferenceBase.class);\r
+               bookMergeStrategy = DefaultMergeStrategy.NewInstance(Reference.class);\r
                team1 = Team.NewInstance();\r
                team1.setTitleCache("Team1", true);\r
                team2 = Team.NewInstance();\r
@@ -167,7 +167,7 @@ public class DefaultMergeStrategyTest {
        @Test\r
        public void testNewInstance() {\r
                Assert.assertNotNull(bookMergeStrategy);\r
-               Assert.assertEquals(ReferenceBase.class, bookMergeStrategy.getMergeClass());\r
+               Assert.assertEquals(Reference.class, bookMergeStrategy.getMergeClass());\r
        }\r
 \r
        /**\r
@@ -229,7 +229,7 @@ public class DefaultMergeStrategyTest {
         */\r
        @Test\r
        public void testInvokeReferences() throws MergeException {\r
-               INomenclaturalReferenceCacheStrategy<ReferenceBase> cacheStrategy1 = (INomenclaturalReferenceCacheStrategy<ReferenceBase>)book1.getCacheStrategy();\r
+               INomenclaturalReferenceCacheStrategy<Reference> cacheStrategy1 = (INomenclaturalReferenceCacheStrategy<Reference>)book1.getCacheStrategy();\r
                int id = book1.getId();\r
                UUID uuid = book1.getUuid();\r
                try {\r
@@ -302,12 +302,12 @@ public class DefaultMergeStrategyTest {
                Institution school1 = Institution.NewInstance();\r
                Institution school2 = Institution.NewInstance();\r
                \r
-               ReferenceBase thesis1 = refFactory.newThesis();\r
+               Reference thesis1 = refFactory.newThesis();\r
                thesis1.setSchool(school1);\r
                //Thesis thesis1 = Thesis.NewInstance(school1);\r
-               ReferenceBase thesis2 = refFactory.newThesis();\r
+               Reference thesis2 = refFactory.newThesis();\r
                thesis2.setSchool(school2);\r
-               DefaultMergeStrategy thesisStrategy = DefaultMergeStrategy.NewInstance(ReferenceBase.class);\r
+               DefaultMergeStrategy thesisStrategy = DefaultMergeStrategy.NewInstance(Reference.class);\r
                \r
                thesisStrategy.setMergeMode("school", MergeMode.SECOND);\r
                thesisStrategy.invoke(thesis1, thesis2);\r
index 1814118fcf9ab3d436355b2466887940c82e91ad..3044cf488f6ba7d21b1282df82a910240b4781a6 100644 (file)
@@ -49,7 +49,7 @@ import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
 import eu.etaxonomy.cdm.model.reference.IVolumeReference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
 //import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 /**\r
  * @author a.mueller\r
  *\r
@@ -358,16 +358,16 @@ public class NonViralNameParserImplTest {
                String strFullWhiteSpcaceAndDot = "Abies alba Mill.,  Sp.   Pl.  4:  455 .  1987 .";\r
                NonViralName<?> namefullWhiteSpcaceAndDot = parser.parseReferencedName(strFullWhiteSpcaceAndDot, null, Rank.SPECIES());\r
                assertFullRefStandard(namefullWhiteSpcaceAndDot);\r
-               assertTrue(((ReferenceBase)namefullWhiteSpcaceAndDot.getNomenclaturalReference()).getType().equals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book));\r
+               assertTrue(((Reference)namefullWhiteSpcaceAndDot.getNomenclaturalReference()).getType().equals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book));\r
                assertEquals( "Abies alba Mill., Sp. Pl. 4: 455. 1987", namefullWhiteSpcaceAndDot.getFullTitleCache());\r
 \r
                //Book\r
                String fullReference = "Abies alba Mill., Sp. Pl. 4: 455. 1987";\r
                NonViralName<?> name1 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
                assertFullRefStandard(name1);\r
-               assertTrue(((ReferenceBase)name1.getNomenclaturalReference()).getType().equals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book));\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() == ((ReferenceBase)name1.getNomenclaturalReference()).getAuthorTeam());\r
+               assertTrue("Name author and reference author should be the same", name1.getCombinationAuthorTeam() == ((Reference)name1.getNomenclaturalReference()).getAuthorTeam());\r
                \r
                //Book Section\r
                fullReference = "Abies alba Mill. in Otto, Sp. Pl. 4(6): 455. 1987";\r
@@ -376,7 +376,7 @@ public class NonViralNameParserImplTest {
                assertEquals(fullReference, name2.getFullTitleCache());\r
                assertFalse(name2.hasProblem());\r
                INomenclaturalReference ref = name2.getNomenclaturalReference();\r
-               assertEquals(eu.etaxonomy.cdm.model.reference.ReferenceType.BookSection, ((ReferenceBase)ref).getType());\r
+               assertEquals(eu.etaxonomy.cdm.model.reference.ReferenceType.BookSection, ((Reference)ref).getType());\r
                IBookSection bookSection = (IBookSection) ref;\r
                IBook inBook = bookSection.getInBook();\r
                assertNotNull(inBook);\r
@@ -385,7 +385,7 @@ public class NonViralNameParserImplTest {
                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() == ((ReferenceBase)name2.getNomenclaturalReference()).getAuthorTeam());\r
+               assertTrue("Name author and reference author should be the same", name2.getCombinationAuthorTeam() == ((Reference)name2.getNomenclaturalReference()).getAuthorTeam());\r
                \r
                //Article\r
                fullReference = "Abies alba Mill. in Sp. Pl. 4(6): 455. 1987";\r
@@ -399,7 +399,7 @@ public class NonViralNameParserImplTest {
                IJournal journal = ((IArticle)ref).getInJournal();\r
                assertNotNull(journal);\r
                //assertEquals("Sp. Pl. 4(6)", inBook.getTitleCache());\r
-               assertEquals("Sp. Pl.",((ReferenceBase) journal).getTitleCache());\r
+               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
@@ -421,7 +421,7 @@ public class NonViralNameParserImplTest {
                assertEquals(parsedYear, ref.getYear());\r
                journal = ((IArticle)ref).getInJournal();\r
                assertNotNull(journal);\r
-               assertEquals(journalTitle, ((ReferenceBase) journal).getTitleCache());\r
+               assertEquals(journalTitle, ((Reference) journal).getTitleCache());\r
                assertEquals(journalTitle, journal.getTitle());\r
                assertEquals("4(6)", ((IArticle)ref).getVolume());\r
                \r
@@ -779,7 +779,7 @@ public class NonViralNameParserImplTest {
                assertNotNull(name.getNomenclaturalReference());\r
                INomenclaturalReference ref = (INomenclaturalReference)name.getNomenclaturalReference();\r
                assertEquals("1987", ref.getYear());\r
-               ReferenceBase refBase = (ReferenceBase)ref;\r
+               Reference refBase = (Reference)ref;\r
                assertEquals("Sp. Pl.", refBase.getTitle());\r
        }\r
        \r
index ff1ba95845f63d605e287785071b481b82dd1c80..54713c312d5106032d8160f7cdecd4fbfead9f36 100644 (file)
@@ -27,7 +27,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 //import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -48,7 +48,7 @@ public class TestModel {
                ZoologicalName parentName = ZoologicalName.NewInstance(Rank.FAMILY());\r
                \r
                logger.info("Create reference objects...");\r
-               ReferenceBase sec = refFactory.newJournal();\r
+               Reference sec = refFactory.newJournal();\r
                sec.setTitleCache("TestJournal", true);\r
                \r
                logger.info("Create taxon objects...");\r
@@ -78,7 +78,7 @@ public class TestModel {
        \r
        public void testParentRelation(){\r
                TaxonNameBase taxonName = BotanicalName.NewInstance(Rank.SPECIES());\r
-               ReferenceBase ref = refFactory.newJournal();\r
+               Reference ref = refFactory.newJournal();\r
                Taxon parent = Taxon.NewInstance(taxonName, ref);\r
                Taxon child = Taxon.NewInstance(taxonName, null);\r
                parent.addTaxonomicChild(child, null, null);\r
@@ -88,7 +88,7 @@ public class TestModel {
        }\r
        \r
        public void testDescription(){\r
-               ReferenceBase ref = refFactory.newJournal();\r
+               Reference ref = refFactory.newJournal();\r
                Taxon taxon = Taxon.NewInstance(null, ref);\r
                TaxonDescription desc = TaxonDescription.NewInstance();\r
                taxon.addDescription(desc);\r
index 248fb0b5a360b2948e098563d5d087f7437241b7..0f772161b8666874d0206732d003df2ed8c37b14 100644 (file)
@@ -9,10 +9,13 @@
 \r
 package eu.etaxonomy.cdm.test.function;\r
 \r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.util.Calendar;\r
 import java.util.Set;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.junit.Assert;\r
 \r
 import eu.etaxonomy.cdm.model.agent.AgentBase;\r
 import eu.etaxonomy.cdm.model.agent.Institution;\r
@@ -38,7 +41,7 @@ import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 //import eu.etaxonomy.cdm.model.reference.Database;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
@@ -54,7 +57,7 @@ public class TestSpecimen {
        public void testSpecimen(){\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
                logger.info("Create test taxon ...");\r
-               ReferenceBase sec = refFactory.newDatabase();\r
+               Reference sec = refFactory.newDatabase();\r
                String fullNameString = "Acanthostyles saucechicoensis (Hieron.) R.M. King & H. Rob.";\r
                BotanicalName botanicalName = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(fullNameString);\r
                Taxon taxon = Taxon.NewInstance(botanicalName, sec);\r
@@ -109,7 +112,12 @@ public class TestSpecimen {
                \r
                \r
                Media media = Media.NewInstance();\r
-               String uri = "http://131.130.131.9/database/img/imgBrowser.php?ID=50599";\r
+               URI uri = null;\r
+               try {\r
+                       uri = new URI("http://131.130.131.9/database/img/imgBrowser.php?ID=50599");\r
+               } catch (URISyntaxException e) {\r
+                       throw new RuntimeException(e);\r
+               }\r
                String mimeType = null;\r
                Integer size = null;\r
                MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance(mimeType, "jpg");\r
index 487e57c48a97e74988b635aa79341abf6ac7e7f1..edf1b8e4b447c1aadb6563c4f28331471810d7c2 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.media.Media;
 //import eu.etaxonomy.cdm.model.reference.Generic;\r
 //import eu.etaxonomy.cdm.model.reference.Journal;\r
 import eu.etaxonomy.cdm.model.reference.IGeneric;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -36,7 +36,7 @@ public class TestBookDefaultCacheStrategies {
                //Book\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
                System.out.println("*********** BOOK**************");\r
-               ReferenceBase book = refFactory.newBook();\r
+               Reference book = refFactory.newBook();\r
                book.setTitle("TestTitel eines Buches");\r
                Calendar cal = Calendar.getInstance();\r
 \r
@@ -52,26 +52,26 @@ public class TestBookDefaultCacheStrategies {
                //BookSection\r
                System.out.println("*********** BOOK SECTION**************");\r
                Person partAuthor = Person.NewTitledInstance("PartAuthorTitle");\r
-               ReferenceBase bookSection = refFactory.newBookSection(book, partAuthor, "SectionTitle der Biene", "222-234");\r
+               Reference bookSection = refFactory.newBookSection(book, partAuthor, "SectionTitle der Biene", "222-234");\r
                System.out.println("FULL: " + bookSection.getNomenclaturalCitation("344"));\r
                System.out.println("Citation: " + bookSection.getCitation());\r
                System.out.println("Titel: " + bookSection.getTitleCache());\r
 \r
                //Article\r
                System.out.println("*********** ARTICLE **************");\r
-               ReferenceBase inJournal = refFactory.newJournal();\r
+               Reference inJournal = refFactory.newJournal();\r
                Person journalAuthor = Person.NewTitledInstance("JournalAuthorTitle");\r
                inJournal.setAuthorTeam(journalAuthor);\r
                inJournal.setTitle("JournalTitle");\r
                inJournal.setIssn("issn");\r
-               ReferenceBase article = refFactory.newArticle(inJournal, partAuthor, "artTitel", "123-456", "ser4", "55", TimePeriod.NewInstance(cal));\r
+               Reference article = refFactory.newArticle(inJournal, partAuthor, "artTitel", "123-456", "ser4", "55", TimePeriod.NewInstance(cal));\r
                System.out.println("FULL: " + article.getNomenclaturalCitation("922 fig"));\r
                System.out.println("Citation: " + article.getCitation());\r
                System.out.println("Titel: " + article.getTitleCache());\r
 \r
                //Generic\r
                System.out.println("*********** GENERIC **************");\r
-               ReferenceBase generic = refFactory.newGeneric();\r
+               Reference generic = refFactory.newGeneric();\r
                Person genericAuthor = Person.NewTitledInstance("GenericAuthorTitle");\r
                generic.setAuthorTeam(genericAuthor);\r
                generic.setTitle("GenericTitle");\r
index bd83fa114a04b73a307de5b2614ab3f9576f4b46..70ab1db08932d4487ec0973aa46736037cf28a7c 100644 (file)
@@ -5,7 +5,7 @@
        <parent>\r
                <groupId>eu.etaxonomy</groupId>\r
                <artifactId>cdmlib-parent</artifactId>\r
-               <version>2.5</version>\r
+               <version>3.0</version>\r
                <relativePath>pom.xml</relativePath>\r
        </parent>\r
        \r
index 7ff80f27f9b9f300a0dafcc67cafade0a4747a82..2f44968ccef0c1f96bb1c0f3c1ec31421b928271 100644 (file)
@@ -77,6 +77,12 @@ public class PersistentTermInitializer extends DefaultTermInitializer {
         * annotations or pointcuts.\r
         */\r
        @PostConstruct\r
+       @Override\r
+       public void initialize() {\r
+               super.initialize();\r
+       }\r
+       \r
+\r
        @Override\r
        public void doInitialize(){\r
                logger.info("PersistentTermInitializer initialize start ...");\r
index 0ffd7466d2f9a43c2e7205fdb47e6bec663fcc65..50bc1dbb7e75cc9102f211c8eab572aa6f5b7e9e 100644 (file)
@@ -15,6 +15,8 @@ import eu.etaxonomy.cdm.common.DefaultProgressMonitor;
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.CdmDataSource;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.database.update.v25_30.SchemaUpdater_25_30;\r
+import eu.etaxonomy.cdm.database.update.v25_30.TermUpdater_25_30;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -24,7 +26,10 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 public class CdmUpdater {\r
        private static final Logger logger = Logger.getLogger(CdmUpdater.class);\r
        \r
-\r
+       public static CdmUpdater NewInstance(){\r
+               return new CdmUpdater();\r
+       }\r
+       \r
        /**\r
         * @param datasource\r
         * @param monitor may be <code>null</code>\r
@@ -40,8 +45,8 @@ public class CdmUpdater {
                // TODO do we really always update the terms??\r
                ITermUpdater currentTermUpdater = getCurrentTermUpdater();\r
                \r
-               int steps = currentSchemaUpdater.countSteps(datasource);\r
-               steps += currentTermUpdater.countSteps(datasource);\r
+               int steps = currentSchemaUpdater.countSteps(datasource, monitor);\r
+               steps += currentTermUpdater.countSteps(datasource, monitor);\r
                \r
                String taskName = "Update to schema version " + currentSchemaUpdater.getTargetVersion() + " and to term version " + currentTermUpdater.getTargetVersion(); //+ currentSchemaUpdater.getVersion();\r
                monitor.beginTask(taskName, steps);\r
@@ -65,7 +70,7 @@ public class CdmUpdater {
        }\r
        \r
        private ITermUpdater getCurrentTermUpdater() {\r
-               return TermUpdater_24_25.NewInstance();\r
+               return TermUpdater_25_30.NewInstance();\r
        }\r
 \r
        /**\r
@@ -73,8 +78,7 @@ public class CdmUpdater {
         * @return\r
         */\r
        private ISchemaUpdater getCurrentSchemaUpdater() {\r
-               return SchemaUpdater_24_25.NewInstance();\r
-//             return SchemaUpdater_25_26.NewInstance();\r
+               return SchemaUpdater_25_30.NewInstance();\r
        }\r
 \r
        /**\r
index fcd4e84cea164d3f8c1d89a1305b0697384d3e19..64ffc83fff7b4fa38c83d972ed27b7241e41b332 100644 (file)
@@ -31,76 +31,134 @@ public class ColumnAdder extends SchemaUpdaterStepBase implements ISchemaUpdater
        private String columnType;\r
        private boolean includeAudTable;\r
        private Object defaultValue;\r
+       private boolean isNotNull;\r
+       private String referencedTable;\r
+\r
+       public static final ColumnAdder NewIntegerInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable, boolean notNull, String referencedTable){\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "int", includeAudTable, null, notNull, referencedTable);\r
+       }\r
        \r
-       public static final ColumnAdder NewIntegerInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable){\r
-               return new ColumnAdder(stepName, tableName, newColumnName, "int", includeAudTable, null);\r
+       public static final ColumnAdder NewTinyIntegerInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable, boolean notNull){\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "tinyint", includeAudTable, null, notNull, null);\r
        }\r
 \r
        public static final ColumnAdder NewBooleanInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable, Boolean defaultValue){\r
-               return new ColumnAdder(stepName, tableName, newColumnName, "bit", includeAudTable, defaultValue);\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "bit", includeAudTable, defaultValue, false, null);\r
        }\r
        \r
        public static final ColumnAdder NewStringInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable){\r
-               return new ColumnAdder(stepName, tableName, newColumnName, "nvarchar(255)", includeAudTable, null);\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "nvarchar(255)", includeAudTable, null, false, null);\r
+       }\r
+\r
+       public static final ColumnAdder NewStringInstance(String stepName, String tableName, String newColumnName, int length, boolean includeAudTable){\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "nvarchar("+length+")", 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
        }\r
        \r
-       protected ColumnAdder(String stepName, String tableName, String newColumnName, String columnType, boolean includeAudTable, Object defaultValue) {\r
+       protected ColumnAdder(String stepName, String tableName, String newColumnName, String columnType, boolean includeAudTable, Object defaultValue, boolean notNull, String referencedTable) {\r
                super(stepName);\r
                this.tableName = tableName;\r
                this.newColumnName = newColumnName;\r
                this.columnType = columnType;\r
                this.includeAudTable = includeAudTable;\r
                this.defaultValue = defaultValue;\r
+               this.isNotNull = notNull;\r
+               this.referencedTable = referencedTable;\r
        }\r
 \r
+\r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
         */\r
        @Override\r
        public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
                boolean result = true;\r
-               String databaseColumnType = getDatabaseColumnType(datasource, columnType);\r
-               result &= addColumn(tableName, newColumnName, databaseColumnType, datasource, monitor);\r
+               result &= addColumn(tableName, datasource, monitor);\r
                if (includeAudTable){\r
                        String aud = "_AUD";\r
-                       result &= addColumn(tableName + aud, newColumnName, databaseColumnType, datasource, monitor);\r
+                       result &= addColumn(tableName + aud, datasource, monitor);\r
                }\r
                return (result == true )? 0 : null;\r
        }\r
 \r
-       private String getDatabaseColumnType(ICdmDataSource datasource, String columnType) {\r
-               String result = columnType;\r
-               if (datasource.getDatabaseType().equals(DatabaseTypeEnum.PostgreSQL)){\r
-                       result = result.replace("nvarchar", "varchar");\r
+       private boolean addColumn(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) {\r
+               try {\r
+                       String updateQuery = getUpdateQueryString(tableName, datasource, monitor);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       \r
+                       if (defaultValue instanceof Boolean){\r
+                               updateQuery = "UPDATE @tableName SET @columnName = " + (defaultValue == null ? "null" : getBoolean((Boolean) defaultValue, datasource));\r
+                               updateQuery = updateQuery.replace("@tableName", tableName);\r
+                               updateQuery = updateQuery.replace("@columnName", newColumnName);\r
+                               datasource.executeUpdate(updateQuery);\r
+                       }\r
+                       if (referencedTable != null){\r
+                               TableCreator.makeForeignKey(tableName, datasource, newColumnName, referencedTable);\r
+                       }\r
+                       \r
+                       return true;\r
+               } catch ( DatabaseTypeNotSupportedException e) {\r
+                       return false;\r
                }\r
-               return result;\r
        }\r
 \r
-       private boolean addColumn(String tableName, String newColumnName, String columnType, ICdmDataSource datasource, IProgressMonitor monitor) {\r
-               DatabaseTypeEnum type = datasource.getDatabaseType();\r
+       public String getUpdateQueryString(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) throws DatabaseTypeNotSupportedException {\r
                String updateQuery;\r
+               DatabaseTypeEnum type = datasource.getDatabaseType();\r
+               String databaseColumnType = getDatabaseColumnType(datasource, this.columnType);\r
+\r
                if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
                        //MySQL allows both syntaxes\r
                        updateQuery = "ALTER TABLE @tableName ADD @columnName @columnType";\r
                }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.MySQL)){\r
-                       updateQuery = "ALTER TABLE @tableName ADD COLUMN @columnName @columnType";\r
+                       updateQuery = "ALTER TABLE @tableName @addSeparator @columnName @columnType";\r
                }else{\r
                        updateQuery = null;\r
-                       monitor.warning("Update step '" + this.getStepName() + "' is not supported by " + type.getName());\r
-                       return false;\r
+                       String warning = "Update step '" + this.getStepName() + "' is not supported by " + type.getName();\r
+                       monitor.warning(warning);\r
+                       throw new DatabaseTypeNotSupportedException(warning);\r
+               }\r
+               if (isNotNull){\r
+                       updateQuery += " NOT NULL";\r
                }\r
                updateQuery = updateQuery.replace("@tableName", tableName);\r
                updateQuery = updateQuery.replace("@columnName", newColumnName);\r
-               updateQuery = updateQuery.replace("@columnType", columnType);\r
-               datasource.executeUpdate(updateQuery);\r
+               updateQuery = updateQuery.replace("@columnType", databaseColumnType);\r
+               updateQuery = updateQuery.replace("@addSeparator", getAddColumnSeperator(datasource));\r
                \r
-               if (defaultValue instanceof Boolean){\r
-                       updateQuery = "UPDATE @tableName SET @columnName = " + (defaultValue == null ? "null" : getBoolean((Boolean) defaultValue, datasource));\r
-                       updateQuery = updateQuery.replace("@tableName", tableName);\r
-                       updateQuery = updateQuery.replace("@columnName", newColumnName);\r
-                       datasource.executeUpdate(updateQuery);\r
+               return updateQuery;\r
+       }\r
+\r
+       private String getDatabaseColumnType(ICdmDataSource datasource, String columnType) {\r
+               String result = columnType;\r
+               if (datasource.getDatabaseType().equals(DatabaseTypeEnum.PostgreSQL)){\r
+                       result = result.replace("nvarchar", "varchar");\r
+               }\r
+               return result;\r
+       }\r
+       \r
+\r
+       public static String getAddColumnSeperator(ICdmDataSource datasource) throws DatabaseTypeNotSupportedException {\r
+               DatabaseTypeEnum type = datasource.getDatabaseType();\r
+               if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+                       return "ADD ";\r
+               }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.MySQL)){\r
+                       return "ADD COLUMN ";\r
+               }else{\r
+                       throw new DatabaseTypeNotSupportedException(datasource.getName());\r
                }\r
-               return true;\r
+       }\r
+\r
+       public String getReferencedTable() {\r
+               return referencedTable;\r
+       }\r
+       \r
+\r
+       public String getNewColumnName() {\r
+               return newColumnName;\r
        }\r
 \r
 }\r
index 341a9d08f4ad469477f7fcdeb26992184e5766cb..6ff7829296acbf486d9347f5fe3eb89900554c4e 100644 (file)
@@ -23,24 +23,25 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
  *\r
  */\r
 public class ColumnNameChanger extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
-       @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(ColumnNameChanger.class);\r
        \r
        private String tableName;\r
        private String newColumnName;\r
        private String oldColumnName;\r
        private boolean includeAudTable;\r
+       private boolean isInteger; //TODO make enum\r
        \r
-       public static final ColumnNameChanger NewInstance(String stepName, String tableName, String oldColumnName, String newColumnName, boolean includeAudTable){\r
-               return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null);\r
+       public static ColumnNameChanger NewIntegerInstance(String stepName, String tableName, String oldColumnName, String newColumnName, boolean includeAudTable){\r
+               return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null, true);\r
        }\r
 \r
-       protected ColumnNameChanger(String stepName, String tableName, String oldColumnName, String newColumnName, boolean includeAudTable, Object defaultValue) {\r
+       protected ColumnNameChanger(String stepName, String tableName, String oldColumnName, String newColumnName, boolean includeAudTable, Object defaultValue, boolean isInteger) {\r
                super(stepName);\r
                this.tableName = tableName;\r
                this.newColumnName = newColumnName;\r
                this.oldColumnName = oldColumnName;\r
                this.includeAudTable = includeAudTable;\r
+               this.isInteger = isInteger;\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -69,7 +70,7 @@ public class ColumnNameChanger extends SchemaUpdaterStepBase implements ISchemaU
                        updateQuery = "ALTER TABLE @tableName ALTER COLUMN @oldColumnName RENAME TO @newColumnName";\r
                }else if ( type.equals(DatabaseTypeEnum.MySQL)){\r
                        //FIXME MySQL column name changer\r
-                       logger.warn("Changing column name not yet supported for MySQL");\r
+//                     logger.warn("Changing column name not yet supported for MySQL");\r
                        updateQuery = "ALTER TABLE @tableName CHANGE COLUMN @oldColumnName @newColumnName @definition";\r
                }else if ( type.equals(DatabaseTypeEnum.PostgreSQL) ){\r
                        updateQuery = "ALTER TABLE @tableName RENAME COLUMN @oldColumnName TO @newColumnName;";\r
@@ -81,9 +82,18 @@ public class ColumnNameChanger extends SchemaUpdaterStepBase implements ISchemaU
                updateQuery = updateQuery.replace("@tableName", tableName);\r
                updateQuery = updateQuery.replace("@oldColumnName", oldColumnName);\r
                updateQuery = updateQuery.replace("@newColumnName", newColumnName);\r
+               updateQuery = updateQuery.replace("@definition", getDefinition());\r
                datasource.executeUpdate(updateQuery);\r
 \r
                return true;\r
        }\r
 \r
+       private CharSequence getDefinition() {\r
+               if (isInteger){\r
+                       return "integer";\r
+               }else{\r
+                       throw new RuntimeException("Definition type not supported");\r
+               }\r
+       }\r
+\r
 }\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnRemover.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnRemover.java
new file mode 100644 (file)
index 0000000..0a9458d
--- /dev/null
@@ -0,0 +1,102 @@
+// $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;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 16.09.2010\r
+ *\r
+ */\r
+public class ColumnRemover extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(ColumnRemover.class);\r
+       \r
+       private String tableName;\r
+       private String oldColumnName;\r
+       private boolean includeAudTable;\r
+       \r
+       public static final ColumnRemover NewInstance(String stepName, String tableName, String oldColumnName, boolean includeAudTable){\r
+               return new ColumnRemover(stepName, tableName, oldColumnName, includeAudTable);\r
+       }\r
+\r
+       \r
+       protected ColumnRemover(String stepName, String tableName, String oldColumnName, boolean includeAudTable) {\r
+               super(stepName);\r
+               this.tableName = tableName;\r
+               this.oldColumnName = oldColumnName;\r
+               this.includeAudTable = includeAudTable;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
+        */\r
+       @Override\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+               boolean result = true;\r
+               result &= removeColumn(tableName, datasource, monitor);\r
+               if (includeAudTable){\r
+                       String aud = "_AUD";\r
+                       result &= removeColumn(tableName + aud, datasource, monitor);\r
+               }\r
+               return (result == true )? 0 : null;\r
+       }\r
+\r
+       private boolean removeColumn(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) {\r
+               try {\r
+                       String updateQuery = getUpdateQueryString(tableName, datasource, monitor);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       return true;\r
+               } catch ( DatabaseTypeNotSupportedException e) {\r
+                       return false;\r
+               }\r
+       }\r
+\r
+       public String getUpdateQueryString(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) throws DatabaseTypeNotSupportedException {\r
+               String updateQuery;\r
+               DatabaseTypeEnum type = datasource.getDatabaseType();\r
+               \r
+               updateQuery = "ALTER TABLE @tableName DROP COLUMN @columnName";\r
+               if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+                       //MySQL allows both syntaxes\r
+//                     updateQuery = "ALTER TABLE @tableName ADD @columnName @columnType";\r
+               }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.MySQL)){\r
+//                     updateQuery = "ALTER TABLE @tableName @addSeparator @columnName @columnType";\r
+               }else{\r
+                       updateQuery = null;\r
+                       String warning = "Update step '" + this.getStepName() + "' is not supported by " + type.getName();\r
+                       monitor.warning(warning);\r
+                       throw new DatabaseTypeNotSupportedException(warning);\r
+               }\r
+               updateQuery = updateQuery.replace("@tableName", tableName);\r
+               updateQuery = updateQuery.replace("@columnName", oldColumnName);\r
+               \r
+               return updateQuery;\r
+       }\r
+\r
+//     public static String getDropColumnSeperator(ICdmDataSource datasource) throws DatabaseTypeNotSupportedException {\r
+//             DatabaseTypeEnum type = datasource.getDatabaseType();\r
+//             if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+//                     return "DROP ";\r
+//             }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.MySQL)){\r
+//                     return "DROP COLUMN ";\r
+//             }else{\r
+//                     throw new DatabaseTypeNotSupportedException(datasource.getName());\r
+//             }\r
+//     }\r
+\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/DatabaseTypeNotSupportedException.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/DatabaseTypeNotSupportedException.java
new file mode 100644 (file)
index 0000000..04f3921
--- /dev/null
@@ -0,0 +1,42 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.cdm.database.update;\r
+\r
+/**\r
+ * @author a.mueller\r
+ *\r
+ */\r
+public class DatabaseTypeNotSupportedException extends Exception {\r
+       private static final long serialVersionUID = -6065181245886098240L;\r
+\r
+       /**\r
+        * \r
+        */\r
+       public DatabaseTypeNotSupportedException() {\r
+\r
+       }\r
+\r
+       /**\r
+        * @param arg0\r
+        */\r
+       public DatabaseTypeNotSupportedException(String arg0) {\r
+               super(arg0);\r
+       }\r
+\r
+       /**\r
+        * @param arg0\r
+        */\r
+       public DatabaseTypeNotSupportedException(Throwable arg0) {\r
+               super(arg0);\r
+       }\r
+\r
+       /**\r
+        * @param arg0\r
+        * @param arg1\r
+        */\r
+       public DatabaseTypeNotSupportedException(String arg0, Throwable arg1) {\r
+               super(arg0, arg1);\r
+       }\r
+\r
+}\r
index 825fdf758c457bb1b900d5882a92c8b1b57ae43d..2c5aab5d6d180c36e62720a5d06db70172eaa7cb 100644 (file)
@@ -1,13 +1,27 @@
+// $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;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
-public interface ISchemaUpdater {\r
+/**\r
+ * @author a.mueller\r
+ * @date 09.2010\r
+ *\r
+ */\r
+public interface ISchemaUpdater extends IUpdater<ISchemaUpdater>{\r
 \r
        /**\r
         * Invokes this CDM schema updater and updates the schema up to the current CDM\r
-        * schema vesion. Throws an exception if this updaters target version does\r
+        * schema version. Throws an exception if this updater's target version does\r
         * not equal the current CDM schema version.\r
         * @param datasource the datasource\r
         * @param monitor the progress monitor and event listener\r
@@ -29,29 +43,7 @@ public interface ISchemaUpdater {
         * @throws Exception \r
         */\r
        public boolean invoke(String targetVersion, ICdmDataSource datasource, IProgressMonitor monitor) throws Exception;\r
-       \r
-       /**\r
-        * Returns the previous CDM schema updater\r
-        * @return\r
-        */\r
-       public ISchemaUpdater getPreviousUpdater();\r
-\r
-       /**\r
-        * Returns the next CDM schema updater\r
-        * \r
-        * @return\r
-        */\r
-       public ISchemaUpdater getNextUpdater();\r
-\r
-       /**\r
-        * Returns the number of steps to run to update the datasource\r
-        * to the schema this schema updater is updating to.\r
-        * This includes needed steps in previous updaters.\r
-        * @see #getPreviousUpdater()\r
-        * @return number of steps\r
-        */\r
-       int countSteps(ICdmDataSource datasource);\r
 \r
        public String getTargetVersion();\r
-       \r
+\r
 }
\ No newline at end of file
index 046eda81ce936193b19b64a8c4883b290b503234..77d504d44078226822f412b4486da2210fa74c6b 100644 (file)
@@ -1,6 +1,7 @@
 package eu.etaxonomy.cdm.database.update;\r
 \r
 import java.sql.SQLException;\r
+import java.util.List;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
@@ -20,4 +21,6 @@ public interface ISchemaUpdaterStep {
 \r
        public String getStepName();\r
 \r
+       public List<ISchemaUpdaterStep> getInnerSteps();\r
+\r
 }
\ No newline at end of file
index 0045b6266eb12961f14fb01ea8baf049c6134637..5dc20f709f956be5c91b62c0c26c5b3aaf798843 100644 (file)
@@ -1,9 +1,23 @@
+// $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;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
-public interface ITermUpdater {\r
+/**\r
+ * @author a.mueller\r
+ * @date 09.2010\r
+ *\r
+ */\r
+public interface ITermUpdater extends IUpdater<ITermUpdater>{\r
 \r
        /**\r
         * Invokes this CDM term updater and updates the schema up to the current CDM\r
@@ -27,28 +41,8 @@ public interface ITermUpdater {
         * @throws Exception \r
         */\r
        boolean invoke(String targetVersion, ICdmDataSource datasource, IProgressMonitor monitor) throws Exception;     \r
-       \r
-       /**\r
-        * Returns the previous CDM term updater\r
-        * @return\r
-        */\r
-       public ITermUpdater getPreviousUpdater();\r
-\r
-       /**\r
-        * Returns the next CDM term updater\r
-        * @return\r
-        */\r
-       public ITermUpdater getNextUpdater();\r
 \r
-       /**\r
-        * Returns the number of steps to run to update the datasource\r
-        * to the term version this term updater is updating to.\r
-        * This includes needed steps in previous updaters.\r
-        * @see #getPreviousUpdater()\r
-        * @return number of steps\r
-        */\r
-       int countSteps(ICdmDataSource datasource);\r
 \r
-       String getTargetVersion();\r
+       public String getTargetVersion();\r
        \r
 }
\ No newline at end of file
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ITermUpdaterStep.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ITermUpdaterStep.java
new file mode 100644 (file)
index 0000000..78b7692
--- /dev/null
@@ -0,0 +1,20 @@
+// $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;\r
+\r
+/**\r
+ * Interface for classes that represent a step in a term update.\r
+ * @author a.mueller\r
+ * @date 24.11.2010\r
+ *\r
+ */\r
+public interface ITermUpdaterStep extends ISchemaUpdaterStep{\r
+       \r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/IUpdater.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/IUpdater.java
new file mode 100644 (file)
index 0000000..a96b9dd
--- /dev/null
@@ -0,0 +1,50 @@
+// $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;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 16.11.2010\r
+ *\r
+ */\r
+public interface IUpdater<U extends IUpdater> {\r
+       \r
+       \r
+       /**\r
+        * Returns the previous CDM term/schema updater\r
+        * @return\r
+        */\r
+       public U getPreviousUpdater();\r
+\r
+       /**\r
+        * Returns the next CDM term/schema updater\r
+        * @return\r
+        */\r
+       public U getNextUpdater();\r
+\r
+\r
+       /**\r
+        * Returns the number of steps to run to update the datasource\r
+        * to the schema this schema updater is updating to.\r
+        * This includes needed steps in previous updaters.\r
+        * @see #getPreviousUpdater()\r
+        * @return number of steps\r
+        */\r
+       int countSteps(ICdmDataSource datasource, IProgressMonitor monitor);\r
+       \r
+       \r
+       public boolean invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws Exception;\r
+               \r
+       public boolean invoke(String targetVersion, ICdmDataSource datasource, IProgressMonitor monitor) throws Exception;\r
+\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MapTableCreator.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MapTableCreator.java
new file mode 100644 (file)
index 0000000..18688a2
--- /dev/null
@@ -0,0 +1,88 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.cdm.database.update;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+\r
+/**\r
+ * @author a.mueller\r
+ *\r
+ */\r
+public class MapTableCreator extends TableCreator {\r
+\r
+       private String firstTableName;\r
+       private String firstTableAlias;\r
+       private String secondTableAlias;\r
+       private String secondTableName;\r
+       private String mapKeyTableName;\r
+       \r
+       public static MapTableCreator NewMapTableInstance(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String mapKeyTableName, boolean includeAudTable){\r
+               MapTableCreator result = new MapTableCreator(stepName, firstTableName, firstTableAlias, secondTableName, secondTableAlias, mapKeyTableName, includeAudTable);\r
+               return result;\r
+       }\r
+\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);\r
+               this.firstTableName = firstTableName;\r
+               this.secondTableName = secondTableName;\r
+               this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;\r
+               this.secondTableAlias = (secondTableAlias !=  null)? secondTableAlias : secondTableName ;\r
+               this.mapKeyTableName = mapKeyTableName;\r
+               addMyColumns();\r
+       }\r
+\r
+       \r
+       protected void addMyColumns(){\r
+               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getFirstIdColumn(), false, true, firstTableName));\r
+               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getSecondIdColumn(), false, true, secondTableName));\r
+               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getMapKeyColumn(), false, true, mapKeyTableName));\r
+       }\r
+\r
+       protected String primaryKey(boolean isAudit){\r
+               String result = "";\r
+               if (! isAudit){\r
+                       result = getFirstIdColumn() + ",";\r
+                       result += getMapKeyColumn() + ",";\r
+               }else{\r
+                       result = "REV, " + primaryKey(false) + ",";\r
+                       result += getSecondIdColumn() + ",";\r
+               }\r
+               result = StringUtils.chomp(result.trim(), ",");\r
+               return result;\r
+       }\r
+       \r
+       protected String unique(boolean isAudit){\r
+               if (! isAudit){\r
+                       return getSecondIdColumn();\r
+               }else{\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       private String getFirstIdColumn(){\r
+               return this.firstTableAlias + "_id";\r
+       }\r
+       \r
+       private String getSecondIdColumn(){\r
+               String result = this.secondTableAlias.toLowerCase();\r
+               \r
+               if (this.secondTableAlias.equalsIgnoreCase(this.secondTableName) ){\r
+                       if (! result.endsWith("s")){\r
+                               result += "s";\r
+                       }\r
+               }\r
+               result += "_id";\r
+               return result;\r
+       }\r
+       \r
+       private String getMapKeyColumn(){\r
+               String result = getSecondIdColumn();\r
+               result = result.replace("_id", "_mapkey_id");\r
+               return result;\r
+       }\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MnTableCreator.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MnTableCreator.java
new file mode 100644 (file)
index 0000000..7f2f790
--- /dev/null
@@ -0,0 +1,95 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.cdm.database.update;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+\r
+/**\r
+ * @author a.mueller\r
+ *\r
+ */\r
+public class MnTableCreator extends TableCreator {\r
+\r
+       private String firstTableName;\r
+       private String firstTableAlias;\r
+       private String secondTableName;\r
+       private String secondTableAlias;\r
+       private boolean hasSortIndex;\r
+       private boolean secondTableInKey;\r
+       \r
+       public static MnTableCreator NewMnInstance(String stepName, String firstTableName, String secondTableName, boolean includeAudTable){\r
+               MnTableCreator result = new MnTableCreator(stepName, firstTableName, null, secondTableName, null, new String[]{}, new String[]{}, null, null, includeAudTable, false, true, false, false);\r
+               return result;\r
+       }\r
+       \r
+       public static MnTableCreator NewMnInstance(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, boolean includeAudTable, boolean hasSortIndex, boolean secondTableInKey){\r
+               MnTableCreator result = new MnTableCreator(stepName, firstTableName, firstTableAlias, secondTableName, secondTableAlias, new String[]{}, new String[]{}, null, null, includeAudTable, hasSortIndex, secondTableInKey, false, false);\r
+               return result;\r
+       }\r
+\r
+       \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 includeIdentifiableEntity) {\r
+               super(stepName, firstTableName + "_" + secondTableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), defaultValues, isNull,  new ArrayList<String>(), includeAudTable, includeCdmBaseAttributes, includeIdentifiableEntity);\r
+               this.firstTableName = firstTableName;\r
+               this.secondTableName = secondTableName;\r
+               this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;\r
+               this.secondTableAlias = (secondTableAlias !=  null)? secondTableAlias : secondTableName ;\r
+               this.hasSortIndex = hasSortIndex;\r
+               this.secondTableInKey = secondTableInKey;\r
+               addMyColumns();\r
+       }\r
+\r
+       \r
+       protected void addMyColumns(){\r
+               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getFirstIdColumn(), false, true, this.firstTableName));\r
+               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getSecondIdColumn(), false, true, this.secondTableName));\r
+               if (this.hasSortIndex){\r
+                       this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, "sortIndex", false, true, null));     \r
+               }\r
+               \r
+       }\r
+\r
+       protected String primaryKey(boolean isAudit){\r
+               String result = "";\r
+               if (! isAudit){\r
+                       result = getFirstIdColumn() + ",";\r
+                       result += secondTableInKey ? getSecondIdColumn() + "," : "";\r
+                       result += hasSortIndex ? "sortIndex," : "";\r
+               }else{\r
+                       result = "REV, " + primaryKey(false);\r
+                       result += (!secondTableInKey) ? ","+getSecondIdColumn() + "," : "";\r
+               }\r
+               result = StringUtils.chomp(result.trim(), ",");\r
+               return result;\r
+       }\r
+       \r
+       protected String unique(boolean isAudit){\r
+               if (! isAudit){\r
+                       return getSecondIdColumn();\r
+               }else{\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       private String getFirstIdColumn(){\r
+               return this.firstTableAlias + "_id";\r
+       }\r
+       \r
+       private String getSecondIdColumn(){\r
+               String result = this.secondTableAlias.toLowerCase();\r
+               \r
+               if (this.secondTableAlias.equalsIgnoreCase(this.secondTableName) ){\r
+                       if (! result.endsWith("s")){\r
+                               result += "s";\r
+                       }\r
+               }\r
+               result += "_id";\r
+               return result;\r
+       }\r
+}\r
index c5f660cf301f8390757a0b2b1a0614a435154a93..656cfdb43a8da70784b60c46966256b6676d5979 100644 (file)
@@ -16,167 +16,44 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.model.common.CdmMetaData;\r
 \r
 /**\r
  * @author a.mueller\r
  * @date 10.09.2010\r
  *\r
  */\r
-public abstract class SchemaUpdaterBase implements ISchemaUpdater {\r
+public abstract class SchemaUpdaterBase extends UpdaterBase<ISchemaUpdaterStep, ISchemaUpdater> implements ISchemaUpdater {\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(SchemaUpdaterBase.class);\r
-       private String startSchemaVersion;\r
-       private String targetSchemaVersion;\r
 \r
-\r
-       protected static boolean INCLUDE_AUDIT = true;\r
-       \r
-       private List<ISchemaUpdaterStep> list;\r
+       public static boolean INCLUDE_AUDIT = true;\r
+       protected static boolean INCLUDE_CDM_BASE = true;\r
        \r
+//     private List<ISchemaUpdaterStep> list;\r
        \r
+\r
+       protected abstract List<ISchemaUpdaterStep> getUpdaterList();\r
+\r
        \r
        protected SchemaUpdaterBase(String startSchemaVersion, String endSchemaVersion){\r
-               this.startSchemaVersion = startSchemaVersion;\r
-               this.targetSchemaVersion = endSchemaVersion;\r
+               this.startVersion = startSchemaVersion;\r
+               this.targetVersion = endSchemaVersion;\r
                list = getUpdaterList();\r
        }\r
-       \r
-       @Override\r
-       public int countSteps(ICdmDataSource datasource){\r
-               int result = 0;\r
-               //TODO test if previous updater is needed\r
-               if (getPreviousUpdater() != null){\r
-                       result += getPreviousUpdater().countSteps(datasource);\r
-               }\r
-               result += list.size();\r
-               return result;\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#invoke()\r
-        */\r
-       @Override\r
-       public boolean invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
-               String currentLibrarySchemaVersion = CdmMetaData.getDbSchemaVersion();\r
-               return invoke(currentLibrarySchemaVersion, datasource, monitor);\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#invoke()\r
-        */\r
-       @Override\r
-       public boolean invoke(String targetVersion, ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
-               boolean result = true;\r
-               String datasourceSchemaVersion;\r
-               try {\r
-                       datasourceSchemaVersion = getCurrentVersion(datasource, monitor);\r
-               } catch (SQLException e1) {\r
-                       monitor.warning("SQLException", e1);\r
-                       return false;\r
-               }               \r
-\r
-               \r
-               boolean isAfterMyStartVersion = isAfterMyStartVersion(datasourceSchemaVersion, monitor);\r
-               boolean isBeforeMyStartVersion = isBeforeMyStartVersion(datasourceSchemaVersion, monitor);\r
-               boolean isAfterMyTargetVersion = isAfterMyTargetVersion(targetVersion, monitor);\r
-               boolean isBeforeMyTargetVersion = isBeforeMyTargetVersion(targetVersion, monitor);\r
-               boolean isDatasourceBeforeMyTargetVersion = isBeforeMyTargetVersion(datasourceSchemaVersion, monitor);\r
-               \r
-               \r
-               \r
-               if (! isDatasourceBeforeMyTargetVersion){\r
-                       String warning = "Target version ("+targetVersion+") is not before updater target version ("+this.targetSchemaVersion+"). Nothing to update.";\r
-                       monitor.warning(warning);\r
-                       return true;\r
-               }\r
-               \r
-               if (isAfterMyStartVersion && isBeforeMyTargetVersion){\r
-                       String warning = "Database version is higher than updater start version but lower than updater target version";\r
-                       RuntimeException exeption = new RuntimeException(warning);\r
-                       monitor.warning(warning, exeption);\r
-                       throw exeption;\r
-               }\r
-               \r
-               if (isBeforeMyStartVersion){\r
-                       if (getPreviousUpdater() == null){\r
-                               String warning = "Database version is before updater version but no previous version updater exists";\r
-                               RuntimeException exeption = new RuntimeException(warning);\r
-                               monitor.warning(warning, exeption);\r
-                               throw exeption;\r
-                       }\r
-                       result &= getPreviousUpdater().invoke(startSchemaVersion, datasource, monitor);\r
-               }\r
-               \r
 \r
-               \r
-               if (isBeforeMyTargetVersion){\r
-                       String warning = "Target version ("+targetVersion+") is lower than updater target version ("+this.targetSchemaVersion+")";\r
-                       RuntimeException exeption = new RuntimeException(warning);\r
-                       monitor.warning(warning, exeption);\r
-                       throw exeption;\r
-               }\r
-               \r
-               \r
-               for (ISchemaUpdaterStep step : list){\r
-                       try {\r
-                               monitor.subTask(step.getStepName());\r
-                               Integer termId = step.invoke(datasource, monitor);\r
-                               result &= (termId != null);\r
-                               monitor.worked(1);\r
-                       } catch (Exception e) {\r
-                               monitor.warning("Exception occurred while updating schema", e);\r
-                               throw e;\r
-                       }\r
-               }\r
-               // TODO schema version gets updated even if something went utterly wrong while executing the steps\r
-               // I don't think we want this to happen\r
-               updateSchemaVersion(datasource, monitor);\r
-               \r
-               return result;\r
-               \r
-               \r
-       }\r
-\r
-       \r
-       private void updateSchemaVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+       @Override\r
+       protected void updateVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
                        int intSchemaVersion = 0;\r
-                       String sqlUpdateSchemaVersion = "UPDATE CdmMetaData SET value = '" + this.targetSchemaVersion + "' WHERE propertyname = " +  intSchemaVersion;\r
+                       String sqlUpdateSchemaVersion = "UPDATE CdmMetaData SET value = '" + this.targetVersion + "' WHERE propertyname = " +  intSchemaVersion;\r
                        try {\r
                                datasource.executeUpdate(sqlUpdateSchemaVersion);\r
                        } catch (Exception e) {\r
                                monitor.warning("Error when trying to set new schemaversion: ", e);\r
                                throw new SQLException(e);\r
                        }\r
-               \r
-       }\r
-\r
-       protected abstract List<ISchemaUpdaterStep> getUpdaterList();\r
-\r
-       protected boolean isAfterMyStartVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, startSchemaVersion, depth, monitor);\r
-               return compareResult > 0;\r
-       }\r
-\r
-       protected boolean isBeforeMyStartVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, startSchemaVersion, depth, monitor);\r
-               return compareResult < 0;\r
-       }\r
-       protected boolean isAfterMyTargetVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, targetSchemaVersion, depth, monitor);\r
-               return compareResult > 0;\r
        }\r
 \r
-       protected boolean isBeforeMyTargetVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, targetSchemaVersion, depth, monitor);\r
-               return compareResult < 0;\r
-       }\r
-\r
-\r
+       @Override\r
        protected String getCurrentVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
                int intSchemaVersion = 0;\r
                String sqlSchemaVersion = "SELECT value FROM CdmMetaData WHERE propertyname = " +  intSchemaVersion;\r
@@ -189,24 +66,5 @@ public abstract class SchemaUpdaterBase implements ISchemaUpdater {
                }\r
        }\r
 \r
-\r
-       /*\r
-        * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ISchemaUpdater#getNextUpdater()\r
-        */\r
-       @Override\r
-       public abstract ISchemaUpdater getNextUpdater();\r
-\r
-       /*\r
-        * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ISchemaUpdater#getPreviousUpdater()\r
-        */\r
-       @Override\r
-       public abstract ISchemaUpdater getPreviousUpdater();\r
-       \r
-       @Override\r
-       public String getTargetVersion() {\r
-               return this.targetSchemaVersion;\r
-       }\r
        \r
 }\r
index ae4a53b19d4d460a91e55fb58d992881f573e6ee..e15f9879edca7d6654cd8dba1a951fc9c5d6e942 100644 (file)
 package eu.etaxonomy.cdm.database.update;\r
 \r
 import java.sql.SQLException;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
@@ -22,10 +25,10 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
  * @date 13.09.2010\r
  *\r
  */\r
-public abstract class SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
+public abstract class SchemaUpdaterStepBase<T extends SchemaUpdaterStepBase> implements ISchemaUpdaterStep {\r
        private static final Logger logger = Logger.getLogger(SchemaUpdaterStepBase.class);\r
        \r
-       private String stepName;\r
+       protected String stepName;\r
                \r
        \r
 //************************ CONSTRUCTOR ***********************************/\r
@@ -73,7 +76,19 @@ public abstract class SchemaUpdaterStepBase implements ISchemaUpdaterStep {
                }\r
                return result;\r
        }\r
-\r
        \r
        \r
+       public List<ISchemaUpdaterStep> getInnerSteps(){\r
+               return new ArrayList<ISchemaUpdaterStep>();\r
+       }\r
+\r
+       @Override\r
+       public String toString(){\r
+               if (StringUtils.isNotBlank(stepName)){\r
+                       return stepName;\r
+               }else{\r
+                       return super.toString();\r
+               }\r
+       }\r
+       \r
 }\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_25_26.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_25_26.java
deleted file mode 100644 (file)
index c9cda49..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// $Id$
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
-* http://www.e-taxonomy.eu
-* 
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.cdm.database.update;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-/**
- * @author n.hoffmann
- * @created Oct 25, 2010
- * @version 1.0
- */
-public class SchemaUpdater_25_26 extends SchemaUpdaterBase {
-
-
-       @SuppressWarnings("unused")
-       private static final Logger logger = Logger.getLogger(SchemaUpdater_25_26.class);
-       private static final String startSchemaVersion = "2.5.0.0.201009211255";
-       private static final String endSchemaVersion = "2.6.0.0.201010231255";
-       
-// ********************** FACTORY METHOD *******************************************
-       
-       public static SchemaUpdater_25_26 NewInstance(){
-               return new SchemaUpdater_25_26();
-       }
-       
-       /**
-        * @param startSchemaVersion
-        * @param endSchemaVersion
-        */
-       protected SchemaUpdater_25_26() {
-               super(startSchemaVersion, endSchemaVersion);
-       }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getUpdaterList()
-        */
-       @Override
-       protected List<ISchemaUpdaterStep> getUpdaterList() {
-               
-               List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
-               String stepName;
-               
-               //add the table hibernate_sequences
-               stepName = "Add the table hibernate_sequences to store the table specific sequences in";
-               SequenceTableCreator step = SequenceTableCreator.NewInstance(stepName);
-               stepList.add(step);
-               
-               return stepList;
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getNextUpdater()
-        */
-       @Override
-       public ISchemaUpdater getNextUpdater() {
-               return null;
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getPreviousUpdater()
-        */
-       @Override
-       public ISchemaUpdater getPreviousUpdater() {
-               return SchemaUpdater_24_25.NewInstance();
-       }
-
-}
index e34d79614afc4d2db3ebf82af243448e20cbd3b9..2e5d2a97a8c62a2c8917deefc7071e4009bb308b 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.model.description.Feature;
  * @date 10.09.2010\r
  *\r
  */\r
-public class SingleTermUpdater extends SchemaUpdaterStepBase {\r
+public class SingleTermUpdater extends SchemaUpdaterStepBase implements ITermUpdaterStep{\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(SingleTermUpdater.class);\r
        \r
@@ -180,6 +180,9 @@ public class SingleTermUpdater extends SchemaUpdaterStepBase {
        private String getOrderIndex(ICdmDataSource datasource, int vocId, IProgressMonitor monitor) throws SQLException {\r
                ResultSet rs;\r
                Integer intOrderIndex = null;\r
+               if (uuidAfterTerm == null){\r
+                       return "1";\r
+               }\r
                String sqlOrderIndex = " SELECT orderindex FROM DefinedTermBase WHERE uuid = '"+uuidAfterTerm+"' AND vocabulary_id = "+vocId+"";\r
                rs = datasource.executeQuery(sqlOrderIndex);\r
                if (rs.next()){\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableCreator.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableCreator.java
new file mode 100644 (file)
index 0000000..48f65fe
--- /dev/null
@@ -0,0 +1,312 @@
+// $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;\r
+\r
+import java.sql.SQLException;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 16.09.2010\r
+ *\r
+ */\r
+public class TableCreator extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(TableCreator.class);\r
+       \r
+       private static final boolean SORT_INDEX = true;\r
+       \r
+       protected String tableName;\r
+       private List<String> columnNames;\r
+       private List<String> columnTypes;\r
+       private List<Object> defaultValues;\r
+       private List<Boolean> isNotNull;\r
+       private List<String> referencedTables;\r
+       private boolean includeAudTable;\r
+       private boolean includeCdmBaseAttributes;\r
+       private boolean includeIdentifiableEntity;\r
+       protected List<ColumnAdder> columnAdders = new ArrayList<ColumnAdder>();\r
+       protected List<ISchemaUpdaterStep> mnTablesStepList = new ArrayList<ISchemaUpdaterStep>();\r
+       private String primaryKeyParams;\r
+       private String primaryKeyParams_AUD;\r
+       private String uniqueParams;\r
+       private String uniqueParams_AUD;\r
+\r
+       \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);\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);\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);\r
+       }\r
+       \r
+       protected TableCreator(String stepName, String tableName, List<String> columnNames, List<String> columnTypes, List<Object> defaultValues, List<Boolean> isNotNull, List<String> referencedTables, boolean includeAudTable, boolean includeCdmBaseAttributes, boolean includeIdentifiableEntity) {\r
+               super(stepName);\r
+               this.tableName = tableName;\r
+               this.columnNames = columnNames;\r
+               this.columnTypes = columnTypes;\r
+               this.defaultValues = defaultValues;\r
+               this.isNotNull = isNotNull;\r
+               this.referencedTables = referencedTables;\r
+               this.includeAudTable = includeAudTable;\r
+               this.includeCdmBaseAttributes = includeCdmBaseAttributes;\r
+               this.includeIdentifiableEntity = includeIdentifiableEntity;\r
+               makeColumnAdders();\r
+               makeMnTables();\r
+       }\r
+\r
+\r
+       private void makeColumnAdders() {\r
+               if (columnNames.size() != columnTypes.size()){\r
+                       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
+                               ColumnAdder adder = ColumnAdder.NewBooleanInstance(getStepName(), this.tableName,  this.columnNames.get(i), includeAudTable, Boolean.valueOf(this.defaultValues.get(i).toString()));\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
+                       }\r
+               }\r
+       }\r
+\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
+        */\r
+       @Override\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+               try {\r
+                       boolean result = true;\r
+                       result &= createTable(tableName, false, datasource, monitor);\r
+                       if (includeAudTable){\r
+                               String aud = "_AUD";\r
+                               result &= createTable(tableName + aud, true, datasource, monitor);\r
+                       }\r
+//                     result &= invokeMns();\r
+                       return (result == true )? 0 : null;\r
+               } catch (DatabaseTypeNotSupportedException e) {\r
+                       throw new SQLException(e);\r
+               }\r
+       }\r
+\r
+\r
+\r
+       @Override\r
+       public List<ISchemaUpdaterStep> getInnerSteps() {\r
+               return mnTablesStepList;\r
+       }\r
+\r
+       private String getColumnsSql(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) throws DatabaseTypeNotSupportedException {\r
+               String result = "";\r
+               for (ColumnAdder adder : this.columnAdders){\r
+                       String singleAdderSQL = adder.getUpdateQueryString(tableName, datasource, monitor) + ", ";\r
+                       \r
+                       String[] split = singleAdderSQL.split(ColumnAdder.getAddColumnSeperator(datasource));\r
+                       result += split[1];\r
+               }\r
+               return result;\r
+       }\r
+\r
+       private boolean createTable(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor) throws DatabaseTypeNotSupportedException {\r
+               String updateQuery = "CREATE TABLE @tableName (";\r
+               if (isAudit){\r
+                       updateQuery += " REV integer not null, revtype tinyint, ";\r
+               }\r
+               if (includeCdmBaseAttributes){\r
+                               updateQuery += " id integer not null,"\r
+                                       + " created datetime, "\r
+                                       + " uuid varchar(36),"\r
+                                       + " updated datetime, "\r
+                                       + " createdby_id integer,"\r
+                                       + " updatedby_id integer, ";\r
+                               \r
+               }\r
+               if (this.includeIdentifiableEntity){\r
+                       updateQuery += "lsid_authority varchar(255), lsid_lsid varchar(255), lsid_namespace varchar(255), lsid_object varchar(255), lsid_revision varchar(255), protectedtitlecache bit not null, titleCache varchar(255),";\r
+               }\r
+               \r
+               updateQuery +=  getColumnsSql(tableName, datasource, monitor);\r
+               \r
+               String primaryKeySql = primaryKey(isAudit)==null ? "" : "primary key (" + primaryKey(isAudit) + "),";\r
+               String uniqueSql = unique(isAudit)== null ? "" : "unique(" + unique(isAudit) + "),";\r
+               updateQuery += primaryKeySql + uniqueSql;\r
+               \r
+               updateQuery = StringUtils.chomp(updateQuery.trim(), ",");\r
+               updateQuery += ")";\r
+               \r
+               updateQuery = updateQuery.replace("@tableName", tableName);\r
+               if (datasource.getDatabaseType().equals(DatabaseTypeEnum.MySQL)){\r
+                       updateQuery += " ENGINE=MYISAM DEFAULT CHARSET=utf8 ";\r
+               }\r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+               createForeignKeys(tableName, isAudit, datasource, monitor);\r
+               return true;\r
+       }\r
+\r
+\r
+       private void makeMnTables() {\r
+               if (this.includeIdentifiableEntity){\r
+                       TableCreator tableCreator;\r
+                       //annotations\r
+                       stepName= "Add @tableName annotations";\r
+                       stepName = stepName.replace("@tableName", this.tableName);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, this.tableName, "Annotation", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       mnTablesStepList.add(tableCreator);\r
+\r
+                       //credits\r
+                       stepName= "Add @tableName credits";\r
+                       stepName = stepName.replace("@tableName", this.tableName);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, this.tableName, null, "Credit", null, SchemaUpdaterBase.INCLUDE_AUDIT, SORT_INDEX, false);\r
+                       mnTablesStepList.add(tableCreator);\r
+                       \r
+                       //extensions\r
+                       stepName= "Add @tableName extensions";\r
+                       stepName = stepName.replace("@tableName", this.tableName);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, this.tableName, "Extension", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       mnTablesStepList.add(tableCreator);\r
+\r
+                       //marker\r
+                       stepName= "Add @tableName marker";\r
+                       stepName = stepName.replace("@tableName", this.tableName);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, this.tableName, "Marker", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       mnTablesStepList.add(tableCreator);\r
+                       \r
+                       //OriginalSourceBase\r
+                       stepName= "Add @tableName sources";\r
+                       stepName = stepName.replace("@tableName", this.tableName);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, this.tableName, null, "OriginalSourceBase", "sources", SchemaUpdaterBase.INCLUDE_AUDIT, false, true);\r
+                       mnTablesStepList.add(tableCreator);\r
+\r
+                       //Rights\r
+                       stepName= "Add @tableName rights";\r
+                       stepName = stepName.replace("@tableName", this.tableName);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, this.tableName, "Rights", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       mnTablesStepList.add(tableCreator);\r
+\r
+                       \r
+               }\r
+       }\r
+       \r
+       private void createForeignKeys(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor) {\r
+               if (includeCdmBaseAttributes){\r
+                       String attribute = "updatedby";\r
+                       String referencedTable = "UserAccount";\r
+                       makeForeignKey(tableName, datasource, attribute, referencedTable);\r
+                       \r
+                       attribute = "createdby";\r
+                       referencedTable = "UserAccount";\r
+                       makeForeignKey(tableName, datasource, attribute, referencedTable);                      \r
+               \r
+               }\r
+               if (isAudit){\r
+                       String attribute = "REV";\r
+                       String referencedTable = "AuditEvent";\r
+                       makeForeignKey(tableName, datasource, attribute, referencedTable);\r
+               }\r
+               for (ColumnAdder adder : this.columnAdders){\r
+                       if (adder.getReferencedTable() != null){\r
+                               makeForeignKey(tableName, datasource, adder.getNewColumnName(), adder.getReferencedTable()); \r
+                       }\r
+               }\r
+       }\r
+\r
+       public static void makeForeignKey(String tableName, ICdmDataSource datasource, String attribute, String referencedTable) {\r
+               String index = "FK@tableName_@attribute";\r
+               index = index.replace("@tableName", tableName);\r
+               index = index.replace("@attribute", attribute);\r
+               \r
+               String idSuffix = "_id";\r
+               if ("REV".equalsIgnoreCase(attribute) || attribute.endsWith(idSuffix)){\r
+                       idSuffix = "";\r
+               }\r
+               String updateQuery = "ALTER TABLE @tableName ADD INDEX @index (@attribute), ADD CONSTRAINT @index FOREIGN KEY (@attribute) REFERENCES @referencedTable (id)";\r
+               updateQuery = updateQuery.replace("@tableName", tableName);\r
+               updateQuery = updateQuery.replace("@index", index);\r
+               updateQuery = updateQuery.replace("@attribute", attribute + idSuffix);\r
+               updateQuery = updateQuery.replace("@referencedTable", referencedTable);\r
+               \r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+       }\r
+\r
+\r
+       protected String primaryKey(boolean isAudit){\r
+               String result = null;\r
+               if (! isAudit && this.primaryKeyParams != null){ \r
+                       return this.primaryKeyParams;\r
+               }else if (isAudit && this.primaryKeyParams_AUD != null){ \r
+                       return this.primaryKeyParams_AUD;\r
+               } \r
+\r
+               if (includeCdmBaseAttributes || ! includeCdmBaseAttributes){ //TODO how to handle not CDMBase includes\r
+                       if (! isAudit){\r
+                               result = "id";\r
+                       }else{\r
+                               result = "id, REV";\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+       \r
+       protected String unique(boolean isAudit){\r
+               if (! isAudit){\r
+                       if (this.uniqueParams != null){\r
+                               return this.uniqueParams;\r
+                       }\r
+                       if (includeCdmBaseAttributes){\r
+                               return "uuid"; //TODO how to handle not CDMBase includes\r
+                       }\r
+                       return null;\r
+               }else{\r
+                       if (this.uniqueParams_AUD != null){\r
+                               return this.uniqueParams_AUD;\r
+                       }\r
+                       return null;\r
+               }\r
+       }\r
+\r
+       public void setPrimaryKeyParams(String primaryKeyParams, String primaryKeyParams_AUD) {\r
+               this.primaryKeyParams = primaryKeyParams;\r
+               this.primaryKeyParams_AUD = primaryKeyParams_AUD;\r
+       }\r
+\r
+       public void setUniqueParams(String uniqueParams, String uniqueParams_AUD) {\r
+               this.uniqueParams = uniqueParams;\r
+               this.uniqueParams_AUD = uniqueParams_AUD;\r
+       }\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableDroper.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableDroper.java
new file mode 100644 (file)
index 0000000..a91b237
--- /dev/null
@@ -0,0 +1,89 @@
+// $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;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 16.09.2010\r
+ *\r
+ */\r
+public class TableDroper extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(TableDroper.class);\r
+       \r
+       private String tableName;\r
+               private boolean includeAudTable;\r
+       \r
+       public static final TableDroper NewInstance(String stepName, String tableName, boolean includeAudTable){\r
+               return new TableDroper(stepName, tableName, includeAudTable);\r
+       }\r
+\r
+       \r
+       protected TableDroper(String stepName, String tableName, boolean includeAudTable) {\r
+               super(stepName);\r
+               this.tableName = tableName;\r
+               this.includeAudTable = includeAudTable;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
+        */\r
+       @Override\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+               boolean result = true;\r
+               result &= removeTable(tableName, datasource, monitor);\r
+               if (includeAudTable){\r
+                       String aud = "_AUD";\r
+                       result &= removeTable(tableName + aud, datasource, monitor);\r
+               }\r
+               return (result == true )? 0 : null;\r
+       }\r
+\r
+       private boolean removeTable(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) {\r
+               try {\r
+                       String updateQuery = getUpdateQueryString(tableName, datasource, monitor);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       return true;\r
+               } catch ( DatabaseTypeNotSupportedException e) {\r
+                       return false;\r
+               }\r
+       }\r
+\r
+       public String getUpdateQueryString(String tableName, ICdmDataSource datasource, IProgressMonitor monitor) throws DatabaseTypeNotSupportedException {\r
+               String updateQuery;\r
+               DatabaseTypeEnum type = datasource.getDatabaseType();\r
+               \r
+               updateQuery = "DROP TABLE @tableName";\r
+               if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+                       //MySQL allows both syntaxes\r
+//                     updateQuery = "ALTER TABLE @tableName ADD @columnName @columnType";\r
+               }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.MySQL)){\r
+//                     updateQuery = "ALTER TABLE @tableName @addSeparator @columnName @columnType";\r
+               }else{\r
+                       updateQuery = null;\r
+                       String warning = "Update step '" + this.getStepName() + "' is not supported by " + type.getName();\r
+                       monitor.warning(warning);\r
+                       throw new DatabaseTypeNotSupportedException(warning);\r
+               }\r
+               updateQuery = updateQuery.replace("@tableName", tableName);\r
+               \r
+               return updateQuery;\r
+       }\r
+\r
+\r
+}\r
index 6788557d769446915d666dfaa2a811f6e542eba0..d494da5163e9fbd7798d09061f474f1865c783ec 100644 (file)
@@ -24,159 +24,39 @@ import eu.etaxonomy.cdm.model.common.CdmMetaData;
  * @date 10.09.2010\r
  *\r
  */\r
-public abstract class TermUpdaterBase implements ITermUpdater {\r
+public abstract class TermUpdaterBase extends UpdaterBase<ITermUpdaterStep, ITermUpdater> implements ITermUpdater {\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(TermUpdaterBase.class);\r
        protected static final UUID uuidFeatureVocabulary = UUID.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8");\r
        \r
-       private List<SingleTermUpdater> list;\r
-       private String startTermVersion;\r
-       private String targetTermVersion;\r
-       \r
-       \r
-       \r
        protected TermUpdaterBase(String startTermVersion, String targetTermVersion){\r
-               this.startTermVersion = startTermVersion;\r
-               this.targetTermVersion = targetTermVersion;\r
+               this.startVersion = startTermVersion;\r
+               this.targetVersion = targetTermVersion;\r
                list = getUpdaterList();\r
        }\r
        \r
-\r
-       @Override\r
-       public int countSteps(ICdmDataSource datasource){\r
-               int result = 0;\r
-               //TODO test if previous updater is needed\r
-               if (getPreviousUpdater() != null){\r
-                       result += getPreviousUpdater().countSteps(datasource);\r
-               }\r
-               result += list.size();\r
-               return result;\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#invoke()\r
-        */\r
-       @Override\r
-       public boolean invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
-               String currentLibraryTermVersion = CdmMetaData.getTermsVersion();\r
-               return invoke(currentLibraryTermVersion, datasource, monitor);\r
-       }\r
-       \r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#invoke()\r
-        */\r
        @Override\r
-       public boolean invoke(String targetVersion, ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
-               boolean result = true;\r
-               \r
-               String datasourceSchemaVersion;\r
-               try {\r
-                       datasourceSchemaVersion = getCurrentVersion(datasource, monitor);\r
-               } catch (SQLException e1) {\r
-                       monitor.warning("SQLException", e1);\r
-                       return false;\r
-               }\r
-               \r
-               boolean isAfterMyStartVersion = isAfterMyStartVersion(datasourceSchemaVersion, monitor);\r
-               boolean isBeforeMyStartVersion = isBeforeMyStartVersion(datasourceSchemaVersion, monitor);\r
-               boolean isAfterMyTargetVersion = isAfterMyTargetVersion(targetVersion, monitor);\r
-               boolean isBeforeMyTargetVersion = isBeforeMyTargetVersion(targetVersion, monitor);\r
-               boolean isDatasourceBeforeMyTargetVersion = isBeforeMyTargetVersion(datasourceSchemaVersion, monitor);\r
-               \r
-\r
-               if (! isDatasourceBeforeMyTargetVersion){\r
-                       String warning = "Target version ("+targetVersion+") is not before updater target version ("+this.targetTermVersion+"). Nothing to update.";\r
-                       monitor.warning(warning);\r
-                       return true;\r
-               }\r
-               \r
-               if (isAfterMyStartVersion){\r
-                       String warning = "Database version is higher than updater start version";\r
-                       RuntimeException exeption = new RuntimeException(warning);\r
-                       monitor.warning(warning, exeption);\r
-                       throw exeption;\r
-               }\r
-               \r
-               if (isBeforeMyStartVersion){\r
-                       if (getPreviousUpdater() == null){\r
-                               String warning = "Database version is before updater version but no previous version updater exists";\r
-                               RuntimeException exeption = new RuntimeException(warning);\r
-                               monitor.warning(warning, exeption);\r
-                               throw exeption;\r
-                       }\r
-                       result &= getPreviousUpdater().invoke(startTermVersion, datasource, monitor);\r
-               }\r
-\r
-               \r
-               if (isBeforeMyTargetVersion){\r
-                       String warning = "Target version ("+targetVersion+") is lower than updater target version ("+this.targetTermVersion+")";\r
-                       RuntimeException exeption = new RuntimeException(warning);\r
-                       monitor.warning(warning, exeption);\r
-                       throw exeption;\r
-               }\r
-\r
-               \r
-               \r
-               for (SingleTermUpdater step : list){\r
-                       try {\r
-                               monitor.subTask(step.getStepName());\r
-                               Integer stepResult = step.invoke(datasource, monitor);\r
-                               result &= (stepResult != null);\r
-                               monitor.worked(1);\r
-                       } catch (Exception e) {\r
-                               // TODO Auto-generated catch block\r
-                               monitor.warning("Exception occurred while updating schema", e);\r
-                               result = false;\r
-                       }\r
-               }\r
-               \r
-               // TODO term version gets updated even if something went utterly wrong while executing the steps\r
-               // I don't think we want this to happen\r
-               updateTermVersion(datasource, monitor);\r
-\r
-               return result;\r
-       }\r
-       \r
-       private void updateTermVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+       protected void updateVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
                int intSchemaVersion = 1;\r
-               String sqlUpdateSchemaVersion = "UPDATE CdmMetaData SET value = '" + this.targetTermVersion + "' WHERE propertyname = " +  intSchemaVersion;\r
+               String sqlUpdateSchemaVersion = "UPDATE CdmMetaData SET value = '" + this.targetVersion + "' WHERE propertyname = " +  intSchemaVersion;\r
                try {\r
                        datasource.executeUpdate(sqlUpdateSchemaVersion);\r
                } catch (Exception e) {\r
                        monitor.warning("Error when trying to set new schemaversion: ", e);\r
                        throw new SQLException(e);\r
                }\r
-       \r
-}\r
-       \r
-       protected abstract List<SingleTermUpdater> getUpdaterList();\r
-\r
-       protected boolean isAfterMyStartVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, startTermVersion, depth, monitor);\r
-               return compareResult > 0;\r
-       }\r
-\r
-       protected boolean isBeforeMyStartVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, startTermVersion, depth, monitor);\r
-               return compareResult < 0;\r
-       }\r
-\r
-       protected boolean isAfterMyTargetVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, targetTermVersion, depth, monitor);\r
-               return compareResult > 0;\r
        }\r
+       \r
+       protected abstract List<ITermUpdaterStep> getUpdaterList();\r
 \r
-       protected boolean isBeforeMyTargetVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
-               int depth = 4;\r
-               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, targetTermVersion, depth, monitor);\r
-               return compareResult < 0;\r
-       }\r
        \r
+       @Override\r
+       public boolean invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
+               String currentLibrarySchemaVersion = CdmMetaData.getTermsVersion();\r
+               return invoke(currentLibrarySchemaVersion, datasource, monitor);\r
+       }\r
 \r
+       @Override\r
        protected String getCurrentVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
                int intSchemaVersion = 1;\r
                try {\r
@@ -200,22 +80,6 @@ public abstract class TermUpdaterBase implements ITermUpdater {
                }\r
        }\r
        \r
-       \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#getNextUpdater()\r
-        */\r
-       @Override\r
-       public abstract ITermUpdater getNextUpdater();\r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#getPreviousUpdater()\r
-        */\r
-       @Override\r
-       public abstract ITermUpdater getPreviousUpdater();\r
 \r
-       \r
-       @Override\r
-       public String getTargetVersion() {\r
-               return this.targetTermVersion;\r
-       }\r
 }\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/UpdaterBase.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/UpdaterBase.java
new file mode 100644 (file)
index 0000000..095bf36
--- /dev/null
@@ -0,0 +1,216 @@
+// $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;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.model.common.CdmMetaData;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 16.11.2010\r
+ *\r
+ */\r
+public abstract class UpdaterBase<T extends ISchemaUpdaterStep, U extends IUpdater> implements IUpdater<U> {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(TermUpdaterBase.class);\r
+       \r
+       protected List<T> list;\r
+       protected String startVersion;\r
+       protected String targetVersion;\r
+       \r
+       protected abstract void updateVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException;\r
+       \r
+       protected abstract String getCurrentVersion(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException;\r
+       \r
+       @Override\r
+       public int countSteps(ICdmDataSource datasource, IProgressMonitor monitor){\r
+               int result = 0;\r
+               //TODO test if previous updater is needed\r
+               if (isToBeInvoked(/*targetVerison, */datasource, monitor)){\r
+                       for (T step: list){\r
+                               result++; //+= list.size();\r
+                               result += step.getInnerSteps().size();\r
+                       }       \r
+                       if (getPreviousUpdater() != null){\r
+                               result += getPreviousUpdater().countSteps(/*targetVerison, */datasource, monitor);\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+       \r
+       \r
+       private boolean isToBeInvoked(ICdmDataSource datasource, IProgressMonitor monitor) {\r
+               boolean result = true;\r
+               String datasourceSchemaVersion;\r
+               try {\r
+                       datasourceSchemaVersion = getCurrentVersion(datasource, monitor);\r
+               } catch (SQLException e1) {\r
+                       monitor.warning("SQLException", e1);\r
+                       return false;\r
+               }\r
+               \r
+               boolean isAfterMyStartVersion = isAfterMyStartVersion(datasourceSchemaVersion, monitor);\r
+               boolean isBeforeMyStartVersion = isBeforeMyStartVersion(datasourceSchemaVersion, monitor);\r
+//             boolean isBeforeMyTargetVersion = isBeforeMyTargetVersion(targetVersion, monitor);\r
+               boolean isDatasourceBeforeMyTargetVersion = isBeforeMyTargetVersion(datasourceSchemaVersion, monitor);\r
+               \r
+               result &= isDatasourceBeforeMyTargetVersion;\r
+               result &= !(isAfterMyStartVersion /*&& isBeforeMyTargetVersion*/);\r
+               result &= ! (isBeforeMyStartVersion && getPreviousUpdater() == null);\r
+//             result &= !isBeforeMyTargetVersion;\r
+               return result;\r
+       }\r
+       \r
+       \r
+       @Override\r
+       public boolean invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
+               String currentLibrarySchemaVersion = CdmMetaData.getDbSchemaVersion();\r
+               return invoke(currentLibrarySchemaVersion, datasource, monitor);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.IUpdater#invoke(java.lang.String, eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
+        */\r
+       @Override\r
+       public boolean invoke(String targetVersion, ICdmDataSource datasource, IProgressMonitor monitor) throws Exception{\r
+               boolean result = true;\r
+               String datasourceSchemaVersion;\r
+               try {\r
+                       datasourceSchemaVersion = getCurrentVersion(datasource, monitor);\r
+               } catch (SQLException e1) {\r
+                       monitor.warning("SQLException", e1);\r
+                       return false;\r
+               }               \r
+\r
+               \r
+               boolean isAfterMyStartVersion = isAfterMyStartVersion(datasourceSchemaVersion, monitor);\r
+               boolean isBeforeMyStartVersion = isBeforeMyStartVersion(datasourceSchemaVersion, monitor);\r
+//             boolean isAfterMyTargetVersion = isAfterMyTargetVersion(targetVersion, monitor);\r
+               boolean isBeforeMyTargetVersion = isBeforeMyTargetVersion(targetVersion, monitor);\r
+               boolean isDatasourceBeforeMyTargetVersion = isBeforeMyTargetVersion(datasourceSchemaVersion, monitor);\r
+               \r
+               \r
+               \r
+               if (! isDatasourceBeforeMyTargetVersion){\r
+                       String warning = "Target version ("+targetVersion+") is not before updater target version ("+this.targetVersion+"). Nothing to update.";\r
+                       monitor.warning(warning);\r
+                       return true;\r
+               }\r
+               \r
+               if (isAfterMyStartVersion && isBeforeMyTargetVersion){\r
+                       String warning = "Database version is higher than updater start version but lower than updater target version";\r
+                       RuntimeException exeption = new RuntimeException(warning);\r
+                       monitor.warning(warning, exeption);\r
+                       throw exeption;\r
+               }\r
+               \r
+               if (isBeforeMyStartVersion){\r
+                       if (getPreviousUpdater() == null){\r
+                               String warning = "Database version is before updater version but no previous version updater exists";\r
+                               RuntimeException exeption = new RuntimeException(warning);\r
+                               monitor.warning(warning, exeption);\r
+                               throw exeption;\r
+                       }\r
+                       result &= getPreviousUpdater().invoke(startVersion, datasource, monitor);\r
+               }\r
+               \r
+\r
+               \r
+               if (isBeforeMyTargetVersion){\r
+                       String warning = "Target version ("+targetVersion+") is lower than updater target version ("+this.targetVersion+")";\r
+                       RuntimeException exeption = new RuntimeException(warning);\r
+                       monitor.warning(warning, exeption);\r
+                       throw exeption;\r
+               }\r
+               \r
+               \r
+               for (T step : list){\r
+                       result = handleSingleStep(datasource, monitor, result, step, false);\r
+               }\r
+               // TODO schema version gets updated even if something went utterly wrong while executing the steps\r
+               // I don't think we want this to happen\r
+               updateVersion(datasource, monitor);\r
+               \r
+               return result;\r
+       \r
+       }\r
+       \r
+//     protected abstract boolean handleSingleStep(ICdmDataSource datasource,  IProgressMonitor monitor, boolean result, ISchemaUpdaterStep step, boolean isInnerStep) throws Exception;\r
+       \r
+       protected boolean handleSingleStep(ICdmDataSource datasource, IProgressMonitor monitor, boolean result, ISchemaUpdaterStep step, boolean isInnerStep)\r
+                       throws Exception {\r
+               try {\r
+                       monitor.subTask(step.getStepName());\r
+                       Integer invokeResult = step.invoke(datasource, monitor);\r
+                       result &= (invokeResult != null);\r
+                       for (ISchemaUpdaterStep innerStep : step.getInnerSteps()){\r
+                               result &= handleSingleStep(datasource, monitor, result, innerStep, true);\r
+                       }\r
+//                     if (! isInnerStep){\r
+                               monitor.worked(1);\r
+//                     }\r
+               } catch (Exception e) {\r
+                       monitor.warning("Exception occurred while updating schema", e);\r
+                       throw e;\r
+               }\r
+               return result;\r
+       }\r
+       \r
+       protected boolean isAfterMyStartVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
+               int depth = 4;\r
+               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, startVersion, depth, monitor);\r
+               return compareResult > 0;\r
+       }\r
+\r
+       protected boolean isBeforeMyStartVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
+               int depth = 4;\r
+               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, startVersion, depth, monitor);\r
+               return compareResult < 0;\r
+       }\r
+\r
+       protected boolean isAfterMyTargetVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
+               int depth = 4;\r
+               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, targetVersion, depth, monitor);\r
+               return compareResult > 0;\r
+       }\r
+\r
+       protected boolean isBeforeMyTargetVersion(String dataSourceSchemaVersion, IProgressMonitor monitor) {\r
+               int depth = 4;\r
+               int compareResult = CdmMetaData.compareVersion(dataSourceSchemaVersion, targetVersion, depth, monitor);\r
+               return compareResult < 0;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.IUpdater#getNextUpdater()\r
+        */\r
+       @Override\r
+       public abstract U getNextUpdater();\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.IUpdater#getPreviousUpdater()\r
+        */\r
+       @Override\r
+       public abstract U getPreviousUpdater();\r
+\r
+       \r
+       /**\r
+        * @return\r
+        */\r
+       public String getTargetVersion() {\r
+               return this.targetVersion;\r
+       }\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/VocabularyCreator.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/VocabularyCreator.java
new file mode 100644 (file)
index 0000000..77738f8
--- /dev/null
@@ -0,0 +1,148 @@
+// $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;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.UUID;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 10.09.2010\r
+ *\r
+ */\r
+public class VocabularyCreator extends SchemaUpdaterStepBase implements ITermUpdaterStep{\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(VocabularyCreator.class);\r
+\r
+// **************************** STATIC METHODS ********************************/\r
+\r
+       public static final VocabularyCreator NewVocabularyInstance(UUID uuidVocabulary, String description,  String label, String abbrev, boolean isOrdered, Class termclass){\r
+               String stepName = makeStepName(label);\r
+               return new VocabularyCreator(stepName, uuidVocabulary, description, label, abbrev, isOrdered, termclass);       \r
+       }\r
+\r
+// *************************** VARIABLES *****************************************/\r
+       private UUID uuidVocabulary;\r
+       private String description;\r
+       private String label;\r
+       private String abbrev;\r
+       private boolean isOrdered;\r
+       private Class termClass;\r
+\r
+// ***************************** CONSTRUCTOR ***************************************/\r
+       \r
+       private VocabularyCreator(String stepName, UUID uuidVocabulary, String description, String label, String abbrev, boolean isOrdered, Class termClass) {\r
+               super(stepName);\r
+               this.uuidVocabulary = uuidVocabulary;\r
+               this.description = description;\r
+               this.abbrev = abbrev;\r
+               this.label = label;\r
+               this.isOrdered = isOrdered;\r
+               this.termClass = termClass;\r
+       }\r
+\r
+// ******************************* METHODS *************************************************/\r
+\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException{\r
+               ResultSet rs;\r
+               \r
+               String sqlCheckTermExists = " SELECT count(*) as n FROM TermVocabulary WHERE uuid = '" + uuidVocabulary + "'";\r
+               Long n = (Long)datasource.getSingleValue(sqlCheckTermExists);\r
+               if (n != 0){\r
+                       monitor.warning("Vocabulary already exists: " + label + "(" + uuidVocabulary + ")");\r
+                       return null;\r
+               }\r
+               \r
+               \r
+               //vocId\r
+               Integer vocId;\r
+               String sqlMaxId = " SELECT max(id)+1 as maxId FROM TermVocabulary";\r
+               rs = datasource.executeQuery(sqlMaxId);\r
+               if (rs.next()){\r
+                       vocId = rs.getInt("maxId");\r
+               }else{\r
+                       String warning = "No vocabularies do exist yet. Can't create vocabulary!";\r
+                       monitor.warning(warning);\r
+                       return null;\r
+               }\r
+               \r
+               \r
+               String id = Integer.toString(vocId);\r
+               //FIXME get current time\r
+               String created = "2010-09-16 10:15:00";\r
+               String dtype;\r
+               if (isOrdered){\r
+                       dtype = "OrderedTermVocabulary";\r
+               }else{\r
+                       dtype = "TermVocabulary";\r
+               }\r
+               String titleCache = (StringUtils.isNotBlank(label))? label : ( (StringUtils.isNotBlank(abbrev))? abbrev : description );  \r
+               String protectedTitleCache = getBoolean(false, datasource);\r
+               String termSourceUri = termClass.getCanonicalName();\r
+               String sqlInsertTerm = " INSERT INTO TermVocabulary (DTYPE, id, uuid, created, protectedtitlecache, titleCache, termsourceuri)" +\r
+                               "VALUES ('" + dtype + "', " + id + ", '" + uuidVocabulary + "', '" + created + "', " + protectedTitleCache + ", '" + titleCache + "', '" + termSourceUri + "'" + ")"; \r
+               datasource.executeUpdate(sqlInsertTerm);\r
+               \r
+               //language id\r
+               int langId;\r
+               String uuidLanguage = Language.uuidEnglish.toString();\r
+               String sqlLangId = " SELECT id FROM DefinedTermBase WHERE uuid = '" + uuidLanguage + "'";\r
+               rs = datasource.executeQuery(sqlLangId);\r
+               if (rs.next()){\r
+                       langId = rs.getInt("id");\r
+               }else{\r
+                       String warning = "Term for default language (English) not  does not exist!";\r
+                       monitor.warning(warning);\r
+                       return null;\r
+               }\r
+               \r
+               //representation\r
+               int repId;\r
+               sqlMaxId = " SELECT max(id)+1 as maxId FROM Representation";\r
+               rs = datasource.executeQuery(sqlMaxId);\r
+               if (rs.next()){\r
+                       repId = rs.getInt("maxId");\r
+               }else{\r
+                       String warning = "No representations do exist yet. Can't update terms!";\r
+                       monitor.warning(warning);\r
+                       return null;\r
+               }\r
+               \r
+               UUID uuidRepresentation = UUID.randomUUID();\r
+               String sqlInsertRepresentation = " INSERT INTO Representation (id, created, uuid, text, abbreviatedlabel, label, language_id) " +\r
+                               "VALUES (" + repId + ", '" + created + "', '" + uuidRepresentation + "', '" + description +  "', '" + label +  "',  '" + abbrev +  "', " + langId + ")"; \r
+               \r
+               datasource.executeUpdate(sqlInsertRepresentation);\r
+               \r
+               //Vocabulary_representation\r
+               String sqlInsertMN = "INSERT INTO TermVocabulary_Representation (TermVocabulary_id, representations_id) " + \r
+                               " VALUES ("+ vocId +"," +repId+ " )";           \r
+               \r
+               datasource.executeUpdate(sqlInsertMN);\r
+               \r
+               return vocId;\r
+       }\r
+\r
+\r
+\r
+       private static String makeStepName(String label) {\r
+               String stepName = "Create new vocabulary '"+ label + "'";\r
+               return stepName;\r
+       }\r
+       \r
+}\r
similarity index 84%
rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_24_25.java
rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/SchemaUpdater_24_25.java
index 548f41e910118288fbe9608683116aec503b2ada..d2c99e2cc1914b608ccf0fb5addbbb57b5420408 100644 (file)
@@ -7,13 +7,19 @@
 * 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;\r
+package eu.etaxonomy.cdm.database.update.v24_25;\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.ColumnAdder;\r
+import eu.etaxonomy.cdm.database.update.ISchemaUpdater;\r
+import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;\r
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;\r
+import eu.etaxonomy.cdm.database.update.v25_30.SchemaUpdater_25_30;\r
+\r
 /**\r
  * @author a.mueller\r
  * @date 10.09.2010\r
@@ -45,7 +51,7 @@ public class SchemaUpdater_24_25 extends SchemaUpdaterBase implements ISchemaUpd
         */\r
        @Override\r
        public ISchemaUpdater getNextUpdater() {\r
-               return null;\r
+               return SchemaUpdater_25_30.NewInstance();\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -65,7 +71,7 @@ public class SchemaUpdater_24_25 extends SchemaUpdaterBase implements ISchemaUpd
                \r
                //sortIndex on children in FeatureNode\r
                stepName = "Add sort index on FeatureNode children";\r
-               ColumnAdder step = ColumnAdder.NewIntegerInstance(stepName, "FeatureNode", "sortindex", INCLUDE_AUDIT);\r
+               ColumnAdder step = ColumnAdder.NewIntegerInstance(stepName, "FeatureNode", "sortindex", INCLUDE_AUDIT, false, null);\r
                stepList.add(step);\r
                \r
                //update sortindex on FeatureNode children\r
@@ -78,7 +84,7 @@ public class SchemaUpdater_24_25 extends SchemaUpdaterBase implements ISchemaUpd
                \r
                //add country to gathering event\r
                stepName = "Add country column to gathering event";\r
-               step = ColumnAdder.NewIntegerInstance(stepName, "GatheringEvent", "country_id", INCLUDE_AUDIT);\r
+               step = ColumnAdder.NewIntegerInstance(stepName, "GatheringEvent", "country_id", INCLUDE_AUDIT, false, "DefinedTermBase");\r
                stepList.add(step);\r
 \r
                //add unplaced and excluded to taxon\r
@@ -98,12 +104,6 @@ public class SchemaUpdater_24_25 extends SchemaUpdaterBase implements ISchemaUpd
                step = ColumnAdder.NewStringInstance(stepName, "SpecimenOrObservationBase", "barcode", INCLUDE_AUDIT);\r
                stepList.add(step);\r
 \r
-               \r
-//             //rename taxonomicTree -> classification\r
-//             stepName = "Rename taxonomic tree into classification";\r
-//             TableNameChanger tableChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree", "Classification", INCLUDE_AUDIT);\r
-//             stepList.add(tableChanger);\r
-               \r
                return stepList;\r
        }\r
 }\r
similarity index 92%
rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SortIndexUpdater.java
rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/SortIndexUpdater.java
index 9d3afcb2b79d24bf2518cead1c80c0e6d1a33ff4..0ddca055f00ed24b240fc6f8d44f39a2880d5c80 100644 (file)
@@ -7,7 +7,7 @@
 * 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;\r
+package eu.etaxonomy.cdm.database.update.v24_25;\r
 \r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
@@ -15,8 +15,9 @@ import java.sql.SQLException;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
-import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;\r
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase;\r
 \r
 /**\r
  * @author a.mueller\r
similarity index 85%
rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TermUpdater_24_25.java
rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v24_25/TermUpdater_24_25.java
index 4b0065d284a07f57e8bf1a5da7865dc251fdc466..0a21d70def0ba133b62fd0230ca40b0154d09258 100644 (file)
@@ -7,7 +7,7 @@
 * 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;\r
+package eu.etaxonomy.cdm.database.update.v24_25;\r
 \r
 import java.util.ArrayList;\r
 import java.util.List;\r
@@ -15,6 +15,11 @@ import java.util.UUID;
 \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.SingleTermUpdater;\r
+import eu.etaxonomy.cdm.database.update.TermUpdaterBase;\r
+import eu.etaxonomy.cdm.database.update.v25_30.TermUpdater_25_30;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
@@ -49,8 +54,8 @@ public class TermUpdater_24_25 extends TermUpdaterBase implements ITermUpdater {
         * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#invoke()\r
         */\r
        @Override\r
-       protected List<SingleTermUpdater> getUpdaterList() {\r
-               List<SingleTermUpdater> list = new ArrayList<SingleTermUpdater>();\r
+       protected List<ITermUpdaterStep> getUpdaterList() {\r
+               List<ITermUpdaterStep> list = new ArrayList<ITermUpdaterStep>();\r
                \r
                // comb. illeg.\r
                UUID uuidTerm = UUID.fromString("d901d455-4e01-45cb-b653-01a840b97eed");\r
@@ -101,7 +106,7 @@ public class TermUpdater_24_25 extends TermUpdaterBase implements ITermUpdater {
         */\r
        @Override\r
        public ITermUpdater getNextUpdater() {\r
-               return null;\r
+               return TermUpdater_25_30.NewInstance();\r
        }\r
 \r
        /* (non-Javadoc)\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/FeatureNodeTreeColumnUpdater.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/FeatureNodeTreeColumnUpdater.java
new file mode 100644 (file)
index 0000000..664ebc7
--- /dev/null
@@ -0,0 +1,95 @@
+// $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.v25_30;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\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 FeatureNodeTreeColumnUpdater extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(FeatureNodeTreeColumnUpdater.class);\r
+       \r
+       private String treeTableName;\r
+       private String nodeTableName;\r
+       private boolean includeAudTable;\r
+       \r
+       public static final FeatureNodeTreeColumnUpdater NewInstance(String stepName, boolean includeAudTable){\r
+               return new FeatureNodeTreeColumnUpdater(stepName, includeAudTable);\r
+       }\r
+       \r
+       protected FeatureNodeTreeColumnUpdater(String stepName,  boolean includeAudTable) {\r
+               super(stepName);\r
+               this.treeTableName = "FeatureTree";\r
+               this.nodeTableName = "FeatureNode";\r
+               this.includeAudTable = includeAudTable;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
+        */\r
+       @Override\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+               boolean result = true;\r
+               result &= updateTree(treeTableName, nodeTableName, datasource, monitor);\r
+               if (includeAudTable){\r
+                       String aud = "_AUD";\r
+                       result &= updateTree(treeTableName + aud, nodeTableName + aud, datasource, monitor);\r
+               }\r
+               return (result == true )? 0 : null;\r
+       }\r
+\r
+       private boolean updateTree(String treeTableName, String nodeTableName, ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+               String resulsetQuery = "SELECT id, root_id FROM @treeTableName ORDER BY id";\r
+               resulsetQuery = resulsetQuery.replace("@treeTableName", treeTableName);\r
+\r
+               ResultSet rs = datasource.executeQuery(resulsetQuery);\r
+               while (rs.next()){\r
+                       Integer treeId = rs.getInt("id");\r
+                       Integer rootId = rs.getInt("root_id");\r
+                       String updateQuery = "UPDATE @nodeTableName SET featuretree_id = @treeId WHERE id = @rootId";\r
+                       updateQuery = updateQuery.replace("@nodeTableName", nodeTableName);\r
+                       updateQuery = updateQuery.replace("@treeId", treeId.toString());\r
+                       updateQuery = updateQuery.replace("@rootId", rootId.toString());\r
+                       datasource.executeUpdate(updateQuery);\r
+               }       \r
+               \r
+               String countQuery = "SELECT count(*) FROM @nodeTableName WHERE featuretree_id IS NULL";\r
+               countQuery = countQuery.replace("@nodeTableName", nodeTableName);\r
+               Long countMissingTrees = (Long)datasource.getSingleValue(countQuery);\r
+               while (countMissingTrees > 0){\r
+                       String updateQuery = "UPDATE @nodeTableName AS child INNER JOIN @nodeTableName AS parent ON child.parent_fk = parent.id " +\r
+                                       "SET child.featuretree_id = parent.featuretree_id WHERE child.featuretree_id IS NULL";\r
+                       updateQuery = updateQuery.replace("@nodeTableName", nodeTableName);\r
+//                     updateQuery = updateQuery.replace("@treeId", treeId.toString());\r
+                               \r
+                       datasource.executeUpdate(updateQuery);\r
+                       Long oldCountMissingTrees = countMissingTrees;\r
+                       countMissingTrees = (Long)datasource.getSingleValue(countQuery);\r
+                       if (oldCountMissingTrees.equals(countMissingTrees)){\r
+                               throw new RuntimeException("No row updated in FeatureNodeTreeColumnUpdater. Throw exception to avoid infinite loop");\r
+                       }\r
+               }\r
+               \r
+               return true;\r
+       }\r
+\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/PolytomousKeyDataMover.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/PolytomousKeyDataMover.java
new file mode 100644 (file)
index 0000000..96ebc85
--- /dev/null
@@ -0,0 +1,351 @@
+// $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.v25_30;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\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 PolytomousKeyDataMover extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(PolytomousKeyDataMover.class);\r
+       \r
+       private String featureTreeTableName;\r
+       private String featureNodeTableName;\r
+       private String polytomousKeyTableName;\r
+       private String polytomousKeyNodeTableName;\r
+       private boolean includeAudTable;\r
+       \r
+       public static final PolytomousKeyDataMover NewInstance(String stepName, boolean includeAudTable){\r
+               return new PolytomousKeyDataMover(stepName, includeAudTable);\r
+       }\r
+       \r
+       protected PolytomousKeyDataMover(String stepName,  boolean includeAudTable) {\r
+               super(stepName);\r
+               this.featureTreeTableName = "FeatureTree";\r
+               this.featureNodeTableName = "FeatureNode";\r
+               this.polytomousKeyTableName = "PolytomousKey";\r
+               this.polytomousKeyNodeTableName = "PolytomousKeyNode";\r
+               this.includeAudTable = includeAudTable;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)\r
+        */\r
+       @Override\r
+       public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor) throws SQLException {\r
+               boolean result = true;\r
+               result &= movePolytomousKeys(featureTreeTableName, featureNodeTableName, polytomousKeyTableName, polytomousKeyNodeTableName, datasource, monitor, false);\r
+               if (includeAudTable){\r
+                       String aud = "_AUD";\r
+                       result &= movePolytomousKeys(featureTreeTableName + aud, featureNodeTableName + aud, polytomousKeyTableName + aud, polytomousKeyNodeTableName + aud, datasource, monitor, true);\r
+               }\r
+               return (result == true )? 0 : null;\r
+       }\r
+\r
+       private boolean movePolytomousKeys(String featureTreeTableName, String featureNodeTableName, String polytomousKeyTableName, String polytomousKeyNodeTableName, ICdmDataSource datasource, IProgressMonitor monitor, boolean isAudit) throws SQLException {\r
+               movePolytomousKey(featureTreeTableName, polytomousKeyTableName, datasource, isAudit);\r
+               movePolytomousKeyMns(featureTreeTableName, polytomousKeyTableName, datasource, isAudit);\r
+               movePolytomousKeyNodes(featureTreeTableName, featureNodeTableName, polytomousKeyNodeTableName, datasource, isAudit);\r
+\r
+               moveQuestions(featureNodeTableName, polytomousKeyNodeTableName, datasource, isAudit);\r
+               \r
+               deleteOldData(datasource, isAudit);\r
+               return true;\r
+       }\r
+\r
+\r
+       private void moveQuestions(String featureNodeTableName, String polytomousKeyNodeTableName, ICdmDataSource datasource, boolean isAudit) throws SQLException {\r
+               String aud = "";\r
+               String audValue = "";\r
+               String audParam = "";\r
+               if (isAudit){\r
+                       aud = "_AUD";\r
+                       audValue = ",@REV, @revtype";\r
+                       audParam = ", REV, revtype";\r
+               }\r
+               //For each Question \r
+               String questionSql = " SELECT * " + \r
+                       " FROM FeatureNode_Representation@_aud mn INNER JOIN Representation@_aud r ON mn.questions_id = r.id ";\r
+               questionSql = questionSql.replace("@_aud", aud);\r
+               ResultSet rs = datasource.executeQuery(questionSql);\r
+               while (rs.next()){\r
+                       \r
+                       //Created KeyStatement\r
+                       String updateQuery = " INSERT INTO KeyStatement@_aud (id, created, updated, createdby_id, updatedby_id @audParam)" + \r
+                               " VALUES (@id, @createdWhen, @updatedWhen, @createdby_id, @updatedby_id @audValue)";\r
+                       updateQuery = updateQuery.replace("@audValue", audValue);\r
+                       updateQuery = updateQuery.replace("@id", rs.getObject("FeatureNode_id").toString()); //use feature node id for key statement id \r
+                       updateQuery = updateQuery.replace("@createdWhen", nullSafeString(rs.getString("created")));\r
+                       updateQuery = updateQuery.replace("@updatedWhen", nullSafeString((rs.getString("updated"))));\r
+                       updateQuery = updateQuery.replace("@createdby_id", nullSafe(rs.getObject("createdby_id")));\r
+                       updateQuery = updateQuery.replace("@updatedby_id", nullSafe(rs.getObject("updatedby_id")));\r
+                       if (isAudit){\r
+                               updateQuery = updateQuery.replace("@REV", nullSafe(rs.getObject("r.REV")));\r
+                               updateQuery = updateQuery.replace("@revtype", nullSafe(rs.getObject("r.revtype")));\r
+                       }\r
+                       updateQuery = updateQuery.replace("@_aud", aud);\r
+                       updateQuery = updateQuery.replace("@audParam", audParam);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       \r
+                       //create entry in Language String\r
+                       updateQuery = " INSERT INTO LanguageString@_aud (id, created, uuid, updated, text, createdby_id, updatedby_id, language_id @audParam) " + \r
+                               " VALUES (@id, @createdWhen, @uuid, @updatedWhen, @text, @createdby_id, @updatedby_id, @language_id @audValue)";\r
+                       updateQuery = updateQuery.replace("@audValue", audValue);\r
+                       updateQuery = updateQuery.replace("@id", rs.getObject("id").toString());\r
+                       updateQuery = updateQuery.replace("@createdWhen", nullSafeString(rs.getString("created")));\r
+                       updateQuery = updateQuery.replace("@updatedWhen", nullSafeString(rs.getString("updated")));\r
+                       updateQuery = updateQuery.replace("@createdby_id", nullSafe(rs.getObject("createdby_id")));\r
+                       updateQuery = updateQuery.replace("@updatedby_id", nullSafe(rs.getObject("updatedby_id")));\r
+                       updateQuery = updateQuery.replace("@uuid", nullSafeString(rs.getString("uuid")));\r
+                       updateQuery = updateQuery.replace("@text", nullSafeString(rs.getString("text")));\r
+                       updateQuery = updateQuery.replace("@language_id", nullSafe(rs.getObject("language_id")));\r
+                       if (isAudit){\r
+                               updateQuery = updateQuery.replace("@REV", nullSafe(rs.getObject("r.REV")));\r
+                               updateQuery = updateQuery.replace("@revtype", nullSafe(rs.getObject("r.revtype")));\r
+                       }\r
+                       updateQuery = updateQuery.replace("@_aud", aud);\r
+                       updateQuery = updateQuery.replace("@audParam", audParam);\r
+                       datasource.executeUpdate(updateQuery);\r
+                                       \r
+                       //create entry in KeyStatement_LanguageString\r
+                       updateQuery = " INSERT INTO KeyStatement_LanguageString@_aud (KeyStatement_id, label_id, label_mapkey_id @audParam) " + \r
+                               " VALUES (@keystatement_id, @languagestring_id, @language_id @audValue) ";\r
+                       updateQuery = updateQuery.replace("@audValue", audValue);\r
+                       updateQuery = updateQuery.replace("@keystatement_id", nullSafe(rs.getObject("FeatureNode_id")));\r
+                       updateQuery = updateQuery.replace("@languagestring_id", nullSafe(rs.getObject("id")));\r
+                       updateQuery = updateQuery.replace("@language_id", nullSafe(rs.getObject("language_id")));\r
+                       if (isAudit){\r
+                               updateQuery = updateQuery.replace("@REV", nullSafe(rs.getObject("r.REV")));\r
+                               updateQuery = updateQuery.replace("@revtype", nullSafe(rs.getObject("r.revtype")));\r
+                       }\r
+                       updateQuery = updateQuery.replace("@_aud", aud);\r
+                       updateQuery = updateQuery.replace("@audParam", audParam);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       \r
+                       //link polytomouskeynode statement to KeyStatement\r
+                       updateQuery = " UPDATE PolytomousKeyNode@_aud " + \r
+                                       " SET statement_id = id " + \r
+                                       " WHERE id = @id ";\r
+                       updateQuery = updateQuery.replace("@id", nullSafe(rs.getObject("FeatureNode_id")));\r
+                       updateQuery = updateQuery.replace("@_aud", aud);\r
+                       datasource.executeUpdate(updateQuery);\r
+                       \r
+               }\r
+               \r
+                       \r
+               \r
+               \r
+//             // move representations\r
+//             String languageStringTable = "LanguageString" +  (isAudit ? "_AUD" : "");\r
+//             String representationTable = "Representation" + (isAudit ? "_AUD" : "");\r
+//             String oldMnTable = "featuretree_representation" + (isAudit ? "_AUD" : "");\r
+//             String newMnTable = "KeyStatement_LanguageString" + (isAudit ? "_AUD" : "");\r
+//             String keyStatementTable = "KeyStatement" + (isAudit ? "_AUD" : "");\r
+//             String audit = "";\r
+//             String rAudit = "";\r
+//             if (isAudit){\r
+//                     audit = ", REV, revtype";\r
+//                     rAudit = ", r.REV, r.revtype";\r
+//             }\r
+//             \r
+//             \r
+//             String updateQuery = "INSERT INTO @languageStringTable (id, created, uuid, updated, text, createdby_id, updatedby_id, language_id @audit) " + \r
+//                             " SELECT id, created, uuid, updated, text, createdby_id, updatedby_id, language_id @rAudit " +\r
+//                             " FROM @representationTable r INNER JOIN @oldMnTable fr ON fr.representations_id = r.id " + \r
+//                             " WHERE (1=1) ";\r
+//             updateQuery = updateQuery.replace("@languageStringTable", languageStringTable);\r
+//             updateQuery = updateQuery.replace("@representationTable", representationTable);\r
+//             updateQuery = updateQuery.replace("@oldMnTable", oldMnTable);\r
+//             updateQuery = updateQuery.replace("@audit", audit);\r
+//             updateQuery = updateQuery.replace("@nAudit", rAudit);\r
+//             System.out.println(updateQuery);\r
+//             datasource.executeUpdate(updateQuery);\r
+//             \r
+//             //key statement\r
+//             audit = "";\r
+//             rAudit = "";\r
+//             updateQuery = "INSERT INTO @keyStatementTable (id, created, uuid, updated, createdby_id, updatedby_id @audit) " + \r
+//                     " SELECT r.id, r.created, r.uuid, r.updated, r.createdby_id, r.updatedby_id @rAudit " + \r
+//                     " FROM @oldMnTable mn INNER JOIN representationTable r ";\r
+//             updateQuery = updateQuery.replace("@keyStatementTable", keyStatementTable);\r
+//             updateQuery = updateQuery.replace("@oldMnTable", oldMnTable);\r
+//             updateQuery = updateQuery.replace("@audit", audit);\r
+//             updateQuery = updateQuery.replace("@rAudit", rAudit);\r
+//             \r
+//             System.out.println(updateQuery);\r
+//             datasource.executeUpdate(updateQuery);\r
+//             \r
+//             \r
+//             //move relation\r
+//             audit = "";\r
+//             updateQuery = "INSERT INTO @newMnTable (KeyStatement_id, label_id, label_mapkey_id @audit) " + \r
+//                     " SELECT FeatureNode_id, questions_id @audit, language_id " +\r
+//                     " FROM @oldMnTable fr INNER JOIN @representationTable r " + \r
+//                     " WHERE (1=1) ";\r
+//             updateQuery = updateQuery.replace("@audit", audit);\r
+//             updateQuery = updateQuery.replace("@representationTable", representationTable);\r
+//             updateQuery = updateQuery.replace("@oldMnTable", oldMnTable);\r
+//             updateQuery = updateQuery.replace("@newMnTable", newMnTable);\r
+//             System.out.println(updateQuery);\r
+//             datasource.executeUpdate(updateQuery);\r
+//             \r
+//             //link polytoumous key node statement to keyStatement\r
+//             updateQuery = "UPDATE @polytomousKeyNodeTable pkn" + \r
+//                     " SET statement_id = (SELECT r.id FROM @representationTable r WHERE r.id = pkn.statement_id) " + \r
+//                     " WHERE pkn.id ";\r
+               \r
+       }\r
+       \r
+       private String nullSafeString(Object object){\r
+               if (object == null){\r
+                       return "NULL";\r
+               }else{\r
+                       String result = object.toString().replace("'", "''");\r
+                       return "'" + result + "'";\r
+               }\r
+       }\r
+\r
+       private String nullSafe(Object object) {\r
+               if (object == null){\r
+                       return "NULL";\r
+               }else{\r
+                       return object.toString();\r
+               }\r
+       }\r
+\r
+       private void deleteOldData(ICdmDataSource datasource, boolean isAudit) {\r
+               String updateQuery; \r
+               String featureNodeTable = "FeatureNode" +  (isAudit ? "_AUD" : "");\r
+               String featureTreeTable = "FeatureTree" + (isAudit ? "_AUD" : "");\r
+               String representationTable = "Representation" + (isAudit ? "_AUD" : "");\r
+               String oldMnTable = "FeatureNode_Representation" + (isAudit ? "_AUD" : "");\r
+               \r
+//             statements\r
+               updateQuery = " DELETE FROM @representationTable WHERE id IN (SELECT questions_id FROM @oldMnTable)";\r
+               updateQuery = updateQuery.replace("@representationTable", representationTable);\r
+               updateQuery = updateQuery.replace("@oldMnTable", oldMnTable);\r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+               \r
+//             feature nodes\r
+               updateQuery = " DELETE FROM @featureNodeTable WHERE featuretree_id IN (SELECT t.id FROM @featureTreeTable t WHERE t.DTYPE = 'PolytomousKey' )";\r
+               updateQuery = updateQuery.replace("@featureNodeTable", featureNodeTable);\r
+               updateQuery = updateQuery.replace("@featureTreeTable", featureTreeTable);\r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+               \r
+               //trees\r
+               updateQuery = " DELETE FROM @featureTreeTable WHERE DTYPE = 'PolytomousKey' " ;\r
+               updateQuery = updateQuery.replace("@featureTreeTable", featureTreeTable);\r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+               \r
+               \r
+       }\r
+\r
+       private void movePolytomousKeyNodes(String featureTreeTableName,\r
+                       String featureNodeTableName, String polytomousKeyNodeTableName,\r
+                       ICdmDataSource datasource, boolean isAudit) {\r
+               String updateQuery;\r
+               \r
+               //PolytomousKey node\r
+               updateQuery = " INSERT INTO @polytomousKeyNodeTableName(id, created, uuid, updated, sortindex, createdby_id, updatedby_id, feature_id, parent_id, taxon_id, key_id @audit) " + \r
+                               " SELECT n.id, n.created, n.uuid, n.updated, n.sortindex, n.createdby_id, n.updatedby_id, n.feature_id, n.parent_fk, n.taxon_id, n.featuretree_id @nAudit" + \r
+                               " FROM @featureNodeTableName n INNER JOIN @featureTreeTableName t ON n.featuretree_id = t.id" +\r
+                               " WHERE t.DTYPE = 'PolytomousKey'";\r
+               updateQuery = updateQuery.replace("@polytomousKeyNodeTableName", polytomousKeyNodeTableName);\r
+               updateQuery = updateQuery.replace("@featureNodeTableName", featureNodeTableName);\r
+               updateQuery = updateQuery.replace("@featureTreeTableName", featureTreeTableName);\r
+               \r
+               String audit = "";\r
+               String nAudit = "";\r
+               if (isAudit){\r
+                       audit = ", REV, revtype";\r
+                       nAudit = ", n.REV, n.revtype";\r
+               }\r
+               updateQuery = updateQuery.replace("@audit", audit);\r
+               updateQuery = updateQuery.replace("@nAudit", nAudit);\r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+       }\r
+\r
+       private void movePolytomousKeyMns(String featureTreeTableName, String polytomousKeyTableName, ICdmDataSource datasource, boolean isAudit) {\r
+               //PolytomousKey MN update\r
+               updateMnTables(featureTreeTableName, polytomousKeyTableName, "Annotation", null, datasource, isAudit, false);\r
+               updateMnTables(featureTreeTableName, polytomousKeyTableName, "Credit", null, datasource, isAudit, true);\r
+               updateMnTables(featureTreeTableName, polytomousKeyTableName, "Extension", null, datasource, isAudit, false);\r
+               updateMnTables(featureTreeTableName, polytomousKeyTableName, "Marker", null, datasource, isAudit, false);\r
+               updateMnTables(featureTreeTableName, polytomousKeyTableName, "OriginalSourceBase", "Sources", datasource, isAudit, false);\r
+               updateMnTables(featureTreeTableName, polytomousKeyTableName, "Rights", "Rights", datasource, isAudit, false);\r
+       }\r
+\r
+       private void movePolytomousKey(String featureTreeTableName,\r
+                       String polytomousKeyTableName, ICdmDataSource datasource,\r
+                       boolean isAudit) {\r
+               //PolytomousKey\r
+               //TODO monitor polytomous keys with uri for data loss\r
+               \r
+               String updateQuery = " INSERT INTO @polytomousKeyTableName(id, created, uuid, updated, lsid_authority, lsid_lsid, lsid_namespace, lsid_object, lsid_revision, protectedtitlecache, titleCache, createdby_id, updatedby_id, root_id @audit) " + \r
+                                       " SELECT id, created, uuid, updated, lsid_authority, lsid_lsid, lsid_namespace, lsid_object, lsid_revision, protectedtitlecache, titleCache, createdby_id, updatedby_id, root_id @audit" + \r
+                                       " FROM @featureTreeTableName WHERE DTYPE = 'PolytomousKey'";\r
+               updateQuery = updateQuery.replace("@polytomousKeyTableName", polytomousKeyTableName);\r
+               updateQuery = updateQuery.replace("@featureTreeTableName", featureTreeTableName);\r
+               String audit = "";\r
+               if (isAudit){\r
+                       audit = ", REV, revtype";\r
+               }\r
+               updateQuery = updateQuery.replace("@audit", audit);\r
+               datasource.executeUpdate(updateQuery);\r
+       }\r
+\r
+       private void updateMnTables(String featureTreeTableName, String polytomousKeyTableName, String attributeName, String attributePluralString, ICdmDataSource datasource, boolean isAudit, boolean hasSortIndex) {\r
+               String updateQuery;\r
+               String audit;\r
+               if (isAudit){\r
+                       featureTreeTableName = featureTreeTableName.replace("_AUD", "");\r
+                       polytomousKeyTableName = polytomousKeyTableName.replace("_AUD", "");\r
+               }\r
+               String newMnTable = polytomousKeyTableName + "_" + attributeName + (isAudit? "_AUD" : "");\r
+               String oldMnTable = featureTreeTableName + "_" + attributeName + (isAudit? "_AUD" : "");\r
+               String pluralIdAttribute = ((attributePluralString == null) ? attributeName + "s" : attributePluralString)  + "_id";\r
+               String sortIndex = (hasSortIndex ? ", sortIndex" : "");\r
+               updateQuery = " INSERT INTO @newMnTable(PolytomousKey_id, @pluralIdAttribute @sortIndex @audit) " + \r
+                                       " SELECT FeatureTree_id, @pluralIdAttribute @sortIndex @audit" + \r
+                                       " FROM @oldMnTable mn INNER JOIN @featureTreeTableName pk ON mn.FeatureTree_id = pk.id " +\r
+                                       " WHERE pk.DTYPE = 'PolytomousKey'";\r
+               updateQuery = updateQuery.replace("@polytomousKeyTableName", polytomousKeyTableName);\r
+               updateQuery = updateQuery.replace("@featureTreeTableName", featureTreeTableName);\r
+               updateQuery = updateQuery.replace("@newMnTable", newMnTable);\r
+               updateQuery = updateQuery.replace("@oldMnTable", oldMnTable);\r
+               updateQuery = updateQuery.replace("@pluralIdAttribute", pluralIdAttribute);\r
+               updateQuery = updateQuery.replace("@sortIndex", sortIndex);\r
+               audit = "";\r
+               if (isAudit){\r
+                       audit = ", REV, revtype";\r
+               }\r
+               updateQuery = updateQuery.replace("@audit", audit);\r
+               logger.debug(updateQuery);\r
+               datasource.executeUpdate(updateQuery);\r
+       }\r
+\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SchemaUpdater_25_30.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SchemaUpdater_25_30.java
new file mode 100644 (file)
index 0000000..8e23d38
--- /dev/null
@@ -0,0 +1,328 @@
+// $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.v25_30;
+
+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.ISchemaUpdater;
+import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
+import eu.etaxonomy.cdm.database.update.MapTableCreator;
+import eu.etaxonomy.cdm.database.update.MnTableCreator;
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
+import eu.etaxonomy.cdm.database.update.TableCreator;
+import eu.etaxonomy.cdm.database.update.TableDroper;
+import eu.etaxonomy.cdm.database.update.TableNameChanger;
+import eu.etaxonomy.cdm.database.update.v24_25.SchemaUpdater_24_25;
+
+
+/**
+ * @author a.mueller
+ * @created Nov 08, 2010
+ * @version 1.0
+ */
+public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
+
+
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(SchemaUpdater_25_30.class);
+       private static final String startSchemaVersion = "2.5.0.0.201009211255";
+       private static final String endSchemaVersion = "3.0.0.0.201011090000";
+       
+// ********************** FACTORY METHOD *******************************************
+       
+       public static SchemaUpdater_25_30 NewInstance(){
+               return new SchemaUpdater_25_30();
+       }
+       
+       /**
+        * @param startSchemaVersion
+        * @param endSchemaVersion
+        */
+       protected SchemaUpdater_25_30() {
+               super(startSchemaVersion, endSchemaVersion);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getUpdaterList()
+        */
+       @Override
+       protected List<ISchemaUpdaterStep> getUpdaterList() {
+               
+               List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
+               String stepName;
+               
+               //add feature tree attribute to feature node table
+               stepName = "Add feature tree addtribue to feature node";
+               //TODO defaultValue & not null
+               ColumnAdder featureTreeColAdder = ColumnAdder.NewIntegerInstance(stepName, "FeatureNode", "FeatureTree_id", INCLUDE_AUDIT, false, "FeatureTree");
+               stepList.add(featureTreeColAdder);
+               
+               //compute feature tree column
+               stepName = "Update feature node tree column";
+               FeatureNodeTreeColumnUpdater fntcu = FeatureNodeTreeColumnUpdater.NewInstance(stepName, INCLUDE_AUDIT);
+               stepList.add(fntcu);
+               
+               //Key statement
+               stepName = "Create KeyStatement tables";
+               TableCreator tableCreator = TableCreator.NewInstance(stepName, "KeyStatement", new String[]{}, new String[]{}, new String[]{}, INCLUDE_AUDIT, INCLUDE_CDM_BASE);
+               stepList.add(tableCreator);
+               
+               //KeyStatement_LanguageString
+               stepName = "Create KeyStatement label";
+               tableCreator = MapTableCreator.NewMapTableInstance(stepName,  "KeyStatement", null,  "LanguageString", "label", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
+               stepList.add(tableCreator);
+
+               
+               //PolytomousKey
+               stepName = "Create PolytomousKey tables";
+               tableCreator = TableCreator.NewIdentifiableInstance(stepName, "PolytomousKey", new String[]{"root_id"}, new String[]{"int"}, new String[]{"PolytomousKeyNode"}, INCLUDE_AUDIT);
+               stepList.add(tableCreator);
+               
+               //create table PolytomousKeyNode_PolytomousKeyNode_AUD (REV integer not null, parent_id integer not null, id integer not null, sortIndex integer not null, revtype tinyint, primary key (REV, parent_id, id, sortIndex)) ENGINE=MYISAM DEFAULT CHARSET=utf8
+               tableCreator = TableCreator.NewInstance(stepName, "PolytomousKeyNode_PolytomousKeyNode_AUD", new String[]{"REV", "parent_id", "id", "sortIndex", "revtype"}, new String[]{"int","int","int","int","tinyint"}, new String[]{null, "PolytomousKeyNode", null, null, null},! INCLUDE_AUDIT, ! INCLUDE_CDM_BASE);
+               tableCreator.setPrimaryKeyParams("REV, parent_id, id, sortIndex", null);
+               tableCreator.setUniqueParams(null, null);
+               stepList.add(tableCreator);
+               
+               //covered taxa
+               stepName= "Add polytomous key covered taxa";
+               tableCreator = MnTableCreator.NewMnInstance(stepName, "PolytomousKey", null, "TaxonBase", "coveredtaxa", SchemaUpdaterBase.INCLUDE_AUDIT, false, true);
+               stepList.add(tableCreator);
+
+               //Polytomous key node
+               stepName = "Create PolytomousKeyNode tables";
+               tableCreator = TableCreator.NewInstance(stepName, "PolytomousKeyNode", new String[]{"nodeNumber", "sortindex", "key_id", "othernode_id", "question_id", "statement_id", "feature_id", "subkey_id" , "taxon_id", "parent_id"}, new String[]{"int", "int", "int", "int", "int","int", "int", "int", "int", "int"}, new String[]{null, null, "PolytomousKey", "PolytomousKeyNode", "KeyStatement", "KeyStatement", "DefinedTermBase", "PolytomousKey" , "TaxonBase", "PolytomousKeyNode"}, INCLUDE_AUDIT, INCLUDE_CDM_BASE);
+               stepList.add(tableCreator);
+
+               //modifying text
+               stepName = "Create PolytomousKeyNode modifying text";
+               tableCreator = MapTableCreator.NewMapTableInstance(stepName,  "PolytomousKeyNode", null,  "LanguageString", "modifyingtext", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
+               stepList.add(tableCreator);
+               
+               //rename named area featureTree_id
+               stepName = "Rename polytomouskey_namedarea.featureTree_id -> polytomouskey_id";
+               ColumnNameChanger colChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_NamedArea", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
+               stepList.add(colChanger);
+               
+               //rename polytomouskey_scope featureTree_id
+               stepName = "Rename polytomouskey_scope.featureTree_id -> polytomouskey_id";
+               colChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Scope", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
+               stepList.add(colChanger);
+
+               //move PolytomousKey data to new tables
+               stepName = "Move polytomous key data from feature tree to polytomous key";
+               PolytomousKeyDataMover dataMover = PolytomousKeyDataMover.NewInstance(stepName, INCLUDE_AUDIT);
+               stepList.add(dataMover);
+               
+               //remove DTYPE from feature node
+               stepName = "Remove feature tree DTYPE column";
+               ColumnRemover colRemover = ColumnRemover.NewInstance(stepName, "FeatureTree", "DTYPE", INCLUDE_AUDIT);
+               stepList.add(colRemover);
+               
+               //remove feature node taxon column
+               stepName = "Remove feature node taxon column";
+               colRemover = ColumnRemover.NewInstance(stepName, "FeatureNode", "taxon_id", INCLUDE_AUDIT);
+               stepList.add(colRemover);
+
+               //Remove featureNode_representation
+               stepName = "Remove FeatureNode_Representation MN";
+               TableDroper tableDropper = TableDroper.NewInstance(stepName, "FeatureNode_Representation", INCLUDE_AUDIT);
+               stepList.add(tableDropper);
+               
+               
+               //add exsiccatum
+               stepName = "Add exsiccatum to specimen";
+               ColumnAdder exsiccatumAdder = ColumnAdder.NewStringInstance(stepName, "SpecimenOrObservationBase", "exsiccatum", INCLUDE_AUDIT);
+               stepList.add(exsiccatumAdder);
+               
+               //add primary collector
+               stepName = "Add primary collector to field observation";
+               ColumnAdder primaryCollectorAdder = ColumnAdder.NewIntegerInstance(stepName, "SpecimenOrObservationBase", "primaryCollector_id", INCLUDE_AUDIT, false, "AgentBase");
+               stepList.add(primaryCollectorAdder);
+
+               
+               //taxonomic tree -> classification
+               stepName = "Rename taxonomic tree to classification";
+               TableNameChanger tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree", "Classification", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+               
+               //TaxonomicTree_Annotation -> classification_Annotation
+               stepName = "Rename TaxonomicTree_Annotation to Classification_Annotation";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Annotation", "Classification_Annotation", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+               
+               stepName = "Rename taxonomicTree_id column in Classification_Annotation";
+               ColumnNameChanger columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Annotation", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+               
+               
+               //TaxonomicTree_Credit -> classification_Credit
+               stepName = "Rename TaxonomicTree_Credit to Classification_Credit";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Credit", "Classification_Credit", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+
+               stepName = "Rename taxonomicTree_id column in Classification_Credit";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Credit", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+               
+               
+               //TaxonomicTree_Extension -> classification_Extension
+               stepName = "Rename TaxonomicTree_Extension to Classification_Extension";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Extension", "Classification_Extension", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+
+               stepName = "Rename taxonomicTree_id column in Classification_Extension";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Extension", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               
+               //TaxonomicTree_Marker -> classification_Marker
+               stepName = "Rename TaxonomicTree_Marker to Classification_Marker";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Marker", "Classification_Marker", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+
+               stepName = "Rename taxonomicTree_id column in Classification_Marker";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Marker", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               
+               //TaxonomicTree_OriginalSourceBase -> classification_OriginalSourceBase
+               stepName = "Rename TaxonomicTree_OriginalSourceBase to Classification_OriginalSourceBase";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_OriginalSourceBase", "Classification_OriginalSourceBase", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+
+               stepName = "Rename taxonomicTree_id column in Classification_OriginalSourceBase";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_OriginalSourceBase", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               
+               //TaxonomicTree_Rights -> classification_Rights
+               stepName = "Rename TaxonomicTree_Rights to Classification_Rights";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Rights", "Classification_Rights", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+
+               stepName = "Rename taxonomicTree_id column in Classification_Rights";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Rights", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               
+               //TaxonomicTree_TaxonNode -> classification_TaxonNode
+               stepName = "Rename TaxonomicTree_TaxonNode to Classification_TaxonNode";
+               tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_TaxonNode", "Classification_TaxonNode", INCLUDE_AUDIT);
+               stepList.add(tableNameChanger);
+
+               stepName = "Rename taxonomicTree_id column in Classification_TaxonNode";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_TaxonNode", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxonomictree column in TaxonNode
+               stepName = "Rename taxonomicTree_id column in TaxonNode";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "TaxonNode", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename description_id column in SpecimenOrObservationBase_LanguageString
+               stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase_LanguageString", "description_id", "definition_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename description_mapkey_id column in SpecimenOrObservationBase_LanguageString
+               stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase_LanguageString", "description_mapkey_id", "definition_mapkey_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+               
+               //Rename derivationevent_id column in SpecimenOrObservationBase
+               stepName = "Rename derivationevent_id column in SpecimenOrObservationBase";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase", "derivationevent_id", "derivedfrom_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxonName_fk column in TaxonBase
+               stepName = "Rename taxonName_fk column in TaxonBase";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "TaxonBase", "taxonName_fk", "name_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxonName_fk column in DescriptionBase
+               stepName = "Rename taxonName_fk column in DescriptionBase";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "DescriptionBase", "taxonName_fk", "taxonName_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxon_fk column in DescriptionBase
+               stepName = "Rename taxon_fk column in DescriptionBase";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "DescriptionBase", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename parent_fk column in FeatureNode
+               stepName = "Rename parent_fk column in FeatureNode";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "FeatureNode", "parent_fk", "parent_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename polytomousKey_fk column in PolytomousKey_Taxon
+               stepName = "Rename polytomousKey_fk column in PolytomousKey_Taxon";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Taxon", "polytomousKey_fk", "polytomousKey_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxon_fk column in PolytomousKey_Taxon
+               stepName = "Rename taxon_fk column in PolytomousKey_Taxon";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+
+               //Rename mediaKey_fk column in MediaKey_Taxon
+               stepName = "Rename mediaKey_fk column in MediaKey_Taxon";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MediaKey_Taxon", "mediaKey_fk", "mediaKey_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxon_fk column in MediaKey_Taxon
+               stepName = "Rename taxon_fk column in MediaKey_Taxon";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MediaKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+               
+
+               //Rename multiAccessKey_fk column in MultiAccessKey_Taxon
+               stepName = "Rename multiAccessKey_fk column in MultiAccessKey_Taxon";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MultiAccessKey_Taxon", "multiAccessKey_fk", "multiAccessKey_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+
+               //Rename taxon_fk column in MultiAccessKey_Taxon
+               stepName = "Rename taxon_fk column in MultiAccessKey_Taxon";
+               columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MultiAccessKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
+               stepList.add(columnNameChanger);
+               
+               //add the table hibernate_sequences
+               stepName = "Add the table hibernate_sequences to store the table specific sequences in";
+               SequenceTableCreator step = SequenceTableCreator.NewInstance(stepName);
+               stepList.add(step);
+               
+               return stepList;
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getNextUpdater()
+        */
+       @Override
+       public ISchemaUpdater getNextUpdater() {
+               return null;
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getPreviousUpdater()
+        */
+       @Override
+       public ISchemaUpdater getPreviousUpdater() {
+               return SchemaUpdater_24_25.NewInstance();
+       }
+
+}
similarity index 97%
rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SequenceTableCreator.java
rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SequenceTableCreator.java
index fd043dc0b220ccc2f9fcf99f27f49fbebbe9059f..baf67e5372d961d9a142b9a662aa8cefa5ffae22 100644 (file)
@@ -8,7 +8,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
-package eu.etaxonomy.cdm.database.update;
+package eu.etaxonomy.cdm.database.update.v25_30;
 
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
@@ -21,6 +21,7 @@ import com.mysql.jdbc.exceptions.MySQLSyntaxErrorException;
 import eu.etaxonomy.cdm.common.IProgressMonitor;
 import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase;
 
 /**
  * Creates the table needed by the {@link org.hibernate.id.enhanced.TableGenerator}
@@ -90,7 +91,7 @@ public class SequenceTableCreator extends SchemaUpdaterStepBase {
                                "  `" + SEGMENT_COLUMN_NAME + "` varchar(255) NOT NULL," +
                                "  `" + VALUE_COLUMN_NAME + "` bigint(20) default NULL," +
                                "  PRIMARY KEY  (`" + SEGMENT_COLUMN_NAME + "`)" +
-                               ") ENGINE=MyISAM DEFAULT CHARSET=utf8;";
+                               ");";
                }else{
                        throw new RuntimeException("Database type " + datasource.getDatabaseType() + " is currently not supported by the updater");
                }
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/TermUpdater_25_30.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/TermUpdater_25_30.java
new file mode 100644 (file)
index 0000000..9cc7bfb
--- /dev/null
@@ -0,0 +1,137 @@
+// $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.v25_30;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.UUID;\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.SingleTermUpdater;\r
+import eu.etaxonomy.cdm.database.update.TermUpdaterBase;\r
+import eu.etaxonomy.cdm.database.update.VocabularyCreator;\r
+import eu.etaxonomy.cdm.database.update.v24_25.TermUpdater_24_25;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 10.09.2010\r
+ *\r
+ */\r
+public class TermUpdater_25_30 extends TermUpdaterBase implements ITermUpdater {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(TermUpdater_25_30.class);\r
+       \r
+       public static final String startTermVersion = "2.5.0.0.201009211255";\r
+       private static final String endTermVersion = "3.0.0.0.201011170000";\r
+       \r
+// *************************** FACTORY **************************************/\r
+       \r
+       public static TermUpdater_25_30 NewInstance(){\r
+               return new TermUpdater_25_30(startTermVersion, endTermVersion);\r
+       }\r
+       \r
+// *************************** CONSTRUCTOR ***********************************/        \r
+\r
+       protected TermUpdater_25_30(String startTermVersion, String endTermVersion) {\r
+               super(startTermVersion, endTermVersion);\r
+       }\r
+       \r
+// \r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#invoke()\r
+        */\r
+       @Override\r
+       protected List<ITermUpdaterStep> getUpdaterList() {\r
+               List<ITermUpdaterStep> list = new ArrayList<ITermUpdaterStep>();\r
+\r
+               // cf.\r
+               UUID uuidTerm = DeterminationModifier.uuidConfer;\r
+               String description = "Confer";\r
+               String label = "confer";\r
+               String abbrev = "cf.";\r
+               String dtype = DeterminationModifier.class.getSimpleName();\r
+               UUID uuidVocabulary = UUID.fromString("fe87ea8d-6e0a-4e5d-b0da-0ab8ea67ca77");\r
+               UUID uuidAfterTerm = null ; //UUID.fromString("");\r
+               list.add( SingleTermUpdater.NewInstance("Add 'confer (cf.)' determination modifier", uuidTerm, description, label, abbrev, dtype, uuidVocabulary, Language.uuidLatin, true, uuidAfterTerm));\r
+\r
+               \r
+               // aff.\r
+               uuidTerm = DeterminationModifier.uuidAffinis;\r
+               description = "Affinis";\r
+               label = "affinis";\r
+               abbrev = "aff.";\r
+               dtype = DeterminationModifier.class.getSimpleName();\r
+               uuidVocabulary = UUID.fromString("fe87ea8d-6e0a-4e5d-b0da-0ab8ea67ca77");\r
+               uuidAfterTerm = DeterminationModifier.uuidConfer;\r
+               list.add( SingleTermUpdater.NewInstance("Add 'affinis (aff.)' determination modifier", uuidTerm, description, label, abbrev, dtype, uuidVocabulary, Language.uuidLatin, true, uuidAfterTerm));\r
+\r
+               \r
+               //undefined languages vocabulary\r
+               UUID uuidUndefLanguagesVoc = UUID.fromString("7fd1e6d0-2e76-4dfa-bad9-2673dd042c28");\r
+               description = "Undefinded Language";\r
+               label = "Undefinded Language";\r
+               abbrev = "undef. lang.";\r
+               boolean isOrdered = false;\r
+               Class termClass = Language.class;\r
+               VocabularyCreator updater = VocabularyCreator.NewVocabularyInstance(uuidUndefLanguagesVoc, description, label, abbrev, isOrdered, termClass);\r
+               list.add(updater);\r
+               \r
+               // unknown language\r
+               uuidTerm = Language.uuidUnknownLanguage;\r
+               description = "Unknown Language";\r
+               label = "unknown";\r
+               abbrev = "unk";\r
+               dtype = Language.class.getSimpleName();\r
+               uuidVocabulary = uuidUndefLanguagesVoc;\r
+               uuidAfterTerm = null;\r
+               UUID uuidLanguageOfRepresentation = Language.uuidEnglish;\r
+               isOrdered = false;\r
+               list.add( SingleTermUpdater.NewInstance("Add 'unknown Lanugage' to language vocabulary", uuidTerm, description, label, abbrev, dtype, uuidVocabulary, uuidLanguageOfRepresentation, isOrdered, uuidAfterTerm));\r
+\r
+               // original language\r
+               uuidTerm = Language.uuidOriginalLanguage;\r
+               description = "Original Language";\r
+               label = "original";\r
+               abbrev = "org";\r
+               dtype = Language.class.getSimpleName();\r
+               uuidVocabulary = uuidUndefLanguagesVoc;\r
+               uuidAfterTerm = Language.uuidUnknownLanguage; //needed ?\r
+               uuidLanguageOfRepresentation = Language.uuidEnglish;\r
+               isOrdered = false;\r
+               list.add( SingleTermUpdater.NewInstance("Add 'original language' to language vocabulary", uuidTerm, description, label, abbrev, dtype, uuidVocabulary, uuidLanguageOfRepresentation, isOrdered, uuidAfterTerm));\r
+\r
+                               \r
+               return list;\r
+       }\r
+       \r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#getNextUpdater()\r
+        */\r
+       @Override\r
+       public ITermUpdater getNextUpdater() {\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.database.update.ICdmUpdater#getPreviousUpdater()\r
+        */\r
+       @Override\r
+       public ITermUpdater getPreviousUpdater() {\r
+               return TermUpdater_24_25.NewInstance();\r
+       }\r
+\r
+}\r
index 514cd548c9ad0d540085d9a8f399412a0920ea7d..f7433da46afd4740c42a21d6ee16f575f67d9e09 100644 (file)
@@ -9,21 +9,11 @@
 
 package eu.etaxonomy.cdm.persistence.dao.description;
 
-import java.util.Collection;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
 
-import org.hibernate.LockMode;
-import org.hibernate.Session;
 import org.springframework.dao.DataAccessException;
 
-import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.IIdentificationKey;
-import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;
-import eu.etaxonomy.cdm.persistence.query.Grouping;
-import eu.etaxonomy.cdm.persistence.query.OrderHint;
 
 /**
  * A read-only interface to allow querying across all IIdentificationKey instances, regardless of type
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyDao.java
new file mode 100644 (file)
index 0000000..44785d9
--- /dev/null
@@ -0,0 +1,28 @@
+/**\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
+\r
+package eu.etaxonomy.cdm.persistence.dao.description;\r
+\r
+import java.util.List;\r
+\r
+import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
+import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 08.11.2010\r
+ * @version 1.0\r
+ */\r
+public interface IPolytomousKeyDao extends IIdentifiableDao<PolytomousKey> {\r
+       \r
+       public List<PolytomousKey> list();\r
+       \r
+       public void loadNodes(PolytomousKeyNode root, List<String> nodePaths);\r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyNodeDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IPolytomousKeyNodeDao.java
new file mode 100644 (file)
index 0000000..c431b55
--- /dev/null
@@ -0,0 +1,22 @@
+/**\r
+* Copyright (C) 2008 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+*/\r
+\r
+package eu.etaxonomy.cdm.persistence.dao.description;\r
+\r
+import java.util.List;\r
+\r
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
+import eu.etaxonomy.cdm.persistence.dao.common.IVersionableDao;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 08.11.2010\r
+ */\r
+public interface IPolytomousKeyNodeDao extends IVersionableDao<PolytomousKeyNode> {\r
+\r
+       public List<PolytomousKeyNode> list();\r
+\r
+}\r
index 47f3edb94a6cb75ee6064b84cd052f48f1914334..15e9294c896df477997085b1b93fd395abd25cb8 100644 (file)
@@ -68,7 +68,7 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
 public abstract class CdmEntityDaoBase<T extends CdmBase> extends DaoBase implements ICdmEntityDao<T> {\r
        private static final Logger logger = Logger.getLogger(CdmEntityDaoBase.class);\r
 \r
-       int flushAfterNo = 1000; //large numbers may cause synchronisation errors when commiting the session !!\r
+       protected int flushAfterNo = 1000; //large numbers may cause synchronisation errors when commiting the session !!\r
        protected Class<T> type;\r
        \r
        @Autowired\r
index 3668a28d8208360315d51e67448792d824465017..042bd562984ef141149a33c01d7bc12dda0d659d 100644 (file)
@@ -65,6 +65,9 @@ import org.springframework.stereotype.Repository;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.common.DoubleResult;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.hibernate.PartialUserType;
+import eu.etaxonomy.cdm.hibernate.UUIDUserType;
+import eu.etaxonomy.cdm.hibernate.WSDLDefinitionUserType;
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
@@ -73,9 +76,6 @@ import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Marker;
-import eu.etaxonomy.cdm.model.common.PartialUserType;
-import eu.etaxonomy.cdm.model.common.UUIDUserType;
-import eu.etaxonomy.cdm.model.common.WSDLDefinitionUserType;
 import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
index e0c68d61cbe7a3490bc91baed3612594e1b93c77..7c09c96a2e41be61cd16ea31116be9e4ae7f41b0 100644 (file)
@@ -3,6 +3,7 @@ package eu.etaxonomy.cdm.persistence.dao.hibernate.description;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.log4j.Logger;
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.queryParser.ParseException;
 import org.apache.lucene.queryParser.QueryParser;
@@ -24,7 +25,9 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
 
 @Repository
 public class DescriptionElementDaoImpl extends AnnotatableDaoImpl<DescriptionElementBase> implements IDescriptionElementDao {
-
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(DescriptionElementDaoImpl.class);
+       
        private String defaultField = "multilanguageText.text";
 
        private Class<? extends DescriptionElementBase> indexedClasses[]; 
index 0bbd998f95aab809f4d3b2e8bd26a06fc46c860e..2218ecade8ae5c9c6af592769cd01367cc704583 100644 (file)
@@ -18,13 +18,11 @@ import org.hibernate.Criteria;
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Repository;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.common.VocabularyEnum;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.FeatureNode;\r
 import eu.etaxonomy.cdm.model.description.FeatureTree;\r
-import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao;\r
 import eu.etaxonomy.cdm.persistence.dao.description.IFeatureTreeDao;\r
 import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;\r
@@ -44,9 +42,9 @@ public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> impleme
 \r
        public FeatureTreeDaoImpl() {\r
                super(FeatureTree.class); \r
-               indexedClasses = new Class[2];\r
+               indexedClasses = new Class[1];\r
                indexedClasses[0] = FeatureTree.class;\r
-               indexedClasses[1] = PolytomousKey.class;\r
+//             indexedClasses[1] = PolytomousKey.class;\r
        }\r
        \r
        public List<FeatureTree> list() {\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoImpl.java
new file mode 100644 (file)
index 0000000..1813111
--- /dev/null
@@ -0,0 +1,59 @@
+/**\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
+\r
+package eu.etaxonomy.cdm.persistence.dao.hibernate.description;\r
+\r
+import java.util.Collection;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.Criteria;\r
+import org.springframework.stereotype.Repository;\r
+\r
+import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyDao;\r
+import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 08.11.2010\r
+ * @version 1.0\r
+ */\r
+@Repository\r
+public class PolytomousKeyDaoImpl extends IdentifiableDaoBase<PolytomousKey> implements IPolytomousKeyDao {\r
+       private static final Logger logger = Logger.getLogger(PolytomousKeyDaoImpl.class);\r
+\r
+       public PolytomousKeyDaoImpl() {\r
+               super(PolytomousKey.class); \r
+//             indexedClasses = new Class[1];\r
+//             indexedClasses[0] = PolytomousKey.class;\r
+       }\r
+       \r
+\r
+       @Override\r
+       public List<PolytomousKey> list() {\r
+               Criteria crit = getSession().createCriteria(type); \r
+               return crit.list(); \r
+       }\r
+\r
+       \r
+       //FIXME rewrite as node has a key attribute now\r
+       public void loadNodes(PolytomousKeyNode root, List<String> nodePaths) {\r
+               for(PolytomousKeyNode child : root.getChildren()) {\r
+                       defaultBeanInitializer.initialize(child, nodePaths);\r
+                       loadNodes(child,nodePaths);\r
+               }\r
+       }\r
+       \r
+}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyNodeDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyNodeDaoImpl.java
new file mode 100644 (file)
index 0000000..ab686d4
--- /dev/null
@@ -0,0 +1,34 @@
+/**\r
+* Copyright (C) 2008 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+*/\r
+\r
+package eu.etaxonomy.cdm.persistence.dao.hibernate.description;\r
+\r
+import java.util.List;\r
+\r
+import org.hibernate.Criteria;\r
+import org.springframework.stereotype.Repository;\r
+\r
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyNodeDao;\r
+import eu.etaxonomy.cdm.persistence.dao.hibernate.common.VersionableDaoBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 08.11.2010\r
+ */\r
+@Repository\r
+public class PolytomousKeyNodeDaoImpl extends VersionableDaoBase<PolytomousKeyNode> implements IPolytomousKeyNodeDao {\r
+\r
+       public PolytomousKeyNodeDaoImpl() {\r
+               super(PolytomousKeyNode.class); \r
+       }\r
+\r
+       public List<PolytomousKeyNode> list() {\r
+               Criteria crit = getSession().createCriteria(type); \r
+               return crit.list(); \r
+       }\r
+       \r
+}\r
index 0378375add59a1f0a25287d1b6de11c57606e62b..a06f9e52cc50a023c0218b4c005c5acc9d6105c4 100644 (file)
@@ -170,7 +170,7 @@ public class MediaDaoHibernateImpl extends IdentifiableDaoBase<Media> implements
                \r
                for(Media media : list(null,null)) { // re-index all media\r
                        Hibernate.initialize(media.getTitle());\r
-                       Hibernate.initialize(media.getDescription());\r
+                       Hibernate.initialize(media.getAllDescriptions());\r
                        Hibernate.initialize(media.getArtist());\r
                        fullTextSession.index(media);\r
                }\r
index 04a647dd8b0f100d12a89e15315030cecfea7105..a22fa79267290e41ab9557289cb616cc33ee07cd 100644 (file)
@@ -24,29 +24,14 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Repository;\r
 \r
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
-import eu.etaxonomy.cdm.model.reference.Article;\r
-import eu.etaxonomy.cdm.model.reference.Book;\r
-import eu.etaxonomy.cdm.model.reference.BookSection;\r
-import eu.etaxonomy.cdm.model.reference.CdDvd;\r
-import eu.etaxonomy.cdm.model.reference.Database;\r
-import eu.etaxonomy.cdm.model.reference.Generic;\r
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
 import eu.etaxonomy.cdm.model.reference.IInProceedings;\r
 import eu.etaxonomy.cdm.model.reference.IPrintedUnitBase;\r
 import eu.etaxonomy.cdm.model.reference.IReport;\r
 import eu.etaxonomy.cdm.model.reference.IThesis;\r
-import eu.etaxonomy.cdm.model.reference.InProceedings;\r
-import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.Map;\r
-import eu.etaxonomy.cdm.model.reference.Patent;\r
-import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
-import eu.etaxonomy.cdm.model.reference.Proceedings;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
-import eu.etaxonomy.cdm.model.reference.Report;\r
-import eu.etaxonomy.cdm.model.reference.Thesis;\r
-import eu.etaxonomy.cdm.model.reference.WebPage;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;\r
 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
@@ -58,36 +43,18 @@ import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceBaseDefaultCacheStrate
  */\r
 @Repository\r
 @Qualifier("referenceDaoHibernateImpl")\r
-public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase> implements IReferenceDao {\r
-               \r
-       @SuppressWarnings("unused")\r
+public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<Reference> implements IReferenceDao {\r
        private static final Logger logger = Logger.getLogger(ReferenceDaoHibernateImpl.class);\r
 \r
        public ReferenceDaoHibernateImpl() {\r
-               super(ReferenceBase.class);\r
-               indexedClasses = new Class[15];\r
-               indexedClasses[0] = Article.class;\r
-               indexedClasses[1] = Patent.class;\r
-               indexedClasses[2] = PersonalCommunication.class;\r
-               indexedClasses[3] = BookSection.class;\r
-               indexedClasses[4] = InProceedings.class;\r
-               indexedClasses[5] = CdDvd.class;\r
-               indexedClasses[6] = Database.class;\r
-               indexedClasses[7] = Generic.class;\r
-               indexedClasses[8] = Journal.class;\r
-               indexedClasses[9] = Map.class;\r
-               indexedClasses[10] = WebPage.class;\r
-               indexedClasses[11] = Book.class;\r
-               indexedClasses[12] = Proceedings.class;\r
-               indexedClasses[13] = Report.class;\r
-               indexedClasses[14] = Thesis.class;\r
+               super(Reference.class);\r
        }\r
 \r
        @Override\r
        public void rebuildIndex() {\r
                FullTextSession fullTextSession = Search.getFullTextSession(getSession());\r
                \r
-               for(ReferenceBase reference : list(null,null)) { // re-index all agents\r
+               for(Reference reference : list(null,null)) { // re-index all agents\r
                        Hibernate.initialize(reference.getAuthorTeam());\r
                        \r
                        if(reference.getType().equals(ReferenceType.Article)) {\r
@@ -100,7 +67,7 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                                Hibernate.initialize(((IThesis)reference).getSchool());\r
                        } else if(reference.getType().equals(ReferenceType.Report)) {\r
                                Hibernate.initialize(((IReport)reference).getInstitution());\r
-                       } else if(reference.getType().equals(ReferenceType.PrintedUnitBase)) {\r
+                       } else if(reference.getType().isPrintedUnit()) {\r
                                Hibernate.initialize(((IPrintedUnitBase)reference).getInSeries());\r
                        }\r
                        fullTextSession.index(reference);\r
@@ -108,8 +75,8 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                fullTextSession.flushToIndexes();\r
        }\r
 \r
-       public List<UuidAndTitleCache<ReferenceBase>> getUuidAndTitle(){\r
-               List<UuidAndTitleCache<ReferenceBase>> list = new ArrayList<UuidAndTitleCache<ReferenceBase>>();\r
+       public List<UuidAndTitleCache<Reference>> getUuidAndTitle(){\r
+               List<UuidAndTitleCache<Reference>> list = new ArrayList<UuidAndTitleCache<Reference>>();\r
                Session session = getSession();\r
                \r
                Query query = session.createQuery("select uuid, titleCache from " + type.getSimpleName());\r
@@ -117,15 +84,15 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                List<Object[]> result = query.list();\r
                \r
                for(Object[] object : result){\r
-                       list.add(new UuidAndTitleCache<ReferenceBase>(type, (UUID) object[0], (String) object[1]));\r
+                       list.add(new UuidAndTitleCache<Reference>(type, (UUID) object[0], (String) object[1]));\r
                }\r
                \r
                return list;\r
        }\r
        \r
        @Override\r
-       public List<UuidAndTitleCache<ReferenceBase>> getUuidAndTitleCache() {\r
-               List<UuidAndTitleCache<ReferenceBase>> list = new ArrayList<UuidAndTitleCache<ReferenceBase>>();\r
+       public List<UuidAndTitleCache<Reference>> getUuidAndTitleCache() {\r
+               List<UuidAndTitleCache<Reference>> list = new ArrayList<UuidAndTitleCache<Reference>>();\r
                Session session = getSession();\r
                \r
                Query query = session.createQuery("select " +\r
@@ -134,14 +101,14 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                List<Object[]> result = query.list();\r
                \r
                for(Object[] object : result){\r
-                       UuidAndTitleCache<ReferenceBase> uuidAndTitleCache;\r
+                       UuidAndTitleCache<Reference> uuidAndTitleCache;\r
                        String referenceTitle = (String) object[1];\r
                        \r
                        if(referenceTitle != null){                                                     \r
                                String teamTitle = (String) object[2];\r
                                referenceTitle = ReferenceBaseDefaultCacheStrategy.putAuthorToEndOfString(referenceTitle, teamTitle);\r
                                \r
-                               list.add(new UuidAndTitleCache<ReferenceBase>(ReferenceBase.class, (UUID) object[0], referenceTitle));\r
+                               list.add(new UuidAndTitleCache<Reference>(Reference.class, (UUID) object[0], referenceTitle));\r
                        }else{\r
                                logger.error("title cache of reference is null. UUID: " + object[0]);\r
                        }\r
@@ -150,8 +117,8 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                return list;\r
        }\r
        \r
-       public List<ReferenceBase> getAllReferencesForPublishing(){\r
-               List<ReferenceBase> references = getSession().createQuery("Select r from ReferenceBase r "+\r
+       public List<Reference> getAllReferencesForPublishing(){\r
+               List<Reference> references = getSession().createQuery("Select r from Reference r "+\r
                                "where r.id IN "+\r
                                        "(Select m.markedObj.id from Marker m where "+\r
                                                "m.markerType.id = "+\r
@@ -159,34 +126,34 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                return references;\r
        }\r
        \r
-       public List<ReferenceBase> getAllNotNomenclaturalReferencesForPublishing(){\r
+       public List<Reference> getAllNotNomenclaturalReferencesForPublishing(){\r
                \r
-               List<ReferenceBase> references = getSession().createQuery("select t.nomenclaturalReference from TaxonNameBase t").list();\r
-               String queryString = "from ReferenceBase b where b not in (:referenceList) and b in (:publish)" ;\r
+               List<Reference> references = getSession().createQuery("select t.nomenclaturalReference from TaxonNameBase t").list();\r
+               String queryString = "from Reference b where b not in (:referenceList) and b in (:publish)" ;\r
                Query referenceQuery = getSession().createQuery(queryString).setParameterList("referenceList", references);\r
                referenceQuery.setParameterList("publish", getAllReferencesForPublishing());\r
-               List<ReferenceBase> resultRefernces =referenceQuery.list();\r
+               List<Reference> resultRefernces =referenceQuery.list();\r
                                \r
                return resultRefernces;\r
        }\r
        \r
-       public List<ReferenceBase> getAllNomenclaturalReferences() {\r
-               List<ReferenceBase> references = getSession().createQuery(\r
+       public List<Reference> getAllNomenclaturalReferences() {\r
+               List<Reference> references = getSession().createQuery(\r
                                "select t.nomenclaturalReference from TaxonNameBase t").list();\r
                return references;\r
        }\r
 \r
        @Override\r
-       public List<ReferenceBase> getSubordinateReferences(\r
-                       ReferenceBase referenceBase) {\r
+       public List<Reference> getSubordinateReferences(\r
+                       Reference reference) {\r
                \r
-               List<ReferenceBase> references = new ArrayList();\r
-               List<ReferenceBase> subordinateReferences = new ArrayList();\r
+               List<Reference> references = new ArrayList();\r
+               List<Reference> subordinateReferences = new ArrayList();\r
                \r
-               Query query = getSession().createQuery("select r from ReferenceBase r where r.inReference = (:reference)");\r
-               query.setParameter("reference", referenceBase);\r
+               Query query = getSession().createQuery("select r from Reference r where r.inReference = (:reference)");\r
+               query.setParameter("reference", reference);\r
                references.addAll(query.list());\r
-               for(ReferenceBase ref : references){\r
+               for(Reference ref : references){\r
                        subordinateReferences.addAll(getSubordinateReferences(ref));\r
                }\r
                references.addAll(subordinateReferences);\r
@@ -194,7 +161,7 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
        }\r
 \r
        @Override\r
-       public List<TaxonBase> listCoveredTaxa(ReferenceBase referenceBase, boolean includeSubordinateReferences, List<String> propertyPaths) {\r
+       public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths) {\r
                \r
                /*\r
                 * <li>taxon.name.nomenclaturalreference</li>\r
@@ -206,10 +173,10 @@ public class ReferenceDaoHibernateImpl extends IdentifiableDaoBase<ReferenceBase
                \r
                //TODO implement search in nameDescriptions\r
                List<TaxonBase> taxonBaseList = new ArrayList<TaxonBase>();\r
-               Set<ReferenceBase> referenceSet = new HashSet<ReferenceBase>();\r
-               referenceSet.add(referenceBase);\r
+               Set<Reference> referenceSet = new HashSet<Reference>();\r
+               referenceSet.add(reference);\r
                if(includeSubordinateReferences){\r
-                       referenceSet.addAll(getSubordinateReferences(referenceBase));\r
+                       referenceSet.addAll(getSubordinateReferences(reference));\r
                }\r
 \r
        \r
@@ -18,21 +18,16 @@ import java.util.UUID;
 \r
 import org.apache.log4j.Logger;\r
 import org.hibernate.Query;\r
-import org.hibernate.Session;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.beans.factory.annotation.Qualifier;\r
 import org.springframework.stereotype.Repository;\r
 \r
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;\r
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao;\r
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao;\r
+import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -40,31 +35,31 @@ import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao;
  * @version 1.0\r
  */\r
 @Repository\r
-@Qualifier("taxonomicTreeDaoHibernateImpl")\r
-public class TaxonomicTreeDaoHibernateImpl extends IdentifiableDaoBase<TaxonomicTree>\r
-               implements ITaxonomicTreeDao {\r
+@Qualifier("classificationDaoHibernateImpl")\r
+public class ClassificationDaoHibernateImpl extends IdentifiableDaoBase<Classification>\r
+               implements IClassificationDao {\r
        @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger.getLogger(TaxonomicTreeDaoHibernateImpl.class);\r
+       private static final Logger logger = Logger.getLogger(ClassificationDaoHibernateImpl.class);\r
        \r
        @Autowired\r
        private ITaxonNodeDao taxonNodeDao;\r
        \r
-       public TaxonomicTreeDaoHibernateImpl() {\r
-               super(TaxonomicTree.class);\r
+       public ClassificationDaoHibernateImpl() {\r
+               super(Classification.class);\r
                indexedClasses = new Class[1];\r
-               indexedClasses[0] = TaxonomicTree.class;\r
+               indexedClasses[0] = Classification.class;\r
        }\r
        \r
        @SuppressWarnings("unchecked")\r
-       public List<TaxonNode> loadRankSpecificRootNodes(TaxonomicTree taxonomicTree, Rank rank, List<String> propertyPaths){\r
+       public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, List<String> propertyPaths){\r
                List<TaxonNode> results;\r
                if(rank == null){\r
-                       taxonomicTree = load(taxonomicTree.getUuid());\r
+                       classification = load(classification.getUuid());\r
                        results = new ArrayList(); \r
-                       results.addAll(taxonomicTree.getChildNodes());\r
+                       results.addAll(classification.getChildNodes());\r
                } else {\r
                        String hql = "SELECT DISTINCT tn FROM TaxonNode tn LEFT JOIN tn.childNodes as ctn" +\r
-                               " WHERE tn.taxonomicTree = :tree  AND (" +\r
+                               " WHERE tn.classification = :classification  AND (" +\r
                                " tn.taxon.name.rank = :rank" +\r
                                " OR (tn.taxon.name.rank.orderIndex > :rankOrderIndex AND tn.parent = null)" +\r
                                " OR (tn.taxon.name.rank.orderIndex < :rankOrderIndex AND ctn.taxon.name.rank.orderIndex > :rankOrderIndex)" +\r
@@ -72,7 +67,7 @@ public class TaxonomicTreeDaoHibernateImpl extends IdentifiableDaoBase<Taxonomic
                        Query query = getSession().createQuery(hql);\r
                        query.setParameter("rank", rank);\r
                        query.setParameter("rankOrderIndex", rank.getOrderIndex());\r
-                       query.setParameter("tree", taxonomicTree);\r
+                       query.setParameter("classification", classification);\r
                        results = query.list();\r
                }\r
                defaultBeanInitializer.initializeAll(results, propertyPaths);\r
@@ -81,7 +76,7 @@ public class TaxonomicTreeDaoHibernateImpl extends IdentifiableDaoBase<Taxonomic
        }\r
        \r
        @Override\r
-       public UUID delete(TaxonomicTree persistentObject){\r
+       public UUID delete(Classification persistentObject){\r
                //delete all childnodes, then delete the tree\r
                \r
                Set<TaxonNode> nodes = persistentObject.getChildNodes();\r
index f7deb27974f0dd4cabbd208980ed4515252904b3..136c35ff6382514ff39a8728bed25a451da6e2ae 100644 (file)
@@ -54,7 +54,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameComparator;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -63,7 +63,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.view.AuditEvent;\r
 import eu.etaxonomy.cdm.persistence.dao.QueryParseException;\r
 import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser;\r
@@ -105,17 +105,17 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        \r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec) {\r
+       public List<Taxon> getRootTaxa(Reference sec) {\r
                return getRootTaxa(sec, CdmFetch.FETCH_CHILDTAXA(), true, false);\r
        }\r
                \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.ReferenceBase, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, java.lang.Boolean, java.lang.Boolean)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.Reference, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, java.lang.Boolean, java.lang.Boolean)\r
         */\r
-       public List<Taxon> getRootTaxa(Rank rank, ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications, List<String> propertyPaths) {\r
-               checkNotInPriorView("TaxonDaoHibernateImpl.getRootTaxa(Rank rank, ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications)");\r
+       public List<Taxon> getRootTaxa(Rank rank, Reference sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications, List<String> propertyPaths) {\r
+               checkNotInPriorView("TaxonDaoHibernateImpl.getRootTaxa(Rank rank, Reference sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications)");\r
                if (onlyWithChildren == null){\r
                        onlyWithChildren = true;\r
                }\r
@@ -174,27 +174,27 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, java.lang.Boolean, java.lang.Boolean)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, java.lang.Boolean, java.lang.Boolean)\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications) {\r
+       public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications) {\r
                return getRootTaxa(null, sec, cdmFetch, onlyWithChildren, withMisapplications, null);\r
        }\r
        \r
        /*\r
         * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public List<TaxonBase> getTaxaByName(String queryString, ReferenceBase sec) {\r
+       public List<TaxonBase> getTaxaByName(String queryString, Reference sec) {\r
                \r
                return getTaxaByName(queryString, true, sec);\r
        }\r
 \r
        /*\r
         * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByName(java.lang.String, java.lang.Boolean, eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByName(java.lang.String, java.lang.Boolean, eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public List<TaxonBase> getTaxaByName(String queryString, Boolean accepted, ReferenceBase sec) {\r
-               checkNotInPriorView("TaxonDaoHibernateImpl.getTaxaByName(String name, ReferenceBase sec)");\r
+       public List<TaxonBase> getTaxaByName(String queryString, Boolean accepted, Reference sec) {\r
+               checkNotInPriorView("TaxonDaoHibernateImpl.getTaxaByName(String name, Reference sec)");\r
                \r
         Criteria criteria = null;\r
                if (accepted == true) {\r
@@ -239,17 +239,17 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        \r
        /*\r
         * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByName(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByName(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)\r
         */\r
-       public List<TaxonBase> getTaxaByName(Class<? extends TaxonBase> clazz, String queryString, TaxonomicTree taxonomicTree,\r
+       public List<TaxonBase> getTaxaByName(Class<? extends TaxonBase> clazz, String queryString, Classification classification,\r
                        MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageSize, \r
                        Integer pageNumber, List<String> propertyPaths) {\r
                                \r
                boolean doCount = false;\r
-               Query query = prepareTaxaByName(clazz, "nameCache", queryString, taxonomicTree, matchMode, namedAreas, pageSize, pageNumber, doCount);\r
+               Query query = prepareTaxaByName(clazz, "nameCache", queryString, classification, matchMode, namedAreas, pageSize, pageNumber, doCount);\r
                if (query != null){\r
                        List<TaxonBase> results = query.list();\r
-                       //results.addAll (prepareTaxaByCommonName(queryString, taxonomicTree, matchMode, namedAreas, pageSize, pageNumber, doCount).list());\r
+                       //results.addAll (prepareTaxaByCommonName(queryString, classification, matchMode, namedAreas, pageSize, pageNumber, doCount).list());\r
                        defaultBeanInitializer.initializeAll(results, propertyPaths);\r
                        //TaxonComparatorSearch comp = new TaxonComparatorSearch();\r
                        //Collections.sort(results, comp);\r
@@ -261,13 +261,13 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
 \r
        /*\r
         * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByCommonName(java.lang.String, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#getTaxaByCommonName(java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)\r
         */\r
-       public List<TaxonBase> getTaxaByCommonName(String queryString, TaxonomicTree taxonomicTree,\r
+       public List<TaxonBase> getTaxaByCommonName(String queryString, Classification classification,\r
                        MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageSize, \r
                        Integer pageNumber, List<String> propertyPaths) {\r
                        boolean doCount = false;        \r
-                       Query query = prepareTaxaByCommonName(queryString, taxonomicTree, matchMode, namedAreas, pageSize, pageNumber, doCount);\r
+                       Query query = prepareTaxaByCommonName(queryString, classification, matchMode, namedAreas, pageSize, pageNumber, doCount);\r
                        if (query != null){\r
                                List<TaxonBase> results = query.list();\r
                                defaultBeanInitializer.initializeAll(results, propertyPaths);\r
@@ -282,7 +282,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
         * @param clazz\r
         * @param searchField the field in TaxonNameBase to be searched through usually either <code>nameCache</code> or <code>titleCache</code>\r
         * @param queryString\r
-        * @param taxonomicTree TODO\r
+        * @param classification TODO\r
         * @param matchMode\r
         * @param namedAreas\r
         * @param pageSize\r
@@ -290,12 +290,12 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
         * @param doCount\r
         * @return\r
         * \r
-        * FIXME implement taxontree restriction & implement test: see {@link TaxonDaoHibernateImplTest#testCountTaxaByName()}\r
+        * FIXME implement classification restriction & implement test: see {@link TaxonDaoHibernateImplTest#testCountTaxaByName()}\r
         */\r
-       private Query prepareTaxaByName(Class<? extends TaxonBase> clazz, String searchField, String queryString, TaxonomicTree taxonomicTree,\r
+       private Query prepareTaxaByName(Class<? extends TaxonBase> clazz, String searchField, String queryString, Classification classification,\r
                        MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageSize, Integer pageNumber, boolean doCount) {\r
 \r
-               //TODO ? checkNotInPriorView("TaxonDaoHibernateImpl.countTaxaByName(String queryString, Boolean accepted, ReferenceBase sec)");\r
+               //TODO ? checkNotInPriorView("TaxonDaoHibernateImpl.countTaxaByName(String queryString, Boolean accepted, Reference sec)");\r
 \r
                String hqlQueryString = matchMode.queryStringFrom(queryString);\r
                \r
@@ -319,7 +319,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                String taxonSubselect = null;\r
                String synonymSubselect = null;\r
                \r
-               if(taxonomicTree != null){\r
+               if(classification != null){\r
                        \r
                        if(doAreaRestriction){\r
                                \r
@@ -331,7 +331,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                        " join t.taxonNodes as tn "+\r
                                        " where" +\r
                                        " e.area.uuid in (:namedAreasUuids) AND" +\r
-                                       " tn.taxonomicTree = :taxonomicTree" +\r
+                                       " tn.classification = :classification" +\r
                                        " AND n." + searchField + " " + matchMode.getMatchOperator() + " :queryString";\r
                                \r
                                \r
@@ -345,7 +345,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                        " join s.name sn"+ \r
                                        " where" +\r
                                        " e.area.uuid in (:namedAreasUuids) AND" +\r
-                                       " tn.taxonomicTree = :taxonomicTree" +\r
+                                       " tn.classification = :classification" +\r
                                        " AND sn." + searchField +  " " + matchMode.getMatchOperator() + " :queryString";\r
                                \r
                        } else {\r
@@ -355,7 +355,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                        " join t.name n " +\r
                                        " join t.taxonNodes as tn "+\r
                                        " where" +\r
-                                       " tn.taxonomicTree = :taxonomicTree" +\r
+                                       " tn.classification = :classification" +\r
                                        " AND n." + searchField +  " " + matchMode.getMatchOperator() + " :queryString";\r
                                \r
                                synonymSubselect = "select s.id from" +\r
@@ -365,7 +365,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                        " join sr.relatedFrom s" + // the synonyms\r
                                        " join s.name sn"+ \r
                                        " where" +\r
-                                       " tn.taxonomicTree = :taxonomicTree" +\r
+                                       " tn.classification = :classification" +\r
                                        " AND sn." + searchField +  " " + matchMode.getMatchOperator() + " :queryString";\r
                        }       \r
                } else {\r
@@ -425,8 +425,8 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                        if(doAreaRestriction){\r
                                subTaxon.setParameterList("namedAreasUuids", namedAreasUuids);\r
                        }       \r
-                       if(taxonomicTree != null){\r
-                               subTaxon.setParameter("taxonomicTree", taxonomicTree);\r
+                       if(classification != null){\r
+                               subTaxon.setParameter("classification", classification);\r
                        }\r
                } else if(clazz.equals(Synonym.class)){\r
                        // find synonyms\r
@@ -435,8 +435,8 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                        if(doAreaRestriction){\r
                                subSynonym.setParameterList("namedAreasUuids", namedAreasUuids);\r
                        }               \r
-                       if(taxonomicTree != null){\r
-                               subSynonym.setParameter("taxonomicTree", taxonomicTree);\r
+                       if(classification != null){\r
+                               subSynonym.setParameter("classification", classification);\r
                        }\r
                } else {\r
                        // find taxa and synonyms\r
@@ -446,9 +446,9 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                subTaxon.setParameterList("namedAreasUuids", namedAreasUuids);\r
                                subSynonym.setParameterList("namedAreasUuids", namedAreasUuids);\r
                        }\r
-                       if(taxonomicTree != null){\r
-                               subTaxon.setParameter("taxonomicTree", taxonomicTree);\r
-                               subSynonym.setParameter("taxonomicTree", taxonomicTree);\r
+                       if(classification != null){\r
+                               subTaxon.setParameter("classification", classification);\r
+                               subSynonym.setParameter("classification", classification);\r
                        }\r
                }\r
                \r
@@ -530,7 +530,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                return query;\r
        }\r
 \r
-       private Query prepareTaxaByCommonName(String queryString, TaxonomicTree taxonomicTree,\r
+       private Query prepareTaxaByCommonName(String queryString, Classification classification,\r
                        MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageSize, Integer pageNumber, boolean doCount){\r
                                \r
                String hql= "from Taxon t " +\r
@@ -553,13 +553,13 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        }\r
        \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#countTaxaByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, eu.etaxonomy.cdm.persistence.query.SelectMode, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.util.Set)\r
+        * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#countTaxaByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, eu.etaxonomy.cdm.persistence.query.SelectMode, eu.etaxonomy.cdm.model.reference.Reference, java.util.Set)\r
         */\r
-       public long countTaxaByName(Class<? extends TaxonBase> clazz, String queryString, TaxonomicTree taxonomicTree,\r
+       public long countTaxaByName(Class<? extends TaxonBase> clazz, String queryString, Classification classification,\r
                MatchMode matchMode, Set<NamedArea> namedAreas) {\r
                \r
                boolean doCount = true;\r
-               Query query = prepareTaxaByName(clazz, "nameCache", queryString, taxonomicTree, matchMode, namedAreas, null, null, doCount);\r
+               Query query = prepareTaxaByName(clazz, "nameCache", queryString, classification, matchMode, namedAreas, null, null, doCount);\r
                if (query != null) {\r
                        return (Long)query.uniqueResult();\r
                }\r
@@ -593,10 +593,10 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
 //     }\r
 \r
 //     /* (non-Javadoc)\r
-//      * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#countTaxaByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, eu.etaxonomy.cdm.persistence.query.SelectMode, eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+//      * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#countTaxaByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, eu.etaxonomy.cdm.persistence.query.SelectMode, eu.etaxonomy.cdm.model.reference.Reference)\r
 //      */\r
 //     public Integer countTaxaByName(String queryString, \r
-//                     MatchMode matchMode, SelectMode selectMode, ReferenceBase sec) {\r
+//                     MatchMode matchMode, SelectMode selectMode, Reference sec) {\r
 //\r
 //             Long count = countTaxaByName(queryString, matchMode, selectMode, sec, null);\r
 //             return count.intValue();\r
@@ -718,10 +718,10 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao#findByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, int, int, boolean)\r
         */\r
-       public List<TaxonBase> findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, TaxonomicTree taxonomicTree, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths) {\r
+       public List<TaxonBase> findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, Classification classification, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths) {\r
        \r
                boolean doCount = false;\r
-               Query query = prepareTaxaByName(clazz, "titleCache", queryString, taxonomicTree, matchMode, namedAreas, pageSize, pageNumber, doCount);\r
+               Query query = prepareTaxaByName(clazz, "titleCache", queryString, classification, matchMode, namedAreas, pageSize, pageNumber, doCount);\r
                if (query != null){\r
                        List<TaxonBase> results = query.list();\r
                        defaultBeanInitializer.initializeAll(results, propertyPaths);\r
@@ -1177,13 +1177,13 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        \r
        /*\r
         * (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheOfAcceptedTaxa(eu.etaxonomy.cdm.model.taxon.TaxonomicTree)\r
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheOfAcceptedTaxa(eu.etaxonomy.cdm.model.taxon.Classification)\r
         */\r
-       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(TaxonomicTree taxonomicTree) {\r
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification) {\r
 \r
-               int taxonomicTreeId = taxonomicTree.getId();\r
+               int classificationId = classification.getId();\r
                \r
-               String queryString = "SELECT nodes.uuid, taxa.titleCache FROM TaxonNode AS nodes LEFT JOIN TaxonBase AS taxa ON nodes.taxon_id = taxa.id WHERE taxa.DTYPE = 'Taxon' AND nodes.taxonomictree_id = " + taxonomicTreeId;\r
+               String queryString = "SELECT nodes.uuid, taxa.titleCache FROM TaxonNode AS nodes LEFT JOIN TaxonBase AS taxa ON nodes.taxon_id = taxa.id WHERE taxa.DTYPE = 'Taxon' AND nodes.classification_id = " + classificationId;\r
                \r
                List<Object[]> result = getSession().createSQLQuery(queryString).list();\r
                                \r
@@ -1260,14 +1260,14 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        }\r
 \r
        public List<TaxonBase> getTaxaByCommonName(String queryString,\r
-                       TaxonomicTree taxonomicTree, MatchMode matchMode,\r
+                       Classification classification, MatchMode matchMode,\r
                        Set<NamedArea> namedAreas, Integer pageSize, Integer pageNumber) {\r
                // TODO Auto-generated method stub\r
                return null;\r
        }\r
        \r
        \r
-       public List<Synonym>  createAllInferredSynonyms(Taxon taxon, TaxonomicTree tree){\r
+       public List<Synonym>  createAllInferredSynonyms(Taxon taxon, Classification tree){\r
                List <Synonym> inferredSynonyms = new ArrayList<Synonym>();\r
                \r
                inferredSynonyms.addAll(createInferredSynonyms(taxon, tree, SynonymRelationshipType.INFERRED_EPITHET_OF()));\r
@@ -1293,7 +1293,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                return taxonName;\r
        }\r
 \r
-       public List<Synonym> createInferredSynonyms(Taxon taxon, TaxonomicTree tree, SynonymRelationshipType type){\r
+       public List<Synonym> createInferredSynonyms(Taxon taxon, Classification tree, SynonymRelationshipType type){\r
                List <Synonym> inferredSynonyms = new ArrayList<Synonym>();\r
                List<Synonym> inferredSynonymsToBeRemoved = new ArrayList<Synonym>();\r
 \r
@@ -1311,7 +1311,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                        HashMap<String, String> synonymsGenus = new HashMap<String, String>(); // Changed this to be able to store the idInSource to a genusName\r
                        List<String> synonymsEpithet = new ArrayList<String>();\r
                        \r
-                       if (node.getTaxonomicTree().equals(tree)){\r
+                       if (node.getClassification().equals(tree)){\r
                                if (!node.isTopmostNode()){\r
                                TaxonNode parent = (TaxonNode)node.getParent();\r
                                parent = (TaxonNode)HibernateProxyHelper.deproxy(parent);\r
@@ -1346,7 +1346,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                                        String idInSource = getIdInSource(syn);\r
                                                        \r
                                                        // Determine the sourceReference\r
-                                                       ReferenceBase sourceReference = syn.getSec();\r
+                                                       Reference sourceReference = syn.getSec();\r
                                                        \r
                                                        synName = syn.getName();\r
                                                        ZoologicalName zooName = getZoologicalName(synName.getUuid(), zooHashMap);\r
@@ -1373,7 +1373,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                                                IdentifiableSource originalSource = IdentifiableSource.NewInstance(idInSource, "InferredEpithetOf", syn.getSec(), null);\r
                                                                \r
                                                                // Add the citation\r
-                                                               ReferenceBase citation = getCitation(syn);\r
+                                                               Reference citation = getCitation(syn);\r
                                                                if (citation != null) {\r
                                                                        originalSource.setCitation(citation);\r
                                                                        inferredEpithet.addSource(originalSource);\r
@@ -1422,7 +1422,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                                        String idInSource = getIdInSource(syn);\r
                                                        \r
                                                        // Determine the sourceReference\r
-                                                       ReferenceBase sourceReference = syn.getSec();\r
+                                                       Reference sourceReference = syn.getSec();\r
 \r
                                                        synName = syn.getName();\r
                                                        ZoologicalName zooName = getZoologicalName(synName.getUuid(), zooHashMap);\r
@@ -1443,7 +1443,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                                                IdentifiableSource originalSource = IdentifiableSource.NewInstance(idInSource, "InferredGenusOf", syn.getSec(), null);\r
                                                                \r
                                                                // Add the citation\r
-                                                               ReferenceBase citation = getCitation(syn);\r
+                                                               Reference citation = getCitation(syn);\r
                                                                if (citation != null) {\r
                                                                        originalSource.setCitation(citation);\r
                                                                        inferredGenus.addSource(originalSource);\r
@@ -1479,7 +1479,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                                                \r
                                        }else if (type.equals(SynonymRelationshipType.POTENTIAL_COMBINATION_OF())){\r
                                                \r
-                                               ReferenceBase sourceReference = null; // TODO: Determination of sourceReference is redundant\r
+                                               Reference sourceReference = null; // TODO: Determination of sourceReference is redundant\r
                                                \r
                                                for (SynonymRelationship synonymRelationOfGenus:synonymRelationshipsOfGenus){\r
                                                        TaxonNameBase synName;\r
@@ -1613,8 +1613,8 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
         * Returns the citation for a given Synonym.\r
         * @param syn\r
         */\r
-       private ReferenceBase getCitation(Synonym syn) {\r
-               ReferenceBase citation = null;\r
+       private Reference getCitation(Synonym syn) {\r
+               Reference citation = null;\r
                Set<IdentifiableSource> sources = syn.getSources();\r
                if (sources.size() == 1) {\r
                        IdentifiableSource source = sources.iterator().next();\r
@@ -1744,9 +1744,9 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
        public List<TaxonNameBase> findIdenticalNamesNew(List<String> propertyPaths){\r
                \r
                //Hole die beiden Source_ids von "Fauna Europaea" und "Erms" und in sources der names darf jeweils nur das entgegengesetzte auftreten (i member of tmb.taxonBases)\r
-               Query query = getSession().createQuery("Select id from ReferenceBase where titleCache like 'Fauna Europaea database'");\r
+               Query query = getSession().createQuery("Select id from Reference where titleCache like 'Fauna Europaea database'");\r
                List<String> secRefFauna = query.list();\r
-               query = getSession().createQuery("Select id from ReferenceBase where titleCache like 'ERMS'");\r
+               query = getSession().createQuery("Select id from Reference where titleCache like 'ERMS'");\r
                List<String> secRefErms = query.list();\r
                //Query query = getSession().createQuery("select tmb2.nameCache from ZoologicalName tmb, TaxonBase tb1, ZoologicalName tmb2, TaxonBase tb2 where tmb.id != tmb2.id and tb1.name = tmb and tb2.name = tmb2 and tmb.nameCache = tmb2.nameCache and tb1.sec != tb2.sec");\r
                //Get all names of fauna europaea\r
@@ -1809,10 +1809,10 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
 \r
 \r
        public long countTaxaByCommonName(String searchString,\r
-                       TaxonomicTree taxonomicTree, MatchMode matchMode,\r
+                       Classification classification, MatchMode matchMode,\r
                        Set<NamedArea> namedAreas) {\r
                boolean doCount = true;\r
-               Query query = prepareTaxaByCommonName(searchString, taxonomicTree, matchMode, namedAreas, null, null, doCount);\r
+               Query query = prepareTaxaByCommonName(searchString, classification, matchMode, namedAreas, null, null, doCount);\r
                if (query != null && !query.list().isEmpty()) {\r
                        Object o = query.uniqueResult();\r
                        if(o != null) {\r
index 74a90ecf984bc3d8c5b299880dc19357cce43574..ae610cfef4ca76a9d2b71fbcc149d3c6acd3ad29 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.cdm.persistence.dao.reference;
 import java.util.List;\r
 \r
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ITitledDao;\r
@@ -20,35 +20,35 @@ import eu.etaxonomy.cdm.persistence.dao.common.ITitledDao;
  * @author a.mueller\r
  *\r
  */\r
-public interface IReferenceDao extends IIdentifiableDao<ReferenceBase>, ITitledDao<ReferenceBase> {\r
+public interface IReferenceDao extends IIdentifiableDao<Reference>, ITitledDao<Reference> {\r
        \r
-       public List<UuidAndTitleCache<ReferenceBase>> getUuidAndTitle();\r
+       public List<UuidAndTitleCache<Reference>> getUuidAndTitle();\r
        \r
        /**\r
         * TODO candidate for harmonization: rename to listAllReferencesForPublishing\r
         * @return all references marked with publish-flag\r
         */\r
-       public List<ReferenceBase> getAllReferencesForPublishing();\r
+       public List<Reference> getAllReferencesForPublishing();\r
        \r
        /**\r
         * TODO candidate for harmonization: rename to listAllNotNomenclaturalReferencesForPublishing\r
         * @return all references not used as nomenclatural reference with publish flag\r
         */\r
-       public List<ReferenceBase> getAllNotNomenclaturalReferencesForPublishing();\r
+       public List<Reference> getAllNotNomenclaturalReferencesForPublishing();\r
        \r
        /**\r
         * TODO candidate for harmonization: rename to listNomenclaturalReferences\r
         * @return\r
         */\r
-       public List<ReferenceBase> getAllNomenclaturalReferences();\r
+       public List<Reference> getAllNomenclaturalReferences();\r
 \r
        /**\r
         * recursively finds all references where the <code>referenceBase</code> given as parameter \r
-        * is the {@link ReferenceBase.getInReference inReference}.\r
-        * @param referenceBase\r
+        * is the {@link Reference.getInReference inReference}.\r
+        * @param reference\r
         * @return\r
         */\r
-       public List<ReferenceBase> getSubordinateReferences(ReferenceBase referenceBase);\r
+       public List<Reference> getSubordinateReferences(Reference reference);\r
        \r
        /**\r
         * searches for taxa using the following relations:\r
@@ -60,10 +60,10 @@ public interface IReferenceDao extends IIdentifiableDao<ReferenceBase>, ITitledD
         * <li>taxon.name.descriptions.descriptionSources</li>\r
         * </ul>\r
         * \r
-        * @param referenceBase\r
+        * @param reference\r
         * @param propertyPaths TODO\r
         * @return\r
         */\r
-       public List<TaxonBase> listCoveredTaxa(ReferenceBase referenceBase, boolean includeSubordinateReferences, List<String> propertyPaths);\r
+       public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths);\r
        \r
 }\r
similarity index 74%
rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonomicTreeDao.java
rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/IClassificationDao.java
index 7d676a9cfba6f46a46ccf3ca34818386f2c65e2d..fdb0e7871ac83d9d28a75b3afd945e039737b342 100644 (file)
@@ -13,14 +13,14 @@ import java.util.List;
 \r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;\r
 \r
 /**\r
  * @author a.mueller\r
  *\r
  */\r
-public interface ITaxonomicTreeDao extends IIdentifiableDao<TaxonomicTree> {\r
+public interface IClassificationDao extends IIdentifiableDao<Classification> {\r
        \r
        /**\r
         * Loads all TaxonNodes of the specified tree for a given Rank.\r
@@ -28,11 +28,11 @@ public interface ITaxonomicTreeDao extends IIdentifiableDao<TaxonomicTree> {
         * Rank the node associated with the next lower Rank is taken as root node.\r
         * If the <code>rank</code> is null the absolute root nodes will be returned.\r
         *\r
-        * @param taxonomicTree\r
+        * @param classification\r
         * @param rank may be null\r
         * @param propertyPaths\r
         * @return\r
         */\r
-       public List<TaxonNode> loadRankSpecificRootNodes(TaxonomicTree taxonomicTree, Rank rank, List<String> propertyPaths);\r
+       public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, List<String> propertyPaths);\r
 \r
 }\r
index 0b697ef34d00c556e5143718c65e43d319def7b7..abd00e36cf2f4e8747f3b8ad26db1e724df5c609 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ITitledDao;\r
@@ -52,7 +52,7 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * @param sec\r
         * @return\r
         */\r
-       public List<TaxonBase> getTaxaByName(String name, ReferenceBase sec);\r
+       public List<TaxonBase> getTaxaByName(String name, Reference sec);\r
        \r
        /** \r
         * Returns a list of TaxonBase instances (or Taxon instances, if accepted == true, or Synonym instance, if accepted == false) \r
@@ -61,7 +61,7 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * @param sec\r
         * @return\r
         */\r
-       public List<TaxonBase> getTaxaByName(String queryString, Boolean accepted, ReferenceBase sec);\r
+       public List<TaxonBase> getTaxaByName(String queryString, Boolean accepted, Reference sec);\r
 \r
        /** \r
         * Returns a list of TaxonBase instances (or Taxon instances, if accepted == true, or Synonym instance, if accepted == false) \r
@@ -82,7 +82,7 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * where the taxonBase.name.nameCache property matches the String queryString.\r
         * @param clazz\r
         * @param queryString\r
-        * @param taxonomicTree TODO\r
+        * @param classification TODO\r
         * @param matchMode\r
         * @param namedAreas TODO\r
         * @param pageSize\r
@@ -90,13 +90,13 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * @param propertyPaths TODO\r
         * @return list of found taxa\r
         */\r
-       public List<TaxonBase> getTaxaByName(Class<? extends TaxonBase> clazz, String queryString, TaxonomicTree taxonomicTree,\r
+       public List<TaxonBase> getTaxaByName(Class<? extends TaxonBase> clazz, String queryString, Classification classification,\r
                        MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageSize, Integer pageNumber, List<String> propertyPaths);\r
 \r
        /**\r
         * @param clazz\r
         * @param queryString\r
-        * @param taxonomicTree TODO\r
+        * @param classification TODO\r
         * @param matchMode\r
         * @param namedAreas\r
         * @param pageSize\r
@@ -104,7 +104,7 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * @param propertyPaths\r
         * @return\r
         */\r
-       public long countTaxaByName(Class<? extends TaxonBase> clazz, String queryString, TaxonomicTree taxonomicTree,\r
+       public long countTaxaByName(Class<? extends TaxonBase> clazz, String queryString, Classification classification,\r
                        \r
                        MatchMode matchMode, Set<NamedArea> namedAreas);\r
        \r
@@ -174,7 +174,7 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * </strong>\r
         * @param queryString\r
         *            the taqxon Name to search for\r
-        * @param taxonomicTree TODO\r
+        * @param classification TODO\r
         * @param matchMode\r
         * @param namedAreas TODO\r
         * @param pageNumber\r
@@ -182,18 +182,18 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * @param onlyAcccepted\r
         * @return\r
         */\r
-       public List<TaxonBase> findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, TaxonomicTree taxonomicTree, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths) ;\r
+       public List<TaxonBase> findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, Classification classification, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths) ;\r
 \r
-       public List<TaxonBase> getTaxaByCommonName(String queryString, TaxonomicTree taxonomicTree,\r
+       public List<TaxonBase> getTaxaByCommonName(String queryString, Classification classification,\r
        MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageSize, \r
        Integer pageNumber, List<String> propertyPaths);\r
 \r
        /**\r
         * Computes all Taxon instances that do not have a taxonomic parent and has at least one child.\r
         * @return The List<Taxon> of root taxa.\r
-        * @deprecated obsolete when using taxonomicTree\r
+        * @deprecated obsolete when using classification\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec);\r
+       public List<Taxon> getRootTaxa(Reference sec);\r
 \r
        \r
        /**\r
@@ -204,9 +204,9 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * @param withMisaplications if false only taxa are returned that have no isMisappliedNameFor relationship. \r
         * <Br>Default: true.\r
         * @return The List<Taxon> of root taxa.\r
-        * @deprecated obsolete when using taxonomicTree\r
+        * @deprecated obsolete when using classification\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications);\r
+       public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications);\r
        \r
        \r
        /**\r
@@ -230,10 +230,10 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         *            {@link BeanInitializer#initialize(Object, List)}. <Br>\r
         *            Default: true.\r
         * @return The List<Taxon> of root taxa.\r
-        * @deprecated obsolete when using taxonomicTree\r
+        * @deprecated obsolete when using classification\r
         */\r
        public List<Taxon> \r
-       getRootTaxa(Rank rank, ReferenceBase sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications, List<String> propertyPaths);\r
+       getRootTaxa(Rank rank, Reference sec, CdmFetch cdmFetch, Boolean onlyWithChildren, Boolean withMisapplications, List<String> propertyPaths);\r
 \r
                /**\r
         * TODO necessary? \r
@@ -379,35 +379,35 @@ public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<Taxon
         * \r
         * @return\r
         */\r
-       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(TaxonomicTree taxonomicTree);\r
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification);\r
 \r
        /**\r
-        * creates all inferred synonyms for the species in the tree and insert it to the database\r
+        * Creates all inferred synonyms for the species in the tree and insert it to the database\r
         * @param tree\r
         * @return List of inferred synonyms\r
         */\r
-       //public List<Synonym> insertAllInferredSynonymy(TaxonomicTree tree);\r
+       //public List<Synonym> insertAllInferredSynonymy(Classification tree);\r
        \r
        /**\r
-        * creates all inferred synonyms for the taxon in the taxonomic tree, but do not insert it to the database\r
+        * Creates all inferred synonyms for the taxon in the classification, but do not insert it to the database\r
         * @param taxon\r
         * @param tree\r
         * @return list of inferred synonyms\r
         */\r
-       public List<Synonym>  createAllInferredSynonyms(Taxon taxon, TaxonomicTree tree);\r
+       public List<Synonym>  createAllInferredSynonyms(Taxon taxon, Classification tree);\r
        /**\r
-        * creates the specified inferred synonyms for the taxon in the taxonomic tree, but do not insert it to the database\r
+        * Creates the specified inferred synonyms for the taxon in the classification, but do not insert it to the database\r
         * @param taxon\r
         * @param tree\r
         * @return list of inferred synonyms\r
         */\r
-       public List<Synonym> createInferredSynonyms(Taxon taxon, TaxonomicTree tree, SynonymRelationshipType type);\r
+       public List<Synonym> createInferredSynonyms(Taxon taxon, Classification tree, SynonymRelationshipType type);\r
 \r
        public List<TaxonNameBase> findIdenticalTaxonNames(List<String> propertyPath);\r
        public String getPhylumName(TaxonNameBase name);\r
 \r
        public long countTaxaByCommonName(String searchString,\r
-                       TaxonomicTree taxonomicTree, MatchMode matchMode,\r
+                       Classification classification, MatchMode matchMode,\r
                        Set<NamedArea> namedAreas);\r
        \r
        public long deleteSynonymRelationships(Synonym syn);\r
index 442de53f8a6147d79154102c976af42448012971..a3ecc67b2ebbd8d97ff7dd06240cbb128bf83ee4 100644 (file)
       <mapping class="eu.etaxonomy.cdm.model.description.Feature"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.FeatureNode"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.FeatureTree"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.description.KeyStatement"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.MediaKey"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.IndividualsAssociation"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.MeasurementUnit"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.Modifier"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.MultiAccessKey"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.PolytomousKey"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.description.PolytomousKeyNode"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.PresenceTerm"/>\r
       <mapping class="eu.etaxonomy.cdm.model.description.QuantitativeData"/>\r
       <mapping class="eu.etaxonomy.cdm.model.occurrence.Specimen"/>\r
       <mapping class="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase"/>\r
       <!-- Reference Package -->\r
-      <mapping class="eu.etaxonomy.cdm.model.reference.ReferenceBase"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.reference.Reference"/>\r
       <!--\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Article"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Book"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.Taxon"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNode"/>\r
-      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonomicTree"/>\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
       <!-- View Package -->\r
index dba10e8e964fc3a71a7474e37cab5a85f2408486..41a0c94065aac3c97411186905bf5ff6d070316e 100644 (file)
@@ -54,8 +54,14 @@ public class TestingTermInitializer extends PersistentTermInitializer {
                this.dataSource = dataSource;\r
        }\r
        \r
-    @Override\r
+\r
     @PostConstruct\r
+       @Override\r
+       public void initialize() {\r
+               super.initialize();\r
+       }\r
+       \r
+    @Override\r
        public void doInitialize(){\r
                TransactionStatus txStatus = transactionManager.getTransaction(txDefinition);\r
                IDatabaseConnection connection = null;\r
index 2617fffd80f78bda2fd6846cc22e58c44e824add..357116817f25f826e7508f0ad90a6647ef0b6b21 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.reference.IBook;
 import eu.etaxonomy.cdm.model.reference.IDatabase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
@@ -38,9 +38,9 @@ public class TaxonGenerator {
                ReferenceFactory refFactory = ReferenceFactory.newInstance();
                Person deCandolle = Person.NewInstance();
                deCandolle.setTitleCache("DC.", true);
-               ReferenceBase sec = refFactory.newDatabase();
+               Reference sec = refFactory.newDatabase();
                sec.setTitleCache("Flora lunaea", true);
-               ReferenceBase citationRef = refFactory.newBook();
+               Reference citationRef = refFactory.newBook();
                citationRef.setTitleCache("Sp. lunarum", true);
                
         //genus taxon with Name, combinationAuthor, 
index abe86f2455c7297144bfeb5ee36bcd18c39a754e..3d5d58f93a2024711d7af52d3c126d253b79d343 100644 (file)
@@ -10,7 +10,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import eu.etaxonomy.cdm.model.name.BotanicalName;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 
@@ -21,7 +21,7 @@ public class MethodCacheImplTest {
        private BotanicalName botanicalName;
 
        IMethodCache methodCache;
-       private ReferenceBase nomenclaturalReference;
+       private Reference nomenclaturalReference;
        
        @Before
        public void setUp() throws Exception {
index 789a05c860e36ec2b530625129b8e1ea8c405f0f..210d0e7c0507bfefd24ccc08817262791240eca7 100644 (file)
@@ -149,7 +149,7 @@ import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.reference.IBook;\r
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
@@ -159,7 +159,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.view.AuditEvent;\r
 import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;\r
@@ -179,6 +179,7 @@ import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
  * @created 27.07.2009\r
  * @version 1.0\r
  */\r
+@Ignore\r
 public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{\r
        private static final Logger logger = Logger.getLogger(CdmGenericDaoImplTest.class);\r
        \r
@@ -232,8 +233,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
        @Test\r
        @Ignore\r
        public void testDelete(){\r
-               ReferenceBase ref1 = ReferenceFactory.newBook();\r
-               ReferenceBase ref2 = ReferenceFactory.newBook();\r
+               Reference ref1 = ReferenceFactory.newBook();\r
+               Reference ref2 = ReferenceFactory.newBook();\r
                Annotation annotation = Annotation.NewInstance("Anno1", null);\r
                ref1.addAnnotation(annotation);\r
                cdmGenericDao.saveOrUpdate(ref1);\r
@@ -265,8 +266,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                BotanicalName name2 = BotanicalName.NewInstance(Rank.SPECIES());\r
                name2.setTitleCache("BotanicalName2", true);\r
                \r
-               ReferenceBase article1 = ReferenceFactory.newArticle();\r
-               ReferenceBase article2 = ReferenceFactory.newArticle();\r
+               Reference article1 = ReferenceFactory.newArticle();\r
+               Reference article2 = ReferenceFactory.newArticle();\r
                \r
                \r
                name1.setNomenclaturalReference(article1);\r
@@ -446,14 +447,14 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                                PreservationMethod.class, \r
                                Specimen.class, \r
                                SpecimenOrObservationBase.class, \r
-                               ReferenceBase.class, \r
+                               Reference.class, \r
                                Synonym.class, \r
                                SynonymRelationship.class, \r
                                SynonymRelationshipType.class, \r
                                Taxon.class, \r
                                TaxonBase.class, \r
                                TaxonNode.class, \r
-                               TaxonomicTree.class, \r
+                               Classification.class, \r
                                TaxonRelationship.class, \r
                                TaxonRelationshipType.class \r
                                //Contact.class, \r
@@ -498,7 +499,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
        public void testGetReferencingObjectsCdmBase() {\r
                BotanicalName name = BotanicalName.NewInstance(Rank.SPECIES());\r
                name.setTitleCache("A name", true);\r
-               ReferenceBase ref1 = ReferenceFactory.newArticle();\r
+               Reference ref1 = ReferenceFactory.newArticle();\r
                Taxon taxon = Taxon.NewInstance(name, ref1);\r
                Person author = Person.NewInstance();\r
                author.setTitleCache("Author", true);\r
@@ -510,7 +511,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                \r
                taxonDao.save(taxon);\r
 //             UUID uuid = UUID.fromString("613980ac-9bd5-43b9-a374-d71e1794688f");\r
-//             ReferenceBase ref1 = referenceService.findByUuid(uuid);\r
+//             Reference ref1 = referenceService.findByUuid(uuid);\r
                \r
        \r
                Set<CdmBase> referencedObjects = cdmGenericDao.getReferencingObjects(ref1);\r
@@ -586,8 +587,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                ZoologicalName zooName1 = ZoologicalName.NewInstance(Rank.SPECIES());\r
                name1.setTitleCache("ZoologicalName1", true);\r
 \r
-               ReferenceBase article1 = ReferenceFactory.newArticle();\r
-               ReferenceBase article2 = ReferenceFactory.newArticle();\r
+               Reference article1 = ReferenceFactory.newArticle();\r
+               Reference article2 = ReferenceFactory.newArticle();\r
                \r
                \r
                name1.setNomenclaturalReference(article1);\r
@@ -715,7 +716,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                BotanicalName name3 = BotanicalName.NewInstance(Rank.SPECIES());\r
                name3.setTitleCache("BotanicalName3", true);\r
                \r
-               ReferenceBase database = ReferenceFactory.newDatabase();\r
+               Reference database = ReferenceFactory.newDatabase();\r
                \r
                Taxon taxon1 = Taxon.NewInstance(name1, database);\r
                Taxon taxon2 = Taxon.NewInstance(name2, database);\r
@@ -789,8 +790,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                agentDao.save(team1);\r
                agentDao.save(team2);\r
                agentDao.save(team3);\r
-               cdmGenericDao.save((ReferenceBase)book1);\r
-               cdmGenericDao.save((ReferenceBase)book2);\r
+               cdmGenericDao.save((Reference)book1);\r
+               cdmGenericDao.save((Reference)book2);\r
                                \r
                cdmGenericDao.merge(team2, team3, null);\r
                \r
@@ -895,11 +896,11 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                book2.setTitle(title2);\r
                book3.setTitle(title1);\r
                \r
-               cdmGenericDao.saveOrUpdate((ReferenceBase)book1);\r
-               cdmGenericDao.saveOrUpdate((ReferenceBase)book2);\r
-               cdmGenericDao.saveOrUpdate((ReferenceBase)book3);\r
+               cdmGenericDao.saveOrUpdate((Reference)book1);\r
+               cdmGenericDao.saveOrUpdate((Reference)book2);\r
+               cdmGenericDao.saveOrUpdate((Reference)book3);\r
                \r
-               IMatchStrategy matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               IMatchStrategy matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                \r
                try {\r
                        List<IBook> matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
@@ -933,16 +934,16 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                        section3.setInBook(book1);\r
                        section3.setTitle("SecTitle");\r
                        section3.setPages("22-33");\r
-                       cdmGenericDao.saveOrUpdate((ReferenceBase)section1);\r
-                       cdmGenericDao.saveOrUpdate((ReferenceBase)section2);\r
-                       cdmGenericDao.saveOrUpdate((ReferenceBase)section3);\r
+                       cdmGenericDao.saveOrUpdate((Reference)section1);\r
+                       cdmGenericDao.saveOrUpdate((Reference)section2);\r
+                       cdmGenericDao.saveOrUpdate((Reference)section3);\r
                        \r
                        List<IBookSection> sectionResult = cdmGenericDao.findMatching(section3, null);\r
                        Assert.assertEquals("Resultlist must have 1 entries", 1, sectionResult.size());\r
                        Assert.assertSame("Resultlist entry must be section1", section1, sectionResult.get(0));\r
-                       section2.setInBook(book2 = (IBook)((ReferenceBase) book1).clone());\r
-                       cdmGenericDao.saveOrUpdate((ReferenceBase)book2);\r
-                       cdmGenericDao.saveOrUpdate((ReferenceBase)book1);\r
+                       section2.setInBook(book2 = (IBook)((Reference) book1).clone());\r
+                       cdmGenericDao.saveOrUpdate((Reference)book2);\r
+                       cdmGenericDao.saveOrUpdate((Reference)book1);\r
                        \r
                        matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
                        Assert.assertEquals("Resultlist must have 2 entries", 2, matchResult.size());\r
@@ -1002,8 +1003,8 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
                book1.setAuthorTeam(team1);\r
                \r
                \r
-               IBook book2 = (IBook) ((ReferenceBase)book1).clone();\r
-               IBook book3 = (IBook) ((ReferenceBase)book1).clone();\r
+               IBook book2 = (IBook) ((Reference)book1).clone();\r
+               IBook book3 = (IBook) ((Reference)book1).clone();\r
                \r
 //             Assert.assertTrue("Cloned book should match", matchStrategy.invoke(book1, bookClone));\r
 //             book1.setTitleCache("cache1");\r
@@ -1019,14 +1020,14 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{
 //             bookClone.setEdition(null);\r
 //             Assert.assertTrue("Cached book with a defined and a null edition should match", matchStrategy.invoke(book1, bookClone));\r
 \r
-               cdmGenericDao.saveOrUpdate((ReferenceBase)book1);\r
-               cdmGenericDao.saveOrUpdate((ReferenceBase)book2);\r
-               cdmGenericDao.saveOrUpdate((ReferenceBase)book3);\r
+               cdmGenericDao.saveOrUpdate((Reference)book1);\r
+               cdmGenericDao.saveOrUpdate((Reference)book2);\r
+               cdmGenericDao.saveOrUpdate((Reference)book3);\r
                cdmGenericDao.saveOrUpdate(team1);\r
                cdmGenericDao.saveOrUpdate(team2);\r
                \r
                \r
-               IMatchStrategy matchStrategy = DefaultMatchStrategy.NewInstance(ReferenceBase.class);\r
+               IMatchStrategy matchStrategy = DefaultMatchStrategy.NewInstance(Reference.class);\r
                \r
                try {\r
                        List<IBook> matchResult = cdmGenericDao.findMatching(book3, matchStrategy);\r
index 224da985480f6a595f92f4dec862dcca298bf0b1..70a51c375196df9f0d5a66cc8f7f1bf23482a2a3 100644 (file)
@@ -35,7 +35,6 @@ import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.description.PresenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
@@ -250,21 +249,26 @@ public class DescriptionDaoHibernateImplTest extends CdmIntegrationTest {
                }
                elements = descriptionDao.getDescriptionElements(description, null, TextData.class, null, null,propertyPaths);
                
+               DescriptionElementBase element34 = null;
                for (DescriptionElementBase descElB: elements){
                        if (descElB instanceof TextData){
                                Map<Language, LanguageString> multiLanguage = ((TextData)descElB).getMultilanguageText();
                                LanguageString defaultString = multiLanguage.get(Language.DEFAULT());
-                               
+                               //???
+                       }
+                       if (descElB.getId() == 34){
+                               element34 = descElB;
                        }
                }
                
-               assertNotNull("getDescriptionElements should return a List");
+               assertNotNull("getDescriptionElements should return a List", elements);
                assertFalse("getDescriptionElements should not be empty",elements.isEmpty());
                assertEquals("getDescriptionElement should return 2 elements",2,elements.size());
-               assertTrue("ReferencedEntityBase.citation should be initialized",Hibernate.isInitialized(elements.get(0).getCitation()));
-               assertTrue("DescriptionElementBase.feature should be initialized",Hibernate.isInitialized(elements.get(0).getFeature()));
-               assertTrue("DescriptionElementBase.media should be initialized",Hibernate.isInitialized(elements.get(0).getMedia()));
-               assertTrue("TextData.multilanguageText should be initialized",Hibernate.isInitialized(((TextData)elements.get(0)).getMultilanguageText()));
+               assertNotNull("Description Element with ID 34 should be part of the list",element34);
+               assertTrue("ReferencedEntityBase.citation should be initialized",Hibernate.isInitialized(element34.getSources().iterator().next().getCitation()));
+               assertTrue("DescriptionElementBase.feature should be initialized",Hibernate.isInitialized(element34.getFeature()));
+               assertTrue("DescriptionElementBase.media should be initialized",Hibernate.isInitialized(element34.getMedia()));
+               assertTrue("TextData.multilanguageText should be initialized",Hibernate.isInitialized(((TextData)element34).getMultilanguageText()));
        }
        
        @Test
diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.java
new file mode 100644 (file)
index 0000000..e62e668
--- /dev/null
@@ -0,0 +1,242 @@
+// $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.persistence.dao.hibernate.description;\r
+\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import org.unitils.dbunit.annotation.DataSet;\r
+import org.unitils.dbunit.annotation.ExpectedDataSet;\r
+import org.unitils.spring.annotation.SpringBeanByType;\r
+\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 25.11.2010\r
+ *\r
+ */\r
+public class DescriptionElementDaoHibernateImplTest extends CdmTransactionalIntegrationTest{\r
+       private static final Logger logger = Logger.getLogger(DescriptionElementDaoHibernateImplTest.class);\r
+       \r
+       @SpringBeanByType\r
+       IDescriptionElementDao descriptionElementDao;\r
+       \r
+       private UUID uuidSingleTextData = UUID.fromString("31a0160a-51b2-4565-85cf-2be58cb561d6");\r
+       private UUID uuidDobuleTextData = UUID.fromString("50f6b799-3585-40a7-b69d-e7be77b2651a");\r
+\r
+       private boolean printDatasets = false;\r
+       \r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @BeforeClass\r
+       public static void setUpBeforeClass() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @Before\r
+       public void setUp() throws Exception {\r
+       }\r
+\r
+// ***************************** TESTS ************************************/   \r
+       \r
+       \r
+       \r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#countMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase)}.\r
+        */\r
+       @Test\r
+       public void testCountMedia() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+       \r
+       \r
+       /**\r
+        * See #2114\r
+        */\r
+       @Test\r
+       @DataSet // (value="DescriptionElementDaoHibernateImplTest.xml")\r
+       public void testRetrieveMultiLanguageString(){\r
+//             int count = descriptionElementDao.count(TextData.class);\r
+//             Assert.assertTrue("There must exist TextData", count > 0);\r
+               \r
+               //test read\r
+               TextData textDataTwo = (TextData)descriptionElementDao.findByUuid(uuidDobuleTextData);\r
+               Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, textDataTwo.size());\r
+               Assert.assertTrue("One language should be English", textDataTwo.containsKey(Language.ENGLISH()));\r
+               Language eng = Language.ENGLISH();\r
+//             System.out.println("English: " + eng.getLabel() + "("+ eng.getId() + ", " + eng.getUuid() + ")");\r
+//\r
+//             for (Language lang: multiLangText.keySet()){\r
+//                     System.out.println(lang.getLabel() + "("+ lang.getId() + ", " + lang.getUuid() + ")");\r
+//                     boolean equal = lang.equals(eng);\r
+//                     System.out.println(equal);\r
+//             }\r
+//             boolean contains = multiLangText.keySet().contains(eng);\r
+//             String et = doubleLanguageTextData.getText(eng);\r
+               LanguageString englishText = textDataTwo.getLanguageText(eng);\r
+               Assert.assertNotNull("English text should exist", englishText);\r
+               Assert.assertEquals("The English text should be correct", "Praesent vitae turpis vitae sapien sodales sagittis.", englishText.getText());\r
+               LanguageString czechText = textDataTwo.getLanguageText(Language.CZECH());\r
+               Assert.assertNotNull("Czech", czechText);\r
+               Assert.assertEquals("The Czech text should be correct", "A Czech translation for Praesent ...", czechText.getText());\r
+       }\r
+       \r
+       /**\r
+        * See #2114\r
+        */\r
+       @Test\r
+       @DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")\r
+       @ExpectedDataSet\r
+       public void testPersistMultiLanguageString(){\r
+       \r
+               //test write\r
+               TextData singleLanguageTextData = (TextData)descriptionElementDao.findByUuid(uuidSingleTextData);\r
+               Map<Language, LanguageString> multiLangText = singleLanguageTextData.getMultilanguageText();\r
+               Assert.assertEquals("There should be exactly 1 languageText in the multilanguageText", 1, multiLangText.size());\r
+               Assert.assertTrue("The language should be English", multiLangText.containsKey(Language.ENGLISH()));\r
+               singleLanguageTextData.putText("Ein test auf deutsch", Language.GERMAN());\r
+               Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, singleLanguageTextData.size());\r
+               String germanText = singleLanguageTextData.getText(Language.GERMAN());\r
+               Assert.assertNotNull("German text should exist", germanText);\r
+               \r
+               LanguageString germanLanguageText = singleLanguageTextData.getLanguageText(Language.GERMAN());\r
+               Assert.assertNotNull("German language text should exist", germanLanguageText);\r
+               \r
+               singleLanguageTextData.putText(singleLanguageTextData.getText(Language.ENGLISH()), Language.ENGLISH());\r
+               descriptionElementDao.saveOrUpdate(singleLanguageTextData);\r
+               \r
+               setComplete(); endTransaction();\r
+               try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}\r
+               } catch(Exception e) { logger.warn(e);} \r
+       }\r
+       \r
+       /**\r
+        * See #2114\r
+        */\r
+       @Test\r
+       @DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")\r
+       @ExpectedDataSet        \r
+       public void testChangeLanguageString(){\r
+       \r
+               //test write\r
+               TextData singleLanguageTextData = (TextData)descriptionElementDao.findByUuid(uuidSingleTextData);\r
+               Map<Language, LanguageString> multiLangText = singleLanguageTextData.getMultilanguageText();\r
+               Assert.assertEquals("There should be exactly 1 languageText in the multilanguageText", 1, multiLangText.size());\r
+               Assert.assertTrue("The language should be English", multiLangText.containsKey(Language.ENGLISH()));\r
+               \r
+               singleLanguageTextData.putText("A new English text", Language.ENGLISH());\r
+               descriptionElementDao.saveOrUpdate(singleLanguageTextData);\r
+               \r
+               setComplete(); endTransaction();\r
+               try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}\r
+               } catch(Exception e) { logger.warn(e);} \r
+       }\r
+       \r
+       /**\r
+        * See #2114\r
+        */\r
+       @Test\r
+       @DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")\r
+       @ExpectedDataSet        \r
+       public void testRemoveLanguageString(){\r
+       \r
+               //test write\r
+               TextData textDataTwo = (TextData)descriptionElementDao.findByUuid(uuidDobuleTextData);\r
+               Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, textDataTwo.size());\r
+               \r
+               Assert.assertTrue("The language should be English", textDataTwo.containsKey(Language.ENGLISH()));\r
+               \r
+               textDataTwo.removeText(Language.ENGLISH());\r
+               Assert.assertEquals("There should be only 1 language left", 1, textDataTwo.size());\r
+               descriptionElementDao.saveOrUpdate(textDataTwo);\r
+               \r
+               setComplete(); endTransaction();\r
+               try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}\r
+               } catch(Exception e) { logger.warn(e);} \r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#count(java.lang.Class, java.lang.String)}.\r
+        */\r
+       @Test\r
+       public void testCountClassOfQextendsDescriptionElementBaseString() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#getMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase, java.lang.Integer, java.lang.Integer, java.util.List)}.\r
+        */\r
+       @Test\r
+       public void testGetMedia() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)}.\r
+        */\r
+       @Test\r
+       public void testSearch() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#purgeIndex()}.\r
+        */\r
+       @Test\r
+       public void testPurgeIndex() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#rebuildIndex()}.\r
+        */\r
+       @Test\r
+       public void testRebuildIndex() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#optimizeIndex()}.\r
+        */\r
+       @Test\r
+       public void testOptimizeIndex() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#count(java.lang.String)}.\r
+        */\r
+       @Test\r
+       public void testCountString() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#suggestQuery(java.lang.String)}.\r
+        */\r
+       @Test\r
+       public void testSuggestQuery() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+}\r
index 4050d9bbe04b6271043b2d22b5dcf272853480c6..c351c58afcef8ea28310e1f16f99854f4d40e163 100644 (file)
@@ -23,15 +23,14 @@ public class IdentificationKeyDaoHibernateImplTest extends CdmIntegrationTest {
        @SpringBeanByType
        IIdentificationKeyDao identificationKeyDao;
        
-
        @Before
        public void setUp() {
                
        }
        
-       
        @Test
        public void testCountByDistribution() {
                identificationKeyDao.list(null, null, null);
        }
+
 }
diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.java
new file mode 100644 (file)
index 0000000..2612114
--- /dev/null
@@ -0,0 +1,83 @@
+/**
+* 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.persistence.dao.hibernate.description;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.unitils.dbunit.annotation.DataSet;
+import org.unitils.dbunit.annotation.ExpectedDataSet;
+import org.unitils.spring.annotation.SpringBeanByType;
+
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
+
+@DataSet
+public class PolytomousKeyDaoHibernateImplTest extends CdmIntegrationTest {
+
+       @SpringBeanByType
+       PolytomousKeyDaoImpl polytomousKeyDao;
+
+       
+       @Before
+       public void setUp() {
+               
+       }
+       
+       @Test
+       @DataSet("PolytomousKeyDaoHibernateImplTest.xml")
+//     @ExpectedDataSet  //for some reason this result in an infinite waiting of the connection pool
+       public void testSavePolytomousKey() {
+               PolytomousKey existingKey = polytomousKeyDao.findByUuid(UUID.fromString("bab66772-2c83-428a-bb6d-655d12ac6097"));
+               Assert.assertNotNull("",existingKey);
+               PolytomousKeyNode root = existingKey.getRoot();
+               Assert.assertNotNull("Root should not be null",root);
+               Assert.assertEquals(2, root.childCount());
+               
+               //new key
+               PolytomousKey newKey = PolytomousKey.NewInstance();
+               PolytomousKeyNode newRoot = newKey.getRoot();
+               PolytomousKeyNode child1 = PolytomousKeyNode.NewInstance();
+               child1.addQuestionText("Question1", null);
+               child1.addQuestionText("Question1German", Language.GERMAN());
+               child1.addStatementText("Statement1", null);
+               PolytomousKeyNode child2 = PolytomousKeyNode.NewInstance();
+               child2.addStatementText("Statement2", null);
+               child2.addQuestionText("Question2German", Language.DEFAULT());
+               PolytomousKeyNode child3 = PolytomousKeyNode.NewInstance();
+               child3.addStatementText("Statement3", null);
+               child3.addStatementText("Statement3German", Language.GERMAN());
+               
+               newRoot.addChild(child1);
+               newRoot.addChild(child3);
+               newRoot.addChild(child2, 1);
+               
+               UUID newKeyUuid = polytomousKeyDao.save(newKey);
+               
+               //doesn't make sense as long as there is no new session
+               PolytomousKey newKeyFromDb = polytomousKeyDao.findByUuid(newKeyUuid);
+//             List<PolytomousKeyNode> children = newKeyFromDb.getRoot().getChildren();
+//             Assert.assertEquals(child1.getUuid(), children.get(0).getUuid());
+//             Assert.assertNotSame(child1.getUuid(), children.get(0).getUuid());
+               
+//             printDataSet(System.out, new String[]{"PolytomousKeyNode", "KeyStatement", "KeyStatement_LanguageString", "LanguageString"});
+               System.out.println("End test1");
+       }
+       
+       @Test
+       public void testNothing(){
+               //maybe deleted once testSavePolytomousKey() works correctly
+       }
+}
index 5d90ec4c29e72d5b7a8bc276abb24f788a58d53c..0eb5070e18515884857f9d207ce2bd90ee2f9883 100644 (file)
@@ -14,20 +14,14 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import java.io.File;
-import java.net.URI;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
-import java.util.Map.Entry;
 
 import org.hibernate.Hibernate;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.unitils.dbunit.annotation.DataSet;
 import org.unitils.spring.annotation.SpringBeanByType;
diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.java
new file mode 100644 (file)
index 0000000..bab39ff
--- /dev/null
@@ -0,0 +1,118 @@
+/**
+* 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.persistence.dao.hibernate.media;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.UUID;
+
+import org.hibernate.TypeMismatchException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.unitils.dbunit.annotation.DataSet;
+import org.unitils.dbunit.annotation.ExpectedDataSet;
+import org.unitils.spring.annotation.SpringBeanByType;
+
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
+import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
+import eu.etaxonomy.cdm.persistence.dao.media.IMediaRepresentationPartDao;
+import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
+//import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
+
+@DataSet
+public class MediaRepresentationPartDaoImplTest extends /*CdmTransactionalIntegrationTest*/CdmIntegrationTest {
+
+       @SpringBeanByType
+       IMediaRepresentationPartDao dao;
+       
+       @SpringBeanByType
+       IDefinedTermDao definedTermDao;
+       
+       
+       @Before
+       public void setUp() {
+       }
+       
+       @Test
+       public void testCount() {
+               int numberOfMediaRepresentationParts = dao.count();
+               assertEquals("count should return 3",3,numberOfMediaRepresentationParts);
+       }
+       
+       @Test
+       public void testFindByUuid() {
+               MediaRepresentationPart part = dao.findByUuid(UUID.fromString("e06a0f29-ef82-4ce3-8a94-dd98feae8f9e"));
+               Assert.assertNotNull("part should not be null", part);
+               try {
+                       Assert.assertEquals("part URI should be http://www.test.de", new URI("http://www.test.de"), part.getUri());
+               } catch (URISyntaxException e) {
+                       Assert.fail("No URISyntaxException should occurr");
+               }
+               
+               MediaRepresentationPart part2 = dao.findByUuid(UUID.fromString("a07a0f29-ef82-3ce3-8a94-dd98feae8f9e"));
+               Assert.assertNotNull("part2 should not be null", part2);
+               try {
+                       Assert.assertEquals("part URI should be http://www.test2.de", new URI("http://www.test2.de"), part2.getUri());
+               } catch (URISyntaxException e) {
+                       Assert.fail("No URISyntaxException should occurr");
+               }
+               
+               try {
+                       MediaRepresentationPart part3 = dao.findByUuid(UUID.fromString("b48a0f26-2f42-3ce3-8a04-dd98feaa8e98"));
+//                     Assert.assertEquals("part URI should be http://www.test2.de", new URI("http://www.test2.de"), part3.getUri());
+                       Assert.fail("A TypeMismatchException should occurr for http://www.fail.de");
+               } catch (Exception e) {
+                       if (e instanceof TypeMismatchException){
+                               //OK
+                       }else{
+                               Assert.fail("Only an URISyntaxException should occurr but exception was of type " + e.getClass().getName());
+                       }
+               }
+
+       }
+       
+       @Test
+       @ExpectedDataSet
+       public void testSave() {
+               try {
+                       URI uri = new URI("http://www.test3.de");
+                       
+                       MediaRepresentationPart part1 = MediaRepresentationPart.NewInstance(uri, 22);
+                       //a representation is needed otherwise a not nullable exception is thrown (due to lucene index (?))
+                       MediaRepresentation representation = MediaRepresentation.NewInstance();
+                       representation.addRepresentationPart(part1);
+                       dao.save(part1);
+               
+//                     TaxonNameBase name = nameService.find(UUID.fromString("5d74500b-9fd5-4d18-b9cd-cc1c8a372fec"));
+//                     System.out.println(name.getRank().getLabel());
+//                     setComplete();
+//                     endTransaction();
+//                     try {
+//                             printDataSet(System.out, new String[]{"MediaRepresentationPart"});
+//                     } catch(Exception e) { 
+//                             logger.warn(e);
+//                     } 
+                       
+                       
+                       
+               } catch (URISyntaxException e) {
+                       Assert.fail("URI should be ok");
+               }
+               
+       }
+
+}
index bba990e29cfe90a3755c95e8c00a7935bfca68b3..11e26c7120875a4eac7eae4405e8f8858475d247 100644 (file)
@@ -9,7 +9,7 @@
 \r
 package eu.etaxonomy.cdm.persistence.dao.hibernate.reference;\r
 \r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertEquals;\r
 \r
 import java.util.List;\r
 import java.util.UUID;\r
@@ -20,8 +20,7 @@ import org.unitils.dbunit.annotation.DataSet;
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
@@ -80,21 +79,21 @@ public class ReferenceDaoHibernateImplTest extends CdmIntegrationTest {
        @Test\r
        public void testGetSubordinateReferences() {\r
                \r
-           ReferenceBase book = referenceDao.findByUuid(firstBookUuid);            \r
-           ReferenceBase proceedings = referenceDao.findByUuid(proceedingsUuid);\r
+           Reference book = referenceDao.findByUuid(firstBookUuid);        \r
+           Reference proceedings = referenceDao.findByUuid(proceedingsUuid);\r
            \r
            // 1.)\r
-               List<ReferenceBase> book_subordinateReferences = referenceDao.getSubordinateReferences(book);\r
+               List<Reference> book_subordinateReferences = referenceDao.getSubordinateReferences(book);\r
                assertEquals("expecting one subordinate reference", book_subordinateReferences.size(), 1);\r
-               ReferenceBase sub_1 = book_subordinateReferences.get(0);\r
+               Reference sub_1 = book_subordinateReferences.get(0);\r
                assertEquals("expecting BookSection as first subordinateReferences", "Better Testing made easy", sub_1.getTitleCache());\r
                assertEquals("first subordinateReferences matches uuid", bookSectionUuid, sub_1.getUuid());\r
                \r
                // 2.)\r
-               List<ReferenceBase> proceedings_subordinateReferences = referenceDao.getSubordinateReferences(proceedings);\r
+               List<Reference> proceedings_subordinateReferences = referenceDao.getSubordinateReferences(proceedings);\r
                assertEquals("expecting one subordinate reference",2 ,proceedings_subordinateReferences.size());\r
                sub_1 = proceedings_subordinateReferences.get(0);\r
-               ReferenceBase sub_2 = proceedings_subordinateReferences.get(1);\r
+               Reference sub_2 = proceedings_subordinateReferences.get(1);\r
                assertEquals("expecting BookSection as first subordinateReferences", "Proceedings of Testing Vol. 1", sub_1.getTitleCache());\r
                assertEquals("expecting BookSection as first subordinateReferences", "Better Testing made easy", sub_2.getTitleCache());\r
                assertEquals("first subordinateReferences matches uuid", firstBookUuid, sub_1.getUuid());\r
@@ -105,7 +104,7 @@ public class ReferenceDaoHibernateImplTest extends CdmIntegrationTest {
        public void testListCoveredTaxa() {\r
 \r
            \r
-               ReferenceBase book = referenceDao.findByUuid(firstBookUuid);\r
+               Reference book = referenceDao.findByUuid(firstBookUuid);\r
                List<TaxonBase> coveredTaxa = referenceDao.listCoveredTaxa(book, false, null);\r
                assertEquals("expecting one Taxa covered by this book", 1, coveredTaxa.size());\r
                assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
@@ -115,14 +114,14 @@ public class ReferenceDaoHibernateImplTest extends CdmIntegrationTest {
                assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
                assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
                \r
-               ReferenceBase bookSection = referenceDao.findByUuid(bookSectionUuid);\r
+               Reference bookSection = referenceDao.findByUuid(bookSectionUuid);\r
                coveredTaxa = referenceDao.listCoveredTaxa(bookSection, false, null);\r
                assertEquals("expecting two Taxa covered by this bookSection", 2, coveredTaxa.size());\r
                assertEquals("1st covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
                assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
                \r
                // by nomenclaturalReference\r
-               ReferenceBase nomRef = referenceDao.findByUuid(nomenclaturalReferenceBookUuid);\r
+               Reference nomRef = referenceDao.findByUuid(nomenclaturalReferenceBookUuid);\r
                coveredTaxa = referenceDao.listCoveredTaxa(nomRef, false, null);\r
                assertEquals("expecting two Taxa covered nomenclaturalReference", 2, coveredTaxa.size());\r
                assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
index 81b99fc934519ecd6352d8bdb70d2b548e2d2166..f77273bf57876242146d7daa3b51a16616e81978 100644 (file)
@@ -39,7 +39,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -47,7 +47,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.view.AuditEvent;\r
 import eu.etaxonomy.cdm.model.view.AuditEventRecord;\r
 import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;\r
@@ -55,7 +55,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao;\r
+import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;\r
 import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;\r
 import eu.etaxonomy.cdm.persistence.query.GroupByCount;\r
 import eu.etaxonomy.cdm.persistence.query.GroupByDate;\r
@@ -77,7 +77,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
        private ITaxonDao taxonDao;\r
        \r
        @SpringBeanByType       \r
-       private ITaxonomicTreeDao taxonomicTreeDao;\r
+       private IClassificationDao classificationDao;\r
        \r
        @SpringBeanByType       \r
        private IReferenceDao referenceDao;\r
@@ -101,7 +101,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
        private UUID southernAmericaUuid;\r
        private UUID antarcticaUuid;\r
 \r
-       private UUID taxonomicTreeUuid;\r
+       private UUID classificationUuid;\r
        \r
 \r
        @Before\r
@@ -130,7 +130,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                southernAmericaUuid = UUID.fromString("6310b3ba-96f4-4855-bb5b-326e7af188ea");\r
                antarcticaUuid = UUID.fromString("791b3aa0-54dd-4bed-9b68-56b4680aad0c");\r
                \r
-               taxonomicTreeUuid = UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9");\r
+               classificationUuid = UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9");\r
        }\r
        \r
        @After\r
@@ -151,15 +151,15 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
        \r
        /**\r
         * Test method for\r
-        * {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase)}\r
+        * {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference)}\r
         * .\r
         */\r
        @Test\r
        @DataSet\r
        public void testGetRootTaxa() {\r
-               ReferenceBase sec1 = referenceDao.findById(1);\r
+               Reference sec1 = referenceDao.findById(1);\r
                assert sec1 != null : "sec1 must exist";\r
-               ReferenceBase sec2 = referenceDao.findById(2);\r
+               Reference sec2 = referenceDao.findById(2);\r
                assert sec2 != null : "sec2 must exist";\r
 \r
                List<Taxon> rootTaxa = taxonDao.getRootTaxa(sec1);\r
@@ -207,12 +207,12 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
        }\r
        \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#getTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.ReferenceBase)}.\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#getTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.Reference)}.\r
         */\r
        @Test\r
        @DataSet\r
        public void testGetTaxaByName() {\r
-               ReferenceBase sec = referenceDao.findById(1);\r
+               Reference sec = referenceDao.findById(1);\r
                assert sec != null : "sec must exist";\r
 \r
                List<TaxonBase> results = taxonDao.getTaxaByName("Aus", sec);\r
@@ -251,7 +251,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
        }       \r
        \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#getTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.ReferenceBase)}\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#getTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.Reference)}\r
         * restricting the search by a set of Areas.\r
         */\r
        @SuppressWarnings("unchecked")\r
@@ -264,7 +264,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                //namedAreas.add((NamedArea)definedTermDao.load(southernAmericaUuid));\r
                //namedAreas.add((NamedArea)definedTermDao.load(antarcticaUuid));\r
 \r
-               TaxonomicTree taxonmicTree = taxonomicTreeDao.findByUuid(taxonomicTreeUuid);\r
+               Classification taxonmicTree = classificationDao.findByUuid(classificationUuid);\r
                \r
                // prepare some synonym relation ships for some tests\r
                Synonym synAtroposAgassiz = (Synonym)taxonDao.findByUuid(atroposAgassiz);\r
@@ -284,7 +284,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                assertNotNull("getTaxaByName should return a List", results);\r
                assertTrue("expected to find two taxa but found "+results.size(), results.size() == 2);\r
                \r
-               // 2. searching for a taxon (Rethera) contained in a specific taxonomicTree\r
+               // 2. searching for a taxon (Rethera) contained in a specific classification\r
                results = taxonDao.getTaxaByName(Taxon.class, "Rethera", taxonmicTree, MatchMode.BEGINNING, namedAreas,\r
                        null, null, null);\r
                assertNotNull("getTaxaByName should return a List", results);\r
@@ -315,7 +315,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
 \r
        \r
        /**\r
-        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, TaxonomicTree taxonomicTree, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths)}\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, Classification classification, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths)}\r
         * restricting the search by a set of Areas.\r
         */\r
        @SuppressWarnings("unchecked")\r
@@ -328,7 +328,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                //namedAreas.add((NamedArea)definedTermDao.load(southernAmericaUuid));\r
                //namedAreas.add((NamedArea)definedTermDao.load(antarcticaUuid));\r
 \r
-               TaxonomicTree taxonmicTree = taxonomicTreeDao.findByUuid(taxonomicTreeUuid);\r
+               Classification classification = classificationDao.findByUuid(classificationUuid);\r
                \r
                // prepare some synonym relation ships for some tests\r
                Synonym synAtroposAgassiz = (Synonym)taxonDao.findByUuid(atroposAgassiz);\r
@@ -348,8 +348,8 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                assertNotNull("getTaxaByName should return a List", results);\r
                assertTrue("expected to find two taxa but found "+results.size(), results.size() == 2);\r
                \r
-               // 2. searching for a taxon (Rethera) contained in a specific taxonomicTree\r
-               results = taxonDao.findByNameTitleCache(Taxon.class, "Rethera Rothschild & Jordan, 1903", taxonmicTree, MatchMode.EXACT, namedAreas,\r
+               // 2. searching for a taxon (Rethera) contained in a specific classification\r
+               results = taxonDao.findByNameTitleCache(Taxon.class, "Rethera Rothschild & Jordan, 1903", classification, MatchMode.EXACT, namedAreas,\r
                        null, null, null);\r
                assertNotNull("getTaxaByName should return a List", results);\r
                assertTrue("expected to find one taxon but found "+results.size(), results.size() == 1);\r
@@ -419,8 +419,8 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                assertEquals(numberOfTaxa, 3);\r
                numberOfTaxa = taxonDao.countTaxaByName(TaxonBase.class, "A*", null, MatchMode.BEGINNING, null);\r
                assertEquals(numberOfTaxa, 12);\r
-//     FIXME implement test for search in specific taxontree           \r
-//             ReferenceBase reference = referenceDao.findByUuid(UUID.fromString("596b1325-be50-4b0a-9aa2-3ecd610215f2"));\r
+//     FIXME implement test for search in specific classification              \r
+//             Reference reference = referenceDao.findByUuid(UUID.fromString("596b1325-be50-4b0a-9aa2-3ecd610215f2"));\r
 //             numberOfTaxa = taxonDao.countTaxaByName("A*", MatchMode.BEGINNING, SelectMode.ALL, null, null);\r
 //             assertEquals(numberOfTaxa, 2);\r
        }\r
@@ -871,9 +871,9 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
     \r
     @Test\r
     @DataSet\r
-       public final void testGetTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(){\r
-       TaxonomicTree taxonomicTree = taxonomicTreeDao.findByUuid(taxonomicTreeUuid);\r
-               assertNotNull(taxonDao.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(taxonomicTree));\r
+       public final void testGetTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(){\r
+       Classification classification = classificationDao.findByUuid(classificationUuid);\r
+               assertNotNull(taxonDao.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification));\r
        }\r
     \r
     @Test\r
@@ -928,7 +928,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
     @DataSet("TaxonNodeDaoHibernateImplTest.xml")\r
     @Ignore\r
     public void testCreateInferredSynonymy(){\r
-       TaxonomicTree tree = this.taxonomicTreeDao.findById(1);\r
+       Classification tree = this.classificationDao.findById(1);\r
        Taxon taxon = (Taxon)taxonDao.findByUuid(UUID.fromString("bc09aca6-06fd-4905-b1e7-cbf7cc65d783"));\r
        List <Synonym> synonyms = taxonDao.getAllSynonyms(null, null);\r
        assertEquals("Number of synonyms should be 2",2,synonyms.size());\r
index 6d2414407b1c01c43e3a0f887c1f6c4a7d16a435..a0c61d90737ca9db617cb5f68a4ac48944d98e97 100644 (file)
@@ -26,11 +26,11 @@ import org.unitils.spring.annotation.SpringBeanByType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao;
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao;
+import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
 
 public class TaxonNodeDaoHibernateImplTest extends
@@ -40,7 +40,7 @@ public class TaxonNodeDaoHibernateImplTest extends
        private ITaxonNodeDao taxonNodeDao;
        
        @SpringBeanByType
-       private ITaxonomicTreeDao taxonomicTreeDao;
+       private IClassificationDao classificationDao;
        
        @SpringBeanByType
        private ITaxonDao taxonDao;
@@ -66,25 +66,25 @@ public class TaxonNodeDaoHibernateImplTest extends
        @DataSet
        public void testInit() {
                assertNotNull("Instance of ITaxonDao expected",taxonNodeDao);
-               assertNotNull("Instance of IReferenceDao expected",taxonomicTreeDao);
+               assertNotNull("Instance of IReferenceDao expected",classificationDao);
        }       
        
        @Test
        @DataSet
        public void testFindByUuid() {
                TaxonNode taxonNode = (TaxonNode) taxonNodeDao.findByUuid(uuid1);
-               TaxonomicTree.class.getDeclaredConstructors();
+               Classification.class.getDeclaredConstructors();
                assertNotNull("findByUuid should return a taxon node", taxonNode);
        }
        
        @Test
        @DataSet
-       public void testTaxonomicTree() {
-               TaxonomicTree taxonTree =  taxonomicTreeDao.findByUuid(UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9"));
+       public void testClassification() {
+               Classification classification =  classificationDao.findByUuid(UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9"));
                
-               assertNotNull("findByUuid should return a taxon tree", taxonTree);
-               assertNotNull("taxonomic tree should have a name",taxonTree.getName());
-               assertEquals("taxonomic tree should have a name which is 'Name'",taxonTree.getName().getText(),"Name");
+               assertNotNull("findByUuid should return a taxon tree", classification);
+               assertNotNull("classification should have a name",classification.getName());
+               assertEquals("classification should have a name which is 'Name'",classification.getName().getText(),"Name");
                TaxonNode taxNode = (TaxonNode) taxonNodeDao.findByUuid(uuid1);
                TaxonNode taxNode2 = (TaxonNode) taxonNodeDao.findByUuid(uuid2);
                Set<TaxonNode> rootNodes = new HashSet<TaxonNode>();
@@ -93,12 +93,9 @@ public class TaxonNodeDaoHibernateImplTest extends
                
        
                for (TaxonNode rootNode : rootNodes){
-                       taxonTree.addChildNode(rootNode, rootNode.getReference(), rootNode.getMicroReference(), rootNode.getSynonymToBeUsed());
+                       classification.addChildNode(rootNode, rootNode.getReference(), rootNode.getMicroReference(), rootNode.getSynonymToBeUsed());
                }
-               
-               //taxonTree.addChildNode(taxNode, taxNode.getReference(), taxNode.getMicroReference(), taxNode.getSynonymToBeUsed());
-               
-               //old: taxonTree.setRootNodes(rootNodes);
+
                taxNode.addChildNode(taxNode2, null, null,null);
                
                Taxon taxon2 = taxNode2.getTaxon();
@@ -114,9 +111,9 @@ public class TaxonNodeDaoHibernateImplTest extends
                taxa = taxonDao.getAllTaxonBases(10, 0);
                assertEquals("there should be only one taxon left", 4, taxa.size());
                
-               taxonomicTreeDao.delete(taxonTree);
-               taxonTree = taxonomicTreeDao.findByUuid(UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9"));
-               assertEquals("The tree should be null", null, taxonTree);
+               classificationDao.delete(classification);
+               classification = classificationDao.findByUuid(UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9"));
+               assertEquals("The tree should be null", null, classification);
                
                
        }
index 7c699912ec11c95e465861c7c8c4078c244d1052..a796d274160f6aca5f334a49a26133d2c6c623bd 100644 (file)
@@ -43,7 +43,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -51,7 +51,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.view.AuditEvent;\r
 import eu.etaxonomy.cdm.model.view.AuditEventRecord;\r
 import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;\r
@@ -59,7 +59,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao;\r
+import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;\r
 import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;\r
 import eu.etaxonomy.cdm.persistence.query.GroupByCount;\r
 import eu.etaxonomy.cdm.persistence.query.GroupByDate;\r
index 074c87b333366184171c966f021078d3e6bc9548..dc5e8a0ea8210477126fae0a280adc5a7385799c 100644 (file)
@@ -120,7 +120,7 @@ public class CacheStrategyGeneratorTest extends CdmIntegrationTest {
                logger.debug("created "+botName.getCreated());\r
                logger.debug("updated: " +botName.getUpdated());\r
 //             BotanicalName name3 =  (BotanicalName)cdmEntityDaoBase.findByUuid(UUID.fromString("049a3963-c4ea-4047-8588-2f8f15352730"));\r
-//             printDataSet(System.err, new String[]{"TaxonNameBase", "ReferenceBase"});\r
+//             printDataSet(System.err, new String[]{"TaxonNameBase", "Reference"});\r
        }\r
 \r
        /**\r
index ffee4475e0db24702de82c6e32a95d247b1e6767..a1896bbc2be4cdec16ec385bf18c9a627c386829 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -52,7 +52,7 @@ public class TestPersistence {
                \r
                logger.info("Create reference objects...");\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
-               ReferenceBase sec = refFactory.newJournal();\r
+               Reference sec = refFactory.newJournal();\r
                sec.setTitleCache("TestJournal", true);\r
                \r
                logger.info("Create taxon objects...");\r
index 716c2b6accf5039fd8d9dc17921ca8edaab08bfb..44b7bc6d45cbf95c059eb58a2ad8ec5e3d445200 100644 (file)
         <class>eu.etaxonomy.cdm.model.reference.PrintedUnitBase</class>
         <class>eu.etaxonomy.cdm.model.reference.PrintSeries</class>
         <class>eu.etaxonomy.cdm.model.reference.Proceedings</class>
-        <class>eu.etaxonomy.cdm.model.reference.ReferenceBase</class>
+        <class>eu.etaxonomy.cdm.model.reference.Reference</class>
         <class>eu.etaxonomy.cdm.model.reference.Report</class>
         <class>eu.etaxonomy.cdm.model.reference.SectionBase</class>
         <class>eu.etaxonomy.cdm.model.reference.Thesis</class>
         <class>eu.etaxonomy.cdm.model.taxon.TaxonNode</class>
         <class>eu.etaxonomy.cdm.model.taxon.TaxonRelationship</class>
         <class>eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType</class>
-        <class>eu.etaxonomy.cdm.model.taxon.TaxonomicTree</class>
+        <class>eu.etaxonomy.cdm.model.taxon.Classification</class>
         <!-- View Package -->
         <class>eu.etaxonomy.cdm.model.view.View</class>
         <class>eu.etaxonomy.cdm.model.view.AuditEvent</class>
index c49c2bfe3691d1b7fcf4fbc9001307be82325983..6477958e4ac13df5b5109f8ebb37190b0437746e 100644 (file)
@@ -1,5 +1,4 @@
-
-    create table Address (
+       create table Address (
         id integer not null,
         created timestamp,
         uuid varchar(36),
         primary key (CDM_VIEW_id, superviews_id),
         unique (superviews_id)
     );
+    
+    
+    create table Classification (
+        id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit not null,
+        titleCache varchar(255),
+        microreference varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        name_id integer,
+        reference_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+
+    create table Classification_AUD (
+        id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit,
+        titleCache varchar(255),
+        microreference varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        name_id integer,
+        reference_id integer,
+        primary key (id, REV)
+    );
+
+    create table Classification_Annotation (
+        Classification_id integer not null,
+        annotations_id integer not null,
+        primary key (Classification_id, annotations_id),
+        unique (annotations_id)
+    );
+
+    create table Classification_Annotation_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        annotations_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, annotations_id)
+    );
+
+    create table Classification_Credit (
+        Classification_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        primary key (Classification_id, sortIndex),
+        unique (credits_id)
+    );
+
+    create table Classification_Credit_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, credits_id, sortIndex)
+    );
+
+    create table Classification_Extension (
+        Classification_id integer not null,
+        extensions_id integer not null,
+        primary key (Classification_id, extensions_id),
+        unique (extensions_id)
+    );
+
+    create table Classification_Extension_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        extensions_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, extensions_id)
+    );
+
+    create table Classification_Marker (
+        Classification_id integer not null,
+        markers_id integer not null,
+        primary key (Classification_id, markers_id),
+        unique (markers_id)
+    );
+
+    create table Classification_Marker_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        markers_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, markers_id)
+    );
+
+    create table Classification_OriginalSourceBase (
+        Classification_id integer not null,
+        sources_id integer not null,
+        primary key (Classification_id, sources_id),
+        unique (sources_id)
+    );
+
+    create table Classification_OriginalSourceBase_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        sources_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, sources_id)
+    );
+
+    create table Classification_Rights (
+        Classification_id integer not null,
+        rights_id integer not null,
+        primary key (Classification_id, rights_id),
+        unique (rights_id)
+    );
+
+    create table Classification_Rights_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        rights_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, rights_id)
+    );
+
+    create table Classification_TaxonNode (
+        Classification_id integer not null,
+        rootnodes_id integer not null,
+        primary key (Classification_id, rootnodes_id),
+        unique (rootnodes_id)
+    );
+
+    create table Classification_TaxonNode_AUD (
+        REV integer not null,
+        Classification_id integer not null,
+        rootnodes_id integer not null,
+        revtype tinyint,
+        primary key (REV, Classification_id, rootnodes_id)
+    );
+
 
     create table Collection (
         id integer not null,
         imagegallery bit not null,
         createdby_id integer,
         updatedby_id integer,
-        taxon_fk integer,
-        taxonName_fk integer,
+        taxon_id integer,
+        taxonname_id integer,
         primary key (id),
         unique (uuid)
     );
         imagegallery bit,
         createdby_id integer,
         updatedby_id integer,
-        taxon_fk integer,
-        taxonName_fk integer,
+        taxon_id integer,
+        taxonname_id integer,
         primary key (id, REV)
     );
 
         updated timestamp,
         createdby_id integer,
         updatedby_id integer,
+        featureTree_id integer not null,
         feature_id integer,
-        parent_fk integer,
-        taxon_id integer,
+        parent_id integer,
         primary key (id),
         unique (uuid)
     );
         updated timestamp,
         createdby_id integer,
         updatedby_id integer,
+               featureTree_id integer not null,
         feature_id integer,
-        parent_fk integer,
-        taxon_id integer,
+        parent_id integer,
         primary key (id, REV)
     );
 
         primary key (REV, FeatureNode_id, onlyapplicableif_id)
     );
 
-    create table FeatureNode_Representation (
-        FeatureNode_id integer not null,
-        questions_id integer not null,
-        primary key (FeatureNode_id, questions_id),
-        unique (questions_id)
-    );
-
-    create table FeatureNode_Representation_AUD (
-        REV integer not null,
-        FeatureNode_id integer not null,
-        questions_id integer not null,
-        revtype tinyint,
-        primary key (REV, FeatureNode_id, questions_id)
-    );
-
     create table FeatureTree (
         DTYPE varchar(31) not null,
         id integer not null,
         primary key (id),
         unique (uuid, authority)
     );
+       
+       create table hibernate_sequences (
+               sequence_name varchar(255),
+               next_val integer,
+               primary key (sequence_name)
+       );
 
     create table HomotypicalGroup (
         id integer not null,
         person_id integer,
         primary key (id, REV)
     );
+           
+    create table KeyStatement (
+        id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        createdby_id integer,
+        updatedby_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+    
+    create table KeyStatement_AUD (
+        id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        createdby_id integer,
+        updatedby_id integer,
+        primary key (id, REV)
+      );
+      
+     create table KeyStatement_LanguageString (
+        keyStatement_id integer not null,
+        label_id integer not null,
+        label_mapkey_id integer not null,
+        primary key (keyStatement_id, label_mapkey_id),
+        unique (label_id)
+    );
+
+    create table KeyStatement_LanguageString_AUD (
+        REV integer not null,
+        keyStatement_id integer not null,
+        label_id integer not null,
+        label_mapkey_id integer not null,
+        revtype tinyint,
+        primary key (REV, keyStatement_id, label_id, label_mapkey_id)
+    );
 
     create table LSIDAuthority (
         id integer not null,
     );
 
     create table MediaKey_Taxon (
-        mediaKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (mediaKey_fk, taxon_fk)
+        mediaKey_id integer not null,
+        taxon_id integer not null,
+        primary key (mediaKey_id, taxon_id)
     );
 
     create table MediaKey_Taxon_AUD (
         REV integer not null,
-        mediaKey_fk integer not null,
-        taxon_fk integer not null,
+        mediaKey_id integer not null,
+        taxon_id integer not null,
         revtype tinyint,
-        primary key (REV, mediaKey_fk, taxon_fk)
+        primary key (REV, mediaKey_id, taxon_id)
     );
 
     create table MediaRepresentation (
     );
 
     create table MultiAccessKey_Taxon (
-        multiAccessKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (multiAccessKey_fk, taxon_fk)
+        multiAccessKey_id integer not null,
+        taxon_id integer not null,
+        primary key (multiAccessKey_id, taxon_id)
     );
 
     create table MultiAccessKey_Taxon_AUD (
         REV integer not null,
-        multiAccessKey_fk integer not null,
-        taxon_fk integer not null,
+        multiAccessKey_id integer not null,
+        taxon_id integer not null,
         revtype tinyint,
-        primary key (REV, multiAccessKey_fk, taxon_fk)
+        primary key (REV, multiAccessKey_id, taxon_id)
     );
 
     create table NameRelationship (
         primary key (PermissionGroup_id, grantedauthorities_id)
     );
 
+   create table PolytomousKey (
+               id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit not null,
+        titleCache varchar(255),
+        uri varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        root_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+
+   create table PolytomousKey_AUD (
+               id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        lsid_authority varchar(255),
+        lsid_lsid varchar(255),
+        lsid_namespace varchar(255),
+        lsid_object varchar(255),
+        lsid_revision varchar(255),
+        protectedtitlecache bit not null,
+        titleCache varchar(255),
+        uri varchar(255),
+        createdby_id integer,
+        updatedby_id integer,
+        root_id integer,
+        primary key (id, REV)
+    );
+
+    create table PolytomousKey_Annotation (
+        PolytomousKey_id integer not null,
+        annotations_id integer not null,
+        primary key (PolytomousKey_id, annotations_id),
+        unique (annotations_id)
+    );
+
+    create table PolytomousKey_Annotation_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        annotations_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, annotations_id)
+    );
+
+    create table PolytomousKey_Credit (
+        PolytomousKey_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        primary key (PolytomousKey_id, sortIndex),
+        unique (credits_id)
+    );
+
+    create table PolytomousKey_Credit_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        credits_id integer not null,
+        sortIndex integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, credits_id, sortIndex)
+    );
+
+    create table PolytomousKey_Extension (
+        PolytomousKey_id integer not null,
+        extensions_id integer not null,
+        primary key (PolytomousKey_id, extensions_id),
+        unique (extensions_id)
+    );
+
+    create table PolytomousKey_Extension_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        extensions_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, extensions_id)
+    );
+
+    create table PolytomousKey_Marker (
+        PolytomousKey_id integer not null,
+        markers_id integer not null,
+        primary key (PolytomousKey_id, markers_id),
+        unique (markers_id)
+    );
+
+    create table PolytomousKey_Marker_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        markers_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, markers_id)
+    );
+
     create table PolytomousKey_NamedArea (
-        FeatureTree_id integer not null,
+        PolytomousKey_id integer not null,
         geographicalscope_id integer not null,
-        primary key (FeatureTree_id, geographicalscope_id)
+        primary key (PolytomousKey_id, geographicalscope_id)
     );
 
     create table PolytomousKey_NamedArea_AUD (
         REV integer not null,
-        FeatureTree_id integer not null,
+        PolytomousKey_id integer not null,
         geographicalscope_id integer not null,
         revtype tinyint,
-        primary key (REV, FeatureTree_id, geographicalscope_id)
+        primary key (REV, PolytomousKey_id, geographicalscope_id)
+    );
+    
+    create table PolytomousKey_OriginalSourceBase (
+        PolytomousKey_id integer not null,
+        sources_id integer not null,
+        primary key (PolytomousKey_id, sources_id),
+        unique (sources_id)
+    );
+
+    create table PolytomousKey_OriginalSourceBase_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        sources_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, sources_id)
+    );
+
+
+    create table PolytomousKey_Rights (
+        PolytomousKey_id integer not null,
+        rights_id integer not null,
+        primary key (PolytomousKey_id, rights_id),
+        unique (rights_id)
+    );
+
+    create table PolytomousKey_Rights_AUD (
+        REV integer not null,
+        PolytomousKey_id integer not null,
+        rights_id integer not null,
+        revtype tinyint,
+        primary key (REV, PolytomousKey_id, rights_id)
     );
 
     create table PolytomousKey_Scope (
-        FeatureTree_id integer not null,
+        PolytomousKey_id integer not null,
         scoperestrictions_id integer not null,
-        primary key (FeatureTree_id, scoperestrictions_id)
+        primary key (PolytomousKey_id, scoperestrictions_id)
     );
 
     create table PolytomousKey_Scope_AUD (
         REV integer not null,
-        FeatureTree_id integer not null,
+        PolytomousKey_id integer not null,
         scoperestrictions_id integer not null,
         revtype tinyint,
-        primary key (REV, FeatureTree_id, scoperestrictions_id)
+        primary key (REV, PolytomousKey_id, scoperestrictions_id)
     );
 
     create table PolytomousKey_Taxon (
-        polytomousKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (polytomousKey_fk, taxon_fk)
+        polytomousKey_id integer not null,
+        taxon_id integer not null,
+        primary key (polytomousKey_id, taxon_id)
     );
 
     create table PolytomousKey_Taxon_AUD (
         REV integer not null,
-        polytomousKey_fk integer not null,
-        taxon_fk integer not null,
+        polytomousKey_id integer not null,
+        taxon_id integer not null,
+        revtype tinyint,
+        primary key (REV, polytomousKey_id, taxon_id)
+    );
+    
+        
+    create table PolytomousKeyNode (
+        id integer not null,
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        nodenumber integer,
+        sortindex integer,
+        createdby_id integer,
+        updatedby_id integer,
+        key_id integer,
+        parent_id integer,
+        question_id integer,
+        statement_id integer,
+        feature_id integer,
+        taxon_id integer,
+        subkey_id integer,
+        othernode_id integer,
+        primary key (id),
+        unique (uuid)
+    );
+
+    create table PolytomousKeyNode_AUD (
+        id integer not null,
+        REV integer not null,
         revtype tinyint,
-        primary key (REV, polytomousKey_fk, taxon_fk)
+        created timestamp,
+        uuid varchar(36),
+        updated timestamp,
+        nodenumber integer,
+        sortindex integer,
+        createdby_id integer,
+        updatedby_id integer,
+        key_id integer,
+        parent_id integer,
+        question_id integer,
+        statement_id integer,
+        feature_id integer,
+        taxon_id integer,
+        subkey_id integer,
+        othernode_id integer,
+        primary key (id, REV)
     );
+    
+    create table PolytomousKeyNode_PolytomousKeyNode_AUD(
+       id integer not null,
+        REV integer not null,
+        revtype tinyint,
+        parent_id integer, 
+        sortIndex integer
+    )
 
     create table Reference (
         DTYPE varchar(31) not null,
         createdby_id integer,
         updatedby_id integer,
         lifestage_id integer,
-        sex_id integer,
+        sex_id integer,    
+        exsiccatum varchar(255),
+       primarycollector_id integer,
         collection_id integer,
-        derivationevent_id integer,
+        derivedfrom_id integer,
         storedunder_id integer,
         preservation_id integer,
         gatheringevent_id integer,
         primary key (id),
         unique (uuid)
     );
+    
 
     create table SpecimenOrObservationBase_AUD (
         DTYPE varchar(31) not null,
         fieldnotes varchar(255),
         fieldnumber varchar(255),
         barcode varchar(255),
+        exsiccatum varchar(255),
         gatheringevent_id integer,
         accessionnumber varchar(255),
         catalognumber varchar(255),
         collectorsnumber varchar(255),
+        primarycollector_id integer,
         collection_id integer,
-        derivationevent_id integer,
+        derivedfrom_id integer,
         storedunder_id integer,
         preservation_id integer,
         primary key (id, REV)
 
     create table SpecimenOrObservationBase_LanguageString (
         SpecimenOrObservationBase_id integer not null,
-        description_id integer not null,
-        description_mapkey_id integer not null,
-        primary key (SpecimenOrObservationBase_id, description_mapkey_id),
-        unique (description_id)
+        definition_id integer not null,
+        definition_mapkey_id integer not null,
+        primary key (SpecimenOrObservationBase_id, definition_mapkey_id),
+        unique (definition_id)
     );
 
     create table SpecimenOrObservationBase_LanguageString_AUD (
         REV integer not null,
         SpecimenOrObservationBase_id integer not null,
-        description_id integer not null,
-        description_mapkey_id integer not null,
+        definition_id integer not null,
+        definition_mapkey_id integer not null,
         revtype tinyint,
-        primary key (REV, SpecimenOrObservationBase_id, description_id, description_mapkey_id)
+        primary key (REV, SpecimenOrObservationBase_id, definition_id, definition_mapkey_id)
     );
 
     create table SpecimenOrObservationBase_Marker (
         taxonomicchildrencount integer,
         createdby_id integer,
         updatedby_id integer,
-        taxonName_fk integer,
+        name_id integer,
         sec_id integer,
         taxonomicparentcache_id integer,
         primary key (id),
         usenamecache bit,
         createdby_id integer,
         updatedby_id integer,
-        taxonName_fk integer,
+        name_id integer,
         sec_id integer,
         taxonstatusunknown bit,
         unplaced bit,
         referenceforparentchildrelation_id integer,
         synonymtobeused_id integer,
         taxon_id integer,
-        taxonomictree_id integer,
+        classification_id integer,
         primary key (id),
         unique (uuid)
     );
         referenceforparentchildrelation_id integer,
         synonymtobeused_id integer,
         taxon_id integer,
-        taxonomictree_id integer,
+        classification_id integer,
         primary key (id, REV)
     );
 
         primary key (REV, TaxonRelationship_id, markers_id)
     );
 
-    create table TaxonomicTree (
-        id integer not null,
-        created timestamp,
-        uuid varchar(36),
-        updated timestamp,
-        lsid_authority varchar(255),
-        lsid_lsid varchar(255),
-        lsid_namespace varchar(255),
-        lsid_object varchar(255),
-        lsid_revision varchar(255),
-        protectedtitlecache bit not null,
-        titleCache varchar(255),
-        microreference varchar(255),
-        createdby_id integer,
-        updatedby_id integer,
-        name_id integer,
-        reference_id integer,
-        primary key (id),
-        unique (uuid)
-    );
-
-    create table TaxonomicTree_AUD (
-        id integer not null,
-        REV integer not null,
-        revtype tinyint,
-        created timestamp,
-        uuid varchar(36),
-        updated timestamp,
-        lsid_authority varchar(255),
-        lsid_lsid varchar(255),
-        lsid_namespace varchar(255),
-        lsid_object varchar(255),
-        lsid_revision varchar(255),
-        protectedtitlecache bit,
-        titleCache varchar(255),
-        microreference varchar(255),
-        createdby_id integer,
-        updatedby_id integer,
-        name_id integer,
-        reference_id integer,
-        primary key (id, REV)
-    );
-
-    create table TaxonomicTree_Annotation (
-        TaxonomicTree_id integer not null,
-        annotations_id integer not null,
-        primary key (TaxonomicTree_id, annotations_id),
-        unique (annotations_id)
-    );
-
-    create table TaxonomicTree_Annotation_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        annotations_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, annotations_id)
-    );
-
-    create table TaxonomicTree_Credit (
-        TaxonomicTree_id integer not null,
-        credits_id integer not null,
-        sortIndex integer not null,
-        primary key (TaxonomicTree_id, sortIndex),
-        unique (credits_id)
-    );
-
-    create table TaxonomicTree_Credit_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        credits_id integer not null,
-        sortIndex integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, credits_id, sortIndex)
-    );
-
-    create table TaxonomicTree_Extension (
-        TaxonomicTree_id integer not null,
-        extensions_id integer not null,
-        primary key (TaxonomicTree_id, extensions_id),
-        unique (extensions_id)
-    );
-
-    create table TaxonomicTree_Extension_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        extensions_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, extensions_id)
-    );
-
-    create table TaxonomicTree_Marker (
-        TaxonomicTree_id integer not null,
-        markers_id integer not null,
-        primary key (TaxonomicTree_id, markers_id),
-        unique (markers_id)
-    );
-
-    create table TaxonomicTree_Marker_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        markers_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, markers_id)
-    );
-
-    create table TaxonomicTree_OriginalSourceBase (
-        TaxonomicTree_id integer not null,
-        sources_id integer not null,
-        primary key (TaxonomicTree_id, sources_id),
-        unique (sources_id)
-    );
-
-    create table TaxonomicTree_OriginalSourceBase_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        sources_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, sources_id)
-    );
-
-    create table TaxonomicTree_Rights (
-        TaxonomicTree_id integer not null,
-        rights_id integer not null,
-        primary key (TaxonomicTree_id, rights_id),
-        unique (rights_id)
-    );
-
-    create table TaxonomicTree_Rights_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        rights_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, rights_id)
-    );
-
-    create table TaxonomicTree_TaxonNode (
-        TaxonomicTree_id integer not null,
-        rootnodes_id integer not null,
-        primary key (TaxonomicTree_id, rootnodes_id),
-        unique (rootnodes_id)
-    );
-
-    create table TaxonomicTree_TaxonNode_AUD (
-        REV integer not null,
-        TaxonomicTree_id integer not null,
-        rootnodes_id integer not null,
-        revtype tinyint,
-        primary key (REV, TaxonomicTree_id, rootnodes_id)
-    );
-
     create table TermVocabulary (
         DTYPE varchar(31) not null,
         id integer not null,
 
     alter table DescriptionBase 
         add constraint FKFF4D58CDDE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table DescriptionBase 
         add constraint FKFF4D58CDDA93512F 
-        foreign key (taxonName_fk
+        foreign key (taxonname_id
         references TaxonNameBase;
 
     alter table DescriptionBase 
 
     alter table FeatureNode 
         add constraint FK4CEED9F8E0AD2C03 
-        foreign key (parent_fk
+        foreign key (parent_id
         references FeatureNode;
 
+    alter table FeatureNode 
+        add constraint FK4CEED9F8DE9A3E39 
+        foreign key (featureTree_id) 
+        references FeatureTree;
+
     alter table FeatureNode 
         add constraint FK4CEED9F84220AFEB 
         foreign key (feature_id) 
         references DefinedTermBase;
 
-    alter table FeatureNode 
-        add constraint FK4CEED9F8DE9A3E39 
-        foreign key (taxon_id) 
-        references TaxonBase;
-
     alter table FeatureNode 
         add constraint FK4CEED9F8BC5DA539 
         foreign key (updatedby_id) 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table FeatureNode_Representation 
-        add constraint FK98668A14ED54F5E0 
-        foreign key (questions_id) 
-        references Representation;
-
-    alter table FeatureNode_Representation 
-        add constraint FK98668A1452FCC4B 
-        foreign key (FeatureNode_id) 
-        references FeatureNode;
-
-    alter table FeatureNode_Representation_AUD 
-        add constraint FK8F578DE534869AAE 
-        foreign key (REV) 
-        references AuditEvent;
-
     alter table FeatureTree 
         add constraint FK4CF19F944FF2DB2C 
         foreign key (createdby_id) 
 
     alter table MediaKey_Taxon 
         add constraint FKC00C3966815C793 
-        foreign key (mediaKey_fk
+        foreign key (mediaKey_id
         references Media;
 
     alter table MediaKey_Taxon 
         add constraint FKC00C3966DE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table MediaKey_Taxon_AUD 
 
     alter table MultiAccessKey_Taxon 
         add constraint FKCC7A356DB64A7AD3 
-        foreign key (multiAccessKey_fk
+        foreign key (multiAccessKey_id
         references WorkingSet;
 
     alter table MultiAccessKey_Taxon 
         add constraint FKCC7A356DDE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table MultiAccessKey_Taxon_AUD 
 
     alter table PolytomousKey_NamedArea 
         add constraint FK1C727CFFED57882F 
-        foreign key (FeatureTree_id) 
-        references FeatureTree;
+        foreign key (PolytomousKey_id) 
+        references PolytomousKey;
 
     alter table PolytomousKey_NamedArea_AUD 
         add constraint FK750A135034869AAE 
 
     alter table PolytomousKey_Scope 
         add constraint FK8D97986DED57882F 
-        foreign key (FeatureTree_id) 
-        references FeatureTree;
+        foreign key (PolytomousKey_id) 
+        references PolytomousKey;
 
     alter table PolytomousKey_Scope 
         add constraint FK8D97986D546985E4 
 
     alter table PolytomousKey_Taxon 
         add constraint FK8DA4E8E389D9775 
-        foreign key (polytomousKey_fk
-        references FeatureTree;
+        foreign key (polytomousKey_id
+        references PolytomousKey;
 
     alter table PolytomousKey_Taxon 
         add constraint FK8DA4E8E3DE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table PolytomousKey_Taxon_AUD 
 
     create index specimenOrObservationBaseTitleCacheIndex on SpecimenOrObservationBase (titleCache);
 
+    
+    alter table SpecimenOrObservationBase 
+        add constraint FK11CB3232F75F225E 
+        foreign key (primarycollector_id) 
+        references AgentBase;
+    
     alter table SpecimenOrObservationBase 
         add constraint FK21CA32727CC340C5 
         foreign key (storedunder_id) 
 
     alter table SpecimenOrObservationBase 
         add constraint FK21CA32724AAB411A 
-        foreign key (derivationevent_id) 
+        foreign key (derivedfrom_id) 
         references DerivationEvent;
 
     alter table SpecimenOrObservationBase 
 
     alter table SpecimenOrObservationBase_LanguageString 
         add constraint FKCFAA931628459272 
-        foreign key (description_mapkey_id) 
+        foreign key (definition_mapkey_id) 
         references DefinedTermBase;
 
     alter table SpecimenOrObservationBase_LanguageString 
         add constraint FKCFAA93162BEBA58D 
-        foreign key (description_id) 
+        foreign key (definition_id) 
         references LanguageString;
 
     alter table SpecimenOrObservationBase_LanguageString 
 
     alter table TaxonBase 
         add constraint FK9249B49BDA93512F 
-        foreign key (taxonName_fk
+        foreign key (name_id
         references TaxonNameBase;
 
     alter table TaxonBase 
 
     alter table TaxonNode 
         add constraint FK924F5BCC759FE399 
-        foreign key (taxonomictree_id) 
-        references TaxonomicTree;
+        foreign key (classification_id) 
+        references Classification;
 
     alter table TaxonNode 
         add constraint FK924F5BCCDE9A3E39 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE04FF2DB2C 
         foreign key (createdby_id) 
         references UserAccount;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE0765B124B 
         foreign key (reference_id) 
         references Reference;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE077E2F09E 
         foreign key (name_id) 
         references LanguageString;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE0BC5DA539 
         foreign key (updatedby_id) 
         references UserAccount;
 
-    alter table TaxonomicTree_AUD 
+    alter table Classification_AUD 
         add constraint FK14CE19B134869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Annotation 
+    alter table Classification_Annotation 
         add constraint FK9877150E759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Annotation 
+    alter table Classification_Annotation 
         add constraint FK9877150E1E403E0B 
         foreign key (annotations_id) 
         references Annotation;
 
-    alter table TaxonomicTree_Annotation_AUD 
+    alter table Classification_Annotation_AUD 
         add constraint FKADD60BDF34869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Credit 
+    alter table Classification_Credit 
         add constraint FK21329C58759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Credit 
+    alter table Classification_Credit 
         add constraint FK21329C5832D1B9F 
         foreign key (credits_id) 
         references Credit;
 
-    alter table TaxonomicTree_Credit_AUD 
+    alter table Classification_Credit_AUD 
         add constraint FKD388DE2934869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Extension 
+    alter table Classification_Extension 
         add constraint FKF3E9BA80759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Extension 
+    alter table Classification_Extension 
         add constraint FKF3E9BA80927DE9DF 
         foreign key (extensions_id) 
         references Extension;
 
-    alter table TaxonomicTree_Extension_AUD 
+    alter table Classification_Extension_AUD 
         add constraint FK1BB4A85134869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Marker 
+    alter table Classification_Marker 
         add constraint FK31598599777265A1 
         foreign key (markers_id) 
         references Marker;
 
-    alter table TaxonomicTree_Marker 
+    alter table Classification_Marker 
         add constraint FK31598599759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Marker_AUD 
+    alter table Classification_Marker_AUD 
         add constraint FK37A73EEA34869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_OriginalSourceBase 
+    alter table Classification_OriginalSourceBase 
         add constraint FKDE264D1C759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_OriginalSourceBase 
+    alter table Classification_OriginalSourceBase 
         add constraint FKDE264D1C3A6735D9 
         foreign key (sources_id) 
         references OriginalSourceBase;
 
-    alter table TaxonomicTree_OriginalSourceBase_AUD 
+    alter table Classification_OriginalSourceBase_AUD 
         add constraint FK99EE8CED34869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Rights 
+    alter table Classification_Rights 
         add constraint FK3A4D7336759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Rights 
+    alter table Classification_Rights 
         add constraint FK3A4D7336C13F7B21 
         foreign key (rights_id) 
         references Rights;
 
-    alter table TaxonomicTree_Rights_AUD 
+    alter table Classification_Rights_AUD 
         add constraint FKA381160734869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_TaxonNode 
+    alter table Classification_TaxonNode 
         add constraint FK3349DA2D759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_TaxonNode 
+    alter table Classification_TaxonNode 
         add constraint FK3349DA2D18929176 
         foreign key (rootnodes_id) 
         references TaxonNode;
 
-    alter table TaxonomicTree_TaxonNode_AUD 
+    alter table Classification_TaxonNode_AUD 
         add constraint FK6973297E34869AAE 
         foreign key (REV) 
         references AuditEvent;
index 293a7f536f2dcf4349f72bd05b36dac9ca318044..d8c2c8a458c35b798322f9c2cc92ef3462ae81aa 100644 (file)
       <mapping class="eu.etaxonomy.cdm.model.reference.PersonalCommunication"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.PrintSeries"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Proceedings"/>\r
-      <mapping class="eu.etaxonomy.cdm.model.reference.ReferenceBase"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.reference.Reference"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Report"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Thesis"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.WebPage"/>\r
index a892703bd1ca9703081613a219788e9baa6a1032..e1089b324b1b7143a7bbe56036e4cfc25ac35367 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 8006f5721412a1c7cff788e8da024f0fe52b1c14..aec3cb2304c747c31293983023d29bea3f86a1ef 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset>\r
+  <HIBERNATE_SEQUENCES SEQUENCE_NAME="definedtermbase" NEXT_VAL="1"/>\r
   <DEFINEDTERMBASE DTYPE="Language" ID="1" CREATED="2009-01-28 17:07:03.0" UUID="ae787603-3070-4298-9ca6-4cbe73378122" URI="" ISO639_1="" ISO639_2="khi" VOCABULARY_ID="1"/>\r
   <DEFINEDTERMBASE DTYPE="Language" ID="2" CREATED="2009-01-28 17:07:03.0" UUID="b40cc17a-b05e-4f7b-a3a1-cbf396b79c5e" URI="" ISO639_1="" ISO639_2="sai" VOCABULARY_ID="1"/>\r
   <DEFINEDTERMBASE DTYPE="Language" ID="3" CREATED="2009-01-28 17:07:03.0" UUID="45d05a7a-ee78-462c-a177-6fd743cf4d03" URI="" ISO639_1="ca" ISO639_2="cat" VOCABULARY_ID="1"/>\r
   <TERMVOCABULARY DTYPE="TermVocabulary" ID="24" CREATED="2009-01-28 17:07:06.0" UUID="066cc62e-7213-495e-a020-97a1233bc037" URI="" TERMSOURCEURI="eu.etaxonomy.cdm.model.description.StatisticalMeasure" PROTECTEDTITLECACHE="true" TITLECACHE=""/>\r
   <TERMVOCABULARY DTYPE="TermVocabulary" ID="25" CREATED="2009-01-28 17:07:06.0" UUID="8627c526-73af-44d9-902c-11c1f11b60b4" URI="" TERMSOURCEURI="eu.etaxonomy.cdm.model.media.RightsTerm" PROTECTEDTITLECACHE="true" TITLECACHE=""/>\r
   <TERMVOCABULARY DTYPE="TermVocabulary" ID="26" CREATED="2009-01-28 17:07:06.0" UUID="ec6376e5-0c9c-4f5c-848b-b288e6c17a86" URI="" TERMSOURCEURI="eu.etaxonomy.cdm.model.media.ReferenceSystem" PROTECTEDTITLECACHE="true" TITLECACHE=""/>\r
+  <TERMVOCABULARY DTYPE="TermVocabulary" ID="40" CREATED="2010-11-24 17:07:04.0" UUID="7fd1e6d0-2e76-4dfa-bad9-2673dd042c28" URI="" TERMSOURCEURI="eu.etaxonomy.cdm.model.common.Language" PROTECTEDTITLECACHE="true" TITLECACHE="Undefined Languages"/>\r
+\r
   <TERMVOCABULARY_REPRESENTATION TERMVOCABULARY_ID="1" REPRESENTATIONS_ID="1"/>\r
   <TERMVOCABULARY_REPRESENTATION TERMVOCABULARY_ID="2" REPRESENTATIONS_ID="487"/>\r
   <TERMVOCABULARY_REPRESENTATION TERMVOCABULARY_ID="3" REPRESENTATIONS_ID="497"/>\r
   <TERMVOCABULARY_REPRESENTATION TERMVOCABULARY_ID="25" REPRESENTATIONS_ID="2082"/>\r
   <TERMVOCABULARY_REPRESENTATION TERMVOCABULARY_ID="26" REPRESENTATIONS_ID="2086"/>\r
   <TERMVOCABULARY_REPRESENTATION TERMVOCABULARY_ID="27" REPRESENTATIONS_ID="2087"/>\r
+  \r
 </dataset>\r
index 17913a4916d16bcc9092b90cc2732dac384a80f9..1584c194cc8c47406a73aae37efa801f39434090 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
   <TAXONBASE DTYPE="Taxon" UUID="e463b270-c76b-11dd-ad8b-0800200c9a66" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0"/>\r
 </dataset>
\ No newline at end of file
index 75108b41a78816c4c0f4c72e3d7bc2909499d09d..7d1ad9011e5d3ad143027f057c22d1adc4c07728 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
 </dataset>
\ No newline at end of file
index e2d8c8d812aedf7e1724aebc550d14c18c3ffcf0..7d0dad71f57221ff0e2700b729429d81250dcef5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-    <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="1" CREATEDBY_ID="1" TAXONNAME_FK="1" SEC_ID="1"/>\r
-    <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" CREATEDBY_ID="1" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>\r
+    <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="1" CREATEDBY_ID="1" NAME_ID="1" SEC_ID="1"/>\r
+    <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" CREATEDBY_ID="1" NAME_ID="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>\r
     <TAXONBASE DTYPE="Taxon" UUID="e463b270-c76b-11dd-ad8b-0800200c9a66" CREATEDBY_ID="1" PROTECTEDTITLECACHE="false"  DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0"/>\r
 </dataset>
\ No newline at end of file
index faff8a9cd7dd75634aee07e95f823b7a83c3a67b..2448e7b013de36e91d87ad851e47844faf5c1e3f 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UPDATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UPDATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
 </dataset>
\ No newline at end of file
index 70c098fe918859d7fe2a695bdaa29e66876e8171..e47bc5fe849e2ae32bbe44a9025c6371d47c6999 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
   <TAXONBASE DTYPE="Taxon" UUID="e463b270-c76b-11dd-ad8b-0800200c9a66" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" CREATEDBY_ID="1"/>\r
 </dataset>
\ No newline at end of file
index 858d8a7f3f52b57c0907b282966f8163ceebffc7..7e6204b05917cba3d09d8233e5d1808b5905c90a 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-    <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" TAXONNAME_FK="1"/>\r
-    <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+    <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" NAME_ID="1"/>\r
+    <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
 </dataset>
\ No newline at end of file
index 9fa15d6a600df415d7b1c9436a1aa2b0ceeac89e..c67b972b25875c188a9e8ba643d8b6203c145a1f 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" TAXONNAME_FK="1" UPDATEDBY_ID="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66"  TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="true" TAXONOMICCHILDRENCOUNT="1" SEC_ID="1" NAME_ID="1" UPDATEDBY_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
 </dataset>
\ No newline at end of file
index bcc2d097f7f343df1c3cf35676694656108f6b2f..68b6891e2e8b0da0bc9d5f8b5f642ca0f72a6b58 100644 (file)
@@ -6,10 +6,10 @@
   <HOMOTYPICALGROUP_AUD ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6c241a4c-e5a0-4344-8e5e-a81f17b75973" UPDATED="2008-12-10 09:56:07.253"/>  \r
   <REFERENCE DTYPE="Book" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE_AUD REV="1000" REVTYPE="0" DTYPE="Book" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>
-  <TAXONBASE_AUD DTYPE="Taxon" REV="1000" REVTYPE="0" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" REV="1000" REVTYPE="0" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Taxon" REV="1000" REVTYPE="0" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="8d77c380-c76a-11dd-ad8b-0800200c9a66" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" REV="1000" REVTYPE="0" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" CREATEDBY_ID="1" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>
index 3fbab88dd9f1f09588d9120cabb96480edcdd93f..f3283ba362bf1726e03d25b7ecc5006a66f5f9e6 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-  <TAXONBASE DTYPE="Taxon" ID="1001" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="1" SEC_ID="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1000" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONNAME_FK="1" SEC_ID="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1001" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="1" SEC_ID="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1000" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" NAME_ID="1" SEC_ID="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0"/>\r
   \r
   <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
index 7d49f7e61c30f92a9d0607bef4ce5aeb5431166d..c01a87961a1a68064e91ca5bb509dbb2bd866aef 100644 (file)
   <RIGHTS ID="2"  CREATED="2008-12-10 09:56:07.0" UUID="03f4607c-f1f1-43e8-960f-79d28731af5e" UPDATED="2008-12-10 09:56:07.238" TYPE_ID="2014" TEXT="Nulla facilisi. Suspendisse aliquam convallis ipsum. Curabitur vel lacus sit amet pede vulputate laoreet."/>\r
   <RIGHTS_AUD ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b7a5f184-6faf-4dcb-a179-97e05f30074f" UPDATED="2008-12-10 09:56:07.238" TYPE_ID="2014" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla diam. Nulla lobortis. Mauris vel augue."/>\r
   <RIGHTS_AUD ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="03f4607c-f1f1-43e8-960f-79d28731af5e" UPDATED="2008-12-10 09:56:07.238" TYPE_ID="2014" TEXT="Nulla facilisi. Suspendisse aliquam convallis ipsum. Curabitur vel lacus sit amet pede vulputate laoreet."/>\r
-  <TAXONBASE DTYPE="Taxon" ID="1"  SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:1:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="1" LSID_REVISION="2" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="ipsum" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
-  <TAXONBASE_AUD REV="1000" REVTYPE="0" DTYPE="Taxon" ID="1" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:1:1" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="1" LSID_REVISION="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE_AUD REV="1001" REVTYPE="0" DTYPE="Taxon" ID="1" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:1:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="1" LSID_REVISION="2" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE_AUD REV="1000" REVTYPE="0" DTYPE="Taxon" ID="2" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="ipsum" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="1"  SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:1:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="1" LSID_REVISION="2" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="ipsum" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
+  <TAXONBASE_AUD REV="1000" REVTYPE="0" DTYPE="Taxon" ID="1" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:1:1" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="1" LSID_REVISION="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE_AUD REV="1001" REVTYPE="0" DTYPE="Taxon" ID="1" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:1:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="1" LSID_REVISION="2" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE_AUD REV="1000" REVTYPE="0" DTYPE="Taxon" ID="2" SEC_ID="1" LSID_LSID="urn:lsid:example.org:namespace:2" LSID_AUTHORITY="example.org" LSID_NAMESPACE="namespace" LSID_OBJECT="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="ipsum" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>
   <TAXONBASE_CREDIT TAXONBASE_ID="1" CREDITS_ID="1" SORTINDEX="0"/>\r
   <TAXONBASE_CREDIT TAXONBASE_ID="1" CREDITS_ID="2" SORTINDEX="2"/>\r
   <TAXONBASE_CREDIT TAXONBASE_ID="1" CREDITS_ID="3" SORTINDEX="1"/>\r
index 88e3f89112a474f2ea1f2589d165c8ea005eff9f..96c8f5e435ce6fc4c9092f855aa749fb2f3650bb 100644 (file)
     GENBANKACCESSION*,
     GENBANKACCESSION_AUD*,
     GRANTEDAUTHORITYIMPL*,
+    HIBERNATE_SEQUENCES*,
     HOMOTYPICALGROUP*,
     HOMOTYPICALGROUP_ANNOTATION*,
     HOMOTYPICALGROUP_ANNOTATION_AUD*,
     CREATEDBY_ID CDATA #IMPLIED
 >
 
+<!ELEMENT HIBERNATE_SEQUENCES EMPTY>
+<!ATTLIST HIBERNATE_SEQUENCES
+       SEQUENCE_NAME CDATA #IMPLIED
+       NEXT_VAL CDATA #IMPLIED 
+>
+
 <!ELEMENT HOMOTYPICALGROUP EMPTY>
 <!ATTLIST HOMOTYPICALGROUP
     ID CDATA #REQUIRED
index debe2f0ebf0ce93bbe0ed3b6fd23b492fb1a1e58..6a123c6dd2d97d50a1b91a81933421f1b1c2b901 100644 (file)
@@ -1,38 +1,38 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986b9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_FK="1" IMAGEGALLERY="false" />
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d69d6d40-eb98-42f9-8d30-fbeb0a7db33b" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXON_FK="2" IMAGEGALLERY="false" />
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="c6782124-7cf0-4454-880f-c4f16dc03105" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="3" IMAGEGALLERY="false" />
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="68ff9cb2-3fc0-4580-8295-bbb0de0d42bf" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="4" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="1240e8ba-32a2-4914-ad00-2f87e18ab65e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="5" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="5c4bef76-72a6-4e39-a6d8-1d8707519d7a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="6" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="40dadf87-4a1c-4852-afb4-6787a4e75854" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="7" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1f02a155-3669-464b-99a9-4c36307549ce" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="8" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="b58fb240-01ac-4a68-99f7-1ccb5576d663" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="9" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="5b99a457-e776-41a8-b18b-58c5fb0b7b60" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="10" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="3316a5a7-56f5-4e12-b6ed-c1758e0d2065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="11" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="0e9bf65a-1322-408c-bf9e-01ea6834f191" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="12" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="1f17b094-77a6-4f0b-b687-f6cd0b3f5cb8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="13" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="eb591ebe-bec2-4639-b449-c3fd7f5e129c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="14" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="f2a093ed-7d09-45ea-abca-366a299b19d3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="15" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="f6367b5a-6466-4cf2-8eb0-23a558514914" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="16" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="fd9fe4e0-5137-483c-a8ee-c27d2f45d308" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="17" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="5bb4bd8f-9d96-4535-8a7b-3895bc229fd0" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="18" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="61bad9ae-900d-40e2-90f1-cd516f68a7aa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="19" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="8ed18615-f9be-4c3c-871a-7d2371b49869" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="20" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="4e2b5eca-db5f-41ac-a4e3-e936cae658da" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="21" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="a96cdfdb-7f9d-44b7-8c94-d68bc18850d5" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="22" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="7c79ee94-fc7f-4437-b5aa-b27a4dd482ac" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="23" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="03a54c6d-efb8-48c3-8672-e01880bcd5d7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="24" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="e7243cb3-625b-4104-bb46-b92d48351d76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="25" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="0d7bf5f6-9fef-482e-b6f8-7e9a9c42c744" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="26" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="cfa7ca5e-3ed1-4eda-93ab-b3c5e5fc3661" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="32" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="7129d981-7c92-4bef-9afe-a0d6e21a2e4e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="33" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="ef66e9ec-b9a4-435e-98ed-e3e72a86e9a4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="34" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="6ef3bcac-7192-4ee0-8c1b-57e0b3d49c5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="35" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="fd6cdb64-142c-4df1-b366-c5e76f08a1fc" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="36" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="6d647bbe-5d91-46be-87f5-1781d9d5842c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="37" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="620de7a8-8c83-42c9-add7-fdc55ebf943a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="38" IMAGEGALLERY="false"/>\r
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986b9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_ID="1" IMAGEGALLERY="false" />
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d69d6d40-eb98-42f9-8d30-fbeb0a7db33b" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXON_ID="2" IMAGEGALLERY="false" />
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="c6782124-7cf0-4454-880f-c4f16dc03105" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="3" IMAGEGALLERY="false" />
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="68ff9cb2-3fc0-4580-8295-bbb0de0d42bf" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="4" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="1240e8ba-32a2-4914-ad00-2f87e18ab65e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="5" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="5c4bef76-72a6-4e39-a6d8-1d8707519d7a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="6" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="40dadf87-4a1c-4852-afb4-6787a4e75854" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="7" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1f02a155-3669-464b-99a9-4c36307549ce" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="8" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="b58fb240-01ac-4a68-99f7-1ccb5576d663" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="9" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="5b99a457-e776-41a8-b18b-58c5fb0b7b60" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="10" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="3316a5a7-56f5-4e12-b6ed-c1758e0d2065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="11" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="0e9bf65a-1322-408c-bf9e-01ea6834f191" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="12" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="1f17b094-77a6-4f0b-b687-f6cd0b3f5cb8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="13" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="eb591ebe-bec2-4639-b449-c3fd7f5e129c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="14" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="f2a093ed-7d09-45ea-abca-366a299b19d3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="15" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="f6367b5a-6466-4cf2-8eb0-23a558514914" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="16" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="fd9fe4e0-5137-483c-a8ee-c27d2f45d308" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="17" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="5bb4bd8f-9d96-4535-8a7b-3895bc229fd0" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="18" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="61bad9ae-900d-40e2-90f1-cd516f68a7aa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="19" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="8ed18615-f9be-4c3c-871a-7d2371b49869" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="20" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="4e2b5eca-db5f-41ac-a4e3-e936cae658da" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="21" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="a96cdfdb-7f9d-44b7-8c94-d68bc18850d5" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="22" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="7c79ee94-fc7f-4437-b5aa-b27a4dd482ac" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="23" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="03a54c6d-efb8-48c3-8672-e01880bcd5d7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="24" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="e7243cb3-625b-4104-bb46-b92d48351d76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="25" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="0d7bf5f6-9fef-482e-b6f8-7e9a9c42c744" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="26" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="cfa7ca5e-3ed1-4eda-93ab-b3c5e5fc3661" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="32" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="7129d981-7c92-4bef-9afe-a0d6e21a2e4e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="33" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="ef66e9ec-b9a4-435e-98ed-e3e72a86e9a4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="34" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="6ef3bcac-7192-4ee0-8c1b-57e0b3d49c5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="35" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="fd6cdb64-142c-4df1-b366-c5e76f08a1fc" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="36" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="6d647bbe-5d91-46be-87f5-1781d9d5842c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="37" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="620de7a8-8c83-42c9-add7-fdc55ebf943a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="38" IMAGEGALLERY="false"/>\r
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="1" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="40458e70-a065-450f-b27d-adf61cc28a7f" UPDATED="2008-12-10 09:56:07.253" AREA_ID="1969" STATUS_ID="1994"/>\r
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="2" INDESCRIPTION_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d4099b8d-0644-4025-8a56-e7fc2d95004e" UPDATED="2008-12-10 09:56:07.253" AREA_ID="1969" STATUS_ID="1994"/>\r
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="3" INDESCRIPTION_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="317fafca-3722-4d8d-8c4f-701d4f5b911d" UPDATED="2008-12-10 09:56:07.253" AREA_ID="1969" STATUS_ID="1994"/>\r
@@ -72,6 +72,7 @@
   <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="34" MULTILANGUAGETEXT_ID="1" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
   <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="35" MULTILANGUAGETEXT_ID="2" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
   <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="36" MULTILANGUAGETEXT_ID="3" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE DESCRIPTIONELEMENTBASE_ID="34" SOURCES_ID="1"/>\r
   <HOMOTYPICALGROUP ID="1" CREATED="2008-12-10 09:56:07.0" UUID="7b214eb9-a6ac-48e5-af02-bbea634d2a03" UPDATED="2008-12-10 09:56:07.238"/>\r
   <HOMOTYPICALGROUP ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6c241a4c-e5a0-4344-8e5e-a81f17b75973" UPDATED="2008-12-10 09:56:07.253"/>
   <HOMOTYPICALGROUP ID="3" CREATED="2008-12-10 09:56:07.0" UUID="76eac2b8-9c5a-4b25-acd1-e4e0d894106f" UPDATED="2008-12-10 09:56:07.253"/>
   <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="1" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>\r
   <LANGUAGESTRING ID="2" CREATED="2008-12-10 09:56:07.0" UUID="373e7154-9372-4985-b77e-68df28e3f84b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="1" TEXT="Praesent vitae turpis vitae sapien sodales sagittis."/>\r
   <LANGUAGESTRING ID="3" CREATED="2008-12-10 09:56:07.0" UUID="f72f17d8-58c2-4c4e-b052-89d9016b6d02" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="1" TEXT="Maecenas congue ligula ut nulla. Nullam commodo euismod dolor."/>\r
+  <ORIGINALSOURCEBASE ID="1" UUID="ebe5a015-6f31-4b62-9fef-d0b4bcfb7e5a" CITATION_ID="1" SOURCEDOBJ_TYPE="eu.etaxonomy.cdm.model.description.TextData"/>\r
   <REFERENCE DTYPE="Book" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="WebPage" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="WebPage" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="3" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3"/>
-  <TAXONBASE DTYPE="Taxon" ID="4" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4"/>
-  <TAXONBASE DTYPE="Taxon" ID="5" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5"/>
-  <TAXONBASE DTYPE="Taxon" ID="6" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6"/>
-  <TAXONBASE DTYPE="Taxon" ID="7" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7"/>
-  <TAXONBASE DTYPE="Taxon" ID="8" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8"/>
-  <TAXONBASE DTYPE="Taxon" ID="9" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9"/>
-  <TAXONBASE DTYPE="Taxon" ID="10" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10"/>
-  <TAXONBASE DTYPE="Taxon" ID="11" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11"/>
-  <TAXONBASE DTYPE="Taxon" ID="12" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12"/>
-  <TAXONBASE DTYPE="Taxon" ID="13" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13"/>
-  <TAXONBASE DTYPE="Taxon" ID="14" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14"/>
-  <TAXONBASE DTYPE="Taxon" ID="15" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="3" TAXONNAME_FK="15"/>
-  <TAXONBASE DTYPE="Taxon" ID="16" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16"/>
-  <TAXONBASE DTYPE="Taxon" ID="17" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17"/>
-  <TAXONBASE DTYPE="Taxon" ID="18" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18"/>
-  <TAXONBASE DTYPE="Taxon" ID="19" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19"/>
-  <TAXONBASE DTYPE="Taxon" ID="20" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20"/>
-  <TAXONBASE DTYPE="Taxon" ID="21" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21"/>
-  <TAXONBASE DTYPE="Taxon" ID="22" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22"/>
-  <TAXONBASE DTYPE="Taxon" ID="23" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23"/>
-  <TAXONBASE DTYPE="Taxon" ID="24" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24"/>
-  <TAXONBASE DTYPE="Taxon" ID="25" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25"/>
-  <TAXONBASE DTYPE="Taxon" ID="26" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26"/>
-  <TAXONBASE DTYPE="Synonym" ID="27" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="27"/>
-  <TAXONBASE DTYPE="Synonym" ID="28" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="28"/>
-  <TAXONBASE DTYPE="Synonym" ID="29" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="29"/>
-  <TAXONBASE DTYPE="Synonym" ID="30" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="30"/>
-  <TAXONBASE DTYPE="Synonym" ID="31" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="31"/>
-  <TAXONBASE DTYPE="Taxon" ID="32" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32"/>
-  <TAXONBASE DTYPE="Taxon" ID="33" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33"/>
-  <TAXONBASE DTYPE="Taxon" ID="34" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34"/>
-  <TAXONBASE DTYPE="Taxon" ID="35" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="36"/>
-  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="3" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3"/>
+  <TAXONBASE DTYPE="Taxon" ID="4" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4"/>
+  <TAXONBASE DTYPE="Taxon" ID="5" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5"/>
+  <TAXONBASE DTYPE="Taxon" ID="6" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6"/>
+  <TAXONBASE DTYPE="Taxon" ID="7" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7"/>
+  <TAXONBASE DTYPE="Taxon" ID="8" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8"/>
+  <TAXONBASE DTYPE="Taxon" ID="9" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9"/>
+  <TAXONBASE DTYPE="Taxon" ID="10" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10"/>
+  <TAXONBASE DTYPE="Taxon" ID="11" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11"/>
+  <TAXONBASE DTYPE="Taxon" ID="12" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12"/>
+  <TAXONBASE DTYPE="Taxon" ID="13" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13"/>
+  <TAXONBASE DTYPE="Taxon" ID="14" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14"/>
+  <TAXONBASE DTYPE="Taxon" ID="15" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="3" NAME_ID="15"/>
+  <TAXONBASE DTYPE="Taxon" ID="16" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16"/>
+  <TAXONBASE DTYPE="Taxon" ID="17" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17"/>
+  <TAXONBASE DTYPE="Taxon" ID="18" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18"/>
+  <TAXONBASE DTYPE="Taxon" ID="19" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19"/>
+  <TAXONBASE DTYPE="Taxon" ID="20" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20"/>
+  <TAXONBASE DTYPE="Taxon" ID="21" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21"/>
+  <TAXONBASE DTYPE="Taxon" ID="22" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22"/>
+  <TAXONBASE DTYPE="Taxon" ID="23" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23"/>
+  <TAXONBASE DTYPE="Taxon" ID="24" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24"/>
+  <TAXONBASE DTYPE="Taxon" ID="25" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25"/>
+  <TAXONBASE DTYPE="Taxon" ID="26" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26"/>
+  <TAXONBASE DTYPE="Synonym" ID="27" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="27"/>
+  <TAXONBASE DTYPE="Synonym" ID="28" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="28"/>
+  <TAXONBASE DTYPE="Synonym" ID="29" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="29"/>
+  <TAXONBASE DTYPE="Synonym" ID="30" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="30"/>
+  <TAXONBASE DTYPE="Synonym" ID="31" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="31"/>
+  <TAXONBASE DTYPE="Taxon" ID="32" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32"/>
+  <TAXONBASE DTYPE="Taxon" ID="33" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33"/>
+  <TAXONBASE DTYPE="Taxon" ID="34" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34"/>
+  <TAXONBASE DTYPE="Taxon" ID="35" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="36"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="1"/>
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testChangeLanguageString-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testChangeLanguageString-result.xml
new file mode 100644 (file)
index 0000000..d4ae40e
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='UTF-8'?>\r
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="34" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" FEATURE_ID="922"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="34" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="A new English text"/>\r
+  <LANGUAGESTRING ID="2" CREATED="2008-12-10 09:56:07.0" UUID="373e7154-9372-4985-b77e-68df28e3f84b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Praesent vitae turpis vitae sapien sodales sagittis."/>\r
+  <LANGUAGESTRING ID="3" CREATED="2008-12-10 09:56:07.0" UUID="f72f17d8-58c2-4c4e-b052-89d9016b6d02" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Maecenas congue ligula ut nulla. Nullam commodo euismod dolor."/>\r
+  \r
+</dataset>
\ No newline at end of file
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testPersistMultiLanguageString-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testPersistMultiLanguageString-result.xml
new file mode 100644 (file)
index 0000000..7c3b902
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>\r
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="34" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" FEATURE_ID="922"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="34" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>\r
+  <LANGUAGESTRING ID="2" CREATED="2008-12-10 09:56:07.0" UUID="373e7154-9372-4985-b77e-68df28e3f84b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Praesent vitae turpis vitae sapien sodales sagittis."/>\r
+  <LANGUAGESTRING ID="3" CREATED="2008-12-10 09:56:07.0" UUID="f72f17d8-58c2-4c4e-b052-89d9016b6d02" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Maecenas congue ligula ut nulla. Nullam commodo euismod dolor."/>\r
+\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="34" MULTILANGUAGETEXT_MAPKEY_ID="349"/>\r
+  <LANGUAGESTRING TEXT="Ein test auf deutsch" LANGUAGE_ID="349"/>\r
+</dataset>
\ No newline at end of file
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testRemoveLanguageString-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.testRemoveLanguageString-result.xml
new file mode 100644 (file)
index 0000000..bfada7a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>\r
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="35" MULTILANGUAGETEXT_ID="4" MULTILANGUAGETEXT_MAPKEY_ID="408"/>\r
+  <LANGUAGESTRING ID="4" CREATED="2008-12-10 09:56:07.0" UUID="a72314d8-58c2-4c4e-b052-80d9016b6d57" UPDATED="2008-12-10 09:56:07.253" TEXT="A Czech translation for Praesent ..." LANGUAGE_ID="408"/>\r
+</dataset>
\ No newline at end of file
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionElementDaoHibernateImplTest.xml
new file mode 100644 (file)
index 0000000..1c26d0a
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='UTF-8'?>\r
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="cfa7ca5e-3ed1-4eda-93ab-b3c5e5fc3661" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7129d981-7c92-4bef-9afe-a0d6e21a2e4e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" IMAGEGALLERY="false"/>
+  <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="34" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="922"/>\r
+  <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="35" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="50f6b799-3585-40a7-b69d-e7be77b2651a" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="936"/>\r
+  <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="36" INDESCRIPTION_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c1e21ed1-4925-4e85-845f-e4b7a8386a33" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="936"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="34" MULTILANGUAGETEXT_ID="1" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="35" MULTILANGUAGETEXT_ID="2" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="35" MULTILANGUAGETEXT_ID="4" MULTILANGUAGETEXT_MAPKEY_ID="408"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="36" MULTILANGUAGETEXT_ID="3" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>\r
+  <LANGUAGESTRING ID="2" CREATED="2008-12-10 09:56:07.0" UUID="373e7154-9372-4985-b77e-68df28e3f84b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Praesent vitae turpis vitae sapien sodales sagittis."/>\r
+  <LANGUAGESTRING ID="3" CREATED="2008-12-10 09:56:07.0" UUID="f72f17d8-58c2-4c4e-b052-89d9016b6d02" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Maecenas congue ligula ut nulla. Nullam commodo euismod dolor."/>\r
+  <LANGUAGESTRING ID="4" CREATED="2008-12-10 09:56:07.0" UUID="a72314d8-58c2-4c4e-b052-80d9016b6d57" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="408" TEXT="A Czech translation for Praesent ..."/>\r
+\r
+  <DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE DESCRIPTIONELEMENTBASE_ID="34" SOURCES_ID="1"/>\r
+  <ORIGINALSOURCEBASE ID="1" UUID="ebe5a015-6f31-4b62-9fef-d0b4bcfb7e5a" CITATION_ID="1" SOURCEDOBJ_TYPE="eu.etaxonomy.cdm.model.description.TextData"/>\r
+  <REFERENCE DTYPE="Book" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
+  <REFERENCE DTYPE="WebPage" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
+  <REFERENCE DTYPE="WebPage" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
+</dataset>
\ No newline at end of file
index ea061b76ba8296bef500053d38ef0049c85b8c32..9e3237d3baa71e20a51a36bcfdeb365862dda9a8 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
   <HOMOTYPICALGROUP ID="1" CREATED="2008-12-10 09:56:07.0" UUID="7b214eb9-a6ac-48e5-af02-bbea634d2a03" UPDATED="2008-12-10 09:56:07.238"/>
-  <MEDIAKEY_TAXON MEDIAKEY_FK="1" TAXON_FK="1"/>
-  <MEDIAKEY_TAXON MEDIAKEY_FK="2" TAXON_FK="1"/>
+  <MEDIAKEY_TAXON MEDIAKEY_ID="1" TAXON_ID="1"/>
+  <MEDIAKEY_TAXON MEDIAKEY_ID="2" TAXON_ID="1"/>
   <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="b1428d5e-0fbe-4f39-bdc2-2cd0cebf9a80" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Etiam hendrerit nisi at orci facilisis auctor."/>
   <LANGUAGESTRING ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3b7a3164-c5b5-47a9-8592-f853ac0fd677" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Suspendisse pharetra tempus mi."/>
   <LANGUAGESTRING ID="3" CREATED="2008-12-10 09:56:07.0" UUID="a96ec6c7-e4c2-441c-8241-0604614081f3" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Donec auctor mauris ut neque."/>
   <MEDIA_LANGUAGESTRING MEDIA_ID="1" TITLE_ID="1" TITLE_MAPKEY_ID="406"/>
   <MEDIA_LANGUAGESTRING MEDIA_ID="2" TITLE_ID="2" TITLE_MAPKEY_ID="406"/>
   <MEDIA_LANGUAGESTRING MEDIA_ID="3" TITLE_ID="3" TITLE_MAPKEY_ID="406"/>
+  <POLYTOMOUSKEY ID="1" UUID="bab66772-2c83-428a-bb6d-655d12ac6097" ROOT_ID="1" PROTECTEDTITLECACHE="false"/>
+  <POLYTOMOUSKEYNODE ID="1" KEY_ID="1" />
+  <POLYTOMOUSKEYNODE ID="2" KEY_ID="1" PARENT_ID="1" SORTINDEX="0"  STATEMENT_ID="1" QUESTION_ID="2"/>
+  <POLYTOMOUSKEYNODE ID="3" KEY_ID="1" PARENT_ID="1" SORTINDEX="1" STATEMENT_ID="3"/>
+  <KEYSTATEMENT ID="1"/>
+  <KEYSTATEMENT ID="2"/>
+  <KEYSTATEMENT ID="3"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="1" LABEL_ID="4" LABEL_MAPKEY_ID="406"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="2" LABEL_ID="5" LABEL_MAPKEY_ID="406"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="3" LABEL_ID="6" LABEL_MAPKEY_ID="406"/>
+  <LANGUAGESTRING ID="4" CREATED="2008-12-10 09:56:07.0" UUID="8641c2b9-df15-452b-9d8a-41ee6f883e8c" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is a nice statement"/>
+  <LANGUAGESTRING ID="5" CREATED="2008-12-10 09:56:07.0" UUID="f1909157-5979-4b92-8d69-910073d5ebfa" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is another statement"/>
+  <LANGUAGESTRING ID="6" CREATED="2008-12-10 09:56:07.0" UUID="8cfcfcb1-a35d-4af3-91dc-d0a71d963413" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is a question"/>
+  
   <REFERENCE DTYPE="WebPage" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="Book" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="true" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="2"/>
+
 </dataset>
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.testSavePolytomousKey-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.testSavePolytomousKey-result.xml
new file mode 100644 (file)
index 0000000..e475c02
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <POLYTOMOUSKEY ID="1" UUID="bab66772-2c83-428a-bb6d-655d12ac6097" ROOT_ID="1" PROTECTEDTITLECACHE="false"/>
+  <POLYTOMOUSKEYNODE ID="1" KEY_ID="1" />
+  <POLYTOMOUSKEYNODE ID="2" KEY_ID="1" PARENT_ID="1" SORTINDEX="0"  STATEMENT_ID="1" QUESTION_ID="2"/>
+  <POLYTOMOUSKEYNODE ID="3" KEY_ID="1" PARENT_ID="1" SORTINDEX="1" STATEMENT_ID="3"/>
+  <KEYSTATEMENT ID="1"/>
+  <KEYSTATEMENT ID="2"/>
+  <KEYSTATEMENT ID="3"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="1" LABEL_ID="4" LABEL_MAPKEY_ID="406"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="2" LABEL_ID="5" LABEL_MAPKEY_ID="406"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="3" LABEL_ID="6" LABEL_MAPKEY_ID="406"/>
+  <LANGUAGESTRING ID="4" CREATED="2008-12-10 09:56:07.0" UUID="8641c2b9-df15-452b-9d8a-41ee6f883e8c" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is a nice statement"/>
+  <LANGUAGESTRING ID="5" CREATED="2008-12-10 09:56:07.0" UUID="f1909157-5979-4b92-8d69-910073d5ebfa" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is another statement"/>
+  <LANGUAGESTRING ID="6" CREATED="2008-12-10 09:56:07.0" UUID="8cfcfcb1-a35d-4af3-91dc-d0a71d963413" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is a question"/>
+  <POLYTOMOUSKEYNODE ID="4" KEY_ID="2"/>
+  <POLYTOMOUSKEYNODE ID="5" SORTINDEX="0" KEY_ID="2" PARENT_ID="4" QUESTION_ID="4" STATEMENT_ID="5"/>
+  <POLYTOMOUSKEYNODE ID="6" SORTINDEX="1" KEY_ID="2" PARENT_ID="4" QUESTION_ID="6" STATEMENT_ID="7"/>
+  <POLYTOMOUSKEYNODE ID="7" SORTINDEX="2" KEY_ID="2" PARENT_ID="4" STATEMENT_ID="8"/>
+</dataset>
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/description/PolytomousKeyDaoHibernateImplTest.xml
new file mode 100644 (file)
index 0000000..44f6f21
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+   <POLYTOMOUSKEY ID="1" UUID="bab66772-2c83-428a-bb6d-655d12ac6097" ROOT_ID="1" PROTECTEDTITLECACHE="false"/>
+  <POLYTOMOUSKEYNODE ID="1" KEY_ID="1" />
+  <POLYTOMOUSKEYNODE ID="2" KEY_ID="1" PARENT_ID="1" SORTINDEX="0"  STATEMENT_ID="1" QUESTION_ID="2"/>
+  <POLYTOMOUSKEYNODE ID="3" KEY_ID="1" PARENT_ID="1" SORTINDEX="1" STATEMENT_ID="3"/>
+  <KEYSTATEMENT ID="1"/>
+  <KEYSTATEMENT ID="2"/>
+  <KEYSTATEMENT ID="3"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="1" LABEL_ID="4" LABEL_MAPKEY_ID="406"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="2" LABEL_ID="5" LABEL_MAPKEY_ID="406"/>
+  <KEYSTATEMENT_LANGUAGESTRING KEYSTATEMENT_ID="3" LABEL_ID="6" LABEL_MAPKEY_ID="406"/>
+  <LANGUAGESTRING ID="4" CREATED="2008-12-10 09:56:07.0" UUID="8641c2b9-df15-452b-9d8a-41ee6f883e8c" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is a nice statement"/>
+  <LANGUAGESTRING ID="5" CREATED="2008-12-10 09:56:07.0" UUID="f1909157-5979-4b92-8d69-910073d5ebfa" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is another statement"/>
+  <LANGUAGESTRING ID="6" CREATED="2008-12-10 09:56:07.0" UUID="8cfcfcb1-a35d-4af3-91dc-d0a71d963413" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="This is a question"/>
+  
+
+</dataset>
index ea061b76ba8296bef500053d38ef0049c85b8c32..f63d31c91c8ee7c8a69bc429f6418d215be8156f 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
   <HOMOTYPICALGROUP ID="1" CREATED="2008-12-10 09:56:07.0" UUID="7b214eb9-a6ac-48e5-af02-bbea634d2a03" UPDATED="2008-12-10 09:56:07.238"/>
-  <MEDIAKEY_TAXON MEDIAKEY_FK="1" TAXON_FK="1"/>
-  <MEDIAKEY_TAXON MEDIAKEY_FK="2" TAXON_FK="1"/>
+  <MEDIAKEY_TAXON MEDIAKEY_ID="1" TAXON_ID="1"/>
+  <MEDIAKEY_TAXON MEDIAKEY_ID="2" TAXON_ID="1"/>
   <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="b1428d5e-0fbe-4f39-bdc2-2cd0cebf9a80" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Etiam hendrerit nisi at orci facilisis auctor."/>
   <LANGUAGESTRING ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3b7a3164-c5b5-47a9-8592-f853ac0fd677" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Suspendisse pharetra tempus mi."/>
   <LANGUAGESTRING ID="3" CREATED="2008-12-10 09:56:07.0" UUID="a96ec6c7-e4c2-441c-8241-0604614081f3" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="406" TEXT="Donec auctor mauris ut neque."/>
@@ -22,6 +22,6 @@
   <MEDIA_LANGUAGESTRING MEDIA_ID="3" TITLE_ID="3" TITLE_MAPKEY_ID="406"/>
   <REFERENCE DTYPE="WebPage" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="Book" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="true" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="2"/>
 </dataset>
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.testSave-result.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.testSave-result.xml
new file mode 100644 (file)
index 0000000..c895d9e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <MEDIAREPRESENTATIONPART DTYPE="ImageFile" ID="1" URI="http://www.test.de" UUID="e06a0f29-ef82-4ce3-8a94-dd98feae8f9e" HEIGHT="22" WIDTH="25" SIZE="333"/>
+  <MEDIAREPRESENTATIONPART DTYPE="AudioFile" ID="2" URI="http://www.test2.de" UUID="a07a0f29-ef82-3ce3-8a94-dd98feae8f9e" DURATION="55"/>
+  <MEDIAREPRESENTATIONPART DTYPE="AudioFile" ID="3" URI="http:\\www.fail.de" UUID="b48a0f26-2f42-3ce3-8a04-dd98feaa8e98" DURATION="55"/>
+  <MEDIAREPRESENTATIONPART DTYPE="MediaRepresentationPart" SIZE="22" URI="http://www.test3.de"/>
+</dataset>
diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/media/MediaRepresentationPartDaoImplTest.xml
new file mode 100644 (file)
index 0000000..7959f88
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
+  <MEDIAREPRESENTATIONPART DTYPE="ImageFile" ID="1" URI="http://www.test.de" UUID="e06a0f29-ef82-4ce3-8a94-dd98feae8f9e" HEIGHT="22" WIDTH="25" SIZE="333"/>
+  <MEDIAREPRESENTATIONPART DTYPE="AudioFile" ID="2" URI="http://www.test2.de" UUID="a07a0f29-ef82-3ce3-8a94-dd98feae8f9e" DURATION="55"/>
+  <MEDIAREPRESENTATIONPART DTYPE="AudioFile" ID="3" URI="http:\\www.fail.de" UUID="b48a0f26-2f42-3ce3-8a04-dd98feaa8e98" DURATION="55"/>
+</dataset>
index b9d18fcf2389c83d7692ac076c0c1369a96fb461..fa082c7cdfb834a57bd1ea44810ad37609886d20 100644 (file)
@@ -47,8 +47,8 @@
   <REFERENCE DTYPE="WebPage" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="WebPage" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
   <SPECIMENOROBSERVATIONBASE DTYPE="Specimen" 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" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36" USENAMECACHE="false"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="39" USENAMECACHE="false"/>\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" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36" USENAMECACHE="false"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="39" USENAMECACHE="false"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="1"/>
index b249e01a7bda262814a50937d072ff012fba47d1..6545d48da7984c73447aeacf58216b453ec32b5f 100644 (file)
@@ -46,8 +46,8 @@
   <REFERENCE DTYPE="WebPage" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="WebPage" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
   <SPECIMENOROBSERVATIONBASE DTYPE="Specimen" 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" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="39"/>\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" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="39"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  HOMOTYPICALGROUP_ID="3" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="1"/>
index 551d6f63ffaf23abeb5583e56b6c9b3c235425ac..73aa6943cd05cd5310c7c99028e591307a141cad 100644 (file)
@@ -8,19 +8,19 @@
   <REFERENCE DTYPE="Book" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Species Plantarum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="true" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" />\r
   \r
   <!-- additional records needed for testListCoveredTaxa  -->\r
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986b9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_FK="1" IMAGEGALLERY="false" />\r
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986b9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_ID="1" IMAGEGALLERY="false" />\r
   <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="1" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="922" />\r
   <HOMOTYPICALGROUP ID="1" CREATED="2008-12-10 09:56:07.0" UUID="7b214eb9-a6ac-48e5-af02-bbea634d2a03" UPDATED="2008-12-10 09:56:07.238"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="1"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Lactuca perennis"  PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765" GENUSORUNINOMIAL="Lactuca" SPECIFICEPITHET="perennis" NOMENCLATURALREFERENCE_ID="6"/>\r
   <ORIGINALSOURCEBASE DTYPE="DescriptionElementSource" ID="1" CREATED="2010-05-27 16:41:52" UUID="fd857a75-8b30-4134-880d-5c0b985af10c" SOURCEDOBJ_TYPE="eu.etaxonomy.cdm.model.description.TextData" SOURCEDOBJ_ID="1" CITATION_ID="1"/>\r
   <ORIGINALSOURCEBASE DTYPE="DescriptionElementSource" ID="2" CREATED="2010-05-27 16:41:52" UUID="fd857a75-8b30-4134-880d-5c0b985af110" SOURCEDOBJ_TYPE="eu.etaxonomy.cdm.model.description.TextData" SOURCEDOBJ_ID="2" CITATION_ID="5"/>\r
   <DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE DESCRIPTIONELEMENTBASE_ID="1"  SOURCES_ID="1" />\r
   <DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE DESCRIPTIONELEMENTBASE_ID="1"  SOURCES_ID="2" />\r
   \r
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986ae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_FK="2" IMAGEGALLERY="false" />\r
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986ae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_ID="2" IMAGEGALLERY="false" />\r
   <HOMOTYPICALGROUP ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6c241a4c-e5a0-4344-8e5e-a81f17b75973" UPDATED="2008-12-10 09:56:07.253"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="0" TAXONNAME_FK="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="0" NAME_ID="2"/>\r
   <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" TITLECACHE="Lactuca virosa"  PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Lactuca" SPECIFICEPITHET="virosa"  NOMENCLATURALREFERENCE_ID="6"/>\r
   <DESCRIPTIONBASE_REFERENCE DESCRIPTIONBASE_ID="2" DESCRIPTIONSOURCES_ID="5" />\r
  \r
index b859c93d5d7ec31a9581b7d3aa835ec6f9ae80df..5a7d1528cfdfb26a7c98a64fd89d7cc1b9addb85 100644 (file)
   <SYNONYMRELATIONSHIP_AUD ID="3" REV="1000" REVTYPE="0" UUID="7add0332-1b1d-4a74-b4d5-9a0f7998525d" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="29" RELATEDTO_ID="15" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP_AUD ID="4" REV="1000" REVTYPE="0" UUID="b1ffc3c3-dc59-4a87-ac28-100f3874e9a0" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="30" RELATEDTO_ID="15" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP_AUD ID="5" REV="1000" REVTYPE="0" UUID="b75ba9c0-6686-4e87-b63f-9fc6d59f45ef" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="31" RELATEDTO_ID="15" TYPE_ID="847"/>
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1" SEC_ID="1"/>
-  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>
-  <TAXONBASE DTYPE="Taxon" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="3" TAXONNAME_FK="15" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="27" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="28" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="29" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="30" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="31" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="36" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38" SEC_ID="3"/>
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1" SEC_ID="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="3" NAME_ID="15" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="27" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="28" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="29" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="30" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="31" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="36" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38" SEC_ID="3"/>
   <TAXONBASE DTYPE="Taxon" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis diehli Eitschberger, 2003" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="36"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" TAXONNAME_FK="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="27" SEC_ID="2"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="28" SEC_ID="2"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="29" SEC_ID="2"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="30" SEC_ID="2"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="31" SEC_ID="2"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" TAXONNAME_FK="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" NAME_ID="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" NAME_ID="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="27" SEC_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="28" SEC_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="29" SEC_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="30" SEC_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="31" SEC_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" NAME_ID="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0"/>
   <TAXONBASE_AUD DTYPE="Taxon" REVTYPE="0" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis diehli Eitschberger, 2003" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="36"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774"/>
   <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="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765"/>
index 800acb8fd02bc3733caddd44a7263bbf3868cd11..86df0f77b195446a3a967e3383679a98627a4f2e 100644 (file)
   <SYNONYMRELATIONSHIP_AUD ID="4" REVTYPE="2"/>\r
   <SYNONYMRELATIONSHIP_AUD ID="5" REV="1000" REVTYPE="0" UUID="b75ba9c0-6686-4e87-b63f-9fc6d59f45ef" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="31" RELATEDTO_ID="15" TYPE_ID="847"/>\r
   <SYNONYMRELATIONSHIP_AUD ID="5" REVTYPE="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-01-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1" SEC_ID="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-01-12 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-02-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-02-04 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-02-04 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-03-13 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-03-13 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-03-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-04-02 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-05-02 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-05-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-06-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-06-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-07-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-07-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-08-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-09-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-09-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-10-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-10-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-11-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2009-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2009-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2009-11-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2009-11-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c"  PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2007-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2007-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2007-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2009-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2002-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2003-04-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37" SEC_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38" SEC_ID="3"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-01-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1" SEC_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-01-12 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-02-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-02-04 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-02-04 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-03-13 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-03-13 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-03-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-04-02 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-05-02 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-05-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-06-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-06-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-07-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-07-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-08-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-09-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-09-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-10-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-10-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-11-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2009-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2009-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2009-11-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2009-11-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c"  PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2007-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2007-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2007-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2009-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2002-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2003-04-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37" SEC_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38" SEC_ID="3"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3"/>\r
   <TAXONBASE_AUD DTYPE="Taxon" ID="15" REVTYPE="2"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27" SEC_ID="2"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28" SEC_ID="2"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29" SEC_ID="2"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30" SEC_ID="2"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31" SEC_ID="2"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REVTYPE="1" CREATED="2002-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REVTYPE="1" CREATED="2003-04-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REVTYPE="1" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27" SEC_ID="2"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28" SEC_ID="2"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29" SEC_ID="2"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30" SEC_ID="2"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31" SEC_ID="2"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REVTYPE="1" CREATED="2002-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REVTYPE="1" CREATED="2003-04-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REVTYPE="1" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774"/>\r
   <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="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765"/>\r
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" GENUSORUNINOMIAL="Sphingidae" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="3" NOMENCLATURALREFERENCE_ID="1" RANK_ID="782"/>\r
index 54b9f6c3d23b4fd5373eb7af1f563d2d5b152d2b..d313686fde6932d88dc45312892e6253032a40b6 100644 (file)
   <SYNONYMRELATIONSHIP_AUD ID="3" REV="1025" REVTYPE="0" UUID="7add0332-1b1d-4a74-b4d5-9a0f7998525d" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="29" RELATEDTO_ID="15" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP_AUD ID="4" REV="1025" REVTYPE="0" UUID="b1ffc3c3-dc59-4a87-ac28-100f3874e9a0" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="30" RELATEDTO_ID="15" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP_AUD ID="5" REV="1025" REVTYPE="0" UUID="b75ba9c0-6686-4e87-b63f-9fc6d59f45ef" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="31" RELATEDTO_ID="15" TYPE_ID="847"/>
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1" SEC_ID="1"/>
-  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>
-  <TAXONBASE DTYPE="Taxon" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="3" TAXONNAME_FK="15" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27" SEC_ID="2" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28" SEC_ID="2" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="36" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38" SEC_ID="3"/>
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1" SEC_ID="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="3" NAME_ID="15" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27" SEC_ID="2" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28" SEC_ID="2" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="36" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38" SEC_ID="3"/>
   <TAXONBASE DTYPE="Taxon" ID="39" CREATED="2009-01-27 15:24:20.0" UUID="bb07a369-f69e-4ad8-a60d-6089509952f5" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis diehli Eitschberger, 2003" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="36"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28" SEC_ID="2"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1027" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28" SEC_ID="2"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1027" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
   <TAXONBASE_AUD DTYPE="Taxon" ID="39" REV="1027" REVTYPE="0" CREATED="2009-01-27 15:24:20.0" UUID="bb07a369-f69e-4ad8-a60d-6089509952f5" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis diehli Eitschberger, 2003" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="36"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774"/>
   <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="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765"/>
index fab4401179fb0b74583a587abe322d9d43548c12..9f828522bc3a12f784d3561bacf1ffe1469d9dfe 100644 (file)
   <SYNONYMRELATIONSHIP_AUD ID="3" REV="1025" REVTYPE="0" UUID="7add0332-1b1d-4a74-b4d5-9a0f7998525d" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="29" RELATEDTO_ID="15" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP_AUD ID="4" REV="1025" REVTYPE="0" UUID="b1ffc3c3-dc59-4a87-ac28-100f3874e9a0" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="30" RELATEDTO_ID="15" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP_AUD ID="5" REV="1025" REVTYPE="0" UUID="b75ba9c0-6686-4e87-b63f-9fc6d59f45ef" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="31" RELATEDTO_ID="15" TYPE_ID="847"/>
-  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1" SEC_ID="1"/>
-  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>
-  <TAXONBASE DTYPE="Taxon" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37" SEC_ID="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38" SEC_ID="3"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" LSID_LSID="urn:lsid:cate-project.org:taxonconcepts:234" LSID_AUTHORITY="cate-project.org" LSID_NAMESPACE="taxonconcepts" LSID_OBJECT="234"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" LSID_LSID="urn:lsid:cate-project.org:taxonconcepts:234" LSID_AUTHORITY="cate-project.org" LSID_NAMESPACE="taxonconcepts" LSID_OBJECT="234"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1" SEC_ID="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="2" SEC_ID="1" TAXONOMICPARENTCACHE_ID="1"/>
+  <TAXONBASE DTYPE="Taxon" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Synonym" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="35" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37" SEC_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38" SEC_ID="3"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="1" SEC_ID="1" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="  sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="2" SEC_ID="1" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" LSID_LSID="urn:lsid:cate-project.org:taxonconcepts:234" LSID_AUTHORITY="cate-project.org" LSID_NAMESPACE="taxonconcepts" LSID_OBJECT="234"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="3" SEC_ID="2" TAXONOMICCHILDRENCOUNT="204" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" LSID_LSID="urn:lsid:cate-project.org:taxonconcepts:234" LSID_AUTHORITY="cate-project.org" LSID_NAMESPACE="taxonconcepts" LSID_OBJECT="234"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="4" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="5" SEC_ID="2" TAXONOMICCHILDRENCOUNT="15" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="6" SEC_ID="2" TAXONOMICCHILDRENCOUNT="18" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="7" SEC_ID="2" TAXONOMICCHILDRENCOUNT="13" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="8" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="9" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="10" SEC_ID="2" TAXONOMICCHILDRENCOUNT="9" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="11" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="12" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="13" SEC_ID="2" TAXONOMICCHILDRENCOUNT="49" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="14" SEC_ID="2" TAXONOMICCHILDRENCOUNT="6" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="15" SEC_ID="2" TAXONOMICCHILDRENCOUNT="3" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
   <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1026" REVTYPE="2"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
-  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="16" SEC_ID="2" TAXONOMICCHILDRENCOUNT="23" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="17" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="18" SEC_ID="2" TAXONOMICCHILDRENCOUNT="7" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="19" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="20" SEC_ID="2" TAXONOMICCHILDRENCOUNT="10" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="21" SEC_ID="2" TAXONOMICCHILDRENCOUNT="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="22" SEC_ID="2" TAXONOMICCHILDRENCOUNT="12" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="23" SEC_ID="2" TAXONOMICCHILDRENCOUNT="104" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="24" SEC_ID="2" TAXONOMICCHILDRENCOUNT="31" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="25" SEC_ID="2" TAXONOMICCHILDRENCOUNT="4" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="26" SEC_ID="2" TAXONOMICCHILDRENCOUNT="40" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31" SEC_ID="2" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="32" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="33" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="34" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="35" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="36" SEC_ID="2" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1026" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="37" SEC_ID="2" TAXONOMICCHILDRENCOUNT="1" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
+  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1025" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="38" SEC_ID="3" TAXONOMICCHILDRENCOUNT="0" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774"/>
   <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="" GENUSORUNINOMIAL="Aus" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" GENUSORUNINOMIAL="Sphingidae" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" NOMENCLATURALREFERENCE_ID="1" RANK_ID="782"/>
index 9664f2666ecd8f328d7ea77de43ca148c727cbdb..5961cfddc63dd46feb04eeb8a44c9f78e43fcaf4 100644 (file)
@@ -1,39 +1,39 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986b9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_FK="1" IMAGEGALLERY="false" />
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d69d6d40-eb98-42f9-8d30-fbeb0a7db33b" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXON_FK="2" IMAGEGALLERY="false" />
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="c6782124-7cf0-4454-880f-c4f16dc03105" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="3" IMAGEGALLERY="false" />
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="68ff9cb2-3fc0-4580-8295-bbb0de0d42bf" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="4" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="1240e8ba-32a2-4914-ad00-2f87e18ab65e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="5" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="5c4bef76-72a6-4e39-a6d8-1d8707519d7a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="6" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="40dadf87-4a1c-4852-afb4-6787a4e75854" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="7" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1f02a155-3669-464b-99a9-4c36307549ce" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="8" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="b58fb240-01ac-4a68-99f7-1ccb5576d663" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="9" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="5b99a457-e776-41a8-b18b-58c5fb0b7b60" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="10" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="3316a5a7-56f5-4e12-b6ed-c1758e0d2065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="11" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="0e9bf65a-1322-408c-bf9e-01ea6834f191" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="12" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="1f17b094-77a6-4f0b-b687-f6cd0b3f5cb8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="13" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="eb591ebe-bec2-4639-b449-c3fd7f5e129c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="14" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="f2a093ed-7d09-45ea-abca-366a299b19d3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="15" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="f6367b5a-6466-4cf2-8eb0-23a558514914" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="16" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="fd9fe4e0-5137-483c-a8ee-c27d2f45d308" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="17" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="5bb4bd8f-9d96-4535-8a7b-3895bc229fd0" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="18" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="61bad9ae-900d-40e2-90f1-cd516f68a7aa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="19" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="8ed18615-f9be-4c3c-871a-7d2371b49869" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="20" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="4e2b5eca-db5f-41ac-a4e3-e936cae658da" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="21" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="a96cdfdb-7f9d-44b7-8c94-d68bc18850d5" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="22" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="7c79ee94-fc7f-4437-b5aa-b27a4dd482ac" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="23" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="03a54c6d-efb8-48c3-8672-e01880bcd5d7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="24" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="e7243cb3-625b-4104-bb46-b92d48351d76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="25" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="0d7bf5f6-9fef-482e-b6f8-7e9a9c42c744" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="26" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="cfa7ca5e-3ed1-4eda-93ab-b3c5e5fc3661" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="32" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="7129d981-7c92-4bef-9afe-a0d6e21a2e4e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="33" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="ef66e9ec-b9a4-435e-98ed-e3e72a86e9a4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="34" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="6ef3bcac-7192-4ee0-8c1b-57e0b3d49c5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="35" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="fd6cdb64-142c-4df1-b366-c5e76f08a1fc" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="36" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="6d647bbe-5d91-46be-87f5-1781d9d5842c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="37" IMAGEGALLERY="false"/>
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="620de7a8-8c83-42c9-add7-fdc55ebf943a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="38" IMAGEGALLERY="false"/>\r
-  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="61bad9ae-933d-40e2-90f1-cd516f68a7aa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_FK="39" IMAGEGALLERY="false"/>\r
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="5f3265ed-68ad-4ec3-826f-0d29d25986b9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXON_ID="1" IMAGEGALLERY="false" />
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d69d6d40-eb98-42f9-8d30-fbeb0a7db33b" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXON_ID="2" IMAGEGALLERY="false" />
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="c6782124-7cf0-4454-880f-c4f16dc03105" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="3" IMAGEGALLERY="false" />
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="68ff9cb2-3fc0-4580-8295-bbb0de0d42bf" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="4" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="1240e8ba-32a2-4914-ad00-2f87e18ab65e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="5" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="5c4bef76-72a6-4e39-a6d8-1d8707519d7a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="6" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="40dadf87-4a1c-4852-afb4-6787a4e75854" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="7" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="1f02a155-3669-464b-99a9-4c36307549ce" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="8" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="b58fb240-01ac-4a68-99f7-1ccb5576d663" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="9" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="10" CREATED="2008-12-10 09:56:07.0" UUID="5b99a457-e776-41a8-b18b-58c5fb0b7b60" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="10" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="11" CREATED="2008-12-10 09:56:07.0" UUID="3316a5a7-56f5-4e12-b6ed-c1758e0d2065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="11" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="12" CREATED="2008-12-10 09:56:07.0" UUID="0e9bf65a-1322-408c-bf9e-01ea6834f191" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="12" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="13" CREATED="2008-12-10 09:56:07.0" UUID="1f17b094-77a6-4f0b-b687-f6cd0b3f5cb8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="13" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="14" CREATED="2008-12-10 09:56:07.0" UUID="eb591ebe-bec2-4639-b449-c3fd7f5e129c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="14" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="15" CREATED="2008-12-10 09:56:07.0" UUID="f2a093ed-7d09-45ea-abca-366a299b19d3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="15" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="16" CREATED="2008-12-10 09:56:07.0" UUID="f6367b5a-6466-4cf2-8eb0-23a558514914" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="16" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="17" CREATED="2008-12-10 09:56:07.0" UUID="fd9fe4e0-5137-483c-a8ee-c27d2f45d308" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="17" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="18" CREATED="2008-12-10 09:56:07.0" UUID="5bb4bd8f-9d96-4535-8a7b-3895bc229fd0" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="18" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="19" CREATED="2008-12-10 09:56:07.0" UUID="61bad9ae-900d-40e2-90f1-cd516f68a7aa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="19" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="20" CREATED="2008-12-10 09:56:07.0" UUID="8ed18615-f9be-4c3c-871a-7d2371b49869" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="20" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="21" CREATED="2008-12-10 09:56:07.0" UUID="4e2b5eca-db5f-41ac-a4e3-e936cae658da" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="21" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="22" CREATED="2008-12-10 09:56:07.0" UUID="a96cdfdb-7f9d-44b7-8c94-d68bc18850d5" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="22" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="23" CREATED="2008-12-10 09:56:07.0" UUID="7c79ee94-fc7f-4437-b5aa-b27a4dd482ac" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="23" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="24" CREATED="2008-12-10 09:56:07.0" UUID="03a54c6d-efb8-48c3-8672-e01880bcd5d7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="24" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="25" CREATED="2008-12-10 09:56:07.0" UUID="e7243cb3-625b-4104-bb46-b92d48351d76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="25" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="26" CREATED="2008-12-10 09:56:07.0" UUID="0d7bf5f6-9fef-482e-b6f8-7e9a9c42c744" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="26" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="27" CREATED="2008-12-10 09:56:07.0" UUID="cfa7ca5e-3ed1-4eda-93ab-b3c5e5fc3661" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="32" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="28" CREATED="2008-12-10 09:56:07.0" UUID="7129d981-7c92-4bef-9afe-a0d6e21a2e4e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="33" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="29" CREATED="2008-12-10 09:56:07.0" UUID="ef66e9ec-b9a4-435e-98ed-e3e72a86e9a4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="34" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="30" CREATED="2008-12-10 09:56:07.0" UUID="6ef3bcac-7192-4ee0-8c1b-57e0b3d49c5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="35" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="31" CREATED="2008-12-10 09:56:07.0" UUID="fd6cdb64-142c-4df1-b366-c5e76f08a1fc" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="36" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="32" CREATED="2008-12-10 09:56:07.0" UUID="6d647bbe-5d91-46be-87f5-1781d9d5842c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="37" IMAGEGALLERY="false"/>
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="33" CREATED="2008-12-10 09:56:07.0" UUID="620de7a8-8c83-42c9-add7-fdc55ebf943a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="38" IMAGEGALLERY="false"/>\r
+  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="34" CREATED="2008-12-10 09:56:07.0" UUID="61bad9ae-933d-40e2-90f1-cd516f68a7aa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXON_ID="39" IMAGEGALLERY="false"/>\r
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="1" INDESCRIPTION_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="40458e70-a065-450f-b27d-adf61cc28a7f" UPDATED="2008-12-10 09:56:07.253" AREA_ID="1969" STATUS_ID="1994"/>\r
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="2" INDESCRIPTION_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d4099b8d-0644-4025-8a56-e7fc2d95004e" UPDATED="2008-12-10 09:56:07.253" AREA_ID="1969" STATUS_ID="1994"/>\r
   <DESCRIPTIONELEMENTBASE DTYPE="Distribution" ID="3" INDESCRIPTION_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="317fafca-3722-4d8d-8c4f-701d4f5b911d" UPDATED="2008-12-10 09:56:07.253" AREA_ID="1969" STATUS_ID="1994"/>\r
   <REFERENCE DTYPE="WebPage" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE DTYPE="WebPage" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
   \r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="3" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3"/>
-  <TAXONBASE DTYPE="Taxon" ID="4" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4"/>
-  <TAXONBASE DTYPE="Taxon" ID="5" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5"/>
-  <TAXONBASE DTYPE="Taxon" ID="6" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6"/>
-  <TAXONBASE DTYPE="Taxon" ID="7" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7"/>
-  <TAXONBASE DTYPE="Taxon" ID="8" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8"/>
-  <TAXONBASE DTYPE="Taxon" ID="9" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9"/>
-  <TAXONBASE DTYPE="Taxon" ID="10" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10"/>
-  <TAXONBASE DTYPE="Taxon" ID="11" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11"/>
-  <TAXONBASE DTYPE="Taxon" ID="12" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12"/>
-  <TAXONBASE DTYPE="Taxon" ID="13" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13"/>
-  <TAXONBASE DTYPE="Taxon" ID="14" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14"/>
-  <TAXONBASE DTYPE="Taxon" ID="15" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="3" TAXONNAME_FK="15"/>
-  <TAXONBASE DTYPE="Taxon" ID="16" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16"/>
-  <TAXONBASE DTYPE="Taxon" ID="17" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17"/>
-  <TAXONBASE DTYPE="Taxon" ID="18" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18"/>
-  <TAXONBASE DTYPE="Taxon" ID="19" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19"/>
-  <TAXONBASE DTYPE="Taxon" ID="20" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20"/>
-  <TAXONBASE DTYPE="Taxon" ID="21" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21"/>
-  <TAXONBASE DTYPE="Taxon" ID="22" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22"/>
-  <TAXONBASE DTYPE="Taxon" ID="23" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23"/>
-  <TAXONBASE DTYPE="Taxon" ID="24" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24"/>
-  <TAXONBASE DTYPE="Taxon" ID="25" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25"/>
-  <TAXONBASE DTYPE="Taxon" ID="26" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26"/>
-  <TAXONBASE DTYPE="Synonym" ID="27" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="27"/>
-  <TAXONBASE DTYPE="Synonym" ID="28" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="28"/>
-  <TAXONBASE DTYPE="Synonym" ID="29" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="29"/>
-  <TAXONBASE DTYPE="Synonym" ID="30" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="30"/>
-  <TAXONBASE DTYPE="Synonym" ID="31" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONNAME_FK="31"/>
-  <TAXONBASE DTYPE="Taxon" ID="32" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32"/>
-  <TAXONBASE DTYPE="Taxon" ID="33" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33"/>
-  <TAXONBASE DTYPE="Taxon" ID="34" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34"/>
-  <TAXONBASE DTYPE="Taxon" ID="35" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="36"/>
-  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="39" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-433a-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cdm test" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="3" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3"/>
+  <TAXONBASE DTYPE="Taxon" ID="4" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4"/>
+  <TAXONBASE DTYPE="Taxon" ID="5" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5"/>
+  <TAXONBASE DTYPE="Taxon" ID="6" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6"/>
+  <TAXONBASE DTYPE="Taxon" ID="7" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7"/>
+  <TAXONBASE DTYPE="Taxon" ID="8" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8"/>
+  <TAXONBASE DTYPE="Taxon" ID="9" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9"/>
+  <TAXONBASE DTYPE="Taxon" ID="10" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10"/>
+  <TAXONBASE DTYPE="Taxon" ID="11" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11"/>
+  <TAXONBASE DTYPE="Taxon" ID="12" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12"/>
+  <TAXONBASE DTYPE="Taxon" ID="13" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13"/>
+  <TAXONBASE DTYPE="Taxon" ID="14" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14"/>
+  <TAXONBASE DTYPE="Taxon" ID="15" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="3" NAME_ID="15"/>
+  <TAXONBASE DTYPE="Taxon" ID="16" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16"/>
+  <TAXONBASE DTYPE="Taxon" ID="17" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17"/>
+  <TAXONBASE DTYPE="Taxon" ID="18" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18"/>
+  <TAXONBASE DTYPE="Taxon" ID="19" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19"/>
+  <TAXONBASE DTYPE="Taxon" ID="20" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20"/>
+  <TAXONBASE DTYPE="Taxon" ID="21" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21"/>
+  <TAXONBASE DTYPE="Taxon" ID="22" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22"/>
+  <TAXONBASE DTYPE="Taxon" ID="23" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23"/>
+  <TAXONBASE DTYPE="Taxon" ID="24" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24"/>
+  <TAXONBASE DTYPE="Taxon" ID="25" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25"/>
+  <TAXONBASE DTYPE="Taxon" ID="26" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26"/>
+  <TAXONBASE DTYPE="Synonym" ID="27" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="27"/>
+  <TAXONBASE DTYPE="Synonym" ID="28" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="28"/>
+  <TAXONBASE DTYPE="Synonym" ID="29" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="29"/>
+  <TAXONBASE DTYPE="Synonym" ID="30" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="30"/>
+  <TAXONBASE DTYPE="Synonym" ID="31" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" NAME_ID="31"/>
+  <TAXONBASE DTYPE="Taxon" ID="32" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32"/>
+  <TAXONBASE DTYPE="Taxon" ID="33" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33"/>
+  <TAXONBASE DTYPE="Taxon" ID="34" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34"/>
+  <TAXONBASE DTYPE="Taxon" ID="35" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="36"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="39" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-433a-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cdm test" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19"/>\r
 \r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="37" CREATED="2008-12-10 09:56:07.0" UUID="61b1dcae-8aa6-478a-bcd6-080cf0eb6ad7" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Acherontia styx Westwood, 1847" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Westwood, 1847" NAMECACHE="Acherontia styx" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="36" RANK_ID="765" GENUSORUNINOMIAL="Acherontia" SPECIFICEPITHET="styx" NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="38" CREATED="2008-12-10 09:56:07.0" UUID="c9e7124b-2e60-4df2-996c-b7d024c85d33" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="N.Jacobsen, Bastm. &amp; Yuji Sasaki" NAMECACHE="Cryptocoryne x purpurea nothovar borneoensis" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="true" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="37" RANK_ID="761" GENUSORUNINOMIAL="Cryptocoryne" SPECIFICEPITHET="purpurea" INFRASPECIFICEPITHET="borneoensis" NOMENCLATURALREFERENCE_ID="1"/>\r
 \r
-  <TAXONNODE ID="1" CREATED="2009-06-18 13:47:59.0" UUID="0b5846e5-b8d2-4ca9-ac51-099286ea4adc" COUNTCHILDREN="0" TAXON_ID="19" TAXONOMICTREE_ID="1"/>\r
-  <TAXONNODE ID="2" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="18" TAXONOMICTREE_ID="1"/>\r
-  <TAXONNODE_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="0b5846e5-b8d2-4ca9-ac51-099286ea4adc" COUNTCHILDREN="0" TAXON_ID="19" TAXONOMICTREE_ID="1"/>\r
-  <TAXONNODE_AUD ID="2" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="18" TAXONOMICTREE_ID="1"/>\r
-  <TAXONOMICTREE ID="1" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>\r
-  <TAXONOMICTREE_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>\r
+  <TAXONNODE ID="1" CREATED="2009-06-18 13:47:59.0" UUID="0b5846e5-b8d2-4ca9-ac51-099286ea4adc" COUNTCHILDREN="0" TAXON_ID="19" CLASSIFICATION_ID="1"/>\r
+  <TAXONNODE ID="2" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="18" CLASSIFICATION_ID="1"/>\r
+  <TAXONNODE_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="0b5846e5-b8d2-4ca9-ac51-099286ea4adc" COUNTCHILDREN="0" TAXON_ID="19" CLASSIFICATION_ID="1"/>\r
+  <TAXONNODE_AUD ID="2" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="18" CLASSIFICATION_ID="1"/>\r
+  <CLASSIFICATION ID="1" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>\r
+  <CLASSIFICATION_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>\r
   \r
 </dataset>
\ No newline at end of file
index 9f8faaa585bf66b4318589dae4fd097e4f423f46..f4af8bb47f2cffd1f13c2fd4f8fc9c0f2b2f3af6 100644 (file)
   <SYNONYMRELATIONSHIP_AUD ID="3" REV="1000" REVTYPE="0" UUID="7add0332-1b1d-4a74-b4d5-9a0f7998525d" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="29" RELATEDTO_ID="15" TYPE_ID="846"/>\r
   <SYNONYMRELATIONSHIP_AUD ID="4" REV="1000" REVTYPE="0" UUID="b1ffc3c3-dc59-4a87-ac28-100f3874e9a0" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="30" RELATEDTO_ID="15" TYPE_ID="846"/>\r
   <SYNONYMRELATIONSHIP_AUD ID="5" REV="1000" REVTYPE="0" UUID="b75ba9c0-6686-4e87-b63f-9fc6d59f45ef" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="31" RELATEDTO_ID="15" TYPE_ID="847"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-01-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-01-12 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>
-  <TAXONBASE DTYPE="Taxon" ID="3" SEC_ID="2" CREATED="2008-01-12 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3"/>
-  <TAXONBASE DTYPE="Taxon" ID="4" SEC_ID="2" CREATED="2008-02-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4"/>
-  <TAXONBASE DTYPE="Taxon" ID="5" SEC_ID="2" CREATED="2008-02-04 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5"/>
-  <TAXONBASE DTYPE="Taxon" ID="6" SEC_ID="2" CREATED="2008-02-04 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6"/>
-  <TAXONBASE DTYPE="Taxon" ID="7" SEC_ID="2" CREATED="2008-03-13 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7"/>
-  <TAXONBASE DTYPE="Taxon" ID="8" SEC_ID="2" CREATED="2008-03-13 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8"/>
-  <TAXONBASE DTYPE="Taxon" ID="9" SEC_ID="2" CREATED="2008-03-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9" TAXONOMICPARENTCACHE_ID="3"/>
-  <TAXONBASE DTYPE="Taxon" ID="10" SEC_ID="2" CREATED="2008-04-02 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10"/>
-  <TAXONBASE DTYPE="Taxon" ID="11" SEC_ID="2" CREATED="2008-05-02 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11"/>
-  <TAXONBASE DTYPE="Taxon" ID="12" SEC_ID="2" CREATED="2008-05-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12"/>
-  <TAXONBASE DTYPE="Taxon" ID="13" SEC_ID="2" CREATED="2008-06-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13"/>
-  <TAXONBASE DTYPE="Taxon" ID="14" SEC_ID="2" CREATED="2008-06-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14"/>
-  <TAXONBASE DTYPE="Taxon" ID="15" SEC_ID="2" CREATED="2008-07-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="3" TAXONNAME_FK="15"/>
-  <TAXONBASE DTYPE="Taxon" ID="16" SEC_ID="2" CREATED="2008-07-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16"/>
-  <TAXONBASE DTYPE="Taxon" ID="17" SEC_ID="2" CREATED="2008-07-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17"/>
-  <TAXONBASE DTYPE="Taxon" ID="18" SEC_ID="2" CREATED="2008-08-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18"/>
-  <TAXONBASE DTYPE="Taxon" ID="19" SEC_ID="2" CREATED="2008-09-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19" TAXONOMICPARENTCACHE_ID="9"/>
-  <TAXONBASE DTYPE="Taxon" ID="20" SEC_ID="2" CREATED="2008-09-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20" TAXONOMICPARENTCACHE_ID="9"/>
-  <TAXONBASE DTYPE="Taxon" ID="21" SEC_ID="2" CREATED="2008-10-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21"/>
-  <TAXONBASE DTYPE="Taxon" ID="22" SEC_ID="2" CREATED="2008-10-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22"/>
-  <TAXONBASE DTYPE="Taxon" ID="23" SEC_ID="2" CREATED="2008-11-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23"/>
-  <TAXONBASE DTYPE="Taxon" ID="24" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24"/>
-  <TAXONBASE DTYPE="Taxon" ID="25" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25"/>
-  <TAXONBASE DTYPE="Taxon" ID="26" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26"/>
-  <TAXONBASE DTYPE="Synonym" ID="27" SEC_ID="2" CREATED="2009-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27"/>
-  <TAXONBASE DTYPE="Synonym" ID="28" SEC_ID="2" CREATED="2009-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28"/>
-  <TAXONBASE DTYPE="Synonym" ID="29" SEC_ID="2" CREATED="2009-11-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29"/>
-  <TAXONBASE DTYPE="Synonym" ID="30" SEC_ID="2" CREATED="2009-11-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30"/>
-  <TAXONBASE DTYPE="Synonym" ID="31" SEC_ID="2" CREATED="2007-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31"/>
-  <TAXONBASE DTYPE="Taxon" ID="32" SEC_ID="2" CREATED="2007-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32"/>
-  <TAXONBASE DTYPE="Taxon" ID="33" SEC_ID="2" CREATED="2007-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33"/>
-  <TAXONBASE DTYPE="Taxon" ID="34" SEC_ID="2" CREATED="2009-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34"/>
-  <TAXONBASE DTYPE="Taxon" ID="35" SEC_ID="2" CREATED="2002-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2003-04-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36"/>
-  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1000" REVTYPE="0" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1000" REVTYPE="0" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" TAXONNAME_FK="2"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="204" TAXONNAME_FK="3"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="4"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="15" TAXONNAME_FK="5"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="18" TAXONNAME_FK="6"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="13" TAXONNAME_FK="7"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="8"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="9" TAXONOMICPARENTCACHE_ID="3"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="9" TAXONNAME_FK="10"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="11"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="12"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="49" TAXONNAME_FK="13"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" TAXONNAME_FK="14"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="3" TAXONNAME_FK="15"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="23" TAXONNAME_FK="16"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="17"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" TAXONNAME_FK="18"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="19" TAXONOMICPARENTCACHE_ID="9"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="10" TAXONNAME_FK="20" TAXONOMICPARENTCACHE_ID="9"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="21"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="12" TAXONNAME_FK="22"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="104" TAXONNAME_FK="23"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="31" TAXONNAME_FK="24"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" TAXONNAME_FK="25"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="40" TAXONNAME_FK="26"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="27"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="28"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="29"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="30"/>\r
-  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="31"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="32"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="33"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="34"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="35"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1000" REVTYPE="0" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-01-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-01-12 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>
+  <TAXONBASE DTYPE="Taxon" ID="3" SEC_ID="2" CREATED="2008-01-12 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3"/>
+  <TAXONBASE DTYPE="Taxon" ID="4" SEC_ID="2" CREATED="2008-02-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4"/>
+  <TAXONBASE DTYPE="Taxon" ID="5" SEC_ID="2" CREATED="2008-02-04 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5"/>
+  <TAXONBASE DTYPE="Taxon" ID="6" SEC_ID="2" CREATED="2008-02-04 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6"/>
+  <TAXONBASE DTYPE="Taxon" ID="7" SEC_ID="2" CREATED="2008-03-13 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7"/>
+  <TAXONBASE DTYPE="Taxon" ID="8" SEC_ID="2" CREATED="2008-03-13 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8"/>
+  <TAXONBASE DTYPE="Taxon" ID="9" SEC_ID="2" CREATED="2008-03-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9" TAXONOMICPARENTCACHE_ID="3"/>
+  <TAXONBASE DTYPE="Taxon" ID="10" SEC_ID="2" CREATED="2008-04-02 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10"/>
+  <TAXONBASE DTYPE="Taxon" ID="11" SEC_ID="2" CREATED="2008-05-02 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11"/>
+  <TAXONBASE DTYPE="Taxon" ID="12" SEC_ID="2" CREATED="2008-05-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12"/>
+  <TAXONBASE DTYPE="Taxon" ID="13" SEC_ID="2" CREATED="2008-06-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13"/>
+  <TAXONBASE DTYPE="Taxon" ID="14" SEC_ID="2" CREATED="2008-06-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14"/>
+  <TAXONBASE DTYPE="Taxon" ID="15" SEC_ID="2" CREATED="2008-07-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="3" NAME_ID="15"/>
+  <TAXONBASE DTYPE="Taxon" ID="16" SEC_ID="2" CREATED="2008-07-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16"/>
+  <TAXONBASE DTYPE="Taxon" ID="17" SEC_ID="2" CREATED="2008-07-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17"/>
+  <TAXONBASE DTYPE="Taxon" ID="18" SEC_ID="2" CREATED="2008-08-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18"/>
+  <TAXONBASE DTYPE="Taxon" ID="19" SEC_ID="2" CREATED="2008-09-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19" TAXONOMICPARENTCACHE_ID="9"/>
+  <TAXONBASE DTYPE="Taxon" ID="20" SEC_ID="2" CREATED="2008-09-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20" TAXONOMICPARENTCACHE_ID="9"/>
+  <TAXONBASE DTYPE="Taxon" ID="21" SEC_ID="2" CREATED="2008-10-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21"/>
+  <TAXONBASE DTYPE="Taxon" ID="22" SEC_ID="2" CREATED="2008-10-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22"/>
+  <TAXONBASE DTYPE="Taxon" ID="23" SEC_ID="2" CREATED="2008-11-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23"/>
+  <TAXONBASE DTYPE="Taxon" ID="24" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24"/>
+  <TAXONBASE DTYPE="Taxon" ID="25" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25"/>
+  <TAXONBASE DTYPE="Taxon" ID="26" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26"/>
+  <TAXONBASE DTYPE="Synonym" ID="27" SEC_ID="2" CREATED="2009-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27"/>
+  <TAXONBASE DTYPE="Synonym" ID="28" SEC_ID="2" CREATED="2009-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28"/>
+  <TAXONBASE DTYPE="Synonym" ID="29" SEC_ID="2" CREATED="2009-11-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29"/>
+  <TAXONBASE DTYPE="Synonym" ID="30" SEC_ID="2" CREATED="2009-11-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30"/>
+  <TAXONBASE DTYPE="Synonym" ID="31" SEC_ID="2" CREATED="2007-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31"/>
+  <TAXONBASE DTYPE="Taxon" ID="32" SEC_ID="2" CREATED="2007-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32"/>
+  <TAXONBASE DTYPE="Taxon" ID="33" SEC_ID="2" CREATED="2007-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33"/>
+  <TAXONBASE DTYPE="Taxon" ID="34" SEC_ID="2" CREATED="2009-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34"/>
+  <TAXONBASE DTYPE="Taxon" ID="35" SEC_ID="2" CREATED="2002-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2003-04-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1000" REVTYPE="0" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="496b1325-be50-4b0a-9aa2-3ecd610215f2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="2" REV="1000" REVTYPE="0" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="822d98dc-9ef7-44b7-a870-94573a3bcb46" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="  sec. ???" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONOMICPARENTCACHE_ID="1" NAME_ID="2"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="54e767ee-894e-4540-a758-f906ecb4e2d9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingidae Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="204" NAME_ID="3"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="4" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ef96fafa-7750-4141-b31b-1ad1daab3e76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lathoe Fabricius, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="4"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="5" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="17233b5e-74e7-42fc-bc37-522684657ed4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus Latreille, 1802 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="15" NAME_ID="5"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="6" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b989a278-c414-49f7-9a10-7d784700e4c4" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1807 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="18" NAME_ID="6"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="7" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="15611343-6b11-487f-8233-4756a49a83e2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lepchina Oberthür, 1904 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="13" NAME_ID="7"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="8" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="1489d3dd-71da-4b34-aa5a-d15fccb6bb22" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Smerinthus kindermannii Lederer, 1853 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="8"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="9" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="900052b7-b69c-4e26-a8f0-01c215214c40" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Mimas Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="9" TAXONOMICPARENTCACHE_ID="3"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="10" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8e312b40-924f-46b7-8e8d-837f9ad12f51" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Callambulyx Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="9" NAME_ID="10"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="11" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="53fac190-0b4b-44f5-b4e7-b1ca9a25a6e9" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Dolbina Staudinger, 1877 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="11"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="12" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7748d6f0-04d8-4052-9904-c43f55682419" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Akbesia Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="12"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="13" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="63f251fa-f283-46bb-ad42-7390f0a1e806" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphinx Linnaeus, 1758 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="49" NAME_ID="13"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="14" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="00245994-149e-4cc4-8186-aefd48d4acf8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Agrius Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="6" NAME_ID="14"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="15" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c5cc8674-4242-49a4-aada-72d63194f5fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="3" NAME_ID="15"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="16" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6ecc117a-3e9a-4030-8748-f63a0412e065" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hemaris Dalman, 1816 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="23" NAME_ID="16"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="17" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f6700b5b-b6dc-421a-b979-9429ffad8262" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Proserpinus Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="17"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="18" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b503efaf-b800-421b-beba-3c6fab4b3c34" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Sphingonaepiopsis Wallengren, 1858 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="7" NAME_ID="18"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="19" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="a9f42927-e507-4fda-9629-62073a908aae" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Rethera Rothschild &amp; Jordan, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="19" TAXONOMICPARENTCACHE_ID="9"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="20" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="557ac748-90df-47a6-b6f4-92d7b1d53abb" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Daphnis Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="10" NAME_ID="20" TAXONOMICPARENTCACHE_ID="9"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="21" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="c089d514-f599-4f5a-bc90-3a11176d0f76" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Clarina Tutt, 1903 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="21"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="22" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="74ad1d5e-4f73-4e0d-a209-4bf07abd33fa" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acosmeryx Boisduval, 1875 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="12" NAME_ID="22"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="23" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="8ecb0dfa-31fd-4f5a-bb83-b897cda813db" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Macroglossum Scopoli, 1777 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="104" NAME_ID="23"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="24" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3d2a3441-4602-405f-8ba7-0685d88d7235" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hyles Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="31" NAME_ID="24"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="25" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4b47c134-0c99-43c9-a046-620a195cd69e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Deilephila Laspeyres, 1809 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="4" NAME_ID="25"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="26" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7832c932-f687-4180-a808-fa82d57a9ac8" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Hippotion Hübner, 1819 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="40" NAME_ID="26"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="27" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d75b2e3d-7394-4ada-b6a5-93175b8751c1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Agassiz, 1846 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="27"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="28" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="6bfedf25-6dbc-4d5c-9d56-84f9052f3b2a" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Oken, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="28"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="29" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b3cc5671-5082-4e67-9310-aa88b331f3c7" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Brachyglossa Boisduval, 1828 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="29"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="30" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="f017e915-0266-4f6d-8db4-eff4e8d6af5c" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca Hübner, 1806 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="30"/>\r
+  <TAXONBASE_AUD DTYPE="Synonym" ID="31" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3da4ab34-6c50-4586-801e-732615899b07" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Atropos Leach, 1815 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="31"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="32" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="d88aa25c-7984-4870-bc9c-821f094d3a48" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca afflicta (Grote, 1865) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="32"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="33" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="2c41e444-b160-4c6a-a1be-d5317d97d68d" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca bergarmatipes (Clark, 1927) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="33"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="34" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7fe66bfd-235b-4164-8f0a-d054b5e962ba" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Manduca chinchilla (Gehlen, 1942) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="34"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="35" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="4cab3cc5-eb80-477c-ac1b-be3c3d0a5a85" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia atropos (Linnaeus, 1758) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="35"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="36" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="b04cc9cb-2b4a-4cc4-a94a-3c93a2158b06" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="37" REV="1000" REVTYPE="0" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="38" REV="1000" REVTYPE="0" SEC_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="1"/>
index e9e273bb5384e17ea98c48fe160c2deaaf22c986..74a0d23fd055f42e621c96301e14b9920906ff46 100644 (file)
@@ -9,11 +9,11 @@
   <REFERENCE_AUD DTYPE="WebPage" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   <REFERENCE_AUD DTYPE="WebPage" ID="3" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
   
-  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" TAXONNAME_FK="37"/>
-  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3b2b3e17-5c4a-4d1b-aa39-349f63100d6b" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia(Fabricius, 1798)" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" TAXONNAME_FK="36"/>
-  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798)" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="38"/>
-  <TAXONBASE DTYPE="Synonym" ID="39" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3ef145f7-bd92-4a64-8afd-2b8203e00e02" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acheontitia ciprosus (Fabricius, 1797)" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="39"/>
- <TAXONBASE DTYPE="Synonym" ID="40" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="0b196c1a-5a1c-4a4b-a818-26a8d21b5c17" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="SynGenus" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="40"/>
+  <TAXONBASE DTYPE="Taxon" ID="37" SEC_ID="2" CREATED="2003-08-10 09:56:07.0" UUID="7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia styx Westwood, 1847 sec. cate-sphingidae.org" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="1" NAME_ID="37"/>
+  <TAXONBASE DTYPE="Taxon" ID="36" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3b2b3e17-5c4a-4d1b-aa39-349f63100d6b" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia(Fabricius, 1798)" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="2" NAME_ID="36"/>
+  <TAXONBASE DTYPE="Taxon" ID="38" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="bc09aca6-06fd-4905-b1e7-cbf7cc65d783" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798)" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="38"/>
+  <TAXONBASE DTYPE="Synonym" ID="39" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="3ef145f7-bd92-4a64-8afd-2b8203e00e02" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acheontitia ciprosus (Fabricius, 1797)" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="39"/>
+ <TAXONBASE DTYPE="Synonym" ID="40" SEC_ID="2" CREATED="2008-12-10 09:56:07.0" UUID="0b196c1a-5a1c-4a4b-a818-26a8d21b5c17" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="SynGenus" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" USENAMECACHE="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="40"/>
   
   <SYNONYMRELATIONSHIP ID="1" UUID="e4622950-1b1e-4d50-916a-3e85ffa28dde" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="39" RELATEDTO_ID="38" TYPE_ID="846"/>
   <SYNONYMRELATIONSHIP ID="2" UUID="120c22c5-c4c4-42e7-a9e9-567eebf72f72" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="40" RELATEDTO_ID="36" TYPE_ID="846"/>
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="41" CREATED="2008-12-10 09:56:07.0" UUID="507b60dd-113d-4ab7-9665-25d0374bd6d1" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="test" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="(Fabricius, 1797)" NAMECACHE="Acherontia ciprosus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="35" RANK_ID="765" GENUSORUNINOMIAL="Acherontia" SPECIFICEPITHET="ciprosus" NOMENCLATURALREFERENCE_ID="1"/>
   
     
-  <TAXONNODE ID="1" CREATED="2009-06-18 13:47:59.0" UUID="0b5846e5-b8d2-4ca9-ac51-099286ea4adc" COUNTCHILDREN="0" TAXON_ID="38" PARENT_ID="3" TAXONOMICTREE_ID="1"/>
-  <TAXONNODE ID="2" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="37" PARENT_ID="3" TAXONOMICTREE_ID="1"/>
- <TAXONNODE ID="3" CREATED="2009-06-18 13:47:59.0" UUID="20c8f083-5870-4cbd-bf56-c5b2b98ab6a7" COUNTCHILDREN="2" TAXON_ID="36" TAXONOMICTREE_ID="1"/>
+  <TAXONNODE ID="1" CREATED="2009-06-18 13:47:59.0" UUID="0b5846e5-b8d2-4ca9-ac51-099286ea4adc" COUNTCHILDREN="0" TAXON_ID="38" PARENT_ID="3" CLASSIFICATION_ID="1"/>
+  <TAXONNODE ID="2" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="37" PARENT_ID="3" CLASSIFICATION_ID="1"/>
+ <TAXONNODE ID="3" CREATED="2009-06-18 13:47:59.0" UUID="20c8f083-5870-4cbd-bf56-c5b2b98ab6a7" COUNTCHILDREN="2" TAXON_ID="36" CLASSIFICATION_ID="1"/>
  
-  <TAXONNODE_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="4c8a01a1-6037-43ce-8421-15258d9f5c11" COUNTCHILDREN="0" TAXON_ID="38" TAXONOMICTREE_ID="1"/>
-  <TAXONNODE_AUD ID="2" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="37" TAXONOMICTREE_ID="1"/>
-  <TAXONNODE_AUD ID="3" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="f445e0fe-32c8-47b1-b257-86da3d57c016" COUNTCHILDREN="2" TAXON_ID="36" TAXONOMICTREE_ID="1"/>
+  <TAXONNODE_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="4c8a01a1-6037-43ce-8421-15258d9f5c11" COUNTCHILDREN="0" TAXON_ID="38" CLASSIFICATION_ID="1"/>
+  <TAXONNODE_AUD ID="2" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="770239f6-4fa8-496b-8738-fe8f7b2ad519" COUNTCHILDREN="0" TAXON_ID="37" CLASSIFICATION_ID="1"/>
+  <TAXONNODE_AUD ID="3" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="f445e0fe-32c8-47b1-b257-86da3d57c016" COUNTCHILDREN="2" TAXON_ID="36" CLASSIFICATION_ID="1"/>
   
-  <TAXONOMICTREE ID="1" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>
-  <TAXONOMICTREE_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>
+  <CLASSIFICATION ID="1" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>
+  <CLASSIFICATION_AUD ID="1" REV="1025" REVTYPE="0" CREATED="2009-06-18 13:47:59.0" UUID="aeee7448-5298-4991-b724-8d5b75a0a7a9" PROTECTEDTITLECACHE="false" TITLECACHE="TestBaum" NAME_ID="1"/>
  
   
 </dataset>
\ No newline at end of file
index f9bd8f0431650ac4236f2bff9ad361fe4514b3a8..bb618ef00bb4fb5303b68dd515ab2d9d0bc70ff4 100644 (file)
@@ -59,8 +59,8 @@
   <REFERENCE DTYPE="WebPage" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-sphingidae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="3"/>
   <REFERENCE DTYPE="WebPage" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="cate-araceae.org" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
   <SPECIMENOROBSERVATIONBASE DTYPE="Specimen" 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" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="36"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="39"/>\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" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false"  UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="39"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="2" COMBINATIONAUTHORTEAM_ID="1"/>\r
   <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" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus"  NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="1"/>
   <TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="1"/>
index eac908144c1b4524afbc036e78cb6726d95a4446..7bb33aa5c6322b21b939e28603250e0ebc91ffa3 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <artifactId>cdmlib-parent</artifactId>
                <groupId>eu.etaxonomy</groupId>
-               <version>2.5</version>
+               <version>3.0</version>
                <relativePath>pom.xml</relativePath>
        </parent>
        <modelVersion>4.0.0</modelVersion>
@@ -33,7 +33,7 @@
                        <roles>
                                <role>Java Developer</role>
                        </roles>
-                       <url></url>
+                       <url>http://www.bgbm.org/bgbm/staff/wiss/HoffmannN/default.htm</url>
                </developer>
        </developers>
        <dependencies>
index f6615a94d249f3525d4df2d8375936a8e06e1ee5..2428fad8852766abdd6a8e754f49ce822f3381be 100644 (file)
@@ -27,7 +27,7 @@ public class XMLHelper {
        private static final Logger logger = Logger.getLogger(XMLHelper.class);
        
        public enum EntityType{
-               CLASSIFICATION("TaxonomicTree"), 
+               CLASSIFICATION("Classification"), 
                TAXON_NODE("TaxonNode"),
                EMPTY("");
                
index 7881eb0cd8495f634fdf93ba426fe5178773c398..3247693aff87c633907b3dcf7f55ca4327ffcff8 100644 (file)
@@ -27,7 +27,7 @@ public class OdfOutputModule extends AbstractPublishOutputModule {
        private static final Logger logger = Logger
                .getLogger(OdfOutputModule.class);
        
-       public static String STYLESHEET_RESOURCE_DEFAULT = "/eu/etaxonomy/printpublisher/out/odf/cdmToOdfText.xsl";
+       public static String STYLESHEET_RESOURCE_DEFAULT = "/eu/etaxonomy/cdm/print/out/odf/cdmToOdfText.xsl";
        
        private DocumentCreator documentCreator;
        private Transformator transformator;
diff --git a/cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/package.html b/cdmlib-print/src/main/resources/eu/etaxonomy/cdm/print/package.html
new file mode 100644 (file)
index 0000000..1cd1323
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\r
+<html>\r
+<head>\r
+<!--\r
+\r
+  @(#)package.html (reference)\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
+-->\r
+</head>\r
+<body>\r
+\r
+Provides a framework for generating printed output from a CDM data store. Please have a look at the \r
+<a href="wp5.e-taxonomy.eu/printpublisher">product site</a> for detailed documentation and implementation notes.\r
\r
+\r
+<!-- Put @see and @since tags down here. -->\r
+\r
+</body>\r
+</html>\r
index 2af9042d60b80e741a314cd30590d45dff6e23b0..0b9ac8c3f149adcf3673290dc0553bdc8ebcdf37 100644 (file)
@@ -14,7 +14,6 @@ Generating printed publications from the CDM
 
   * full control over data and layout is returned to the user
     using so-called styles, similar to CSS (Cascading Style Sheets) used in XHTML documents, a layout may be specified for a class of elements. The styles approach allows the user to change the layout of the data in a consistent manner
-
   * by the use of macros, automation programs inside the word processor, it is possible to post process the data, e.g. deleting unwanted parts of the data
 
 *Special Case: Printed Publication of Taxonomic Names
index e034360f752c0d6c827bb0111f6fd61e12e6c9ce..4a35a04b46bfa2d0c0c6de2028165ab7f041af65 100644 (file)
@@ -15,7 +15,7 @@
             <item name="Getting started" href="getting-started.html"/>
             <item name="Writing Templates" href="writing-templates.html"/>
             <item name="Troubleshooting" href="troubleshooting.html"/>
-            <item name="Wiki" href="http://dev.e-taxonomy.eu/trac/wiki/PrintPublisherDev"/>
+            <item name="Wiki" href="http://dev.e-taxonomy.eu/trac/wiki/PrintPublisher"/>
         </menu>
         <menu name="Project">
             <item name="Mailing Lists" href="mail-lists.html"/>
similarity index 98%
rename from cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/PublisherTest.java
rename to cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/PublisherTest.java
index ef9c0b68707b9ec64708c400eafbb3746ca06bb7..1004ba05334a7ca9df0059ec0eb8db8d6898093d 100644 (file)
@@ -8,7 +8,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
-package eu.etaxonomy.printpublisher;
+package eu.etaxonomy.cdm.print;
 
 import java.io.File;
 import java.util.Arrays;
similarity index 95%
rename from cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/TransformatorTest.java
rename to cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/TransformatorTest.java
index 16e58710e7e585b4a60e221aa37953ce35f8f0ca..c9aceb06c7d7c1b140b4bb0599738b97199dc9a4 100644 (file)
@@ -8,7 +8,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
-package eu.etaxonomy.printpublisher;
+package eu.etaxonomy.cdm.print;
 
 import static org.junit.Assert.assertNotNull;
 
@@ -30,7 +30,7 @@ import org.junit.Test;
 
 import eu.etaxonomy.cdm.print.Transformator;
 import eu.etaxonomy.cdm.print.out.odf.OdfOutputModule;
-import eu.etaxonomy.printpublisher.out.odf.OdfOutputModuleTest;
+import eu.etaxonomy.cdm.print.out.odf.OdfOutputModuleTest;
 
 /**
  * @author n.hoffmann
similarity index 96%
rename from cdmlib-print/src/test/java/eu/etaxonomy/printpublisher/out/odf/OdfOutputModuleTest.java
rename to cdmlib-print/src/test/java/eu/etaxonomy/cdm/print/out/odf/OdfOutputModuleTest.java
index 98042c82edd1a8e81a46f5b5aed552e75a55b922..78148115b5a61b978ed2d02203d87e42f8360436 100644 (file)
@@ -8,7 +8,7 @@
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
-package eu.etaxonomy.printpublisher.out.odf;
+package eu.etaxonomy.cdm.print.out.odf;
 
 import java.io.File;
 import java.io.InputStream;
index 96e2123adbd8f29ed8e11514a1e64d4e4e992f5e..de794b1de4e08d3e46286962cde667de837b4fb0 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <artifactId>cdmlib-parent</artifactId>
     <groupId>eu.etaxonomy</groupId>
-    <version>2.5</version>
+    <version>3.0</version>
        <relativePath>pom.xml</relativePath>
   </parent>
   
index ab96942daeb23df213c27b281bd0975f051f3fd6..77fd0a75b1919d9946637c8b42debe89deebd754 100644 (file)
@@ -106,9 +106,9 @@ public class DataSourceConfigurer extends AbstractWebApplicationConfigurer {
                XmlBeanFactory beanFactory  = new XmlBeanFactory(file);\r
                DataSource dataSource = beanFactory.getBean(beanName, DataSource.class);\r
                if(dataSource instanceof ComboPooledDataSource){\r
-                       logger.info("DataSourceBean '" + beanName + "is a ComboPooledDataSource [URL:" + ((ComboPooledDataSource)dataSource).getJdbcUrl()+ "]");\r
+                       logger.info("DataSourceBean '" + beanName + "is a ComboPooledDataSource [URL:" + ((ComboPooledDataSource)dataSource).getJdbcUrl()+ "]");\r
                } else {\r
-                       logger.error("DataSourceBean '" + beanName + "IS NOT a ComboPooledDataSource");\r
+                       logger.error("DataSourceBean '" + beanName + "IS NOT a ComboPooledDataSource");\r
                }\r
                return dataSource;\r
        }\r
index 0d61a10ba21feb94f53441652c8d68e4eb2c2b73..36408105b3ffbf04dffd6c51036266b49d5131c8 100644 (file)
@@ -21,7 +21,7 @@
     </bean>\r
     \r
     <!-- taxonomy service -->\r
-    <bean name="**/taxonTree **/taxonTree/* **/taxonTree/**/*" class="eu.etaxonomy.cdm.remote.view.JsonView">\r
+    <bean name="**/classification **/classification/* **/classification/**/*" class="eu.etaxonomy.cdm.remote.view.JsonView">\r
         <property name="jsonConfig" ref="jsonConfigTaxonomy" />\r
     </bean>\r
     \r
index 3d236dac6036bf60f089254940f6485fae7d1bb1..da849383d528f2851dddf03c70263885abb75046 100644 (file)
@@ -23,7 +23,7 @@
     </bean>\r
     \r
     <!-- taxonomy service -->\r
-    <bean name="**/taxonTree **/taxonTree/* **/taxonTree/**/*" class="eu.etaxonomy.cdm.remote.view.JsonView">\r
+    <bean name="**/classification **/classification/* **/classification/**/*" class="eu.etaxonomy.cdm.remote.view.JsonView">\r
         <property name="type" value="XML" />\r
         <!--  <property name="xsl" value="humane.xsl" />  -->\r
         <property name="jsonConfig" ref="jsonConfigTaxonomy" />\r
index 4dead1cc6f8d93e8cc9c694fa766d3437bcf89ee..d8c8d37a32a482ebbeae8faa254ba3876c036475 100644 (file)
@@ -7,7 +7,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>cdmlib-parent</artifactId>
-               <version>2.5</version>
+               <version>3.0</version>
                <relativePath>pom.xml</relativePath>
        </parent>
        
index f5fbc9135dfefb23cbea193c2991f2c2c632d6dd..bf5a16dc710e143771fc2fc09d3f84a6b6d77f50 100644 (file)
@@ -24,12 +24,12 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RequestMethod;\r
 \r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;\r
 \r
 /**\r
@@ -39,7 +39,7 @@ import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;
  */\r
 @Controller\r
 @RequestMapping(value = {"/classification/{uuid}"})\r
-public class ClassificationController extends AnnotatableController<TaxonomicTree,ITaxonTreeService> {\r
+public class ClassificationController extends AnnotatableController<Classification,IClassificationService> {\r
 \r
 \r
        private ITermService termService;\r
@@ -49,7 +49,7 @@ public class ClassificationController extends AnnotatableController<TaxonomicTre
         */\r
        @Override\r
        @Autowired\r
-       public void setService(ITaxonTreeService service) {\r
+       public void setService(IClassificationService service) {\r
                this.service = service;\r
        }\r
        \r
@@ -70,7 +70,7 @@ public class ClassificationController extends AnnotatableController<TaxonomicTre
                return Arrays.asList(new String[]{\r
                        "taxon.sec", \r
                        "taxon.name",\r
-                       "taxonomicTree"\r
+                       "classification"\r
        });}\r
        \r
        /**\r
@@ -100,7 +100,7 @@ public class ClassificationController extends AnnotatableController<TaxonomicTre
                        ) throws IOException {\r
                \r
                logger.info("getChildNodesAtRank()");\r
-               TaxonomicTree tree = null;\r
+               Classification tree = null;\r
                Rank rank = null;\r
                if(classificationUuid != null){\r
                        // get view and rank\r
index 8193d7bc27ab147793cf4dadaa38e9808791e71c..06d4c2b0e4a4df25ab41ad0a20a37501d37d9fe0 100644 (file)
@@ -18,8 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 
 /**
  * @author n.hoffmann
@@ -27,8 +27,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
  * @version 1.0
  */
 @Controller
-@RequestMapping(value = {"/classifications"})
-public class ClassificationListController extends BaseListController<TaxonomicTree,ITaxonTreeService> {
+@RequestMapping(value = {"/classification"})
+public class ClassificationListController extends BaseListController<Classification,IClassificationService> {
        
        private static final Logger logger = Logger
                        .getLogger(ClassificationListController.class);
@@ -44,7 +44,7 @@ public class ClassificationListController extends BaseListController<TaxonomicTr
         */
        @Override
        @Autowired
-       public void setService(ITaxonTreeService service) {
+       public void setService(IClassificationService service) {
                this.service = service;
        }
                
similarity index 67%
rename from cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonomicTreePortalController.java
rename to cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalController.java
index ca4219eeae850673209f7e2e21fbbc0379c7bbf4..4d5a535b6e2a53498889e9801bb1ce8e66b724d8 100644 (file)
@@ -19,13 +19,13 @@ import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.InitBinder;\r
 import org.springframework.web.bind.annotation.RequestMapping;\r
 \r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;\r
 \r
 /**\r
- * The TaxonomicTreeController class is a Spring MVC Controller.\r
+ * The ClassificationController class is a Spring MVC Controller.\r
  * <p>\r
  * The syntax of the mapped service URIs contains the the {datasource-name} path element.\r
  * The available {datasource-name}s are defined in a configuration file which\r
@@ -39,18 +39,18 @@ import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;
  * TODO this controller should be a portal controller!!\r
  */\r
 @Controller\r
-@RequestMapping(value = {"/portal/taxonTree/{uuid}"})\r
-public class TaxonomicTreePortalController extends AnnotatableController<TaxonomicTree,ITaxonTreeService> {\r
+@RequestMapping(value = {"/portal/classification/{uuid}"})\r
+public class ClassificationPortalController extends AnnotatableController<Classification,IClassificationService> {\r
        \r
        \r
-       private static final List<String> TAXONTREE_INIT_STRATEGY = Arrays.asList(new String[]{\r
+       private static final List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[]{\r
                        "reference.authorTeam"\r
        });\r
 \r
-       public static final Logger logger = Logger.getLogger(TaxonomicTreePortalController.class);\r
+       public static final Logger logger = Logger.getLogger(ClassificationPortalController.class);\r
        \r
        @Autowired\r
-       public void setService(ITaxonTreeService service) {\r
+       public void setService(IClassificationService service) {\r
                this.service = service; \r
        }\r
        \r
@@ -66,9 +66,9 @@ public class TaxonomicTreePortalController extends AnnotatableController<Taxonom
        /**\r
         * \r
         */\r
-       public TaxonomicTreePortalController() {\r
+       public ClassificationPortalController() {\r
                super();\r
-               setInitializationStrategy(TAXONTREE_INIT_STRATEGY);\r
+               setInitializationStrategy(CLASSIFICATION_INIT_STRATEGY);\r
        }\r
 \r
        \r
similarity index 67%
rename from cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonomicTreePortalListController.java
rename to cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalListController.java
index 8d4b084a629495433f1a0401b2299cbccedc07c3..ccb69733290802843c423ea7ecc42123f32ac34f 100644 (file)
@@ -26,35 +26,26 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RequestMethod;\r
 \r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
-import eu.etaxonomy.cdm.database.UpdatableRoutingDataSource;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;\r
-import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor;\r
 \r
 /**\r
- * The TaxonomicTreeController class is a Spring MVC Controller.\r
- * <p>\r
- * The syntax of the mapped service URIs contains the the {datasource-name} path element.\r
- * The available {datasource-name}s are defined in a configuration file which\r
- * is loaded by the {@link UpdatableRoutingDataSource}. If the\r
- * UpdatableRoutingDataSource is not being used in the actual application\r
- * context any arbitrary {datasource-name} may be used.\r
- * <p>\r
+ * The ClassificationController class is a Spring MVC Controller.\r
  * @author a.kohlbecker\r
  * @date 20.03.2009\r
  */\r
 @Controller\r
-public class TaxonomicTreePortalListController extends BaseListController<TaxonomicTree,ITaxonTreeService> {\r
+public class ClassificationPortalListController extends BaseListController<Classification,IClassificationService> {\r
        \r
        \r
-       private static final List<String> TAXONTREE_INIT_STRATEGY = Arrays.asList(new String[]{\r
+       private static final List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[]{\r
                        "reference.authorTeam"\r
        });\r
        \r
@@ -64,16 +55,16 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
                        });\r
        \r
 \r
-       public static final Logger logger = Logger.getLogger(TaxonomicTreePortalListController.class);\r
+       public static final Logger logger = Logger.getLogger(ClassificationPortalListController.class);\r
 \r
        private ITaxonService taxonService;\r
        \r
-       private ITaxonTreeService service;\r
+       private IClassificationService service;\r
        \r
        private ITermService termService;\r
        \r
        @Autowired\r
-       public void setService(ITaxonTreeService service) {\r
+       public void setService(IClassificationService service) {\r
                this.service = service; \r
        }\r
        \r
@@ -97,21 +88,21 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
        \r
        \r
        /**\r
-        * Lists all available {@link TaxonomicTree}s.\r
+        * Lists all available {@link Classification}s.\r
         * <p>\r
-        * URI: <b>&#x002F;{datasource-name}&#x002F;portal&#x002F;taxontree</b>\r
+        * URI: <b>&#x002F;{datasource-name}&#x002F;portal&#x002F;classification</b>\r
         * \r
         * @param request\r
         * @param response\r
-        * @return a list of {@link TaxonomicTree}s initialized by\r
-        *         the {@link #TAXONTREE_INIT_STRATEGY}\r
+        * @return a list of {@link Classification}s initialized by\r
+        *         the {@link #CLASSIFICATION_INIT_STRATEGY}\r
         * @throws IOException\r
         */\r
-       @RequestMapping(value = { "/portal/taxonTree" }, method = RequestMethod.GET)\r
-       public List<TaxonomicTree> getTaxonomicTrees(HttpServletRequest request, HttpServletResponse response)\r
+       @RequestMapping(value = { "/portal/classification" }, method = RequestMethod.GET)\r
+       public List<Classification> getClassifications(HttpServletRequest request, HttpServletResponse response)\r
                        throws IOException {\r
-               logger.info("getTaxonomicTrees() " + request.getServletPath());\r
-               return service.list(null, null, null,null, TAXONTREE_INIT_STRATEGY);\r
+               logger.info("getClassification() " + request.getServletPath());\r
+               return service.list(null, null, null,null, CLASSIFICATION_INIT_STRATEGY);\r
        }\r
        \r
        \r
@@ -122,7 +113,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
         * @throws IOException\r
         */\r
        @RequestMapping(\r
-                       value = {"/portal/taxonTree/{treeUuid}/childNodes"},\r
+                       value = {"/portal/classification/{treeUuid}/childNodes"},\r
                        method = RequestMethod.GET)\r
        public List<TaxonNode> getChildNodes(\r
                        @PathVariable("treeUuid") UUID treeUuid,\r
@@ -135,7 +126,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
        \r
        \r
        @RequestMapping(\r
-                       value = {"/portal/taxonTree/{treeUuid}/childNodesAt/{rankUuid}"},\r
+                       value = {"/portal/classification/{treeUuid}/childNodesAt/{rankUuid}"},\r
                        method = RequestMethod.GET)\r
        public List<TaxonNode> getChildNodesAtRank(\r
                        @PathVariable("treeUuid") UUID treeUuid,\r
@@ -145,14 +136,14 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
                        ) throws IOException {\r
                \r
                logger.info("getChildNodesAtRank() " + request.getServletPath());\r
-               TaxonomicTree tree = null;\r
+               Classification tree = null;\r
                Rank rank = null;\r
                if(treeUuid != null){\r
                        // get view and rank\r
                        tree = service.find(treeUuid);\r
                        \r
                        if(tree == null) {\r
-                               response.sendError(404 , "TaxonomicTree not found using " + treeUuid );\r
+                               response.sendError(404 , "Classification not found using " + treeUuid );\r
                                return null;\r
                        }\r
                }\r
@@ -165,14 +156,14 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
 \r
 \r
        /**\r
-        * Lists all child-{@link TaxonNode}s of the specified {@link Taxon} in the {@link TaxonomicTree}. The\r
+        * Lists all child-{@link TaxonNode}s of the specified {@link Taxon} in the {@link Classification}. The\r
         * a given {@link Rank} is ignored in this method but for consistency reasons it has been allowed to included it into the URI. \r
         * <p>\r
-        * URI: <b>&#x002F;portal&#x002F;taxontree&#x002F;{treeUuid}&#x002F;childNodesOf&#x002F;{taxonUuid}</b>\r
+        * URI: <b>&#x002F;portal&#x002F;classification&#x002F;{treeUuid}&#x002F;childNodesOf&#x002F;{taxonUuid}</b>\r
         * <p>\r
      * <b>URI elements:</b>\r
      * <ul>\r
-     * <li><b>{tree-uuid}</b> identifies the {@link TaxonomicTree} by its UUID - <i>required</i>.\r
+     * <li><b>{tree-uuid}</b> identifies the {@link Classification} by its UUID - <i>required</i>.\r
      * <li><b>{taxon-uuid}</b> identifies the {@link Taxon} by its UUID. - <i>required</i>.\r
      * </ul>\r
         * \r
@@ -182,7 +173,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
         *         the {@link #NODE_INIT_STRATEGY}\r
         */\r
        @RequestMapping(\r
-                       value = {"/portal/taxonTree/{treeUuid}/childNodesOf/{taxonUuid}"}, \r
+                       value = {"/portal/classification/{treeUuid}/childNodesOf/{taxonUuid}"}, \r
                        method = RequestMethod.GET)\r
        public List<TaxonNode> getChildNodesOfTaxon(\r
                        @PathVariable("treeUuid") UUID treeUuid,\r
@@ -191,7 +182,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
                        HttpServletResponse response) throws IOException {\r
                logger.info("getChildNodesOfTaxon() " + request.getServletPath());\r
                \r
-               TaxonomicTree tree = service.find(treeUuid);\r
+               Classification tree = service.find(treeUuid);\r
                Taxon taxon = (Taxon) taxonService.load(taxonUuid);\r
                List<TaxonNode> childs = service.loadChildNodesOfTaxon(taxon, tree, NODE_INIT_STRATEGY);\r
                return childs;\r
@@ -201,11 +192,11 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
        /**\r
         * Provides path of {@link TaxonNode}s from the base node to the node of the specified taxon.\r
         * <p>\r
-        * URI:<b>&#x002F;portal&#x002F;taxontree&#x002F;{treeUuid}&#x002F;pathFrom&#x002F;{taxonUuid}&#x002F;toRank&#x002F;{rankUuid}</b>\r
+        * URI:<b>&#x002F;portal&#x002F;classification&#x002F;{treeUuid}&#x002F;pathFrom&#x002F;{taxonUuid}&#x002F;toRank&#x002F;{rankUuid}</b>\r
         * <p>\r
      * <b>URI elements:</b>\r
      * <ul>\r
-     * <li><b>{treeUuid}</b> identifies the {@link TaxonomicTree} by its UUID - <i>required</i>.\r
+     * <li><b>{treeUuid}</b> identifies the {@link Classification} by its UUID - <i>required</i>.\r
      * <li><b>{taxonUuid}</b> identifies the {@link Rank}\r
      * <li><b>{rankUuid}</b> identifies the {@link Taxon} by its UUID. - <i>required</i>.\r
      * </ul>\r
@@ -216,7 +207,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
         *         the {@link #NODE_INIT_STRATEGY}\r
         */\r
        @RequestMapping(\r
-                       value = {"/portal/taxonTree/{treeUuid}/pathFrom/{taxonUuid}/toRank/{rankUuid}"}, \r
+                       value = {"/portal/classification/{treeUuid}/pathFrom/{taxonUuid}/toRank/{rankUuid}"}, \r
                        method = RequestMethod.GET)\r
        public List<TaxonNode> getPathFromTaxonToRank(\r
                        @PathVariable("treeUuid") UUID treeUuid,\r
@@ -226,7 +217,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
                        HttpServletResponse response) throws IOException {\r
                logger.info("getPathFromTaxonToRank() " + request.getServletPath());\r
                \r
-               TaxonomicTree tree = service.find(treeUuid);\r
+               Classification tree = service.find(treeUuid);\r
                Rank rank = findRank(rankUuid);\r
                Taxon taxon = (Taxon) taxonService.load(taxonUuid);\r
                \r
@@ -236,11 +227,11 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
        /**\r
         * Provides path of {@link TaxonNode}s from the base node to the node of the specified taxon.\r
         * <p>\r
-        * URI:<b>&#x002F;portal&#x002F;taxontree&#x002F;{treeUuid}&#x002F;pathFrom&#x002F;{taxonUuid}</b>\r
+        * URI:<b>&#x002F;portal&#x002F;classification&#x002F;{treeUuid}&#x002F;pathFrom&#x002F;{taxonUuid}</b>\r
         * <p>\r
      * <b>URI elements:</b>\r
      * <ul>\r
-     * <li><b>{treeUuid}</b> identifies the {@link TaxonomicTree} by its UUID - <i>required</i>.\r
+     * <li><b>{treeUuid}</b> identifies the {@link Classification} by its UUID - <i>required</i>.\r
      * <li><b>{rankUuid}</b> identifies the {@link Taxon} by its UUID. - <i>required</i>.\r
      * </ul>\r
         * \r
@@ -250,7 +241,7 @@ public class TaxonomicTreePortalListController extends BaseListController<Taxono
         *         the {@link #NODE_INIT_STRATEGY}\r
         */\r
        @RequestMapping(\r
-                       value = {"/portal/taxonTree/{treeUuid}/pathFrom/{taxonUuid}"}, \r
+                       value = {"/portal/classification/{treeUuid}/pathFrom/{taxonUuid}"}, \r
                        method = RequestMethod.GET)\r
        public List<TaxonNode> getPathFromTaxon(\r
                        @PathVariable("treeUuid") UUID treeUuid,\r
index 61711abfec9a7cfac5a9700ab371b8903eed65c0..beba2d3b3d486ae598a07f65281f1a982446943f 100644 (file)
@@ -76,13 +76,10 @@ public class MediaController extends AnnotatableController<Media, IMediaService>
                try {\r
                        if (mediaRep instanceof MediaRepresentation){\r
                                MediaRepresentation medRep = (MediaRepresentation) mediaRep;\r
-                               String uriString = medRep.getParts().get(0).getUri();\r
-                               result = service.getImageMetaData(new URI(uriString), 3000);\r
+                               URI uri = medRep.getParts().get(0).getUri();\r
+                               result = service.getImageMetaData(uri, 3000);\r
                                mv.addObject(result);\r
                        }\r
-               } catch (URISyntaxException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
                } catch (HttpException e) {\r
                        // TODO Auto-generated catch block\r
                        e.printStackTrace();\r
index 2982260776c827e487af8d34fcd044558b12dd24..24fe41273c37c7db7ebc8d770b3859b333d093b9 100644 (file)
@@ -30,7 +30,7 @@ import org.springframework.web.servlet.ModelAndView;
 \r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor;\r
 \r
 /**\r
@@ -42,7 +42,7 @@ import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor;
 \r
 @Controller\r
 @RequestMapping(value = {"/reference/{uuid}"})\r
-public class ReferenceController extends AnnotatableController<ReferenceBase, IReferenceService>\r
+public class ReferenceController extends AnnotatableController<Reference, IReferenceService>\r
 {\r
        \r
        private static final List<String> NOMENCLATURAL_CITATION_INIT_STRATEGY = Arrays.asList(new String []{\r
@@ -88,7 +88,7 @@ public class ReferenceController extends AnnotatableController<ReferenceBase, IR
                        HttpServletResponse response,\r
                        @RequestParam(value = "microReference", required = false) String microReference)throws IOException {\r
                ModelAndView mv = new ModelAndView();\r
-               ReferenceBase rb = service.load(uuid, NOMENCLATURAL_CITATION_INIT_STRATEGY);\r
+               Reference rb = service.load(uuid, NOMENCLATURAL_CITATION_INIT_STRATEGY);\r
                if(INomenclaturalReference.class.isAssignableFrom(rb.getClass())){\r
                        String nomRefCit = ((INomenclaturalReference)rb).getNomenclaturalCitation(microReference);\r
                        mv.addObject(nomRefCit);\r
@@ -107,7 +107,7 @@ public class ReferenceController extends AnnotatableController<ReferenceBase, IR
                                HttpServletRequest request, \r
                                HttpServletResponse response) {\r
                ModelAndView mv = new ModelAndView();\r
-               ReferenceBase rb = service.load(uuid, CITATION_WITH_AUTHORTEAM_INIT_STRATEGY);\r
+               Reference rb = service.load(uuid, CITATION_WITH_AUTHORTEAM_INIT_STRATEGY);\r
                if(rb.getAuthorTeam() != null){\r
                        mv.addObject(rb.getAuthorTeam());\r
                }\r
index 97759030c5ed14cbdb743d64ca13cf8324ea6579..35aa3ffeef6d26c5e06e7c6bdb8b6f599353d182 100644 (file)
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;\r
 \r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * TODO write controller documentation\r
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase;
  */\r
 @Controller\r
 @RequestMapping(value = {"/reference"})\r
-public class ReferenceListController extends BaseListController<ReferenceBase, IReferenceService> {\r
+public class ReferenceListController extends BaseListController<Reference, IReferenceService> {\r
 \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.remote.controller.BaseListController#setService(eu.etaxonomy.cdm.api.service.IService)\r
index afdb0f7d51bb5de3562fd39ec7319988d764e8b3..06954d68e3fa562e9a34b5f92656c9f07b167d61 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
 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.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.impl.TaxonServiceConfiguratorImpl;\r
 import eu.etaxonomy.cdm.api.service.pager.Pager;\r
@@ -60,7 +60,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 import eu.etaxonomy.cdm.remote.editor.MatchModePropertyEditor;\r
 import eu.etaxonomy.cdm.remote.editor.NamedAreaPropertyEditor;\r
@@ -103,7 +103,7 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
        private IOccurrenceService occurrenceService;\r
        \r
        @Autowired\r
-       private ITaxonTreeService taxonTreeService;\r
+       private IClassificationService classificationService;\r
        \r
        @Autowired\r
        private ITaxonService taxonService;\r
@@ -130,7 +130,7 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
        \r
        private static final List<String> TAXON_WITH_NODES_INIT_STRATEGY = Arrays.asList(new String []{\r
                        "taxonNodes.$",\r
-                       "taxonNodes.taxonomicTree.$",\r
+                       "taxonNodes.classification.$",\r
                        "taxonNodes.childNodes.$"\r
                        });\r
        \r
@@ -224,7 +224,7 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
        });\r
        \r
        protected static final List<String> TAXONNODE_INIT_STRATEGY = Arrays.asList(new String []{\r
-                       "taxonNodes.taxonomicTree"\r
+                       "taxonNodes.classification"\r
        });\r
        \r
        \r
@@ -276,7 +276,7 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
         *            always compares the query string with the beginning of a name.\r
         *            - <i>required parameter</i>\r
         * @param treeUuid\r
-        *            the {@link UUID} of a {@link TaxonomicTree} to which the\r
+        *            the {@link UUID} of a {@link Classification} to which the\r
         *            search is to be restricted. - <i>optional parameter</i>\r
         * @param areas\r
         *            restrict the search to a set of geographic {@link NamedArea}s.\r
@@ -339,8 +339,8 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
                config.setTaxonPropertyPath(SIMPLE_TAXON_INIT_STRATEGY);\r
                config.setNamedAreas(areas);\r
                if(treeUuid != null){\r
-                       TaxonomicTree taxonomicTree = taxonTreeService.find(treeUuid);\r
-                       config.setTaxonomicTree(taxonomicTree);\r
+                       Classification classification = classificationService.find(treeUuid);\r
+                       config.setClassification(classification);\r
                }\r
                        \r
                return (Pager<IdentifiableEntity>) service.findTaxaAndNames(config);\r
@@ -698,7 +698,7 @@ public class TaxonPortalController extends BaseController<TaxonBase, ITaxonServi
                        node = iterator.next();\r
                        //überprüfen, ob der TaxonNode zum aktuellen Baum gehört.\r
                        \r
-                       node = taxonTreeService.loadTaxonNode(node, TAXONNODE_WITHTAXON_INIT_STRATEGY);\r
+                       node = classificationService.loadTaxonNode(node, TAXONNODE_WITHTAXON_INIT_STRATEGY);\r
                        Set<TaxonNode> children = node.getChildNodes();\r
                        Taxon childTaxon;\r
                        for (TaxonNode child : children){\r
index 773904f5f1e6e48ec64e4afc294e45a75249bf59..a62ee74dbf05d712a485f8c807ceebdc0c8f7db7 100644 (file)
@@ -26,7 +26,7 @@ import org.springframework.web.servlet.ModelAndView;
 import eu.etaxonomy.cdm.database.UpdatableRoutingDataSource;\r
 import eu.etaxonomy.cdm.ext.dc.DublinCoreSchemaAdapter;\r
 import eu.etaxonomy.cdm.ext.sru.SruServiceWrapper;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * The ExternalGeoController class is a Spring MVC Controller.\r
@@ -71,7 +71,7 @@ public class ExternalBhleController {
                logger.info("doSearchRetrieve( " + "query=\"" + ObjectUtils.toString(cqlQuery) + "\")");\r
                ModelAndView mv = new ModelAndView();\r
                \r
-               List<ReferenceBase> referenceList = sruServiceWrapper.doSearchRetrieve(cqlQuery, "dc");\r
+               List<Reference> referenceList = sruServiceWrapper.doSearchRetrieve(cqlQuery, "dc");\r
                \r
                mv.addObject(referenceList);\r
                return mv;\r
index 70ee142d0d143cbed9f25d29f1edac93e520752e..44ff436618b181354cd8a45e25c97b9d03ac8a88 100644 (file)
@@ -23,7 +23,7 @@ import org.springframework.web.servlet.ModelAndView;
 \r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.model.common.LSID;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.view.AuditEventRecord;\r
 import eu.etaxonomy.cdm.remote.controller.AbstractOaiPmhController;\r
@@ -33,7 +33,7 @@ import eu.etaxonomy.cdm.remote.dto.oaipmh.SetSpec;
 \r
 @Controller\r
 @RequestMapping(value = "/reference/oai", params = "verb")\r
-public class ReferenceOaiPmhController extends AbstractOaiPmhController<ReferenceBase, IReferenceService> {\r
+public class ReferenceOaiPmhController extends AbstractOaiPmhController<Reference, IReferenceService> {\r
 \r
        @Override\r
        protected List<String> getPropertyPaths() {\r
@@ -92,9 +92,9 @@ public class ReferenceOaiPmhController extends AbstractOaiPmhController<Referenc
                        LSID identifier, MetadataPrefix metadataPrefix)\r
                        throws IdDoesNotExistException {\r
                \r
-               AuditEventRecord<ReferenceBase> auditEventRecord = obtainCdmEntity(identifier);\r
-               ReferenceBase referenceBase = auditEventRecord.getAuditableObject();\r
-               List<TaxonBase> list = service.listCoveredTaxa(referenceBase, true, TAXON_INIT_STRATEGY);\r
+               AuditEventRecord<Reference> auditEventRecord = obtainCdmEntity(identifier);\r
+               Reference reference = auditEventRecord.getAuditableObject();\r
+               List<TaxonBase> list = service.listCoveredTaxa(reference, true, TAXON_INIT_STRATEGY);\r
                return list;\r
        }\r
     \r
index 13a3914c1f8d24bb31da60cd806cf4fc0c92ffd7..7a184fc0b4f884f38abcc0ab69a4faf08acf8111 100644 (file)
@@ -8,7 +8,7 @@ import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.agent.Institution;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.name.BacterialName;\r
@@ -38,7 +38,7 @@ public enum SetSpec {
        TAXON_DESCRIPTION("taxonDescription","Descriptions of taxonomic concepts",TaxonDescription.class,null),\r
        TAXON_NAME_DESCRIPTION("taxonNameDescription","Descriptions of scientific names",TaxonNameDescription.class,null),\r
        SPECIMEN_DESCRIPTION("specimenDescription","Descriptions of specimens and occurrences",SpecimenDescription.class,null),\r
-       REFERENCE("reference","Any kind of Reference",ReferenceBase.class,null);\r
+       REFERENCE("reference","Any kind of Reference",Reference.class,null);\r
 \r
        private String spec;\r
        private String name;\r
index e541476b99d5459ce5ee9d1775e1129938bdc981..e4adcf2d8c520f67cba30c98efb42bad42dade1c 100644 (file)
@@ -91,7 +91,11 @@ public class DerivedUnitFacadeBeanProcessor extends AbstractBeanProcessor<Derive
                        }                       \r
                        addJsonElement(json, jsonConfig, "storedUnder", bean.getStoredUnder());\r
                        addJsonElement(json, jsonConfig, "collectorsNumber", bean.getCollectorsNumber());\r
-                       addJsonElement(json, jsonConfig, "exsiccatum", bean.getExsiccatum());\r
+                       try {\r
+                               addJsonElement(json, jsonConfig, "exsiccatum", bean.getExsiccatum());\r
+                       } catch (MethodNotSupportedByDerivedUnitTypeException e) {\r
+                               /* Skip - Only supported by specimen and fossils */\r
+                       }\r
                        addJsonElement(json, jsonConfig, "sources", bean.getSources());\r
                        addJsonElement(json, jsonConfig, "collection", bean.getCollection());\r
                        if(Hibernate.isInitialized(bean.innerDerivedUnit().getDerivedFrom().getDerivatives())){\r
index 3be86221e9f331954e21f710b1ec82843c51cbee..c6e86b5d52e9b384da2f8d4775145a506f16bc9b 100644 (file)
@@ -97,15 +97,15 @@ public class MediaBeanProcessor extends AbstractCdmBeanProcessor<Media> {
                }\r
                \r
                // description\r
-               if(Hibernate.isInitialized(media.getDescription())){\r
-                       langString = MultilanguageTextHelper.getPreferredLanguageString(media.getDescription(), languages);\r
+               if(Hibernate.isInitialized(media.getAllDescriptions())){\r
+                       langString = MultilanguageTextHelper.getPreferredLanguageString(media.getAllDescriptions(), languages);\r
                        if(langString != null){\r
                                if(langString.getText() != null && langString.getText().length() != 0){\r
                                        json.element("description_L10n", langString.getText());\r
                                } \r
                        }\r
                        if(!replaceDescription){\r
-                               json.element("description", media.getDescription(), jsonConfig);\r
+                               json.element("description", media.getAllDescriptions(), jsonConfig);\r
                        }\r
                } else {\r
                        logger.debug("description of media not initialized  " + media.getUuid().toString());\r
index 66392c55d497f2e2c8da8197fad5430c41722a64..b9e5d144b56eeab7dc0797c34483ef81670b2024 100644 (file)
@@ -4,10 +4,10 @@ import java.util.List;
 
 import net.sf.json.JSONObject;
 import net.sf.json.JsonConfig;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 
 public class ReferenceBaseBeanProcessor extends
-               AbstractCdmBeanProcessor<ReferenceBase> {
+               AbstractCdmBeanProcessor<Reference> {
 
        @Override
        public List<String> getIgnorePropNames() {
@@ -16,7 +16,7 @@ public class ReferenceBaseBeanProcessor extends
        }
 
        @Override
-       public JSONObject processBeanSecondStep(ReferenceBase bean,
+       public JSONObject processBeanSecondStep(Reference bean,
                        JSONObject json, JsonConfig jsonConfig) {
                return json;
        }
index 1faf8c548f1469592ed097970d4a2ee30da74673..48e9151f6374f819132667aca74a2f992fc86653 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.remote.dto.TagEnum;\r
 import eu.etaxonomy.cdm.remote.dto.TaggedText;\r
index 2e378f90e8159d91af033b0da224eb592307ffba..bdbbda36c26d26c3e122a25b29266668416a4f34 100644 (file)
@@ -39,7 +39,13 @@ public class TaxonNodeDaoBeanProcessor implements JsonBeanProcessor {
                List<TaggedText> taggedTitle = TaxonNameBaseBeanProcessor.getTaggedName(node.getTaxon().getName());\r
                json.element("taggedTitle", taggedTitle, jsonConfig);\r
                json.element("taxonUuid", node.getTaxon().getUuid(), jsonConfig);\r
-               json.element("secUuid", node.getTaxon().getSec().getUuid(), jsonConfig);\r
+               //Sec can be null (web services can return null for sec)\r
+               //comparation made for avoding view exceptions\r
+               if (node.getTaxon().getSec() == null){\r
+                       json.element("secUuid", "null");\r
+               }else{\r
+                       json.element("secUuid", node.getTaxon().getSec().getUuid(), jsonConfig);\r
+               }       \r
                json.element("taxonomicChildrenCount", node.getCountChildren(), jsonConfig);\r
                json.element("unplaced", node.getTaxon().isUnplaced());\r
                json.element("excluded", node.getTaxon().isExcluded());\r
@@ -48,7 +54,7 @@ public class TaxonNodeDaoBeanProcessor implements JsonBeanProcessor {
                        ranklabel = node.getTaxon().getName().getRank().getLabel();\r
                }\r
                json.element("rankLabel", ranklabel, jsonConfig);\r
-               //json.element("treeUuid", node.getTaxonomicTree().getUuid(), jsonConfig);\r
+               //json.element("treeUuid", node.getClassification().getUuid(), jsonConfig);\r
                \r
                return json;\r
        }\r
index 7e5890e17489eab3ac1b5d9a80b754295d34fa96..dbb45090be3cb39459f4eb59614516ce3d86bfd6 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
 /**\r
@@ -65,8 +65,8 @@ public class CdmProxyBeanProcessorMatcher extends JsonBeanProcessorMatcher {
                if (Media.class.isAssignableFrom(target)) {\r
                        return DEFAULT.getMatch(Media.class, set);\r
                }\r
-               if (ReferenceBase.class.isAssignableFrom(target)) {\r
-                       return DEFAULT.getMatch(ReferenceBase.class, set);\r
+               if (Reference.class.isAssignableFrom(target)) {\r
+                       return DEFAULT.getMatch(Reference.class, set);\r
                }\r
                if (TypeDesignationBase.class.isAssignableFrom(target)) {\r
                        return DEFAULT.getMatch(TypeDesignationBase.class, set);\r
index 17378e31188eca1a50710fa8dd6b43c364dbdcb1..baace7a6a9aee5ca09d86b135a16c47d88e8c2a6 100644 (file)
@@ -17,7 +17,7 @@ import org.apache.log4j.Logger;
 import org.joda.time.Partial;
 import org.joda.time.format.ISODateTimeFormat;
 
-import eu.etaxonomy.cdm.model.common.PartialUserType;
+import eu.etaxonomy.cdm.hibernate.PartialUserType;
 
 /**
  * Partial time as four digit year, two digit month of year, and two digit day of month (yyyy-MM-dd).
diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/URIJSONValueProcessor.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/value/URIJSONValueProcessor.java
new file mode 100644 (file)
index 0000000..9707741
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: UUIDJSONValueProcessor.java 9436 2010-06-24 09:56:07Z a.kohlbecker $\r
+/**\r
+ * Copyright (C) 2009 EDIT 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\r
+ * 1.1 See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+\r
+package eu.etaxonomy.cdm.remote.json.processor.value;\r
+\r
+import java.net.URI;\r
+\r
+import net.sf.json.JsonConfig;\r
+import net.sf.json.processors.JsonValueProcessor;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+public class URIJSONValueProcessor implements JsonValueProcessor {\r
+       \r
+       private static final Logger logger = Logger.getLogger(URIJSONValueProcessor.class);\r
+\r
+       public Object processArrayValue(Object obj, JsonConfig jsonConfig) {\r
+               logger.debug("Processing URL");\r
+               if(obj == null){\r
+                       return "";\r
+               }\r
+               URI uri = (URI) obj;\r
+               return uri.toString();\r
+       }\r
+\r
+       public Object processObjectValue(String key, Object obj,\r
+                       JsonConfig jsonConfig) {\r
+               logger.debug("Processing URL");\r
+               if(obj == null){\r
+                       return "";\r
+               }\r
+               URI uri = (URI) obj;\r
+               return uri.toString();\r
+       };\r
+\r
+}\r
index fbc6b80f5cc3588cb31229672e1023eef821d03d..49a645d0d1e55cad740086b3516cb98e83420421 100644 (file)
@@ -55,7 +55,7 @@
     </mapping>
     
     <mapping>
-        <class-a>eu.etaxonomy.cdm.model.reference.ReferenceBase</class-a>
+        <class-a>eu.etaxonomy.cdm.model.reference.Reference</class-a>
         <class-b map-null="false">eu.etaxonomy.cdm.remote.dto.oaipmh.OaiDc</class-b>
         <field custom-converter-id="timePeriodConverter">
             <a>datePublished</a>
index d8ffd2a9eaaa290a2613ea1d982f7133dd6da452..77c804de610232c27b6a4b0f86b10c1869546979 100644 (file)
                        <entry key="eu.etaxonomy.cdm.model.taxon.TaxonNode">\r
                                <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TaxonNodeBeanProcessor" />\r
                        </entry>\r
-                   <entry key="eu.etaxonomy.cdm.model.reference.ReferenceBase">\r
+                   <entry key="eu.etaxonomy.cdm.model.reference.Reference">\r
                  <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>\r
                </entry>\r
\r
                <entry key="eu.etaxonomy.cdm.model.name.TypeDesignationBase">\r
               <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.TypeDesignationBaseBeanProcessor"/>\r
-          </entry>\r
-\r
+            </entry>\r
                  </map>\r
                </property>\r
                <property name="jsonPropertyFilter">\r
                                <entry key="java.util.Map">\r
                                    <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
                                </entry>\r
+                           <entry key="java.net.URI">\r
+                    <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
+                </entry>     \r
                        </map>\r
                </property>\r
                <property name="ignoreDefaultExcludes" value="true" />\r
                 <entry key="java.util.Map">\r
                     <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
                 </entry>\r
+                <entry key="java.net.URI">\r
+                    <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
+                </entry>    \r
                        </map>\r
                </property>\r
                <property name="ignoreDefaultExcludes" value="true" />\r
                                                <property name="replaceDescription" value="true" />\r
                                        </bean>\r
                                </entry>\r
-                         <entry key="eu.etaxonomy.cdm.model.reference.ReferenceBase">\r
+                         <entry key="eu.etaxonomy.cdm.model.reference.Reference">\r
                 <bean class="eu.etaxonomy.cdm.remote.json.processor.bean.ReferenceBaseBeanProcessor"/>\r
               </entry>\r
               <entry key="eu.etaxonomy.cdm.model.description.TaxonNameDescription">\r
                 <entry key="java.util.Map">\r
                     <bean class="eu.etaxonomy.cdm.remote.json.processor.value.MapJSONValueProcessor" />\r
                 </entry>\r
+                <entry key="java.net.URI">\r
+                    <bean class="eu.etaxonomy.cdm.remote.json.processor.value.URIJSONValueProcessor"/>\r
+                </entry>    \r
                        </map>\r
                </property>\r
                <property name="ignoreDefaultExcludes" value="true" />\r
index c107c02dd1985dac857974fbec20c290b802fd46..83b926f1d9097fbf4ab6debc02ec4abacb9670ce 100644 (file)
@@ -51,7 +51,7 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.reference.IBook;
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
@@ -104,14 +104,14 @@ public class AssemblerTest extends UnitilsJUnit4 {
            sec.setTitleCache("sec.titleCache", true);
            sec.setLsid(new LSID("urn:lsid:example.org:references:1"));
            
-               taxon = Taxon.NewInstance(name, (ReferenceBase)sec);
+               taxon = Taxon.NewInstance(name, (Reference)sec);
                taxon.setCreated(new DateTime(2004, 12, 25, 12, 0, 0, 0));
                taxon.setUpdated(new DateTime(2005, 12, 25, 12, 0, 0, 0));
                taxon.setTitleCache("titleCache", true);
                taxon.setLsid(lsid);
 
                for(int i = 0; i < 10; i++) {
-                       Taxon child = Taxon.NewInstance(name, (ReferenceBase)sec);
+                       Taxon child = Taxon.NewInstance(name, (Reference)sec);
                        child.setLsid(new LSID("urn:lsid:example.org:taxonconcepts:" + (2 + i )));
                        taxon.addTaxonomicChild(child, null,null);
                }
@@ -141,7 +141,7 @@ public class AssemblerTest extends UnitilsJUnit4 {
        @Test
        public void testDeepMapping() {
                for(int i = 0; i < 3; i++) {
-                       Synonym synonym = Synonym.NewInstance(name,(ReferenceBase)sec);
+                       Synonym synonym = Synonym.NewInstance(name,(Reference)sec);
                        taxon.addSynonym(synonym,new SynonymRelationshipType());
                }
                TaxonConcept taxonConcept = (TaxonConcept)mapper.map(taxon, TaxonConcept.class);
@@ -165,7 +165,7 @@ public class AssemblerTest extends UnitilsJUnit4 {
        
        @Test
        public void testLazyInitializationExceptionWithProxy() throws Exception {
-               IBook proxy = getUninitializedDetachedProxy(ReferenceBase.class,(ReferenceBase)sec);
+               IBook proxy = getUninitializedDetachedProxy(Reference.class,(Reference)sec);
                assert !Hibernate.isInitialized(proxy);
                Field secField = TaxonBase.class.getDeclaredField("sec");
                secField.setAccessible(true);
index d53f6c3298050a5e1f768f8c0191939755ed6978..e3ba994c432153236c50d8880d65db45a2d0aade 100644 (file)
@@ -7,7 +7,7 @@
        <parent>\r
                <groupId>eu.etaxonomy</groupId>\r
                <artifactId>cdmlib-parent</artifactId>\r
-               <version>2.5</version>\r
+               <version>3.0</version>\r
                <relativePath>pom.xml</relativePath>\r
        </parent>\r
 \r
index 83fba12a9b7e337bf60bd66829ece3986bb880a6..54833a973734f907da9437c8e5a1362d3b6912e5 100644 (file)
@@ -36,18 +36,21 @@ import eu.etaxonomy.cdm.api.service.IDatabaseService;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;\r
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;\r
+import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
 import eu.etaxonomy.cdm.api.service.ILocationService;\r
 import eu.etaxonomy.cdm.api.service.IMediaService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.IService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.api.service.IUserService;\r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.api.service.IWorkingSetService;\r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.common.NullProgressMonitor;\r
 import eu.etaxonomy.cdm.database.CdmPersistentDataSource;\r
@@ -325,8 +328,8 @@ public class CdmApplicationController implements ICdmApplicationConfiguration{
                return configuration.getTaxonService();\r
        }\r
        \r
-       public final ITaxonTreeService getTaxonTreeService(){\r
-               return configuration.getTaxonTreeService();\r
+       public final IClassificationService getClassificationService(){\r
+               return configuration.getClassificationService();\r
        }\r
        \r
        public final ITaxonNodeService getTaxonNodeService(){\r
@@ -387,12 +390,24 @@ public class CdmApplicationController implements ICdmApplicationConfiguration{
        \r
        public final IVocabularyService getVocabularyService(){\r
                return configuration.getVocabularyService();\r
-       }       \r
+       }\r
+       \r
+       public final IIdentificationKeyService getIdentificationKeyService(){\r
+               return configuration.getIdentificationKeyService();\r
+       }\r
+\r
+       public final IPolytomousKeyService getPolytomousKeyService(){\r
+               return configuration.getPolytomousKeyService();\r
+       }\r
        \r
        public final IService<CdmBase> getMainService(){\r
                return configuration.getMainService();\r
        }\r
        \r
+       public final IWorkingSetService getWorkingSetService(){\r
+               return configuration.getWorkingSetService();\r
+       }\r
+       \r
        public final ConversationHolder NewConversation(){\r
                //return (ConversationHolder)applicationContext.getBean("conversationHolder");\r
                return configuration.NewConversation();\r
index 6b73ee0d81d570b42d681c458a7b82debe815d02..67b1becddb3749e25ececc77ff09fef8ae277e35 100644 (file)
@@ -28,18 +28,21 @@ import eu.etaxonomy.cdm.api.service.IDatabaseService;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;\r
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;\r
+import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
 import eu.etaxonomy.cdm.api.service.ILocationService;\r
 import eu.etaxonomy.cdm.api.service.IMediaService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.IService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.api.service.IUserService;\r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.api.service.IWorkingSetService;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 \r
 /**\r
@@ -47,6 +50,10 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
  * @created 21.05.2008\r
  * @version 1.0\r
  */\r
+/**\r
+ * @author a.mueller\r
+ *\r
+ */\r
 @Component\r
 public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfiguration {\r
        @SuppressWarnings("unused")\r
@@ -59,8 +66,8 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
        //@Qualifier("taxonService")\r
        private ITaxonService taxonService;\r
        @Autowired\r
-       //@Qualifier("taxonTreeService")\r
-       private ITaxonTreeService taxonTreeService;\r
+       //@Qualifier("classificationService")\r
+       private IClassificationService classificationService;\r
        @Autowired\r
        //@Qualifier("referenceService")\r
        private IReferenceService referenceService;\r
@@ -107,9 +114,18 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
        private IVocabularyService vocabularyService;\r
        @Autowired\r
        private ITaxonNodeService taxonNodeService;\r
+       @Autowired\r
+       private IIdentificationKeyService identificationKeyService;\r
+       @Autowired\r
+       private IPolytomousKeyService polytomousKeyService;\r
+\r
+       \r
 //     @Autowired\r
        //@Qualifier("mainService")\r
        private IService<CdmBase> mainService;\r
+\r
+       @Autowired\r
+       private IWorkingSetService workingSetService;\r
        \r
        /**\r
         * \r
@@ -154,10 +170,10 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
        \r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonTreeService()\r
+        * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getClassificationService()\r
         */\r
-       public ITaxonTreeService getTaxonTreeService() {\r
-               return this.taxonTreeService;\r
+       public IClassificationService getClassificationService() {\r
+               return this.classificationService;\r
        }\r
        \r
        public ITaxonNodeService getTaxonNodeService(){\r
@@ -276,5 +292,27 @@ public class CdmApplicationDefaultConfiguration implements ICdmApplicationConfig
         */\r
        public IVocabularyService getVocabularyService() {\r
                return vocabularyService;\r
-       }       \r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getIdentificationKeyService()\r
+        */\r
+       public IIdentificationKeyService getIdentificationKeyService(){\r
+               return identificationKeyService;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPolytomousKeyService()\r
+        */\r
+       public IPolytomousKeyService getPolytomousKeyService(){\r
+               return polytomousKeyService;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getWorkingSetService()\r
+        */\r
+       @Override\r
+       public IWorkingSetService getWorkingSetService() {\r
+               return workingSetService;\r
+       }\r
 }\r
index e56c9950493de1c22274a5b2b002eec62fbd6aac..fd0cfff5bcb75010f7c1bfb3e3bcd5f685e31ce4 100644 (file)
@@ -21,18 +21,21 @@ import eu.etaxonomy.cdm.api.service.IDatabaseService;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;\r
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;\r
+import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
 import eu.etaxonomy.cdm.api.service.ILocationService;\r
 import eu.etaxonomy.cdm.api.service.IMediaService;\r
 import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.api.service.IService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.ITaxonTreeService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.api.service.IUserService;\r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.api.service.IWorkingSetService;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 \r
 /**\r
@@ -55,7 +58,7 @@ public interface ICdmApplicationConfiguration {
        /**\r
         * @return\r
         */\r
-       public ITaxonTreeService getTaxonTreeService();\r
+       public IClassificationService getClassificationService();\r
        \r
        /**\r
         * \r
@@ -121,6 +124,12 @@ public interface ICdmApplicationConfiguration {
         */\r
        public IService<CdmBase> getMainService();\r
        \r
+       \r
+       /**\r
+        * @return\r
+        */\r
+       public IWorkingSetService getWorkingSetService();\r
+       \r
        /**\r
         * @return\r
         */\r
@@ -161,5 +170,14 @@ public interface ICdmApplicationConfiguration {
         * @return\r
         */\r
        public IVocabularyService getVocabularyService();\r
-               \r
+       \r
+       /**\r
+        * @return\r
+        */\r
+       public IIdentificationKeyService getIdentificationKeyService();\r
+       \r
+       /**\r
+        * @return\r
+        */\r
+       public IPolytomousKeyService getPolytomousKeyService();\r
 }\r
index 488805d7beba289eea37d28ca75114ec67418836..25eb98d9b6c30e361d08c2ffe13ecc323808d94e 100644 (file)
@@ -25,6 +25,7 @@ import org.apache.log4j.Logger;
 \r
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
 import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.common.Annotation;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
@@ -51,7 +52,7 @@ import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 \r
 /**\r
  * This class is a facade to the eu.etaxonomy.cdm.model.occurrence package from\r
@@ -1113,6 +1114,11 @@ public class DerivedUnitFacade {
 //             LanguageString languageString = getEcologyAll().getPreferredLanguageString(languages);\r
 //             return languageString.getText();\r
 //     }\r
+       /**\r
+        * Returns a copy of the multilanguage text holding the ecology data.\r
+        * @see {@link TextData#getMultilanguageText()}\r
+        * @return\r
+        */\r
        @Transient\r
        public Map<Language, LanguageString> getEcologyAll(){\r
                if (ecology == null){\r
@@ -1178,6 +1184,11 @@ public class DerivedUnitFacade {
 //             LanguageString languageString = getPlantDescriptionAll().getPreferredLanguageString(languages);\r
 //             return languageString.getText();\r
 //     }\r
+       /**\r
+        * Returns a copy of the multilanguage text holding the description data.\r
+        * @see {@link TextData#getMultilanguageText()}\r
+        * @return\r
+        */\r
        @Transient\r
        public Map<Language, LanguageString> getPlantDescriptionAll(){\r
                if (plantDescription == null){\r
@@ -1335,6 +1346,20 @@ public class DerivedUnitFacade {
                getFieldObservation(true).setFieldNumber(fieldNumber);\r
        }\r
 \r
+       //primary collector\r
+       @Transient\r
+       public Person getPrimaryCollector() {\r
+               if (! hasFieldObservation()){\r
+                       return null;\r
+               }else{\r
+                       return getFieldObservation(true).getPrimaryCollector();\r
+               }\r
+       }\r
+       public void setPrimaryCollector(Person primaryCollector) {\r
+               getFieldObservation(true).setPrimaryCollector(primaryCollector);\r
+       }\r
+       \r
+       \r
        \r
        //field notes\r
        @Transient\r
@@ -1628,13 +1653,28 @@ public class DerivedUnitFacade {
                return result;\r
        }\r
        @Transient\r
-       public String getExsiccatum() {\r
-               logger.warn("Exsiccatum method not yet supported. Needs model change");\r
-               return null;\r
+       public String getExsiccatum() throws MethodNotSupportedByDerivedUnitTypeException {\r
+               if (derivedUnit.isInstanceOf(Specimen.class)){\r
+                       return CdmBase.deproxy(derivedUnit, Specimen.class).getExsiccatum();\r
+               }else{\r
+                       if (this.config.isThrowExceptionForNonSpecimenPreservationMethodRequest()){\r
+                               throw new MethodNotSupportedByDerivedUnitTypeException("An exsiccatum is only available in derived units of type 'Specimen' or 'Fossil'");\r
+                       }else{\r
+                               return null;\r
+                       }\r
+               }\r
        }\r
        \r
        public void setExsiccatum(String exsiccatum) throws Exception{\r
-               throw new Exception("Exsiccatum method not yet supported. Needs model change");\r
+               if (derivedUnit.isInstanceOf(Specimen.class)){\r
+                       CdmBase.deproxy(derivedUnit, Specimen.class).setExsiccatum(exsiccatum);\r
+               }else{\r
+                       if (this.config.isThrowExceptionForNonSpecimenPreservationMethodRequest()){\r
+                               throw new MethodNotSupportedByDerivedUnitTypeException("An exsiccatum is only available in derived units of type 'Specimen' or 'Fossil'");\r
+                       }else{\r
+                               return;\r
+                       }\r
+               }\r
        }\r
        \r
        \r
@@ -1649,7 +1689,7 @@ public class DerivedUnitFacade {
         * @param originalNameString\r
         * @return\r
         */\r
-       public IdentifiableSource addSource(ReferenceBase reference, String microReference, String originalNameString){\r
+       public IdentifiableSource addSource(Reference reference, String microReference, String originalNameString){\r
                IdentifiableSource source = IdentifiableSource.NewInstance(reference, microReference);\r
                source.setOriginalNameString(originalNameString);\r
                derivedUnit.addSource(source);\r
index 6b794f4958d9da62acb6f7b61454a71178f77d09..77e0763459ea17fd6053adc7adba2a4d5324f15a 100644 (file)
@@ -11,10 +11,15 @@ package eu.etaxonomy.cdm.api.facade;
 \r
 import java.util.UUID;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
 import eu.etaxonomy.cdm.model.agent.Institution;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.Representation;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
@@ -70,7 +75,6 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
                        strCountry = repCountry == null ? null: repCountry.getText();\r
                        result = CdmUtils.concat(", ", result, strCountry);\r
                        \r
-                       // FIXME hasGatheringEvent needed;\r
                        //locality\r
                        result = CdmUtils.concat(", ", result, facade.getLocalityText());\r
                        \r
@@ -94,6 +98,19 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
                        TimePeriod gatheringPeriod = facade.getGatheringPeriod();\r
                        result = CdmUtils.concat(", ", result, (gatheringPeriod == null? null : gatheringPeriod.toString()));\r
                        \r
+                       //collector (team) and field number\r
+                       String collectorAndFieldNumber = getCollectorAndFieldNumber(facade);\r
+                       result = CdmUtils.concat(", ", result, collectorAndFieldNumber);\r
+                       \r
+                       //Exsiccatum\r
+                       String exsiccatum = null;\r
+                       try {\r
+                               exsiccatum = facade.getExsiccatum();\r
+                       } catch (MethodNotSupportedByDerivedUnitTypeException e) {\r
+                               //NO exsiccatum if this facade doe not represent a specimen\r
+                       }\r
+                       result = CdmUtils.concat("; ", result, exsiccatum);\r
+                       \r
                        //Herbarium & accession number\r
                        String code = getCode(facade);\r
                        String collectionData = CdmUtils.concat(" ", code, facade.getAccessionNumber());\r
@@ -117,6 +134,89 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
 \r
 \r
 \r
+       private String getCollectorAndFieldNumber(DerivedUnitFacade facade) {\r
+               String result = "";\r
+               AgentBase collector = facade.getCollector();\r
+               String fieldNumber = facade.getFieldNumber();\r
+               Person primaryCollector = facade.getPrimaryCollector();\r
+               if (collector == null){\r
+                       return fieldNumber;\r
+               }else{\r
+                       result = "";\r
+                       Team collectorTeam;\r
+                       if (collector.isInstanceOf(Person.class)){\r
+                               collectorTeam = Team.NewInstance();\r
+                               if (primaryCollector == null){\r
+                                       primaryCollector = CdmBase.deproxy(collector, Person.class);\r
+                               }\r
+                               collectorTeam.addTeamMember(primaryCollector);\r
+                       } else if (collector.isInstanceOf(Team.class)){\r
+                               collectorTeam = CdmBase.deproxy(collector, Team.class);\r
+                       }else{\r
+                               return  CdmUtils.concat(" ", collector.getTitleCache(), fieldNumber);\r
+                       }\r
+                       int counter = 0;\r
+                       int teamSize = collectorTeam.getTeamMembers().size();\r
+                       boolean fieldNumberAdded = false;\r
+                       for (Person member : collectorTeam.getTeamMembers()){\r
+                               counter++;\r
+                               String concatString = (counter >= teamSize)? " & " : ", "; \r
+                               result = CdmUtils.concat(concatString, result, getMemberString(member) );\r
+                               if (member.equals(primaryCollector)){\r
+                                       result = addFieldNumber(result, fieldNumber);\r
+                                       fieldNumberAdded = true;\r
+                               }\r
+                       }\r
+                       if (! fieldNumberAdded){\r
+                               result = addFieldNumber(result, fieldNumber);\r
+                       }\r
+                       return result;\r
+               }\r
+               \r
+       }\r
+\r
+\r
+\r
+       private String addFieldNumber(String result, String fieldNumber) {\r
+               result = CdmUtils.concat(" ", result, fieldNumber);\r
+               return result;\r
+       }\r
+\r
+\r
+\r
+       /**\r
+        * Strategy to format a collector team member name\r
+        * @param member\r
+        * @return\r
+        */\r
+       private String getMemberString(Person member) {\r
+               if (StringUtils.isNotBlank(member.getLastname())){\r
+                       String result = member.getLastname();\r
+                       if  (StringUtils.isNotBlank(member.getFirstname())){\r
+                               result = member.getFirstname().substring(0,1) + ". " + result;\r
+                       }\r
+                       return result;\r
+               }else{\r
+                       return member.getTitleCache();\r
+               }\r
+       }\r
+\r
+\r
+\r
+       private boolean testPrimaryCollectorInCollectorTeam(AgentBase collector, Person primaryCollector) {\r
+               if (collector.isInstanceOf(Person.class)){\r
+                       return collector.equals(primaryCollector);\r
+               }else if (collector.isInstanceOf(Team.class)){\r
+                       Team collectorTeam = CdmBase.deproxy(collector, Team.class);\r
+                       return collectorTeam.getTeamMembers().contains(primaryCollector);\r
+               }else{\r
+                       logger.warn("Collector is not of type person or team");\r
+                       return false;\r
+               }\r
+       }\r
+\r
+\r
+\r
        /**\r
         * @param facade\r
         */\r
similarity index 67%
rename from cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImpl.java
rename to cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImpl.java
index 6902fb6d8431832afd386edb46938a0f4dc2cda1..d7e3844c9c3a89c8f8208183c6d541cf5f87433f 100644 (file)
@@ -38,11 +38,11 @@ import eu.etaxonomy.cdm.model.taxon.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao;
-import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao;
+import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
 
 /**
@@ -52,8 +52,8 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
  */
 @Service
 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
-public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree, ITaxonomicTreeDao> implements ITaxonTreeService {
-       private static final Logger logger = Logger.getLogger(TaxonTreeServiceImpl.class);
+public class ClassificationServiceImpl extends IdentifiableServiceBase<Classification, IClassificationDao> implements IClassificationService {
+       private static final Logger logger = Logger.getLogger(ClassificationServiceImpl.class);
 
        @Autowired
        private ITaxonNodeDao taxonNodeDao;
@@ -70,10 +70,10 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)
         */
-       public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID taxonomicTreeUuid, List<String> propertyPaths){
-               TaxonomicTree tree = dao.load(taxonomicTreeUuid);
+       public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID classificationUuid, List<String> propertyPaths){
+               Classification tree = dao.load(classificationUuid);
                TaxonNode node = tree.getNode(taxon);
        
                return loadTaxonNode(node.getUuid(), propertyPaths);
@@ -90,11 +90,11 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.TaxonomicTree, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
         */
-       public List<TaxonNode> loadRankSpecificRootNodes(TaxonomicTree taxonomicTree, Rank rank, List<String> propertyPaths){
+       public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, List<String> propertyPaths){
                
-               List<TaxonNode> rootNodes = dao.loadRankSpecificRootNodes(taxonomicTree, rank, propertyPaths);
+               List<TaxonNode> rootNodes = dao.loadRankSpecificRootNodes(classification, rank, propertyPaths);
                
                //sort nodes by TaxonName
                Collections.sort(rootNodes, taxonNodeComparator);
@@ -109,7 +109,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
      * (non-Javadoc)
         * @see eu.etaxonomy.cdm.api.service.ITaxonService#loadTreeBranchTo(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
         * FIXME Candidate for harmonization
-        * move to taxonTreeService
+        * move to classification service
         */
        public List<TaxonNode> loadTreeBranch(TaxonNode taxonNode, Rank baseRank, List<String> propertyPaths){
                
@@ -138,10 +138,10 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
         */
-       public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, TaxonomicTree taxonomicTree, Rank baseRank, List<String> propertyPaths){
-               TaxonomicTree tree = dao.load(taxonomicTree.getUuid());
+       public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, Classification classification, Rank baseRank, List<String> propertyPaths){
+               Classification tree = dao.load(classification.getUuid());
                taxon = (Taxon) taxonDao.load(taxon.getUuid());
                TaxonNode node = tree.getNode(taxon);
                if(node == null){
@@ -153,7 +153,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
 
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)
         */
        public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode,
                        List<String> propertyPaths) {
@@ -166,10 +166,10 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, java.util.List)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List)
         */
-       public List<TaxonNode> loadChildNodesOfTaxon(Taxon taxon, TaxonomicTree taxonomicTree, List<String> propertyPaths){
-               TaxonomicTree tree = dao.load(taxonomicTree.getUuid());
+       public List<TaxonNode> loadChildNodesOfTaxon(Taxon taxon, Classification classification, List<String> propertyPaths){
+               Classification tree = dao.load(classification.getUuid());
                taxon = (Taxon) taxonDao.load(taxon.getUuid());
                
                TaxonNode node = tree.getNode(taxon);
@@ -184,7 +184,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#getTaxonNodeByUuid(java.util.UUID)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTaxonNodeByUuid(java.util.UUID)
         */
        public TaxonNode getTaxonNodeByUuid(UUID uuid) {
                return taxonNodeDao.findByUuid(uuid);
@@ -192,7 +192,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#getTreeNodeByUuid(java.util.UUID)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTreeNodeByUuid(java.util.UUID)
         */
        public ITreeNode getTreeNodeByUuid(UUID uuid){
                ITreeNode treeNode = taxonNodeDao.findByUuid(uuid);
@@ -203,41 +203,39 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
                return treeNode;
        }
        
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#listTaxonomicTrees(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#listClassifications(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
         */
-       public List<TaxonomicTree> listTaxonomicTrees(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+       public List<Classification> listClassifications(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
                return dao.list(limit, start, orderHints, propertyPaths);
        }       
        
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#getTaxonomicTreeByUuid(java.util.UUID)
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#getClassificationByUuid(java.util.UUID)
         */
-       public TaxonomicTree getTaxonomicTreeByUuid(UUID uuid){
+       public Classification getClassificationByUuid(UUID uuid){
                return dao.findByUuid(uuid);
        }
        
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonomicTree)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.Classification)
         */
        public UUID removeTaxonNode(TaxonNode taxonNode) {
                return taxonNodeDao.delete(taxonNode);
        }
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)
         */
        public UUID removeTreeNode(ITreeNode treeNode) {
-               if(treeNode instanceof TaxonomicTree){
-                       return dao.delete((TaxonomicTree) treeNode);
+               if(treeNode instanceof Classification){
+                       return dao.delete((Classification) treeNode);
                }else if(treeNode instanceof TaxonNode){
                        return taxonNodeDao.delete((TaxonNode)treeNode);
                }
                return null;
        }
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonomicTree)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.Classification)
         */
        public UUID saveTaxonNode(TaxonNode taxonNode) {
                return taxonNodeDao.save(taxonNode);
@@ -245,7 +243,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#saveTaxonNodeAll(java.util.Collection)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTaxonNodeAll(java.util.Collection)
         */
        public Map<UUID, TaxonNode> saveTaxonNodeAll(
                        Collection<TaxonNode> taxonNodeCollection) {
@@ -253,11 +251,11 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        }
        
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)
         */
        public UUID saveTreeNode(ITreeNode treeNode) {
-               if(treeNode instanceof TaxonomicTree){
-                       return dao.save((TaxonomicTree) treeNode);
+               if(treeNode instanceof Classification){
+                       return dao.save((Classification) treeNode);
                }else if(treeNode instanceof TaxonNode){
                        return taxonNodeDao.save((TaxonNode)treeNode);
                }
@@ -270,22 +268,22 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
        
        /*
         * (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheOfAcceptedTaxa(eu.etaxonomy.cdm.model.taxon.TaxonomicTree)
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheOfAcceptedTaxa(eu.etaxonomy.cdm.model.taxon.Classification)
         */
-       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(TaxonomicTree taxonomicTree) {
-               return taxonDao.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(taxonomicTree);
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification) {
+               return taxonDao.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification);
        }
        
        /* (non-Javadoc)
         * @see eu.etaxonomy.cdm.api.service.IdentifiableServiceBase#getUuidAndTitleCache()
         */
        @Override
-       public List<UuidAndTitleCache<TaxonomicTree>> getUuidAndTitleCache() {
+       public List<UuidAndTitleCache<Classification>> getUuidAndTitleCache() {
                return dao.getUuidAndTitleCache();
        }
        
        /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.service.ITaxonTreeService#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])
+        * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])
         */
        public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(
                        TaxonNode taxonNode, List<String> propertyPaths, int size,
@@ -329,7 +327,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
                
        }
        
-       public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, TaxonomicTree taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes){
+       public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, Classification taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes){
                TaxonNode node = taxTree.getNode(taxon);
                
                return getAllMediaForChildNodes(node, propertyPaths, size, height, widthOrDuration, mimeTypes);
@@ -343,7 +341,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
         * @see eu.etaxonomy.cdm.api.service.ServiceBase#setDao(eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao)
         */
        @Autowired
-       protected void setDao(ITaxonomicTreeDao dao) {
+       protected void setDao(IClassificationDao dao) {
                this.dao = dao;
        }
 
@@ -352,7 +350,7 @@ public class TaxonTreeServiceImpl extends IdentifiableServiceBase<TaxonomicTree,
         */
        @Override
        public void updateTitleCache() {
-               Class<TaxonomicTree> clazz = TaxonomicTree.class;
+               Class<Classification> clazz = Classification.class;
                super.updateTitleCache(clazz, null, null);
        }
 }
similarity index 78%
rename from cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonTreeService.java
rename to cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IClassificationService.java
index d2e73dbfa08f395f4ab91e8af3ff44b605dfb244..3ea4e659289ce27072931f76da6f20a858496a73 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
 
 
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
  * @created Sep 21, 2009
  * @version 1.0
  */
-public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicTree> {
+public interface IClassificationService extends IIdentifiableEntityService<Classification> {
 
        /**
         * 
@@ -54,25 +54,25 @@ public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicT
         * @param propertyPaths
         * @return
         */
-       public List<TaxonomicTree> listTaxonomicTrees(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths);
+       public List<Classification> listClassifications(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths);
 
        /**
         * 
         * @param uuid
         * @return
         */
-       public TaxonomicTree getTaxonomicTreeByUuid(UUID uuid);
+       public Classification getClassificationByUuid(UUID uuid);
        
        /**
         * 
         * @param taxon
-        * @param taxonomicTreeUuid
+        * @param classificationUuid
         * @param propertyPaths
         * @return
         * @deprecated use loadTaxonNode(TaxonNode taxonNode, ...) instead
-        * if you have a taxonomicTree and a taxon that is in it, you should also have the according taxonNode
+        * if you have a classification and a taxon that is in it, you should also have the according taxonNode
         */
-       public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID taxonomicTreeUuid, List<String> propertyPaths);
+       public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID classificationUuid, List<String> propertyPaths);
        
        /**
         * 
@@ -89,17 +89,17 @@ public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicT
         * Rank the node associated with the next lower Rank is taken as root node.
         * If the <code>rank</code> is null the absolute root nodes will be returned.
         *
-        * @param taxonomicTree
+        * @param classification
         * @param rank may be null
         * @param propertyPaths
         * @return
         */
-       public List<TaxonNode> loadRankSpecificRootNodes(TaxonomicTree taxonomicTree, Rank rank, List<String> propertyPaths);
+       public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, List<String> propertyPaths);
 
        /**
         * @param taxonNode
         * @param baseRank
-        *            specifies the root level of the taxonomic tree, may be null.
+        *            specifies the root level of the classification, may be null.
         *            Nodes of this rank or in case this rank does not exist in the
         *            current branch the next lower rank is taken as root node for
         *            this rank henceforth called the <b>base node</b>.
@@ -117,10 +117,10 @@ public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicT
         * transaction, would have to initialize the full taxon tree with all nodes of the taxon. 
         * This would be rather slow compared to using this method. 
         * @param taxon
-        * @param taxonomicTree
-        *            the taxonomic tree to be used
+        * @param classification
+        *            the classification to be used
         * @param baseRank
-        *            specifies the root level of the taxonomic tree, may be null.
+        *            specifies the root level of the classification, may be null.
         *            Nodes of this rank or in case this rank does not exist in the
         *            current branch the next lower rank is taken as as root node for
         *            this rank henceforth called the <b>base node</b>.
@@ -130,7 +130,7 @@ public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicT
         * @return the path of nodes from the <b>base node</b> to the node of the specified
         *         taxon.
         */
-       public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, TaxonomicTree taxonomicTree, Rank baseRank, List<String> propertyPaths);
+       public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, Classification classification, Rank baseRank, List<String> propertyPaths);
                
        
        
@@ -140,28 +140,26 @@ public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicT
         * transaction, would have to initialize the full taxon tree with all nodes of the taxon. 
         * This would be rather slow compared to using this method. 
         * @param taxon
-        * @param taxonomicTree
+        * @param classification
         * @param propertyPaths
         * @return
         */
-       public List<TaxonNode> loadChildNodesOfTaxon(Taxon taxon, TaxonomicTree taxonomicTree, List<String> propertyPaths);
+       public List<TaxonNode> loadChildNodesOfTaxon(Taxon taxon, Classification classification, List<String> propertyPaths);
        
        /**
-        * 
-        * @param taxon
-        * @param taxonomicTree
+        * @param taxonNode
         * @param propertyPaths
-        * @return
         * @deprecated move to TaxonNodeService
+        * @return
         */
        public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode, List<String> propertyPaths);
        
        /**
         * 
-        * @param taxonomicTree
+        * @param classification
         * @return
         */
-       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(TaxonomicTree taxonomicTree);
+       public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification);
        
        /**
         * @param taxon
@@ -173,9 +171,9 @@ public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicT
         * @param mimeTypes
         * @return
         *  @deprecated use getAllMediaForChildNodes(TaxonNode taxonNode, ...) instead
-        * if you have a taxonomicTree and a taxon that is in it, you should also have the according taxonNode
+        * if you have a classification and a taxon that is in it, you should also have the according taxonNode
         */
-       public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, TaxonomicTree taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes);
+       public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, Classification taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes);
        
        /**
         * 
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IPolytomousKeyService.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IPolytomousKeyService.java
new file mode 100644 (file)
index 0000000..b1e8642
--- /dev/null
@@ -0,0 +1,39 @@
+/**\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.api.service;\r
+\r
+import java.util.Collection;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
+\r
+public interface IPolytomousKeyService extends IIdentifiableEntityService<PolytomousKey> {\r
+       \r
+       public List<PolytomousKeyNode> getPolytomousKeyNodesAll();\r
+       \r
+       /**\r
+        * Loads a polytomous key including all of its nodes (all the way down to the tips of the tree). \r
+        * Because this method automatically adds key nodes recursively, adding "root" to property paths\r
+        * is superfluous - the propertyPaths argument should be used to initialize property paths <i>in addition</i>\r
+        * to the key nodes. The nodePaths argument is applied to each node in turn, so again, adding "children" \r
+        * is also superfluous. The nodePaths argument should be used to specify additional properties of the \r
+        * key node to initialize.\r
+        * \r
+        */\r
+       public PolytomousKey loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths);\r
+\r
+       public Map<UUID, PolytomousKeyNode> savePolytomousKeyNodesAll(Collection<PolytomousKeyNode> polytomousKeyNodeCollection);\r
+       \r
+       public Map<UUID, PolytomousKeyNode> saveOrUpdatePolytomousKeyNodesAll(Collection<PolytomousKeyNode> polytomousKeyNodeCollection);\r
+       \r
+}\r
index 93d2fa2a315493e83768202b8e8c86ebb2d4d995..a92543e516e59fa94d377d004e5b3c778dd065f3 100644 (file)
@@ -14,17 +14,17 @@ import java.util.List;
 
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
 
 
-public interface IReferenceService extends IIdentifiableEntityService<ReferenceBase> {
+public interface IReferenceService extends IIdentifiableEntityService<Reference> {
        
        /**
-        * Returns a Paged List of ReferenceBase instances where the default field matches the String queryString (as interpreted by the Lucene QueryParser)
+        * Returns a Paged List of Reference instances where the default field matches the String queryString (as interpreted by the Lucene QueryParser)
         * 
-        * @param clazz filter the results by class (or pass null to return all ReferenceBase instances)
+        * @param clazz filter the results by class (or pass null to return all Reference instances)
         * @param queryString
         * @param pageSize The maximum number of references returned (can be null for all matching references)
         * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
@@ -33,10 +33,10 @@ public interface IReferenceService extends IIdentifiableEntityService<ReferenceB
         *            include *-to-one properties like createdBy.username or
         *            authorTeam.persistentTitleCache
         * @param propertyPaths properties to be initialized
-        * @return a Pager ReferenceBase instances
+        * @return a Pager Reference instances
         * @see <a href="http://lucene.apache.org/java/2_4_0/queryparsersyntax.html">Apache Lucene - Query Parser Syntax</a>
         */
-       public Pager<ReferenceBase> search(Class<? extends ReferenceBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
+       public Pager<Reference> search(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
        
        /**
         * Returns a map that holds uuid, titleCache pairs of all references in the current database
@@ -44,19 +44,19 @@ public interface IReferenceService extends IIdentifiableEntityService<ReferenceB
         * @return 
         *                      a <code>Map</code> containing uuid and titleCache of references
         */
-       public List<UuidAndTitleCache<ReferenceBase>> getUuidAndTitle();
+       public List<UuidAndTitleCache<Reference>> getUuidAndTitle();
        
        /**
         * TODO candidate for harmonization: rename to listForPublishing
         * @return
         */
-       public List<ReferenceBase> getAllReferencesForPublishing();
+       public List<Reference> getAllReferencesForPublishing();
        
        /**
         * TODO candidate for harmonization: rename to listNomenclaturalReferences
         * @return
         */
-       public List<ReferenceBase> getAllNomenclaturalReferences();
+       public List<Reference> getAllNomenclaturalReferences();
 
        /**
         * returns
@@ -75,10 +75,10 @@ public interface IReferenceService extends IIdentifiableEntityService<ReferenceB
         * <li>taxon.name.descriptions.descriptionSources</li>
         * </ul>
         * 
-        * @param referenceBase
+        * @param reference
         * @param includeSubordinateReferences TODO
         * @param propertyPaths
         * @return
         */
-       public List<TaxonBase> listCoveredTaxa(ReferenceBase referenceBase, boolean includeSubordinateReferences, List<String> propertyPaths);
+       public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths);
 }
index 8cc59fba631e01dac2a929f9d6a2cb504583c2c8..224ec7d04c719e50246446cef32c3a0c3cb70b96 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;
 import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
@@ -64,9 +64,9 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * Computes all Taxon instances that do not have a taxonomic parent and has at least one child.
         * @param sec The concept reference that the taxon belongs to
         * @return The List<Taxon> of root taxa.
-        * @deprecated obsolete when using taxonomicTree
+        * @deprecated obsolete when using classification
         */
-       public List<Taxon> getRootTaxa(ReferenceBase sec);
+       public List<Taxon> getRootTaxa(Reference sec);
        
 
        /**
@@ -75,9 +75,9 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * 
         * @param onlyWithChildren if true only taxa are returned that have taxonomic children. <Br>Default: true.
         * @return The List<Taxon> of root taxa.
-        * @deprecated obsolete when using taxonomicTree
+        * @deprecated obsolete when using classification
         */
-       public List<Taxon> getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, boolean onlyWithChildren);
+       public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, boolean onlyWithChildren);
 
        /**
         * Computes all Taxon instances that do not have a taxonomic parent.
@@ -86,9 +86,9 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * @param withMisapplications if false taxa that have at least one misapplied name relationship in which they are
         * the misapplied name are not returned.<Br>Default: true.
         * @return The List<Taxon> of root taxa.
-        * @deprecated obsolete when using taxonomicTree
+        * @deprecated obsolete when using classification
         */
-       public List<Taxon> getRootTaxa(ReferenceBase sec, boolean onlyWithChildren, boolean withMisapplications);
+       public List<Taxon> getRootTaxa(Reference sec, boolean onlyWithChildren, boolean withMisapplications);
 
        /**
         * Computes all Taxon instances which name is of a certain Rank.
@@ -103,9 +103,9 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         *            {@link BeanInitializer#initialize(Object, List)}. <Br>
         *            Default: true.
         * @return The List<Taxon> of root taxa.
-        * @deprecated obsolete when using taxonomicTree
+        * @deprecated obsolete when using classification
         */
-       public List<Taxon> getRootTaxa(Rank rank, ReferenceBase sec, boolean onlyWithChildren, boolean withMisapplications, List<String> propertyPaths);
+       public List<Taxon> getRootTaxa(Rank rank, Reference sec, boolean onlyWithChildren, boolean withMisapplications, List<String> propertyPaths);
        
        /**
         * Computes all relationships.
@@ -129,7 +129,7 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * @param sec the taxons sec reference
         * @return a list of taxa matching the name and the sec reference 
         */
-       public List<TaxonBase> searchTaxaByName(String name, ReferenceBase sec);
+       public List<TaxonBase> searchTaxaByName(String name, Reference sec);
                
        /**
         * Changes an accepted taxon to a synonym of another taxon. 
@@ -147,7 +147,7 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * @return
         *                              the newly created synonym
         */
-       public Synonym changeAcceptedTaxonToSynonym (TaxonNode oldTaxonNode, TaxonNode newAcceptedTaxonNode, SynonymRelationshipType synonymType, ReferenceBase citation, String citationMicroReference);
+       public Synonym changeAcceptedTaxonToSynonym (TaxonNode oldTaxonNode, TaxonNode newAcceptedTaxonNode, SynonymRelationshipType synonymType, Reference citation, String citationMicroReference);
        
        /**
         * Swaps given synonym and accepted taxon. 
@@ -192,7 +192,7 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * @return
         *                              the newly created concept
         */
-       public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, ReferenceBase citation, String microcitation);
+       public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, Reference citation, String microcitation);
        
        /**
         * Returns the TaxonRelationships (of where relationship.type == type, if this argument is supplied) 
@@ -365,14 +365,14 @@ public interface ITaxonService extends IIdentifiableEntityService<TaxonBase>{
         * @param type
         * @return
         */
-       public List<Synonym> createInferredSynonyms(TaxonomicTree tree, Taxon taxon, SynonymRelationshipType type);
+       public List<Synonym> createInferredSynonyms(Classification tree, Taxon taxon, SynonymRelationshipType type);
        /**
         * returns a list of all inferred synonyms (inferred epithet, inferred genus and potential combination) concerning the taxon
         * @param tree
         * @param taxon
         * @return
         */
-       public List<Synonym> createAllInferredSynonyms(TaxonomicTree tree, Taxon taxon);
+       public List<Synonym> createAllInferredSynonyms(Classification tree, Taxon taxon);
        
        public int countAllRelationships();
        
index 9d43cf8d0a5173afa585663d12e5e77e1eeea95b..c7dfdced1e06d40728bcc0d7c41a3a9798dfa687 100644 (file)
@@ -32,7 +32,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.LSID;
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.media.Rights;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
@@ -216,8 +216,8 @@ public abstract class IdentifiableServiceBase<T extends IdentifiableEntity,DAO e
                                        if (entityCacheStrategy == null){
                                                entityCacheStrategy = entity.getCacheStrategy();
                                                //FIXME find out why the wrong cache strategy is loaded here, see #1876 
-                                               if (entity instanceof ReferenceBase){
-                                                       entityCacheStrategy = ReferenceFactory.newReference(((ReferenceBase)entity).getType()).getCacheStrategy();
+                                               if (entity instanceof Reference){
+                                                       entityCacheStrategy = ReferenceFactory.newReference(((Reference)entity).getType()).getCacheStrategy();
                                                }
                                        }
                                        entity.setCacheStrategy(entityCacheStrategy);
index 3d65a8c511888b0a230e94b60d4ebda073c40fe4..28c8a91f605f83818b86202dad621ac3f89bb8f4 100644 (file)
@@ -14,7 +14,10 @@ import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.KeyStatement;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.description.StateData;
@@ -25,6 +28,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 public class IdentificationKeyGenerator {
        
        static int level=-1; // global variable needed by the printTree function in order to store the level which is being printed
+       private FeatureTree polytomousKey_old; // the Identification Key
        private PolytomousKey polytomousKey; // the Identification Key
        private List<Feature> features; // the features used to generate the key
        private Set<TaxonDescription> taxa; // the base of taxa
@@ -55,9 +59,18 @@ public class IdentificationKeyGenerator {
        /**
         * Initializes the function buildBranches() with the starting parameters in order to build the key 
         */
-       private void Loop(){
-               polytomousKey = PolytomousKey.NewInstance();
-               FeatureNode root = polytomousKey.getRoot();
+       private void loop_old(){
+               polytomousKey_old = FeatureTree.NewInstance();
+               FeatureNode root = polytomousKey_old.getRoot();
+               buildBranches_old(root,features,taxa);  
+       }
+       
+       /**
+        * Initializes the function buildBranches() with the starting parameters in order to build the key 
+        */
+       private void loop(){
+               polytomousKey = polytomousKey.NewInstance();
+               PolytomousKeyNode root = polytomousKey.getRoot();
                buildBranches(root,features,taxa);      
        }
        
@@ -66,8 +79,8 @@ public class IdentificationKeyGenerator {
         * Creates the key and prints it
         */
        public void makeandprint(){
-               Loop();
-               List<FeatureNode> rootlist = new ArrayList<FeatureNode>();
+               loop();
+               List<PolytomousKeyNode> rootlist = new ArrayList<PolytomousKeyNode>();
                rootlist.add(polytomousKey.getRoot());
                String spaces = new String();
                printTree(rootlist,spaces);
@@ -81,13 +94,102 @@ public class IdentificationKeyGenerator {
         * @param featuresLeft List of features that can be used at this point
         * @param taxaCovered the taxa left at this point (i.e. that verify the description corresponding to the path leading to this node)
         */
-       private void buildBranches(FeatureNode father, List<Feature> featuresLeft, Set<TaxonDescription> taxaCovered){
+       private void buildBranches_old(FeatureNode father, List<Feature> featuresLeft, Set<TaxonDescription> taxaCovered){
+//             // this map stores the thresholds giving the best dichotomy of taxa for the corresponding feature supporting quantitative data
+//             Map<Feature,Float> quantitativeFeaturesThresholds = new HashMap<Feature,Float>();
+//             // the scores of the different features are calculated, the thresholds in the same time
+//             Map<Feature,Float> scoreMap = featureScores(featuresLeft, taxaCovered, quantitativeFeaturesThresholds);
+//             // the feature with the best score becomes the one corresponding to the current node
+//             Feature winnerFeature = defaultWinner(taxaCovered.size(), scoreMap);
+//             // the feature is removed from the list of features available to build the next level of the tree
+//             featuresLeft.remove(winnerFeature);
+//             // this boolean indicates if the current father node has children or not (i.e. is a leaf or not) ; (a leaf has a "Question" element)
+//             boolean childrenExist = false;
+//             int i;
+//             
+//             /************** either the feature supports quantitative data... **************/
+//             // NB: in this version, "quantitative features" are dealt with in a dichotomous way
+//             if (winnerFeature.isSupportsQuantitativeData()) {
+//                     // first, get the threshold
+//                     float threshold = quantitativeFeaturesThresholds.get(winnerFeature);
+//                     String sign;
+//                     
+//                     // then determine which taxa are before and which are after this threshold (dichotomy) in order to create the children of the father node
+//                     List<Set<TaxonDescription>> quantitativeStates = determineQuantitativeStates(threshold,winnerFeature,taxaCovered);
+//                     for (i=0;i<2;i++) {
+//                             Set<TaxonDescription> newTaxaCovered = quantitativeStates.get(i);
+//                             if (i==0) sign = before; // the first element of the list corresponds to taxa before the threshold
+//                             else sign = after; // the second to those after
+//                             if (!(newTaxaCovered.size()==taxaCovered.size())&&newTaxaCovered.size()>0){ // if the taxa are discriminated compared to those of the father node, a child is created
+//                                     childrenExist = true;
+//                                     FeatureNode son = FeatureNode.NewInstance();
+//                                     son.setFeature(winnerFeature);
+//                                     Representation question = new Representation(null, sign + threshold,null, Language.DEFAULT()); // the question attribute is used to store the state of the feature
+//                                     son.addQuestion(question);
+//                                     father.addChild(son);
+//                                     buildBranches(son,featuresLeft, newTaxaCovered);
+//                             }
+//                     }
+//             }
+//             
+//             /************** ...or it supports categorical data. **************/
+//             // "categorical features" may present several different states, each one of these might correspond to one child
+//             List<State> statesDone = new ArrayList<State>();
+//             int numberOfStates;
+//             if (winnerFeature.isSupportsCategoricalData()) {
+//             for (TaxonDescription td : taxaCovered){
+//                     // go through all the states possible for one feature for the taxa considered
+//                     DescriptionElementBase debConcerned = null;
+//                     for (DescriptionElementBase deb : td.getElements()) {
+//                             if (deb.getFeature().equals(winnerFeature)) debConcerned = deb;
+//                     }
+//                     // a map is created, the key being the set of taxa that present the state(s) stored in the corresponding value
+//                             Map<Set<TaxonDescription>,List<State>> taxonStatesMap = determineCategoricalStates(statesDone,(CategoricalData)debConcerned,winnerFeature,taxaCovered);
+//                             if (taxonStatesMap!=null && !taxonStatesMap.isEmpty()) { 
+//                                     for (Map.Entry<Set<TaxonDescription>,List<State>> e : taxonStatesMap.entrySet()){
+//                                             Set<TaxonDescription> newTaxaCovered = e.getKey();
+//                                             List<State> listOfStates = e.getValue();
+//                                             if (!(newTaxaCovered.size()==taxaCovered.size())){ // if the taxa are discriminated compared to those of the father node, a child is created
+//                                                     childrenExist = true;
+//                                                     FeatureNode son = FeatureNode.NewInstance();
+//                                                     StringBuilder questionLabel = new StringBuilder();
+//                                                     numberOfStates = listOfStates.size()-1;
+//                                                     for (State st : listOfStates) {
+//                                                             questionLabel.append(st.getLabel());
+//                                                             if (listOfStates.lastIndexOf(st)!=numberOfStates) questionLabel.append(separator);
+//                                                     }
+//                                                     Representation question = new Representation(null, questionLabel.toString(),null, Language.DEFAULT());
+//                                                     son.addQuestion(question);
+//                                                     son.setFeature(winnerFeature);
+//                                                     father.addChild(son);
+//                                                     featuresLeft.remove(winnerFeature); // TODO was commented before, why ?
+//                                                     buildBranches(son,featuresLeft, newTaxaCovered);
+//                                             }
+//                                     }
+//                             }
+//                     }
+//             }
+//             if (!childrenExist){
+//                     Representation question = father.getQuestion(Language.DEFAULT());
+//                     if (question!=null && taxaCovered!= null) question.setLabel(question.getLabel() + " --> " + taxaCovered.toString());
+//             }
+//             featuresLeft.add(winnerFeature);
+       }
+
+       /**
+        * Recursive function that builds the branches of the identification key (FeatureTree)
+        * 
+        * @param father the node considered
+        * @param featuresLeft List of features that can be used at this point
+        * @param taxaCovered the taxa left at this point (i.e. that verify the description corresponding to the path leading to this node)
+        */
+       private void buildBranches(PolytomousKeyNode father, List<Feature> featuresLeft, Set<TaxonDescription> taxaCovered){
                // this map stores the thresholds giving the best dichotomy of taxa for the corresponding feature supporting quantitative data
                Map<Feature,Float> quantitativeFeaturesThresholds = new HashMap<Feature,Float>();
                // the scores of the different features are calculated, the thresholds in the same time
-               Map<Feature,Float> scoreMap = FeatureScores(featuresLeft, taxaCovered, quantitativeFeaturesThresholds);
+               Map<Feature,Float> scoreMap = featureScores(featuresLeft, taxaCovered, quantitativeFeaturesThresholds);
                // the feature with the best score becomes the one corresponding to the current node
-               Feature winnerFeature = DefaultWinner(taxaCovered.size(), scoreMap);
+               Feature winnerFeature = defaultWinner(taxaCovered.size(), scoreMap);
                // the feature is removed from the list of features available to build the next level of the tree
                featuresLeft.remove(winnerFeature);
                // this boolean indicates if the current father node has children or not (i.e. is a leaf or not) ; (a leaf has a "Question" element)
@@ -103,16 +205,19 @@ public class IdentificationKeyGenerator {
                        
                        // then determine which taxa are before and which are after this threshold (dichotomy) in order to create the children of the father node
                        List<Set<TaxonDescription>> quantitativeStates = determineQuantitativeStates(threshold,winnerFeature,taxaCovered);
-                       for (i=0;i<2;i++) {
+                       for (i=0 ; i<2 ; i++) {
                                Set<TaxonDescription> newTaxaCovered = quantitativeStates.get(i);
-                               if (i==0) sign = before; // the first element of the list corresponds to taxa before the threshold
-                               else sign = after; // the second to those after
-                               if (!(newTaxaCovered.size()==taxaCovered.size())&&newTaxaCovered.size()>0){ // if the taxa are discriminated compared to those of the father node, a child is created
+                               if (i==0){
+                                       sign = before; // the first element of the list corresponds to taxa before the threshold
+                               } else{
+                                       sign = after; // the second to those after
+                               }
+                               if ( (newTaxaCovered.size()!=taxaCovered.size()) && newTaxaCovered.size() > 0){ // if the taxa are discriminated compared to those of the father node, a child is created
                                        childrenExist = true;
-                                       FeatureNode son = FeatureNode.NewInstance();
+                                       PolytomousKeyNode son = PolytomousKeyNode.NewInstance();
                                        son.setFeature(winnerFeature);
-                                       Representation question = new Representation(null, sign + threshold,null, Language.DEFAULT()); // the question attribute is used to store the state of the feature
-                                       son.addQuestion(question);
+                                       KeyStatement statement = KeyStatement.NewInstance(sign + threshold); // the question attribute is used to store the state of the feature
+                                       son.setStatement(statement);
                                        father.addChild(son);
                                        buildBranches(son,featuresLeft, newTaxaCovered);
                                }
@@ -138,15 +243,15 @@ public class IdentificationKeyGenerator {
                                                List<State> listOfStates = e.getValue();
                                                if (!(newTaxaCovered.size()==taxaCovered.size())){ // if the taxa are discriminated compared to those of the father node, a child is created
                                                        childrenExist = true;
-                                                       FeatureNode son = FeatureNode.NewInstance();
+                                                       PolytomousKeyNode son = PolytomousKeyNode.NewInstance();
                                                        StringBuilder questionLabel = new StringBuilder();
                                                        numberOfStates = listOfStates.size()-1;
                                                        for (State st : listOfStates) {
                                                                questionLabel.append(st.getLabel());
                                                                if (listOfStates.lastIndexOf(st)!=numberOfStates) questionLabel.append(separator);
                                                        }
-                                                       Representation question = new Representation(null, questionLabel.toString(),null, Language.DEFAULT());
-                                                       son.addQuestion(question);
+                                                       KeyStatement statement = KeyStatement.NewInstance(questionLabel.toString());
+                                                       son.setStatement(statement);
                                                        son.setFeature(winnerFeature);
                                                        father.addChild(son);
                                                        featuresLeft.remove(winnerFeature); // TODO was commented before, why ?
@@ -156,14 +261,19 @@ public class IdentificationKeyGenerator {
                                }
                        }
                }
-               if (!childrenExist){
-                       Representation question = father.getQuestion(Language.DEFAULT());
-                       if (question!=null && taxaCovered!= null) question.setLabel(question.getLabel() + " --> " + taxaCovered.toString());
+               if (! childrenExist){
+                       KeyStatement fatherStatement = father.getStatement();
+                       String statementString = fatherStatement.getLabelText(Language.DEFAULT());
+                       if (statementString !=null && taxaCovered != null){
+                               String label = statementString + " --> " + taxaCovered.toString();
+                               fatherStatement.putLabel(label, Language.DEFAULT());
+                       }
                }
                featuresLeft.add(winnerFeature);
        }
 
        
+       
        /**
         * fills a map of the sets of taxa (key) presenting the different states (value) for the given feature.
         * 
@@ -225,8 +335,8 @@ public class IdentificationKeyGenerator {
        }
        
        //change names
-       private Feature DefaultWinner(int nTaxons, Map<Feature,Float> scores){
-               float meanScore = DefaultMeanScore(nTaxons);
+       private Feature defaultWinner(int nTaxons, Map<Feature,Float> scores){
+               float meanScore = defaultMeanScore(nTaxons);
                float bestScore = nTaxons*nTaxons;
                Feature feature = null;
                Iterator it = scores.entrySet().iterator();
@@ -248,7 +358,7 @@ public class IdentificationKeyGenerator {
        }
        
        // rutiliser et vrif si rien de trop <- FIXME please do not comment in french or at least use proper file encoding
-       private float DefaultMeanScore(int nTaxons){
+       private float defaultMeanScore(int nTaxons){
                int i;
                float score=0;
                for (i=1;i<nTaxons;i++){
@@ -257,14 +367,14 @@ public class IdentificationKeyGenerator {
                return score;
        }
        
-       private Map<Feature,Float> FeatureScores(List<Feature> featuresLeft, Set<TaxonDescription> coveredTaxa, Map<Feature,Float> quantitativeFeaturesThresholds){
+       private Map<Feature,Float> featureScores(List<Feature> featuresLeft, Set<TaxonDescription> coveredTaxa, Map<Feature,Float> quantitativeFeaturesThresholds){
                Map<Feature,Float> scoreMap = new HashMap<Feature,Float>();
                for (Feature feature : featuresLeft){
                        if (feature.isSupportsCategoricalData()) {
-                               scoreMap.put(feature, FeatureScore(feature,coveredTaxa));
+                               scoreMap.put(feature, featureScore(feature,coveredTaxa));
                        }
                        if (feature.isSupportsQuantitativeData()){
-                               scoreMap.put(feature, QuantitativeFeatureScore(feature,coveredTaxa, quantitativeFeaturesThresholds));
+                               scoreMap.put(feature, quantitativeFeatureScore(feature,coveredTaxa, quantitativeFeaturesThresholds));
                        }
                }
                return scoreMap;
@@ -300,7 +410,7 @@ public class IdentificationKeyGenerator {
                return list;
        }
        
-       private float QuantitativeFeatureScore(Feature feature, Set<TaxonDescription> coveredTaxa, Map<Feature,Float> quantitativeFeaturesThresholds){
+       private float quantitativeFeatureScore(Feature feature, Set<TaxonDescription> coveredTaxa, Map<Feature,Float> quantitativeFeaturesThresholds){
                List<Float> allValues = new ArrayList<Float>();
                boolean lowerboundarypresent;
                boolean upperboundarypresent;
@@ -373,7 +483,7 @@ public class IdentificationKeyGenerator {
                return (float)(defaultQuantitativeScore);
        }
        
-       private float FeatureScore(Feature feature, Set<TaxonDescription> coveredTaxa){
+       private float featureScore(Feature feature, Set<TaxonDescription> coveredTaxa){
                int i,j;
                float score =0;
                TaxonDescription[] coveredTaxaArray = coveredTaxa.toArray(new TaxonDescription[coveredTaxa.size()]); // I did not figure a better way to do this
@@ -389,23 +499,23 @@ public class IdentificationKeyGenerator {
                                for (DescriptionElementBase deb : elements2){
                                        if (deb.getFeature().equals(feature)) deb2 = deb; // finds the DescriptionElementBase corresponding to the concerned Feature
                                }
-                               score = score + DefaultPower(deb1,deb2);
+                               score = score + defaultPower(deb1,deb2);
                        }
                }
                return score;
                }
        
-       private float DefaultPower(DescriptionElementBase deb1, DescriptionElementBase deb2){
+       private float defaultPower(DescriptionElementBase deb1, DescriptionElementBase deb2){
                if (deb1==null || deb2==null) {
                        return -1; //what if the two taxa don't have this feature in common ?
                }
                if ((deb1.isInstanceOf(CategoricalData.class))&&(deb2.isInstanceOf(CategoricalData.class))) {
-                       return DefaultCategoricalPower((CategoricalData)deb1, (CategoricalData)deb2);
+                       return defaultCategoricalPower((CategoricalData)deb1, (CategoricalData)deb2);
                }
                else return 0;
        }
        
-       private float DefaultCategoricalPower(CategoricalData deb1, CategoricalData deb2){
+       private float defaultCategoricalPower(CategoricalData deb1, CategoricalData deb2){
                List<StateData> states1 = deb1.getStates();
                List<StateData> states2 = deb2.getStates();
                boolean bool = false;
@@ -424,23 +534,27 @@ public class IdentificationKeyGenerator {
                else return 1;
        }
        
-       private void printTree(List<FeatureNode> fnodes, String spaces){
-               if (!fnodes.isEmpty()){
+       private void printTree(List<PolytomousKeyNode> polytomousKeyNodes, String spaces){
+               if (! polytomousKeyNodes.isEmpty()){
                        level++;
                        int levelcopy = level;
                        int j=1;
                        String newspaces = spaces.concat("\t");
-                       for (FeatureNode fnode : fnodes){
-                               if (fnode.getFeature()!=null) {
+                       for (PolytomousKeyNode polytomousKeyNode : polytomousKeyNodes){
+                               if (polytomousKeyNode.getQuestion() != null) {
                                        String state = null;
-                                       if (fnode.getQuestion(Language.DEFAULT())!=null) state = fnode.getQuestion(Language.DEFAULT()).getLabel();
-                                       System.out.println(newspaces + levelcopy + " : " + j + " " + fnode.getFeature().getLabel() + " = " + state);
+                                       if (polytomousKeyNode.getStatement().getLabel(Language.DEFAULT() ) != null){
+                                               state = polytomousKeyNode.getStatement().getLabelText(Language.DEFAULT());
+                                       }
+                                       System.out.println(newspaces + levelcopy + " : " + j + " " + polytomousKeyNode.getQuestion().getLabelText(Language.DEFAULT()) + " = " + state);
                                        j++;
                                }
                                else { // TODO never read ?
-                                       if (fnode.getQuestion(Language.DEFAULT())!=null) System.out.println(newspaces + "-> " + fnode.getQuestion(Language.DEFAULT()).getLabel());
+                                       if (polytomousKeyNode.getStatement().getLabel(Language.DEFAULT() ) != null){
+                                               System.out.println(newspaces + "-> " + polytomousKeyNode.getStatement().getLabelText(Language.DEFAULT()));
+                                       }
                                }
-                               printTree(fnode.getChildren(),newspaces);
+                               printTree(polytomousKeyNode.getChildren(),newspaces);
                        }
                }
        }
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/PolytomousKeyServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/PolytomousKeyServiceImpl.java
new file mode 100644 (file)
index 0000000..d1a29e8
--- /dev/null
@@ -0,0 +1,117 @@
+/**\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.api.service;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.UUID;\r
+\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.stereotype.Service;\r
+import org.springframework.transaction.annotation.Propagation;\r
+import org.springframework.transaction.annotation.Transactional;\r
+\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.VocabularyEnum;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.FeatureNode;\r
+import eu.etaxonomy.cdm.model.description.FeatureTree;\r
+import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IFeatureNodeDao;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IFeatureTreeDao;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyDao;\r
+import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyNodeDao;\r
+\r
+@Service\r
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = false)\r
+public class PolytomousKeyServiceImpl extends IdentifiableServiceBase<PolytomousKey, IPolytomousKeyDao> implements IPolytomousKeyService {\r
+\r
+       IPolytomousKeyNodeDao polytomousKeyNodeDao;\r
+       \r
+       @Autowired\r
+       protected void setDao(IPolytomousKeyDao dao) {\r
+               this.dao = dao;\r
+       }\r
+       \r
+       @Autowired\r
+       protected void setPolytomousKeyNodeDao(IPolytomousKeyNodeDao polytomousKeyNodeDao) {\r
+               this.polytomousKeyNodeDao = polytomousKeyNodeDao;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()\r
+        */\r
+       @Override\r
+       public void updateTitleCache() {\r
+               Class<PolytomousKey> clazz = PolytomousKey.class;\r
+               super.updateTitleCache(clazz, null, null);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IPolytomousKeyService#getPolytomousKeyNodesAll()\r
+        */\r
+       public List<PolytomousKeyNode> getPolytomousKeyNodesAll() {\r
+               return polytomousKeyNodeDao.list();\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IPolytomousKeyService#savePolytomousKeyNodesAll(java.util.Collection)\r
+        */\r
+       public Map<UUID, PolytomousKeyNode> savePolytomousKeyNodesAll(Collection<PolytomousKeyNode> polytomousKeyNodeCollection) {\r
+               return polytomousKeyNodeDao.saveAll(polytomousKeyNodeCollection);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IPolytomousKeyService#saveOrUpdatePolytomousKeyNodesAll(java.util.Collection)\r
+        */\r
+       public Map<UUID, PolytomousKeyNode> saveOrUpdatePolytomousKeyNodesAll(Collection<PolytomousKeyNode> polytomousKeyNodeCollection) {\r
+               return polytomousKeyNodeDao.saveOrUpdateAll(polytomousKeyNodeCollection);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#loadWithNodes(java.util.UUID, java.util.List, java.util.List)\r
+        */\r
+       public PolytomousKey loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths) {\r
+               nodePaths.add("children");\r
+               \r
+               List<String> rootPaths = new ArrayList<String>();\r
+               rootPaths.add("root");\r
+               for(String path : nodePaths) {\r
+                       rootPaths.add("root." + path);\r
+               }\r
+               \r
+               if(propertyPaths != null) { \r
+                   rootPaths.addAll(propertyPaths);\r
+               }\r
+               \r
+               PolytomousKey polytomousKey = load(uuid, rootPaths);\r
+               dao.loadNodes(polytomousKey.getRoot(),nodePaths);\r
+               return polytomousKey;\r
+       }\r
+       \r
+       /**\r
+        * Returns the polytomous key specified by the given <code>uuid</code>.\r
+        * The specified polytomous key either can be one of those stored in the CDM database or can be the \r
+        * DefaultFeatureTree (contains all Features in use). \r
+        * The uuid of the DefaultFeatureTree is defined in {@link IFeatureTreeService#DefaultFeatureTreeUuid}.\r
+        * The DefaultFeatureTree is also returned if no feature tree at all is stored in the cdm database.\r
+        *  \r
+        * @see eu.etaxonomy.cdm.api.service.ServiceBase#load(java.util.UUID, java.util.List)\r
+        */\r
+       @Override\r
+       public PolytomousKey load(UUID uuid, List<String> propertyPaths) {\r
+               return super.load(uuid, propertyPaths);\r
+       }\r
+       \r
+}\r
index 06397a882618b06c077ed8edb6e300ed2480955e..2e00d38ee2627a153460a3bb690016feec862d8f 100644 (file)
@@ -20,14 +20,14 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;\r
 \r
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
 \r
 \r
 @Service\r
 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)\r
-public class ReferenceServiceImpl extends IdentifiableServiceBase<ReferenceBase,IReferenceDao> implements IReferenceService {\r
+public class ReferenceServiceImpl extends IdentifiableServiceBase<Reference,IReferenceDao> implements IReferenceService {\r
        \r
        static Logger logger = Logger.getLogger(ReferenceServiceImpl.class);\r
 \r
@@ -43,7 +43,7 @@ public class ReferenceServiceImpl extends IdentifiableServiceBase<ReferenceBase,
         */\r
        @Override\r
        public void updateTitleCache() {\r
-               Class<ReferenceBase> clazz = ReferenceBase.class;\r
+               Class<Reference> clazz = Reference.class;\r
                super.updateTitleCache(clazz, null, null);\r
        }\r
 \r
@@ -52,24 +52,24 @@ public class ReferenceServiceImpl extends IdentifiableServiceBase<ReferenceBase,
                this.dao = dao;\r
        }\r
 \r
-       public List<UuidAndTitleCache<ReferenceBase>> getUuidAndTitle() {\r
+       public List<UuidAndTitleCache<Reference>> getUuidAndTitle() {\r
                \r
                return dao.getUuidAndTitle();\r
        }\r
        \r
-       public List<ReferenceBase> getAllReferencesForPublishing(){\r
+       public List<Reference> getAllReferencesForPublishing(){\r
                return dao.getAllNotNomenclaturalReferencesForPublishing();\r
        }\r
 \r
-       public List<ReferenceBase> getAllNomenclaturalReferences() {\r
+       public List<Reference> getAllNomenclaturalReferences() {\r
                \r
                return dao.getAllNomenclaturalReferences();\r
        }\r
 \r
        @Override\r
-       public List<TaxonBase> listCoveredTaxa(ReferenceBase referenceBase, boolean includeSubordinateReferences, List<String> propertyPaths) {\r
+       public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths) {\r
                \r
-               List<TaxonBase> taxonList = dao.listCoveredTaxa(referenceBase, includeSubordinateReferences, propertyPaths);\r
+               List<TaxonBase> taxonList = dao.listCoveredTaxa(reference, includeSubordinateReferences, propertyPaths);\r
                \r
                return taxonList;\r
        }\r
index 8bcf233c14a60f967f2c5f7809152835e99ebe20..57eee24e0bfd1d5d4e626d6e28ae75250f2d81bb 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.model.media.MediaUtils;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -50,7 +50,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IOrderedTermVocabularyDao;\r
 import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;\r
 import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
@@ -90,7 +90,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         * FIXME Candidate for harmonization\r
         * rename searchByName ? \r
         */\r
-       public List<TaxonBase> searchTaxaByName(String name, ReferenceBase sec) {\r
+       public List<TaxonBase> searchTaxaByName(String name, Reference sec) {\r
                return dao.getTaxaByName(name, sec);\r
        }\r
        \r
@@ -117,21 +117,21 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
 \r
        /**\r
         * FIXME Candidate for harmonization\r
-        * merge with getRootTaxa(ReferenceBase sec, ..., ...)\r
+        * merge with getRootTaxa(Reference sec, ..., ...)\r
         *  (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase)\r
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference)\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec){\r
+       public List<Taxon> getRootTaxa(Reference sec){\r
                return getRootTaxa(sec, CdmFetch.FETCH_CHILDTAXA(), true);\r
        }\r
 \r
        /**\r
         * FIXME Candidate for harmonization\r
-        * merge with getRootTaxa(ReferenceBase sec, ..., ...)\r
+        * merge with getRootTaxa(Reference sec, ..., ...)\r
         *  (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase, boolean)\r
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference, boolean)\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec, CdmFetch cdmFetch, boolean onlyWithChildren) {\r
+       public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, boolean onlyWithChildren) {\r
                if (cdmFetch == null){\r
                        cdmFetch = CdmFetch.NO_FETCH();\r
                }\r
@@ -140,19 +140,19 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
        \r
        /**\r
         * FIXME Candidate for harmonization\r
-        * merge with getRootTaxa(ReferenceBase sec, ..., ...)\r
+        * merge with getRootTaxa(Reference sec, ..., ...)\r
         *  (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase, boolean, boolean)\r
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference, boolean, boolean)\r
         */\r
-       public List<Taxon> getRootTaxa(ReferenceBase sec, boolean onlyWithChildren,\r
+       public List<Taxon> getRootTaxa(Reference sec, boolean onlyWithChildren,\r
                        boolean withMisapplications) {\r
                return dao.getRootTaxa(sec, null, onlyWithChildren, withMisapplications);\r
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.ReferenceBase, boolean, boolean)\r
+        * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.Reference, boolean, boolean)\r
         */\r
-       public List<Taxon> getRootTaxa(Rank rank, ReferenceBase sec, boolean onlyWithChildren,\r
+       public List<Taxon> getRootTaxa(Rank rank, Reference sec, boolean onlyWithChildren,\r
                        boolean withMisapplications, List<String> propertyPaths) {\r
                return dao.getRootTaxa(rank, sec, null, onlyWithChildren, withMisapplications, propertyPaths);\r
        }\r
@@ -179,7 +179,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         * @see eu.etaxonomy.cdm.api.service.ITaxonService#makeTaxonSynonym(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Taxon)\r
         */\r
        @Transactional(readOnly = false)\r
-       public Synonym changeAcceptedTaxonToSynonym(TaxonNode oldTaxonNode, TaxonNode newAcceptedTaxonNode, SynonymRelationshipType synonymRelationshipType, ReferenceBase citation, String citationMicroReference) {\r
+       public Synonym changeAcceptedTaxonToSynonym(TaxonNode oldTaxonNode, TaxonNode newAcceptedTaxonNode, SynonymRelationshipType synonymRelationshipType, Reference citation, String citationMicroReference) {\r
 \r
                // TODO at the moment this method only moves synonym-, concept relations and descriptions to the new accepted taxon\r
                // in a future version we also want to move cdm data like annotations, marker, so., but we will need a policy for that\r
@@ -289,7 +289,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                return newAcceptedTaxon;\r
        }\r
        \r
-       public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, ReferenceBase citation, String microcitation){\r
+       public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, Reference citation, String microcitation){\r
                \r
                // Get name from synonym\r
                TaxonNameBase<?, ?> synonymName = synonym.getName();\r
@@ -457,12 +457,12 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                        if(configurator.getPageSize() != null){ // no point counting if we need all anyway\r
                                numberTaxaResults = \r
                                        dao.countTaxaByName(clazz, \r
-                                               configurator.getSearchString(), configurator.getTaxonomicTree(), configurator.getMatchMode(),\r
+                                               configurator.getSearchString(), configurator.getClassification(), configurator.getMatchMode(),\r
                                                configurator.getNamedAreas());\r
                        }\r
                        if(configurator.getPageSize() == null || numberTaxaResults > configurator.getPageSize() * configurator.getPageNumber()){ // no point checking again if less results\r
                                taxa = dao.getTaxaByName(clazz, \r
-                                       configurator.getSearchString(), configurator.getTaxonomicTree(), configurator.getMatchMode(),\r
+                                       configurator.getSearchString(), configurator.getClassification(), configurator.getMatchMode(),\r
                                        configurator.getNamedAreas(), configurator.getPageSize(), \r
                                        configurator.getPageNumber(), propertyPath);\r
                        }\r
@@ -502,10 +502,10 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                        taxa = null;\r
                        numberTaxaResults = 0;\r
                        if(configurator.getPageSize() != null){// no point counting if we need all anyway\r
-                               numberTaxaResults = dao.countTaxaByCommonName(configurator.getSearchString(), configurator.getTaxonomicTree(), configurator.getMatchMode(), configurator.getNamedAreas());\r
+                               numberTaxaResults = dao.countTaxaByCommonName(configurator.getSearchString(), configurator.getClassification(), configurator.getMatchMode(), configurator.getNamedAreas());\r
                        }\r
                        if(configurator.getPageSize() == null || numberTaxaResults > configurator.getPageSize() * configurator.getPageNumber()){\r
-                               taxa = dao.getTaxaByCommonName(configurator.getSearchString(), configurator.getTaxonomicTree(), configurator.getMatchMode(), configurator.getNamedAreas(), configurator.getPageSize(), configurator.getPageNumber(), configurator.getTaxonPropertyPath());\r
+                               taxa = dao.getTaxaByCommonName(configurator.getSearchString(), configurator.getClassification(), configurator.getMatchMode(), configurator.getNamedAreas(), configurator.getPageSize(), configurator.getPageNumber(), configurator.getTaxonPropertyPath());\r
                        }\r
                        if(taxa != null){\r
                                results.addAll(taxa);\r
@@ -548,13 +548,13 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                return this.dao.countAllRelationships();\r
        }\r
 \r
-       public List<Synonym> createAllInferredSynonyms(TaxonomicTree tree,\r
+       public List<Synonym> createAllInferredSynonyms(Classification tree,\r
                        Taxon taxon) {\r
                \r
                return this.dao.createAllInferredSynonyms(taxon, tree);\r
        }\r
 \r
-       public List<Synonym> createInferredSynonyms(TaxonomicTree tree, Taxon taxon, SynonymRelationshipType type) {\r
+       public List<Synonym> createInferredSynonyms(Classification tree, Taxon taxon, SynonymRelationshipType type) {\r
                \r
                return this.dao.createInferredSynonyms(taxon, tree, type);\r
        }\r
index c3a16e06cbdd3cc384e6531c499292a0c6cd8805..e9e99b5a9ea95beed2b635f0e742f860a257a7d6 100644 (file)
@@ -16,7 +16,7 @@ import eu.etaxonomy.cdm.model.description.WorkingSet;
 import eu.etaxonomy.cdm.persistence.dao.description.IWorkingSetDao;\r
 \r
 @Service\r
-@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)\r
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = false)\r
 public class WorkingSetService extends\r
                AnnotatableServiceBase<WorkingSet, IWorkingSetDao> implements IWorkingSetService {\r
 \r
index cab872e2f266e67f4c442cb6a99f2e573868efda..52ed35e40f7e0f90cc5a305e221badc88a535e5a 100644 (file)
@@ -10,7 +10,7 @@
 \r
 package eu.etaxonomy.cdm.api.service.config;\r
 \r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 \r
 /**\r
index b6242939f98a7a061121f580112357d411b58738..aff308c96e5b76a1562991b3243cc7ec786c6b68 100644 (file)
@@ -15,8 +15,8 @@ import java.util.List;
 import java.util.Set;\r
 \r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 \r
 /**\r
@@ -50,9 +50,9 @@ public interface ITaxonServiceConfigurator {
 \r
        public void setMatchMode(MatchMode matchMode);\r
 \r
-       public TaxonomicTree getTaxonomicTree();\r
+       public Classification getClassification();\r
        \r
-       public void setTaxonomicTree(TaxonomicTree taxonomicTree);\r
+       public void setClassification(Classification classification);\r
        \r
        public Integer getPageSize();\r
 \r
@@ -79,9 +79,9 @@ public interface ITaxonServiceConfigurator {
        public void setCommonNamePropertyPath(List<String> commonNamePropertyPath);\r
        \r
        @Deprecated\r
-       public ReferenceBase getSec();\r
+       public Reference getSec();\r
        @Deprecated\r
-       public void setSec(ReferenceBase sec);\r
+       public void setSec(Reference sec);\r
 \r
        public List<String> getSynonymPropertyPath();\r
        \r
index 39dcf4ae0ab53e9f1b7f14aa2ed8c83148d67263..9009e7fac3019d42e81d662bc3905541d3313c76 100644 (file)
@@ -13,7 +13,7 @@ package eu.etaxonomy.cdm.api.service.config.impl;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 \r
 /**\r
index 563e2af83c23d1021eb07c4484119260877c4bd9..761a7c8ff609c25321fc3524e18d8bc63f687261 100644 (file)
@@ -17,8 +17,8 @@ import java.util.Set;
 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorBase;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 \r
 /**\r
@@ -34,8 +34,8 @@ implements ITaxonServiceConfigurator {
        private boolean doTaxaByCommonNames = false;\r
        private boolean doNamesWithoutTaxa = false;\r
        private String searchString;\r
-       private ReferenceBase sec = null;\r
-       private TaxonomicTree taxonomicTree = null;\r
+       private Reference sec = null;\r
+       private Classification classification = null;\r
        private List<String> taxonPropertyPath;\r
        private List<String> synonymPropertyPath;\r
        private List<String> taxonNamePropertyPath;\r
@@ -120,20 +120,20 @@ implements ITaxonServiceConfigurator {
                this.matchMode = matchMode;\r
        }\r
        \r
-       public ReferenceBase getSec() {\r
+       public Reference getSec() {\r
                return sec;\r
        }\r
        \r
-       public void setSec(ReferenceBase sec) {\r
+       public void setSec(Reference sec) {\r
                this.sec = sec;\r
        }\r
        \r
-       public TaxonomicTree getTaxonomicTree() {\r
-               return taxonomicTree;\r
+       public Classification getClassification() {\r
+               return classification;\r
        }\r
        \r
-       public void setTaxonomicTree(TaxonomicTree taxonomicTree) {\r
-               this.taxonomicTree = taxonomicTree;\r
+       public void setClassification(Classification classification) {\r
+               this.classification = classification;\r
        }\r
 \r
        public List<String> getTaxonPropertyPath() {\r
index 5b15fb0735286655e1baf40d9afd7a864cb157e3..a9d034114c240877a1e49090e6a95164f619e8e3 100644 (file)
@@ -16,7 +16,7 @@ import org.junit.Before;
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
 \r
-import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
 import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
@@ -54,7 +54,7 @@ public class DerivedUnitFacadeCacheStrategyTest {
        GatheringEvent gatheringEvent;\r
        Integer absoluteElevation = 40;\r
        Integer absoluteElevationError = 2;\r
-       AgentBase collector = Team.NewInstance();\r
+       Team collector = Team.NewInstance();\r
        String collectingMethod = "Collection Method";\r
        Integer distanceToGround = 22;\r
        Integer distanceToSurface = 50;\r
@@ -65,15 +65,17 @@ public class DerivedUnitFacadeCacheStrategyTest {
        String ecology = "sand dunes";\r
        String plantDescription = "flowers blue";\r
        \r
-       String fieldNumber = "15p23B";\r
+       String fieldNumber = "5678";\r
        String fieldNotes = "such a beautiful specimen";\r
-\r
+       Person primaryCollector;\r
+       \r
        Integer individualCount = 1;\r
        Stage lifeStage = Stage.NewInstance("A wonderful stage", "stage", "st");\r
        Sex sex = Sex.NewInstance("FemaleMale", "FM", "FM");\r
        LanguageString locality = LanguageString.NewInstance("Berlin-Dahlem, E side of Englerallee", Language.DEFAULT());\r
        NamedArea country = WaterbodyOrCountry.GERMANY();\r
        \r
+       String exsiccatum = "Greuter, Pl. Dahlem. 456";\r
        String accessionNumber = "8909756";\r
        String catalogNumber = "UU879873590";\r
        TaxonNameBase taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
@@ -90,6 +92,7 @@ public class DerivedUnitFacadeCacheStrategyTest {
        FieldObservation firstFieldObject;\r
        Media media1 = Media.NewInstance();\r
        \r
+       \r
 //****************************** SET UP *****************************************/\r
        \r
        /**\r
@@ -132,6 +135,15 @@ public class DerivedUnitFacadeCacheStrategyTest {
                fieldObservation.setIndividualCount(individualCount);\r
                fieldObservation.setSex(sex);\r
                fieldObservation.setLifeStage(lifeStage);\r
+               primaryCollector = Person.NewTitledInstance("Kilian");\r
+               collector.addTeamMember(primaryCollector);\r
+               Person secondCollector = Person.NewInstance();\r
+               secondCollector.setFirstname("Andreas");\r
+               secondCollector.setLastname("Muller");\r
+               collector.addTeamMember(secondCollector);\r
+               Person thirdCollector = Person.NewTitledInstance("Kohlbecker");\r
+               collector.addTeamMember(thirdCollector);\r
+               fieldObservation.setPrimaryCollector(primaryCollector);\r
 \r
                specimen.setAccessionNumber(accessionNumber);\r
                specimen.setCatalogNumber(catalogNumber);\r
@@ -139,6 +151,7 @@ public class DerivedUnitFacadeCacheStrategyTest {
                specimen.setCollectorsNumber(collectorsNumber);\r
                specimen.setCollection(collection);\r
                specimen.setPreservation(preservationMethod);\r
+               specimen.setExsiccatum(exsiccatum);\r
 \r
                specimenFacade = DerivedUnitFacade.NewInstance(specimen);\r
 \r
@@ -165,7 +178,7 @@ public class DerivedUnitFacadeCacheStrategyTest {
         */\r
        @Test\r
        public void testGetTitleCache() {\r
-               String correctCache = "Germany, Berlin-Dahlem, E side of Englerallee, alt. 40 m, 10\u00B034'1\"N, 12\u00B018'E (WGS84), sand dunes, 05.05.2005 (B 8909756); flowers blue.";\r
+               String correctCache = "Germany, Berlin-Dahlem, E side of Englerallee, alt. 40 m, 10\u00B034'1\"N, 12\u00B018'E (WGS84), sand dunes, 05.05.2005, Kilian 5678, A. Muller & Kohlbecker; Greuter, Pl. Dahlem. 456 (B 8909756); flowers blue.";\r
                specimenFacade.setEcology(ecology);\r
                specimenFacade.setPlantDescription(plantDescription);\r
                collection.setCode("B");\r
index a5371b2981cc8a53e5ea36751450f5804b416325..724ec7f7b83836b1230fc4072154d40e5d797dcf 100644 (file)
@@ -46,7 +46,7 @@ import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 /**\r
@@ -871,7 +871,7 @@ public class DerivedUnitFacadeTest {
        @Test\r
        public void testAddGetRemoveSource(){\r
                Assert.assertEquals("No sources should exist yet", 0, specimenFacade.getSources().size());\r
-           ReferenceBase reference = ReferenceFactory.newBook();\r
+           Reference reference = ReferenceFactory.newBook();\r
                IdentifiableSource source1 = specimenFacade.addSource(reference, "54", "myName");\r
                Assert.assertEquals("One source should exist now", 1, specimenFacade.getSources().size());\r
                IdentifiableSource source2 = IdentifiableSource.NewInstance("1", "myTable");\r
@@ -879,7 +879,7 @@ public class DerivedUnitFacadeTest {
                Assert.assertEquals("One source should exist now", 2, specimenFacade.getSources().size());\r
                specimenFacade.removeSource(source1);\r
                Assert.assertEquals("One source should exist now", 1, specimenFacade.getSources().size());\r
-               ReferenceBase reference2 = ReferenceFactory.newJournal();\r
+               Reference reference2 = ReferenceFactory.newJournal();\r
                IdentifiableSource sourceNotUsed = specimenFacade.addSource(reference2, null, null);\r
                specimenFacade.removeSource(sourceNotUsed);     \r
                Assert.assertEquals("One source should still exist", 1, specimenFacade.getSources().size());\r
diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImplTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImplTest.java
new file mode 100644 (file)
index 0000000..7da16c0
--- /dev/null
@@ -0,0 +1,216 @@
+// $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.api.service;
+
+import junit.framework.Assert;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.unitils.spring.annotation.SpringBeanByType;
+
+import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
+
+/**
+ * @author n.hoffmann
+ * @created Sep 22, 2009
+ * @version 1.0
+ */
+public class ClassificationServiceImplTest extends CdmIntegrationTest{
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(ClassificationServiceImplTest.class);
+
+       @SpringBeanByType
+       IClassificationService service;
+       
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setTaxonNodeComparator(eu.etaxonomy.cdm.api.service.ITaxonNodeComparator)}.
+        */
+       @Test
+       public final void testSetTaxonNodeComparator() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)}.
+        */
+       @Test
+       public final void testLoadTaxonNodeByTaxon() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
+        */
+       @Test
+       public final void testLoadTaxonNode() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
+        */
+       @Test
+       public final void testLoadRankSpecificRootNodes() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTreeBranch(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
+        */
+       @Test
+       public final void testLoadTreeBranch() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
+        */
+       @Test
+       public final void testLoadTreeBranchToTaxon() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadChildNodesOfTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
+        */
+       @Test
+       public final void testLoadChildNodesOfTaxonNode() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List)}.
+        */
+       @Test
+       public final void testLoadChildNodesOfTaxon() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTaxonNodeByUuid(java.util.UUID)}.
+        */
+       @Test
+       public final void testGetTaxonNodeByUuid() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTreeNodeByUuid(java.util.UUID)}.
+        */
+       @Test
+       public final void testGetTreeNodeByUuid() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#listClassifications(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)}.
+        */
+       @Test
+       public final void testListClassifications() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getClassificationByUuid(java.util.UUID)}.
+        */
+       @Test
+       public final void testGetClassificationByUuid() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
+        */
+       @Test
+       public final void testRemoveTaxonNode() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
+        */
+       @Test
+       public final void testRemoveTreeNode() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
+        */
+       @Test
+       public final void testSaveTaxonNode() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTaxonNodeAll(java.util.Collection)}.
+        */
+       @Test
+       public final void testSaveTaxonNodeAll() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
+        */
+       @Test
+       public final void testSaveTreeNode() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(eu.etaxonomy.cdm.model.taxon.Classification)}.
+        */
+       @Test
+       public final void testGetTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getUuidAndTitleCache()}.
+        */
+       @Test
+       public final void testGetUuidAndTitleCache() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])}.
+        */
+       @Test
+       public final void testGetAllMediaForChildNodesTaxonNodeListOfStringIntIntIntStringArray() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, int, int, int, java.lang.String[])}.
+        */
+       @Test
+       public final void testGetAllMediaForChildNodesTaxonClassificationListOfStringIntIntIntStringArray() {
+//             fail("Not yet implemented");
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setDao(eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao)}.
+        */
+       @Test
+       public final void testSetDaoIClassificationDao() {
+               Assert.assertNotNull(service);
+       }
+
+       /**
+        * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#generateTitleCache()}.
+        */
+       @Test
+       public final void testGenerateTitleCache() {
+//             fail("Not yet implemented");
+       }
+}
index 9bcb8f1dca09296e6c05140b2dbfcea0e39a4cf7..e223547e4611ac772eb935de46bbbf06a7e0a937 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
@@ -79,7 +79,7 @@ public class CommonServiceImplTest extends CdmIntegrationTest {
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
                BotanicalName name = BotanicalName.NewInstance(Rank.SPECIES());\r
                name.setTitleCache("A name", true);\r
-               ReferenceBase ref1 = refFactory.newArticle();\r
+               Reference ref1 = refFactory.newArticle();\r
                Taxon taxon = Taxon.NewInstance(name, ref1);\r
                Person author = Person.NewInstance();\r
                author.setTitleCache("Author", true);\r
@@ -91,7 +91,7 @@ public class CommonServiceImplTest extends CdmIntegrationTest {
                \r
                taxonService.save(taxon);\r
 //             UUID uuid = UUID.fromString("613980ac-9bd5-43b9-a374-d71e1794688f");\r
-//             ReferenceBase ref1 = referenceService.findByUuid(uuid);\r
+//             Reference ref1 = referenceService.findByUuid(uuid);\r
                \r
        \r
                Set<CdmBase> referencedObjects = service.getReferencingObjects(ref1);\r
index 056b83b3455f4f0ea31cbf8a75fd6bb18040b36d..fef40782c59ea40d07a00ad4d9fc42bba30579da 100644 (file)
@@ -51,8 +51,9 @@ public class IdentifiableServiceBaseTest extends CdmTransactionalIntegrationTest
                Class clazz = TaxonNameBase.class;\r
                int stepSize = 2;\r
                nameService.updateTitleCache(clazz, stepSize, null);\r
-               \r
+\r
 //             TaxonNameBase name = nameService.find(UUID.fromString("5d74500b-9fd5-4d18-b9cd-cc1c8a372fec"));\r
+//             System.out.println(name.getRank().getLabel());\r
 //             setComplete();\r
 //             endTransaction();\r
 //             try {\r
index a51ec0672d1cfcbde2e30ab542b6e545e5a05ce7..2f410ac1eebbf14b0ab16c9a0a8e22938e87e7e6 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
 import eu.etaxonomy.cdm.api.service.NaturalLanguageGenerator;
index 0f4dace89645eab36ee20f31238be01d3130be60..983723f2b867cb4e52ae615442ea1480eca9a8a6 100644 (file)
@@ -97,7 +97,7 @@ public class TaxonServiceImplTest extends CdmIntegrationTest {
 \r
        /**\r
         * Test method for\r
-        * {@link eu.etaxonomy.cdm.api.service.TaxonServiceImpl#searchTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.ReferenceBase)}\r
+        * {@link eu.etaxonomy.cdm.api.service.TaxonServiceImpl#searchTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.Reference)}\r
         * .\r
         */\r
        @Test\r
@@ -107,7 +107,7 @@ public class TaxonServiceImplTest extends CdmIntegrationTest {
 \r
        /**\r
         * Test method for\r
-        * {@link eu.etaxonomy.cdm.api.service.TaxonServiceImpl#getRootTaxa(eu.etaxonomy.cdm.model.reference.ReferenceBase)}\r
+        * {@link eu.etaxonomy.cdm.api.service.TaxonServiceImpl#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference)}\r
         * .\r
         */\r
        @Test\r
diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImplTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonTreeServiceImplTest.java
deleted file mode 100644 (file)
index e20e80d..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-// $Id$
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
-* http://www.e-taxonomy.eu
-* 
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.cdm.api.service;
-
-import static org.junit.Assert.fail;
-import junit.framework.Assert;
-
-import org.apache.log4j.Logger;
-import org.junit.Test;
-import org.unitils.spring.annotation.SpringBeanByType;
-
-import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
-
-/**
- * @author n.hoffmann
- * @created Sep 22, 2009
- * @version 1.0
- */
-public class TaxonTreeServiceImplTest extends CdmIntegrationTest{
-       private static final Logger logger = Logger
-                       .getLogger(TaxonTreeServiceImplTest.class);
-
-       @SpringBeanByType
-       ITaxonTreeService service;
-       
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#setTaxonNodeComparator(eu.etaxonomy.cdm.api.service.ITaxonNodeComparator)}.
-        */
-       @Test
-       public final void testSetTaxonNodeComparator() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)}.
-        */
-       @Test
-       public final void testLoadTaxonNodeByTaxon() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
-        */
-       @Test
-       public final void testLoadTaxonNode() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.TaxonomicTree, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
-        */
-       @Test
-       public final void testLoadRankSpecificRootNodes() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadTreeBranch(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
-        */
-       @Test
-       public final void testLoadTreeBranch() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
-        */
-       @Test
-       public final void testLoadTreeBranchToTaxon() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadChildNodesOfTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
-        */
-       @Test
-       public final void testLoadChildNodesOfTaxonNode() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, java.util.List)}.
-        */
-       @Test
-       public final void testLoadChildNodesOfTaxon() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getTaxonNodeByUuid(java.util.UUID)}.
-        */
-       @Test
-       public final void testGetTaxonNodeByUuid() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getTreeNodeByUuid(java.util.UUID)}.
-        */
-       @Test
-       public final void testGetTreeNodeByUuid() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#listTaxonomicTrees(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)}.
-        */
-       @Test
-       public final void testListTaxonomicTrees() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getTaxonomicTreeByUuid(java.util.UUID)}.
-        */
-       @Test
-       public final void testGetTaxonomicTreeByUuid() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
-        */
-       @Test
-       public final void testRemoveTaxonNode() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
-        */
-       @Test
-       public final void testRemoveTreeNode() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
-        */
-       @Test
-       public final void testSaveTaxonNode() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#saveTaxonNodeAll(java.util.Collection)}.
-        */
-       @Test
-       public final void testSaveTaxonNodeAll() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
-        */
-       @Test
-       public final void testSaveTreeNode() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(eu.etaxonomy.cdm.model.taxon.TaxonomicTree)}.
-        */
-       @Test
-       public final void testGetTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getUuidAndTitleCache()}.
-        */
-       @Test
-       public final void testGetUuidAndTitleCache() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])}.
-        */
-       @Test
-       public final void testGetAllMediaForChildNodesTaxonNodeListOfStringIntIntIntStringArray() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonomicTree, java.util.List, int, int, int, java.lang.String[])}.
-        */
-       @Test
-       public final void testGetAllMediaForChildNodesTaxonTaxonomicTreeListOfStringIntIntIntStringArray() {
-//             fail("Not yet implemented");
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#setDao(eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonomicTreeDao)}.
-        */
-       @Test
-       public final void testSetDaoITaxonomicTreeDao() {
-               Assert.assertNotNull(service);
-       }
-
-       /**
-        * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonTreeServiceImpl#generateTitleCache()}.
-        */
-       @Test
-       public final void testGenerateTitleCache() {
-//             fail("Not yet implemented");
-       }
-}
index 210d88613a7076889c0c4fe7b1c5c8076a2c54f5..7ea925755ce41ba8a3c051570b77c9dc9aa39d6c 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
@@ -199,7 +199,7 @@ public class Datasource {
                        name.setNameCache(nameCache);\r
                        name.setTitleCache(nameCache, true);\r
                        ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
-                       ReferenceBase ref = refFactory.newGeneric();\r
+                       Reference ref = refFactory.newGeneric();\r
                        ref.setTitleCache("mySec", true);\r
                        Taxon taxon = Taxon.NewInstance(name, ref);\r
                        TaxonDescription description = TaxonDescription.NewInstance();\r
index 2c06cd54ddc4ea308cdfac603c5041b54997daf6..ccbc607bb34a6f53fe8a81ee83a4b5b7364107ba 100644 (file)
@@ -43,7 +43,7 @@ import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
@@ -336,10 +336,10 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                TaxonBase taxonBase2 = taxonService.find(taxonUuid1);
                
                conversationHolder1.bind();
-               ReferenceBase reference1 = referenceService.find(referenceUuid1);
+               Reference reference1 = referenceService.find(referenceUuid1);
                assertSame("This should be the sec", taxonBase1.getSec(), reference1);
                
-               ReferenceBase reference2 = referenceService.find(referenceUuid2);
+               Reference reference2 = referenceService.find(referenceUuid2);
                taxonBase1.setSec(reference2);          
                taxonService.save(taxonBase1);
                conversationHolder1.commit();
@@ -366,7 +366,7 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                // get a taxon
                TaxonBase taxonBase = taxonService.find(taxonUuid1);
                // get a reference
-               ReferenceBase reference = referenceService.find(referenceUuid2);
+               Reference reference = referenceService.find(referenceUuid2);
                // make sure 
                assertNotSame("this reference should not be the taxons sec.", taxonBase.getSec(), reference);
                // set the reference as the taxons new sec
@@ -382,7 +382,7 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                // load the same taxon in a different session
                TaxonBase taxonBaseInSecondTransaction = taxonService.find(taxonUuid1);
                // load the reference
-               ReferenceBase referenceInSecondTransaction = referenceService.find(referenceUuid2);
+               Reference referenceInSecondTransaction = referenceService.find(referenceUuid2);
                // we assume that
                assertSame("The reference should be the sec now.", taxonBaseInSecondTransaction.getSec(), referenceInSecondTransaction);
                assertNotSame("The reference should not be the same object as in first transaction.", reference, referenceInSecondTransaction);         
@@ -400,7 +400,7 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                // get a taxon
                TaxonBase taxonBase = taxonService.find(taxonUuid1);
                // get a reference
-               ReferenceBase reference = referenceService.find(referenceUuid2);
+               Reference reference = referenceService.find(referenceUuid2);
                // make sure 
                assertNotSame("this reference should not be the taxons sec.", taxonBase.getSec(), reference);
                // set the reference as the taxons new sec
@@ -416,7 +416,7 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                // load the same taxon in a different session
                TaxonBase taxonBaseInSecondTransaction = taxonService.find(taxonUuid1);
                // load the reference
-               ReferenceBase referenceInSecondTransaction = referenceService.find(referenceUuid2);
+               Reference referenceInSecondTransaction = referenceService.find(referenceUuid2);
                // we assume that
                assertSame("The reference should be the sec now.", taxonBaseInSecondTransaction.getSec(), referenceInSecondTransaction);
                assertNotSame("The reference should not be the same object as in first transaction.", reference, referenceInSecondTransaction);         
@@ -435,7 +435,7 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                // get a taxon
                TaxonBase taxonBase = taxonService.find(taxonUuid1);
                // get a reference
-               ReferenceBase reference = referenceService.find(referenceUuid2);
+               Reference reference = referenceService.find(referenceUuid2);
                // make sure 
                assertTrue(! taxonBase.getSec().equals(reference));
                assertNotSame("this reference should not be the taxons sec.", taxonBase.getSec(), reference);
@@ -522,7 +522,7 @@ public class TestConcurrentSession extends CdmIntegrationTest{
                conversationHolder1.bind();
                conversationHolder1.startTransaction();
                TaxonBase taxonBase1 = taxonService.find(taxonUuid1);
-               ReferenceBase reference = referenceService.find(referenceUuid2);
+               Reference reference = referenceService.find(referenceUuid2);
                taxonBase1.setSec(reference);
                taxonService.save(taxonBase1);
                conversationHolder1.commit();
index 7ab4927208c9d6e390444585c81f9af9317c893b..0321bc8e4b725d354146f5bb0a099db3ad784503 100644 (file)
@@ -50,7 +50,7 @@ import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
@@ -105,7 +105,7 @@ public class TestDatabase {
 //                     Taxon taxon2 = Taxon.NewInstance(botanicalName2, null);\r
 //             botanicalName.getTitleCache();\r
                \r
-               Taxon taxon1 = Taxon.NewInstance(botanicalName,(ReferenceBase)journal);\r
+               Taxon taxon1 = Taxon.NewInstance(botanicalName,(Reference)journal);\r
                appCtr.getTaxonService().save(taxon1);\r
                BotanicalName homotypName = BotanicalName.NewInstance(Rank.SUBGENUS(), botanicalName.getHomotypicalGroup());\r
                homotypName.setGenusOrUninomial("Subgenus");\r
@@ -145,7 +145,7 @@ public class TestDatabase {
                IJournal journal = refFactory.newJournal();\r
                journal.setTitleCache("Afro+Doc", true);\r
                \r
-               Taxon taxon = Taxon.NewInstance(botanicalName,(ReferenceBase)journal);\r
+               Taxon taxon = Taxon.NewInstance(botanicalName,(Reference)journal);\r
                appCtr.getTaxonService().save(taxon);\r
                \r
                TaxonDescription taxonDescription = TaxonDescription.NewInstance();\r
index 1598dcf4fd7c2fd78445e040c4a61ae236f16b99..b418f08e0245883a6d751d8b0aadd7e06d5108c1 100644 (file)
@@ -36,7 +36,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -62,7 +62,7 @@ public class TestService {
                \r
                logger.info("Create reference objects...");\r
                \r
-               ReferenceBase sec = refFactory.newJournal();\r
+               Reference sec = refFactory.newJournal();\r
                sec.setTitleCache("TestJournal", true);\r
                \r
                logger.info("Create taxon objects...");\r
@@ -112,7 +112,7 @@ public class TestService {
                List<Taxon> taxa = appCtr.getTaxonService().getRootTaxa(null, CdmFetch.NO_FETCH(), false);\r
                for (Taxon rt: taxa){\r
                        logger.info("Root taxon: "+ rt.toString());\r
-                       for (Taxon child: rt){\r
+                       for (Taxon child: rt.getTaxonomicChildren()){\r
                                logger.info("Child: "+ child.toString());\r
                                logger.info("  Child.higherTaxon: "+ child.getTaxonomicParent().toString());\r
                                for (Synonym synonym: child.getSynonyms()){\r
@@ -139,7 +139,7 @@ public class TestService {
        public void testDeleteTaxa(){\r
                ITaxonService taxonService = (ITaxonService)appCtr.getTaxonService();\r
                TaxonNameBase<?,?> taxonName = BotanicalName.NewInstance(Rank.SPECIES());\r
-               ReferenceBase ref = refFactory.newJournal();\r
+               Reference ref = refFactory.newJournal();\r
                Taxon taxon1 = Taxon.NewInstance(taxonName, ref);\r
                Taxon taxon2 = Taxon.NewInstance(taxonName, null);\r
                logger.info("Save taxon ...");\r
@@ -177,7 +177,7 @@ public class TestService {
        public void testDeleteRelationship(){\r
                ITaxonService taxonService = (ITaxonService)appCtr.getTaxonService();\r
                TaxonNameBase<?,?> taxonName = BotanicalName.NewInstance(Rank.SPECIES());\r
-               ReferenceBase ref = refFactory.newJournal();\r
+               Reference ref = refFactory.newJournal();\r
                Taxon parent = Taxon.NewInstance(taxonName, ref);\r
                Taxon child = Taxon.NewInstance(taxonName, null);\r
                parent.addTaxonomicChild(child, null, null);\r
@@ -201,7 +201,7 @@ public class TestService {
        public void testTransientRank(){\r
                ITaxonService taxonService = (ITaxonService)appCtr.getTaxonService();\r
                TaxonNameBase<?,?> taxonName = BotanicalName.NewInstance(transientRank);\r
-               ReferenceBase ref =  refFactory.newJournal();\r
+               Reference ref =  refFactory.newJournal();\r
                Taxon taxon = Taxon.NewInstance(taxonName, ref);\r
                \r
                logger.info("Save taxon ...");\r
index 82a09e8807ff35d3af404779e522d881f33d4e60..d1794e82cd218c380e7111fca08d8953a2ca6b1e 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
@@ -56,7 +56,7 @@ public class TestTaxonFunction {
                \r
                INonViralNameParser parser = NonViralNameParserImpl.NewInstance();\r
                ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
-               ReferenceBase sec = refFactory.newBook();\r
+               Reference sec = refFactory.newBook();\r
                sec.setTitleCache("ConceptRef", true);\r
                \r
                //root\r
@@ -102,7 +102,7 @@ public class TestTaxonFunction {
                        initDatabase();\r
                }\r
                CdmApplicationController cdmApp = getCdmApplicationController("defaultMySql", DbSchemaValidation.VALIDATE);\r
-               ReferenceBase sec = cdmApp.getReferenceService().find(getRefUuid());\r
+               Reference sec = cdmApp.getReferenceService().find(getRefUuid());\r
                List<Taxon> rootList = cdmApp.getTaxonService().getRootTaxa(sec, CdmFetch.NO_FETCH(), false);\r
                for (Taxon taxon:rootList){\r
                        System.out.println(taxon);\r
index e8dea528fb706b96357175135792b7bfe946a84c..0de6d7bb0cd3136ba60827177d3e9e82a2434495 100644 (file)
       <mapping class="eu.etaxonomy.cdm.model.reference.PrintedUnitBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.PrintSeries"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Proceedings"/>\r
-      <mapping class="eu.etaxonomy.cdm.model.reference.ReferenceBase"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.reference.Reference"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.Report"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.SectionBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.reference.StrictReferenceBase"/>\r
index 728a5d80a02a4c33465c7f1cd45234a6d3bc79cb..b7ab25eff1d37a7c71d57a07560bed5394123ebc 100644 (file)
@@ -71,7 +71,7 @@ public class TestTaxonServices {
 //             Taxon newAcceptedTaxon = (Taxon)appCtr.getTaxonService().find(UUID.fromString("0b423190-fcca-4228-86a9-77974477f160"));\r
 //             SynonymRelationshipType synonymType = SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF();\r
 //\r
-//             ReferenceBase citation;\r
+//             Reference citation;\r
 //             ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
 //             citation = refFactory.newBook();\r
 //             AgentBase linne = appCtr.getAgentService().find(UUID.fromString("f6272e48-5b4e-40c1-b4e9-ee32334fa19f"));\r
index bdeab252b6ac05aa0485c519d02a869f4070eb99..d36e3fa3547e0813c6c2f4c9ada386aed8ad3b75 100644 (file)
@@ -43,7 +43,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 \r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
 \r
index 0672fcff4565b1d6659add27432ad5f748b28dd9..106fe5054af6cd25c8086ac87446de1533aa4007 100644 (file)
@@ -44,7 +44,7 @@ import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
 import eu.etaxonomy.cdm.model.reference.IBook;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
index 9815fd3232cf206e521365bc0a2489b3170f2b7b..73a1be516034ee08ca18ef40bcd129de1b4973b7 100644 (file)
@@ -9,13 +9,9 @@
 \r
 package eu.etaxonomy.cdm.validation;\r
 \r
-import static org.junit.Assert.assertEquals;\r
-import static org.junit.Assert.assertFalse;\r
-import static org.junit.Assert.assertNotNull;\r
 import static org.junit.Assert.assertTrue;\r
 \r
 import java.util.Set;\r
-import java.util.UUID;\r
 \r
 import javax.validation.ConstraintViolation;\r
 import javax.validation.Validator;\r
@@ -23,18 +19,15 @@ import javax.validation.Validator;
 import org.apache.log4j.Logger;\r
 import org.junit.Before;\r
 import org.junit.Ignore;\r
-\r
 import org.junit.Test;\r
-\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
 \r
 /**\r
@@ -59,8 +52,8 @@ public class TaxonNameCannotBeAcceptedAndSynonymTest extends CdmIntegrationTest
     private Taxon taxon1;\r
     private Taxon taxon2;\r
     private Synonym synonym;\r
-    private Generic sec1;\r
-    private Generic sec2;\r
+    private Reference sec1;\r
+    private Reference sec2;\r
        \r
        @Before\r
        public void setUp() {\r
@@ -68,8 +61,8 @@ public class TaxonNameCannotBeAcceptedAndSynonymTest extends CdmIntegrationTest
                name2 = BotanicalName.NewInstance(Rank.SPECIES());\r
                name3 = BotanicalName.NewInstance(Rank.SPECIES());\r
                \r
-               sec1 = Generic.NewInstance();\r
-               sec2 = Generic.NewInstance();\r
+               sec1 = ReferenceFactory.newGeneric();\r
+               sec2 = ReferenceFactory.newGeneric();\r
                \r
                taxon1 = Taxon.NewInstance(name1, sec1);\r
                taxon1.setTitleCache("Aus aus", true);\r
index ec1bc0e62f243b7b9beb24a5a6f917d0106cb2db..2ab82fd29175b47445f7e05e0894ee88914cb314 100644 (file)
@@ -43,7 +43,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 \r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
 \r
index 0dac6c110da00f909858b9a822b7bf26e6887bba..5953e73862042fc7efb0639145369aa6e5ac2a8d 100644 (file)
         imagegallery bit not null,
         createdby_id integer,
         updatedby_id integer,
-        taxon_fk integer,
-        taxonName_fk integer,
+        taxon_id integer,
+        taxonName_id integer,
         primary key (id),
         unique (uuid)
     );
         imagegallery bit,
         createdby_id integer,
         updatedby_id integer,
-        taxon_fk integer,
-        taxonName_fk integer,
+        taxon_id integer,
+        taxonName_id integer,
         primary key (id, REV)
     );
 
         updated timestamp,
         createdby_id integer,
         updatedby_id integer,
+        featureTree_id integer not null,
         feature_id integer,
-        parent_fk integer,
-        taxon_id integer,
+        parent_id integer,
         primary key (id),
         unique (uuid)
     );
         updated timestamp,
         createdby_id integer,
         updatedby_id integer,
+        featureTree_id integer not null,
         feature_id integer,
-        parent_fk integer,
-        taxon_id integer,
+        parent_id integer,
         primary key (id, REV)
     );
 
         primary key (REV, FeatureNode_id, onlyapplicableif_id)
     );
 
-    create table FeatureNode_Representation (
-        FeatureNode_id integer not null,
-        questions_id integer not null,
-        primary key (FeatureNode_id, questions_id),
-        unique (questions_id)
-    );
-
-    create table FeatureNode_Representation_AUD (
-        REV integer not null,
-        FeatureNode_id integer not null,
-        questions_id integer not null,
-        revtype tinyint,
-        primary key (REV, FeatureNode_id, questions_id)
-    );
-
     create table FeatureTree (
         id integer not null,
         created timestamp,
         primary key (id),
         unique (uuid, authority)
     );
+               
+       create table hibernate_sequences (
+               sequence_name varchar(255),
+               next_val integer,
+               primary key (sequence_name)
+       );
 
     create table HomotypicalGroup (
         id integer not null,
         person_id integer,
         primary key (id, REV)
     );
+    
+              \r
+    create table KeyStatement (\r
+        id integer not null,\r
+        created timestamp,\r
+        uuid varchar(36),\r
+        updated timestamp,\r
+        createdby_id integer,\r
+        updatedby_id integer,\r
+        primary key (id),\r
+        unique (uuid)\r
+    );\r
+    \r
+    create table KeyStatement_AUD (\r
+        id integer not null,\r
+        REV integer not null,\r
+        revtype tinyint,\r
+        created timestamp,\r
+        uuid varchar(36),\r
+        updated timestamp,\r
+        createdby_id integer,\r
+        updatedby_id integer,\r
+        primary key (id, REV)\r
+      );\r
+      \r
+     create table KeyStatement_LanguageString (\r
+        keyStatement_id integer not null,\r
+        label_id integer not null,\r
+        label_mapkey_id integer not null,\r
+        primary key (keyStatement_id, label_mapkey_id),\r
+        unique (label_id)\r
+    );\r
+\r
+    create table KeyStatement_LanguageString_AUD (\r
+        REV integer not null,\r
+        keyStatement_id integer not null,\r
+        label_id integer not null,\r
+        label_mapkey_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, keyStatement_id, label_id, label_mapkey_id)\r
+    );\r
+
 
     create table LSIDAuthority (
         id integer not null,
     );
 
     create table MediaKey_Taxon (
-        mediaKey_fk integer not null,
-        taxon_fk integer not null,
-        primary key (mediaKey_fk, taxon_fk)
+        mediaKey_id integer not null,
+        taxon_id integer not null,
+        primary key (mediaKey_id, taxon_id)
     );
 
     create table MediaKey_Taxon_AUD (
         REV integer not null,
-        mediaKey_fk integer not null,
-        taxon_fk integer not null,
+        mediaKey_id integer not null,
+        taxon_id integer not null,
         revtype tinyint,
-        primary key (REV, mediaKey_fk, taxon_fk)
+        primary key (REV, mediaKey_id, taxon_id)
     );
 
     create table MediaRepresentation (
         grantedauthorities_id integer not null,
         primary key (PermissionGroup_id, grantedauthorities_id)
     );
+    
+    \r
+   create table PolytomousKey (\r
+               id integer not null,\r
+        created timestamp,\r
+        uuid varchar(36),\r
+        updated timestamp,\r
+        lsid_authority varchar(255),\r
+        lsid_lsid varchar(255),\r
+        lsid_namespace varchar(255),\r
+        lsid_object varchar(255),\r
+        lsid_revision varchar(255),\r
+        protectedtitlecache bit not null,\r
+        titleCache varchar(255),\r
+        uri varchar(255),\r
+        createdby_id integer,\r
+        updatedby_id integer,\r
+        root_id integer,\r
+        primary key (id),\r
+        unique (uuid)\r
+    );\r
+\r
+   create table PolytomousKey_AUD (\r
+               id integer not null,\r
+        REV integer not null,\r
+        revtype tinyint,\r
+        created timestamp,\r
+        uuid varchar(36),\r
+        updated timestamp,\r
+        lsid_authority varchar(255),\r
+        lsid_lsid varchar(255),\r
+        lsid_namespace varchar(255),\r
+        lsid_object varchar(255),\r
+        lsid_revision varchar(255),\r
+        protectedtitlecache bit not null,\r
+        titleCache varchar(255),\r
+        uri varchar(255),\r
+        createdby_id integer,\r
+        updatedby_id integer,\r
+        root_id integer,\r
+        primary key (id, REV)\r
+    );\r
+\r
+    create table PolytomousKey_Annotation (\r
+        PolytomousKey_id integer not null,\r
+        annotations_id integer not null,\r
+        primary key (PolytomousKey_id, annotations_id),\r
+        unique (annotations_id)\r
+    );\r
+\r
+    create table PolytomousKey_Annotation_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        annotations_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, annotations_id)\r
+    );\r
+\r
+    create table PolytomousKey_Credit (\r
+        PolytomousKey_id integer not null,\r
+        credits_id integer not null,\r
+        sortIndex integer not null,\r
+        primary key (PolytomousKey_id, sortIndex),\r
+        unique (credits_id)\r
+    );\r
+\r
+    create table PolytomousKey_Credit_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        credits_id integer not null,\r
+        sortIndex integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, credits_id, sortIndex)\r
+    );\r
+\r
+    create table PolytomousKey_Extension (\r
+        PolytomousKey_id integer not null,\r
+        extensions_id integer not null,\r
+        primary key (PolytomousKey_id, extensions_id),\r
+        unique (extensions_id)\r
+    );\r
+\r
+    create table PolytomousKey_Extension_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        extensions_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, extensions_id)\r
+    );\r
+\r
+    create table PolytomousKey_Marker (\r
+        PolytomousKey_id integer not null,\r
+        markers_id integer not null,\r
+        primary key (PolytomousKey_id, markers_id),\r
+        unique (markers_id)\r
+    );\r
+\r
+    create table PolytomousKey_Marker_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        markers_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, markers_id)\r
+    );\r
+\r
+    create table PolytomousKey_NamedArea (\r
+        PolytomousKey_id integer not null,\r
+        geographicalscope_id integer not null,\r
+        primary key (PolytomousKey_id, geographicalscope_id)\r
+    );\r
+\r
+    create table PolytomousKey_NamedArea_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        geographicalscope_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, geographicalscope_id)\r
+    );
+\r
+    create table PolytomousKey_OriginalSourceBase (\r
+        PolytomousKey_id integer not null,\r
+        sources_id integer not null,\r
+        primary key (PolytomousKey_id, sources_id),\r
+        unique (sources_id)\r
+    );\r
+\r
+    create table PolytomousKey_OriginalSourceBase_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        sources_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, sources_id)\r
+    );\r
+\r
+\r
+    create table PolytomousKey_Rights (\r
+        PolytomousKey_id integer not null,\r
+        rights_id integer not null,\r
+        primary key (PolytomousKey_id, rights_id),\r
+        unique (rights_id)\r
+    );\r
+\r
+    create table PolytomousKey_Rights_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        rights_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, rights_id)\r
+    );\r
+\r
+    create table PolytomousKey_Scope (\r
+        PolytomousKey_id integer not null,\r
+        scoperestrictions_id integer not null,\r
+        primary key (PolytomousKey_id, scoperestrictions_id)\r
+    );\r
+\r
+    create table PolytomousKey_Scope_AUD (\r
+        REV integer not null,\r
+        PolytomousKey_id integer not null,\r
+        scoperestrictions_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, PolytomousKey_id, scoperestrictions_id)\r
+    );\r
+\r
+    create table PolytomousKey_Taxon (\r
+        polytomousKey_id integer not null,\r
+        taxon_id integer not null,\r
+        primary key (polytomousKey_id, taxon_id)\r
+    );\r
+\r
+    create table PolytomousKey_Taxon_AUD (\r
+        REV integer not null,\r
+        polytomousKey_id integer not null,\r
+        taxon_id integer not null,\r
+        revtype tinyint,\r
+        primary key (REV, polytomousKey_id, taxon_id)\r
+    );\r
+    \r
+        \r
+    create table PolytomousKeyNode (\r
+        id integer not null,\r
+        created timestamp,\r
+        uuid varchar(36),\r
+        updated timestamp,\r
+        nodenumber integer,\r
+       sortindex integer,\r
+        createdby_id integer,\r
+        updatedby_id integer,\r
+        key_id integer,\r
+        parent_id integer,\r
+        question_id integer,\r
+        statement_id integer,
+        feature_id integer,\r
+        taxon_id integer,\r
+        subkey_id integer,\r
+        othernode_id integer,\r
+        primary key (id),\r
+        unique (uuid)\r
+    );\r
+\r
+    create table PolytomousKeyNode_AUD (\r
+        id integer not null,\r
+        REV integer not null,\r
+        revtype tinyint,\r
+        created timestamp,\r
+        uuid varchar(36),\r
+        updated timestamp,\r
+        sortindex integer,\r
+        nodenumber integer,\r
+       createdby_id integer,\r
+        updatedby_id integer,\r
+        key_id integer,\r
+        parent_id integer,
+        question_id integer,\r
+        statement_id integer,\r
+        feature_id integer,
+        taxon_id integer,\r
+        subkey_id integer,\r
+        othernode_id integer,\r
+        primary key (id, REV)\r
+    );
+       \r
+    create table PolytomousKeyNode_PolytomousKeyNode_AUD(\r
+       id integer not null,\r
+        REV integer not null,\r
+        revtype tinyint,\r
+        parent_id integer, \r
+        sortIndex integer\r
+    )\r
 
     create table Reference (
         DTYPE varchar(31) not null,
         lifestage_id integer,
         sex_id integer,
         collection_id integer,
-        derivationevent_id integer,
+        exsiccatum varchar(255),\r
+       primarycollector_id integer,\r
+        derivedfrom_id integer,
         storedunder_id integer,
         preservation_id integer,
         gatheringevent_id integer,
         accessionnumber varchar(255),
         catalognumber varchar(255),
         collectorsnumber varchar(255),
+        exsiccatum varchar(255),\r
+       primarycollector_id integer,\r
         collection_id integer,
-        derivationevent_id integer,
+        derivedfrom_id integer,
         storedunder_id integer,
         preservation_id integer,
         fieldnotes varchar(255),
 
     create table SpecimenOrObservationBase_LanguageString (
         SpecimenOrObservationBase_id integer not null,
-        description_id integer not null,
-        description_mapkey_id integer not null,
-        primary key (SpecimenOrObservationBase_id, description_mapkey_id),
-        unique (description_id)
+        definition_id integer not null,
+        definition_mapkey_id integer not null,
+        primary key (SpecimenOrObservationBase_id, definition_mapkey_id),
+        unique (definition_id)
     );
 
     create table SpecimenOrObservationBase_LanguageString_AUD (
         REV integer not null,
         SpecimenOrObservationBase_id integer not null,
-        description_id integer not null,
-        description_mapkey_id integer not null,
+        definition_id integer not null,
+        definition_mapkey_id integer not null,
         revtype tinyint,
-        primary key (REV, SpecimenOrObservationBase_id, description_id, description_mapkey_id)
+        primary key (REV, SpecimenOrObservationBase_id, definition_id, definition_mapkey_id)
     );
-
+    
     create table SpecimenOrObservationBase_Marker (
         SpecimenOrObservationBase_id integer not null,
         markers_id integer not null,
         taxonomicchildrencount integer,
         createdby_id integer,
         updatedby_id integer,
-        taxonName_fk integer,
+        name_id integer,
         sec_id integer,
         taxonomicparentcache_id integer,
         primary key (id),
         usenamecache bit,
         createdby_id integer,
         updatedby_id integer,
-        taxonName_fk integer,
+        name_id integer,
         sec_id integer,
         taxonstatusunknown bit,
         unplaced bit,
         referenceforparentchildrelation_id integer,
         synonymtobeused_id integer,
         taxon_id integer,
-        taxonomictree_id integer,
+        classification_id integer,
         primary key (id),
         unique (uuid)
     );
         referenceforparentchildrelation_id integer,
         synonymtobeused_id integer,
         taxon_id integer,
-        taxonomictree_id integer,
+        classification_id integer,
         primary key (id, REV)
     );
 
         primary key (REV, TaxonRelationship_id, markers_id)
     );
 
-    create table TaxonomicTree (
+    create table Classification (
         id integer not null,
         created timestamp,
         uuid varchar(36),
         unique (uuid)
     );
 
-    create table TaxonomicTree_AUD (
+    create table Classification_AUD (
         id integer not null,
         REV integer not null,
         revtype tinyint,
         primary key (id, REV)
     );
 
-    create table TaxonomicTree_Annotation (
-        TaxonomicTree_id integer not null,
+    create table Classification_Annotation (
+        Classification_id integer not null,
         annotations_id integer not null,
-        primary key (TaxonomicTree_id, annotations_id),
+        primary key (Classification_id, annotations_id),
         unique (annotations_id)
     );
 
-    create table TaxonomicTree_Annotation_AUD (
+    create table Classification_Annotation_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         annotations_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, annotations_id)
+        primary key (REV, Classification_id, annotations_id)
     );
 
-    create table TaxonomicTree_Credit (
-        TaxonomicTree_id integer not null,
+    create table Classification_Credit (
+        Classification_id integer not null,
         credits_id integer not null,
         sortIndex integer not null,
-        primary key (TaxonomicTree_id, sortIndex),
+        primary key (Classification_id, sortIndex),
         unique (credits_id)
     );
 
-    create table TaxonomicTree_Credit_AUD (
+    create table Classification_Credit_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         credits_id integer not null,
         sortIndex integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, credits_id, sortIndex)
+        primary key (REV, Classification_id, credits_id, sortIndex)
     );
 
-    create table TaxonomicTree_Extension (
-        TaxonomicTree_id integer not null,
+    create table Classification_Extension (
+        Classification_id integer not null,
         extensions_id integer not null,
-        primary key (TaxonomicTree_id, extensions_id),
+        primary key (Classification_id, extensions_id),
         unique (extensions_id)
     );
 
-    create table TaxonomicTree_Extension_AUD (
+    create table Classification_Extension_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         extensions_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, extensions_id)
+        primary key (REV, Classification_id, extensions_id)
     );
 
-    create table TaxonomicTree_Marker (
-        TaxonomicTree_id integer not null,
+    create table Classification_Marker (
+        Classification_id integer not null,
         markers_id integer not null,
-        primary key (TaxonomicTree_id, markers_id),
+        primary key (Classification_id, markers_id),
         unique (markers_id)
     );
 
-    create table TaxonomicTree_Marker_AUD (
+    create table Classification_Marker_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         markers_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, markers_id)
+        primary key (REV, Classification_id, markers_id)
     );
 
-    create table TaxonomicTree_OriginalSourceBase (
-        TaxonomicTree_id integer not null,
+    create table Classification_OriginalSourceBase (
+        Classification_id integer not null,
         sources_id integer not null,
-        primary key (TaxonomicTree_id, sources_id),
+        primary key (Classification_id, sources_id),
         unique (sources_id)
     );
 
-    create table TaxonomicTree_OriginalSourceBase_AUD (
+    create table Classification_OriginalSourceBase_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         sources_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, sources_id)
+        primary key (REV, Classification_id, sources_id)
     );
 
-    create table TaxonomicTree_Rights (
-        TaxonomicTree_id integer not null,
+    create table Classification_Rights (
+        Classification_id integer not null,
         rights_id integer not null,
-        primary key (TaxonomicTree_id, rights_id),
+        primary key (Classification_id, rights_id),
         unique (rights_id)
     );
 
-    create table TaxonomicTree_Rights_AUD (
+    create table Classification_Rights_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         rights_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, rights_id)
+        primary key (REV, Classification_id, rights_id)
     );
 
-    create table TaxonomicTree_TaxonNode (
-        TaxonomicTree_id integer not null,
+    create table Classification_TaxonNode (
+        Classification_id integer not null,
         rootnodes_id integer not null,
-        primary key (TaxonomicTree_id, rootnodes_id),
+        primary key (Classification_id, rootnodes_id),
         unique (rootnodes_id)
     );
 
-    create table TaxonomicTree_TaxonNode_AUD (
+    create table Classification_TaxonNode_AUD (
         REV integer not null,
-        TaxonomicTree_id integer not null,
+        Classification_id integer not null,
         rootnodes_id integer not null,
         revtype tinyint,
-        primary key (REV, TaxonomicTree_id, rootnodes_id)
+        primary key (REV, Classification_id, rootnodes_id)
     );
 
     create table TermVocabulary (
 
     alter table DescriptionBase 
         add constraint FKFF4D58CDDE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table DescriptionBase 
         add constraint FKFF4D58CDDA93512F 
-        foreign key (taxonName_fk
+        foreign key (taxonName_id
         references TaxonNameBase;
 
     alter table DescriptionBase 
 
     alter table FeatureNode 
         add constraint FK4CEED9F8E0AD2C03 
-        foreign key (parent_fk
+        foreign key (parent_id
         references FeatureNode;
+\r
+    alter table FeatureNode \r
+        add constraint FK4CEED9F8DE9A3E39 \r
+        foreign key (featureTree_id) \r
+        references FeatureTree;
 
     alter table FeatureNode 
         add constraint FK4CEED9F84220AFEB 
         foreign key (feature_id) 
         references DefinedTermBase;
 
-    alter table FeatureNode 
-        add constraint FK4CEED9F8DE9A3E39 
-        foreign key (taxon_id) 
-        references TaxonBase;
-
     alter table FeatureNode 
         add constraint FK4CEED9F8BC5DA539 
         foreign key (updatedby_id) 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table FeatureNode_Representation 
-        add constraint FK98668A14ED54F5E0 
-        foreign key (questions_id) 
-        references Representation;
-
-    alter table FeatureNode_Representation 
-        add constraint FK98668A1452FCC4B 
-        foreign key (FeatureNode_id) 
-        references FeatureNode;
-
-    alter table FeatureNode_Representation_AUD 
-        add constraint FK8F578DE534869AAE 
-        foreign key (REV) 
-        references AuditEvent;
-
     alter table FeatureTree 
         add constraint FK4CF19F944FF2DB2C 
         foreign key (createdby_id) 
 
     alter table MediaKey_Taxon 
         add constraint FKC00C3966815C793 
-        foreign key (mediaKey_fk
+        foreign key (mediaKey_id
         references Media;
 
     alter table MediaKey_Taxon 
         add constraint FKC00C3966DE9A3DE3 
-        foreign key (taxon_fk
+        foreign key (taxon_id
         references TaxonBase;
 
     alter table MediaKey_Taxon_AUD 
 
     alter table SpecimenOrObservationBase 
         add constraint FK21CA32724AAB411A 
-        foreign key (derivationevent_id) 
+        foreign key (derivedfrom_id) 
         references DerivationEvent;
+        
+        
+    alter table SpecimenOrObservationBase 
+        add constraint FK11CB3232F75F225E 
+        foreign key (primarycollector_id) 
+        references AgentBase;
 
     alter table SpecimenOrObservationBase 
         add constraint FK21CA3272F95F225A 
 
     alter table SpecimenOrObservationBase_LanguageString 
         add constraint FKCFAA931628459272 
-        foreign key (description_mapkey_id) 
+        foreign key (definition_mapkey_id) 
         references DefinedTermBase;
 
     alter table SpecimenOrObservationBase_LanguageString 
         add constraint FKCFAA93162BEBA58D 
-        foreign key (description_id) 
+        foreign key (definition_id) 
         references LanguageString;
 
     alter table SpecimenOrObservationBase_LanguageString 
 
     alter table TaxonBase 
         add constraint FK9249B49BDA93512F 
-        foreign key (taxonName_fk
+        foreign key (name_id
         references TaxonNameBase;
 
     alter table TaxonBase 
 
     alter table TaxonNode 
         add constraint FK924F5BCC759FE399 
-        foreign key (taxonomictree_id) 
-        references TaxonomicTree;
+        foreign key (classification_id) 
+        references Classification;
 
     alter table TaxonNode 
         add constraint FK924F5BCCDE9A3E39 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE04FF2DB2C 
         foreign key (createdby_id) 
         references UserAccount;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE0765B124B 
         foreign key (reference_id) 
         references Reference;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE077E2F09E 
         foreign key (name_id) 
         references LanguageString;
 
-    alter table TaxonomicTree 
+    alter table Classification 
         add constraint FKE332DBE0BC5DA539 
         foreign key (updatedby_id) 
         references UserAccount;
 
-    alter table TaxonomicTree_AUD 
+    alter table Classification_AUD 
         add constraint FK14CE19B134869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Annotation 
+    alter table Classification_Annotation 
         add constraint FK9877150E759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Annotation 
+    alter table Classification_Annotation 
         add constraint FK9877150E1E403E0B 
         foreign key (annotations_id) 
         references Annotation;
 
-    alter table TaxonomicTree_Annotation_AUD 
+    alter table Classification_Annotation_AUD 
         add constraint FKADD60BDF34869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Credit 
+    alter table Classification_Credit 
         add constraint FK21329C58759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Credit 
+    alter table Classification_Credit 
         add constraint FK21329C5832D1B9F 
         foreign key (credits_id) 
         references Credit;
 
-    alter table TaxonomicTree_Credit_AUD 
+    alter table Classification_Credit_AUD 
         add constraint FKD388DE2934869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Extension 
+    alter table Classification_Extension 
         add constraint FKF3E9BA80759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Extension 
+    alter table Classification_Extension 
         add constraint FKF3E9BA80927DE9DF 
         foreign key (extensions_id) 
         references Extension;
 
-    alter table TaxonomicTree_Extension_AUD 
+    alter table Classification_Extension_AUD 
         add constraint FK1BB4A85134869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Marker 
+    alter table Classification_Marker 
         add constraint FK31598599777265A1 
         foreign key (markers_id) 
         references Marker;
 
-    alter table TaxonomicTree_Marker 
+    alter table Classification_Marker 
         add constraint FK31598599759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Marker_AUD 
+    alter table Classification_Marker_AUD 
         add constraint FK37A73EEA34869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_OriginalSourceBase 
+    alter table Classification_OriginalSourceBase 
         add constraint FKDE264D1C759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_OriginalSourceBase 
+    alter table Classification_OriginalSourceBase 
         add constraint FKDE264D1C3A6735D9 
         foreign key (sources_id) 
         references OriginalSourceBase;
 
-    alter table TaxonomicTree_OriginalSourceBase_AUD 
+    alter table Classification_OriginalSourceBase_AUD 
         add constraint FK99EE8CED34869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_Rights 
+    alter table Classification_Rights 
         add constraint FK3A4D7336759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_Rights 
+    alter table Classification_Rights 
         add constraint FK3A4D7336C13F7B21 
         foreign key (rights_id) 
         references Rights;
 
-    alter table TaxonomicTree_Rights_AUD 
+    alter table Classification_Rights_AUD 
         add constraint FKA381160734869AAE 
         foreign key (REV) 
         references AuditEvent;
 
-    alter table TaxonomicTree_TaxonNode 
+    alter table Classification_TaxonNode 
         add constraint FK3349DA2D759FE399 
-        foreign key (TaxonomicTree_id) 
-        references TaxonomicTree;
+        foreign key (Classification_id) 
+        references Classification;
 
-    alter table TaxonomicTree_TaxonNode 
+    alter table Classification_TaxonNode 
         add constraint FK3349DA2D18929176 
         foreign key (rootnodes_id) 
         references TaxonNode;
 
-    alter table TaxonomicTree_TaxonNode_AUD 
+    alter table Classification_TaxonNode_AUD 
         add constraint FK6973297E34869AAE 
         foreign key (REV) 
         references AuditEvent;
index f6717fd66e0b3c2c8dc317eca1abd157b086f165..c46910302b49a68f44ba9171e7ca403f044a240b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dataset.xsd">\r
-   <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="1" SEC_ID="1"/>\r
-  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="1" SEC_ID="1" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="1" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="1" SEC_ID="1"/>\r
+  <TAXONBASE_AUD DTYPE="Taxon" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="9f5da5c7-a556-4540-911d-3aa76c9053d0" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="1" SEC_ID="1" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0"/>\r
   \r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" 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="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765" BASIONYMAUTHORTEAM_ID="1"/>\r
   <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="1" 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="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765" AUTHORSHIPCACHE="()" NAMECACHE=" " PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" BASIONYMAUTHORTEAM_ID="1" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false"/>\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" NOMENCLATURALLYRELEVANT="false" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_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
-   <AGENTBASE DTYPE="Person" ID="1" CREATED="2009-06-25 14:42:27.0" UUID="4ce66544-a5a3-4601-ab0b-1f0a1338327b" PROTECTEDTITLECACHE="true" TITLECACHE="Author"/>\r
-   <AGENTBASE_AUD DTYPE="Person" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="4ce66544-a5a3-4601-ab0b-1f0a1338327b" PROTECTEDTITLECACHE="true" TITLECACHE="Author"/>\r
-   <ANNOTATION ID="1" CREATED="2009-06-25 14:42:27.0" UUID="8cfc78b1-584d-43a0-8f46-820fa656033b" TEXT="A1" ANNOTATEDOBJ_TYPE="eu.etaxonomy.cdm.model.reference.Article" ANNOTATEDOBJ_ID="1" LANGUAGE_ID="115"/>\r
-   <ANNOTATION_AUD ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="8cfc78b1-584d-43a0-8f46-820fa656033b" TEXT="A1" LANGUAGE_ID="115"/>\r
-   <AUDITEVENT REVISIONNUMBER="1000" DATE="2009-06-25 14:42:23.544" TIMESTAMP="1245933743544" UUID="c9c24dd0-6e4d-434b-a310-3e2c6e1ea7c2"/>\r
-   <AUDITEVENT REVISIONNUMBER="1001" DATE="2009-06-25 14:42:27.778" TIMESTAMP="1245933747778" UUID="1e5f0107-9fd8-4b37-9cea-d2c876098619"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\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
+  <AGENTBASE DTYPE="Person" ID="1" CREATED="2009-06-25 14:42:27.0" UUID="4ce66544-a5a3-4601-ab0b-1f0a1338327b" PROTECTEDTITLECACHE="true" TITLECACHE="Author"/>\r
+  <AGENTBASE_AUD DTYPE="Person" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="4ce66544-a5a3-4601-ab0b-1f0a1338327b" PROTECTEDTITLECACHE="true" TITLECACHE="Author"/>\r
+  <ANNOTATION ID="1" CREATED="2009-06-25 14:42:27.0" UUID="8cfc78b1-584d-43a0-8f46-820fa656033b" TEXT="A1" ANNOTATEDOBJ_TYPE="eu.etaxonomy.cdm.model.reference.Article" ANNOTATEDOBJ_ID="1" LANGUAGE_ID="115"/>\r
+  <ANNOTATION_AUD ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="8cfc78b1-584d-43a0-8f46-820fa656033b" TEXT="A1" LANGUAGE_ID="115"/>\r
+  <AUDITEVENT REVISIONNUMBER="1000" DATE="2009-06-25 14:42:23.544" TIMESTAMP="1245933743544" UUID="c9c24dd0-6e4d-434b-a310-3e2c6e1ea7c2"/>\r
+  <AUDITEVENT REVISIONNUMBER="1001" DATE="2009-06-25 14:42:27.778" TIMESTAMP="1245933747778" UUID="1e5f0107-9fd8-4b37-9cea-d2c876098619"/>\r
 <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\r
   <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="2" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false"/>\r
   <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\r
   <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="2" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="1" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1"/>\r
 <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="1" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1"/>\r
   <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="2" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1"/>\r
-   <SPECIMENOROBSERVATIONBASE DTYPE="Specimen" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE=""/>\r
+  <SPECIMENOROBSERVATIONBASE DTYPE="Specimen" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE=""/>\r
   <SPECIMENOROBSERVATIONBASE_AUD DTYPE="Specimen" ID="1" REV="1001" REVTYPE="1" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE=""/>\r
- <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2009-06-25 18:26:26.0" UUID="eb17b80a-9be6-4642-a6a8-b19a318925e6" PROTECTEDTITLECACHE="true" TITLECACHE="desc3" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="1" INDESCRIPTION_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="922"/>\r
-<DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="1" MULTILANGUAGETEXT_ID="1" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
-<LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="1" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>\r
 <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2009-06-25 18:26:26.0" UUID="eb17b80a-9be6-4642-a6a8-b19a318925e6" PROTECTEDTITLECACHE="true" TITLECACHE="desc3" IMAGEGALLERY="false"/>\r
 <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="1" INDESCRIPTION_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="922"/>\r
+  <DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="1" MULTILANGUAGETEXT_ID="1" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
+  <LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="115" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>\r
 </dataset>
\ No newline at end of file
index 84cd055d040db9d513ed8d0aa73fd5122aeeffc0..247b0684e4d962386f4ea9b1f4fbcdb7720fc141 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version='1.0' encoding='UTF-8'?>\r
 <dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dataset.xsd">\r
-       <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" PROTECTEDTITLECACHE="false" TITLECACHE="Some strangetitle Mill." FULLTITLECACHE="Some strangetitle Mill." PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="Mill." BINOMHYBRID="false" GENUSORUNINOMIAL="Some" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Some strangetitle" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="strangetitle" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="1"/>\r
+       <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" PROTECTEDTITLECACHE="false" TITLECACHE="Some strangetitle Mill." FULLTITLECACHE="Some strangetitle Mill." PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="Mill." BINOMHYBRID="false" GENUSORUNINOMIAL="Some" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Some strangetitle" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="strangetitle" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5" RANK_ID="777" COMBINATIONAUTHORTEAM_ID="1"/>\r
 </dataset>
\ No newline at end of file
index 8baede2459f8016df08e7146f600791c25a3a671..df02f05fd592bc337bf57d4dbe76066129673498 100644 (file)
@@ -9,13 +9,13 @@
   <HOMOTYPICALGROUP ID="5" CREATED="2008-12-10 09:56:07.0" UUID="5cd73df5-1c72-44a6-9864-adb145d8bd56" UPDATED="2008-12-10 09:56:07.253"/>\r
   <HOMOTYPICALGROUP ID="6" CREATED="2008-12-10 09:56:07.0" UUID="335977f0-ef55-4294-b78b-aed47435b428" UPDATED="2008-12-10 09:56:07.253"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2009-02-03 17:52:26.0" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" 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"/>\r
-  <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="774"/>\r
-  <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
-  <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Some" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="strangetitle" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="1"/>\r
-  <TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="55e6ee55-371e-418e-8775-d885d28453c4" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="6" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="2"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2009-02-03 17:52:26.0" UUID="aafce7fe-0c5f-42ed-814b-4c7c2c715660" TITLECACHE="Abies sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="4"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5c1a3d10-3a32-45d1-a5ae-1e982533b79f" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="5"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="4de9d002-d68c-49af-84f1-7f9eddaa1226" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="6"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="7" CREATED="2009-02-03 17:52:26.0" UUID="294cd25b-f557-4734-9fd0-a6aceeacdebe" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="6"/>\r
+  <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="786"/>\r
+  <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="777"/>\r
+  <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Some" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="strangetitle" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="5" RANK_ID="777" COMBINATIONAUTHORTEAM_ID="1"/>\r
+  <TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="55e6ee55-371e-418e-8775-d885d28453c4" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="6" RANK_ID="777" COMBINATIONAUTHORTEAM_ID="2"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2009-02-03 17:52:26.0" UUID="aafce7fe-0c5f-42ed-814b-4c7c2c715660" TITLECACHE="Abies sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="4"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5c1a3d10-3a32-45d1-a5ae-1e982533b79f" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="5"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="4de9d002-d68c-49af-84f1-7f9eddaa1226" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="6"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="7" CREATED="2009-02-03 17:52:26.0" UUID="294cd25b-f557-4734-9fd0-a6aceeacdebe" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="6"/>\r
   \r
 </dataset>
\ No newline at end of file
index 90dd39442097540094a7cdf3e15130c19707b693..e36a1f8d09187eac6c3db632a03f502f542dcc74 100644 (file)
@@ -12,9 +12,9 @@
   <LSIDAUTHORITY_NAMESPACES LSIDAUTHORITY_ID="1" NAMESPACES_MAPKEY="names" NAMESPACES_ELEMENT="eu.etaxonomy.cdm.model.name.TaxonNameBase"/>\r
   <LSIDAUTHORITY_NAMESPACES LSIDAUTHORITY_ID="2" NAMESPACES_MAPKEY="names" NAMESPACES_ELEMENT="eu.etaxonomy.cdm.model.name.TaxonNameBase"/>\r
   <LSIDAUTHORITY_NAMESPACES LSIDAUTHORITY_ID="2" NAMESPACES_MAPKEY="taxonconcepts" NAMESPACES_ELEMENT="eu.etaxonomy.cdm.model.taxon.TaxonBase"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2009-02-03 17:52:26.0" LSID_LSID="urn:lsid:example.org:taxonconcepts:1" LSID_AUTHORITY="example.org" LSID_NAMESPACE="taxonconcepts" LSID_OBJECT="1" UUID="aafce7fe-0c5f-42ed-814b-4c7c2c715660" TITLECACHE="Abies sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="4"/>\r
-  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5c1a3d10-3a32-45d1-a5ae-1e982533b79f" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" TAXONNAME_FK="5"/>\r
-  <TAXONBASE DTYPE="Synonym" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="4de9d002-d68c-49af-84f1-7f9eddaa1226" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONNAME_FK="6"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="4" CREATED="2009-02-03 17:52:26.0" LSID_LSID="urn:lsid:example.org:taxonconcepts:1" LSID_AUTHORITY="example.org" LSID_NAMESPACE="taxonconcepts" LSID_OBJECT="1" UUID="aafce7fe-0c5f-42ed-814b-4c7c2c715660" TITLECACHE="Abies sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="4"/>\r
+  <TAXONBASE DTYPE="Taxon" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5c1a3d10-3a32-45d1-a5ae-1e982533b79f" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="5"/>\r
+  <TAXONBASE DTYPE="Synonym" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="4de9d002-d68c-49af-84f1-7f9eddaa1226" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="6"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2009-02-03 17:52:26.0" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="774"/>\r
   <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
diff --git a/pom.xml b/pom.xml
index 4915cdcac5c76dd6eebbb18275cd1a6a1c323069..18884431c329e73ea7c046eefad9103a4d486ef2 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
        <modelVersion>4.0.0</modelVersion>\r
        <groupId>eu.etaxonomy</groupId>\r
        <artifactId>cdmlib-parent</artifactId>\r
-       <version>2.5</version>\r
+       <version>3.0</version>\r
        <name>CDM Library</name>\r
        <description>The Java implementation of the Common Data Model (CDM), the data model for EDIT's internet platform for cybertaxonomy.</description>\r
        <url>http://wp5.e-taxonomy.eu/cdmlib/</url>\r