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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>cdmlib-parent</artifactId>
- <version>2.5</version>
+ <version>3.0</version>
<relativePath>pom.xml</relativePath>
</parent>
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
*/\r
@Override\r
public void done() {\r
- logger.info(taskName + "Done");\r
+ logger.info(taskName + "...Done");\r
}\r
\r
/* (non-Javadoc)\r
* @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
<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
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
* @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
* @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
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
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
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
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
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
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
}\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
/**\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
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
* @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
* @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
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
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
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
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
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
* @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
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
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
\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
* @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
}\r
\r
//create reference object\r
- ReferenceBase ref = ReferenceFactory.newGeneric();\r
+ Reference ref = ReferenceFactory.newGeneric();\r
\r
//reference\r
if (config.isUseAbbreviationAsTitle() == true){\r
\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
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
\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
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
}\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
/**\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
/* (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
"&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
\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
* @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
* @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
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
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
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
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
@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
<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
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
// 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
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
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
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
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
* @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
\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
\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 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
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
//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
\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
*/\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
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
* @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
* @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
* @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
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
/* (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
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
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
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
\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
\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
//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
\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
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
\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
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
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
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
}\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
* @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
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
}\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
\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
\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
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
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
//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
//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
//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
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
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
*/\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
\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
\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
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
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
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
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
|| (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
* @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
\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
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
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
" 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
}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
* @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
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
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
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
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
* @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
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
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
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
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
\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
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
\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
\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
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
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
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
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
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
\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
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
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
}\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
\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
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
*/\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
/**\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
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
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
}\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
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
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
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
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
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
}\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
\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
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
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
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
\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
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
} 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
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
* @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
private static final Class<? extends CdmBase> standardMethodParameter = TaxonNode.class;\r
\r
\r
- public BerlinModelTaxonomicTreeExport(){\r
+ public BerlinModelClassificationExport(){\r
super();\r
}\r
\r
}\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
\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
// , BerlinModelTypesImport.class\r
, BerlinModelTaxonExport.class\r
, BerlinModelTaxonRelationExport.class\r
- , BerlinModelTaxonomicTreeExport.class\r
+ , BerlinModelClassificationExport.class\r
, BerlinModelFactExport.class\r
// , BerlinModelOccurrenceImport.class\r
};\r
@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
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
} \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
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
* @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
\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
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
}\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
}\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
\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
\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
\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
\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
\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
\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
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
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
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
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
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
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
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
\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
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
doZoologicalName = false;\r
doCultivarPlantName = false;\r
\r
- doTaxonomicTree = false;\r
+ doClassification = false;\r
\r
//TermBase\r
doFeatureTree = false;\r
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
}\r
\r
@Override\r
- public ReferenceBase getSourceReference() {\r
+ public Reference getSourceReference() {\r
//not needed here\r
return null;\r
}\r
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
\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
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
\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
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
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
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
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
\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
* @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
* @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
}\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
* @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
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
\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
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
@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
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
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
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
* 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
\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
\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
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
\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
/* (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
/* (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
}\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
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
\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
* @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
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
@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
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
/**\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
/**\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
\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
\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
@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
}\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
}\r
\r
public IProgressMonitor getProgressMonitor(){\r
- return this.progressMonitor;\r
+ return progressMonitor != null ? progressMonitor : new NullProgressMonitor();\r
}\r
}\r
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
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
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
*/\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
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
* @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
\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
}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
\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
* @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
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
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
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
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
\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
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
\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
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
/**\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
* @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
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
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
* @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
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
* @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
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
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
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
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
}\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
}\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
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
* @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
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
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
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
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
"references",\r
"typeDesignations",\r
"featureTrees",\r
+ "polytomousKeys",\r
"taxonNodes",\r
- "taxonomicTrees",\r
+ "classifications",\r
"taxonomicNames",\r
"homotypicalGroups",\r
"taxonBases",\r
@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
\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
\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
* \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
* \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
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
* {@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
* {@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
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
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
// }\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
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
\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
\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
}\r
\r
dataSet.setTaxonNodes(taxNodesdeproxy);\r
- dataSet.setTaxonomicTrees(taxTreesdeproxy );\r
+ dataSet.setClassifications(taxTreesdeproxy );\r
}\r
//TODO: FIXME!!!!!\r
dataSet.setLanguageStrings(null);\r
private boolean doHomotypicalGroups = true;\r
\r
private boolean doTypeDesignations = true;\r
- private boolean doTaxonomicTreeData = true;\r
+ private boolean doClassificationData = true;\r
\r
\r
\r
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
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
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
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
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
private boolean doHomotypicalGroups = true;\r
\r
private boolean doTypeDesignations = true;\r
- private boolean doTaxonomicTreeData = true;\r
+ private boolean doClassificationData = true;\r
\r
\r
\r
* @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
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
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
}\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
}\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
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
}\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
}\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
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
}\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
}\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
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
* @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
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
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
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
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
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
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
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
\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
}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
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
\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
\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
}\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
\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
\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
\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
\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
}\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
} 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
\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
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
}\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
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
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
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
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
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
\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
\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
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
//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
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
}\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
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
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
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
// 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
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
}\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
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
* @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
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
}\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
}\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
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
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
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
* \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
* \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
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
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
\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
//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
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
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
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
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
\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
}\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
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
}\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
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
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
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;
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);
* @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;
for (String strReference : dataHolder.referenceList){
- ReferenceBase reference = ReferenceFactory.newGeneric();
+ Reference reference = ReferenceFactory.newGeneric();
reference.setTitleCache(strReference, true);
determinationEvent.addReference(reference);
}
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);
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
* @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
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
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;
* @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;
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);
// }
tx = startTransaction();
try {
- ReferenceBase sec = config.getTaxonReference();
+ Reference sec = config.getTaxonReference();
/**
* SPECIMEN OR OBSERVATION OR LIVING
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);
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
* @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
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
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
\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
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
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
* @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
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
@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
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
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
* @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
//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
* @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
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
\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
\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
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
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
* @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
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
\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
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
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
}\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
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
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
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
}\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
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
\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
\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
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
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
}\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
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
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
}\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
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
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
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
}\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
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
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
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
\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
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
}\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
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
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
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
\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
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
}\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
}\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
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
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
* @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
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
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
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
\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
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
}\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
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
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
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
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
}\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
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
\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
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
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
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
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
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
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
}\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
</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>
<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>
<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>
</xs:complexContent>
</xs:complexType>
- <xs:complexType name="TaxonomicTree">
+ <xs:complexType name="Classification">
<xs:complexContent>
<xs:extension base="common:IdentifiableEntity">
<xs:sequence>
\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
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
ITaxonService taxonService;\r
\r
@SpringBeanByType\r
- ITaxonTreeService taxonTreeService;\r
+ IClassificationService classificationService;\r
\r
private IImportConfigurator configurator;\r
\r
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
//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
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
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
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
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
* @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
@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
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
}\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
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
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
// "OriginalSource_Annotation", \r
// "OriginalSource_Marker", \r
// "Person_Keyword", \r
- "ReferenceBase", \r
+ "Reference", \r
// "ReferenceBase_Annotation", \r
// "ReferenceBase_Extension", \r
// "ReferenceBase_Marker", \r
//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
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;
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
>
<ORIGINALSOURCEBASE_MARKER/>
<PERMISSIONGROUP/>
<PERMISSIONGROUP_GRANTEDAUTHORITYIMPL/>
- <PERSON_KEYWORD/>
<REFERENCE/>
<REFERENCE_ANNOTATION/>
<REFERENCE_EXTENSION/>
<ORIGINALSOURCEBASE_MARKER/>
<PERMISSIONGROUP/>
<PERMISSIONGROUP_GRANTEDAUTHORITYIMPL/>
- <PERSON_KEYWORD/>
<REFERENCE/>
<REFERENCE_ANNOTATION/>
<REFERENCE_EXTENSION/>
</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
<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
<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
<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
</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
<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>
* 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
--- /dev/null
+/**\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
* 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
* 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
\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
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;
\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
//@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
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;
}
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
* 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
* \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
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
\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
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
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
package eu.etaxonomy.cdm.model.common;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
/**
*/
public interface IReferencedEntity {
- public ReferenceBase getCitation();
+ public Reference getCitation();
}
\ No newline at end of file
import java.util.Set;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
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);
/**
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;
}
/* (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;
}
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();
}
}
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
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
\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
import org.hibernate.envers.Audited;
import org.hibernate.search.annotations.Indexed;
-import eu.etaxonomy.cdm.common.CdmUtils;
-
import au.com.bytecode.opencsv.CSVWriter;
/**
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(){
@Override
public void resetTerms(){
termMap = null;
+ defaultLanguage = null;
+ csvLanguage = null;
}
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()
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");
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);
}
@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);
}
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
+
import java.util.*;
import javax.persistence.*;
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
@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;
}
- public ReferencedEntityBase(ReferenceBase citation, String citationMicroReference,
+ public ReferencedEntityBase(Reference citation, String citationMicroReference,
String originalNameString) {
super();
this.citationMicroReference = citationMicroReference;
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;
}
import org.apache.log4j.Logger;
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
/**
* @author m.doering
* @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);
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),
@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
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
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;
/**
@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")
}
/**
- * 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);
}
*
* @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);
}
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;
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.
}
/* (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;
}
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);
}
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 **********************************************************/
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;
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.
@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
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)
@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")
@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.
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 ******************************/
/**
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;
}
/**
childAt.sortIndex = i;
}
child.sortIndex = null;
- }
+ }
}
/**
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
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
protected FeatureTree() {
super();
root = FeatureNode.NewInstance();
+ root.setFeatureTree(this);
}
/**
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
--- /dev/null
+/**\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
@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>();
@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
\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
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
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
* 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
"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
@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
@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
}\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
*/\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
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
--- /dev/null
+/**
+ * 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
@ManyToOne(fetch = FetchType.LAZY)
@XmlIDREF
@XmlSchemaType(name="IDREF")
- @JoinColumn(name="taxon_fk")
+// @JoinColumn(name="taxon_fk")
@Cascade(CascadeType.SAVE_UPDATE)
private Taxon taxon;
@XmlIDREF
@XmlSchemaType(name="IDREF")
@ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name="taxonName_fk")
+// @JoinColumn(name="taxonName_id")
@Cascade(CascadeType.SAVE_UPDATE)
private TaxonNameBase<?,?> taxonName;
package eu.etaxonomy.cdm.model.description;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
}
/**
- * 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.
* @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.
* @see #getMultilanguageText(Language)
*/
public String getText(Language language) {
- LanguageString languageString = multilanguageText.get(language);
+ LanguageString languageString = getLanguageText(language);
if (languageString == null){
return null;
}else{
* @return
*/
public LanguageString getPreferredLanguageString(List<Language> languages) {
- return MultilanguageTextHelper.getPreferredLanguageString(multilanguageText, languages);
+ return MultilanguageTextHelper.getPreferredLanguageString(getMultilanguageText(), languages);
}
/**
* @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.
* @see #getMultilanguageText()
*/
public LanguageString removeText(Language language) {
+ fixHashMapHibernateBug();
return this.multilanguageText.remove(language);
}
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
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
package eu.etaxonomy.cdm.model.media;
+import java.net.URI;
+
import org.apache.log4j.Logger;
import org.hibernate.envers.Audited;
@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);
}
/**
* Constructor
*/
- protected AudioFile(String uri, Integer size) {
+ protected AudioFile(URI uri, Integer size) {
super(uri, size);
}
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;
@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());
}
* @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);
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);
package eu.etaxonomy.cdm.model.media;
+import java.net.URI;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@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
* 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;
}
//************* 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>();
package eu.etaxonomy.cdm.model.media;
+import java.net.URI;
import java.util.ArrayList;
import java.util.List;
/**
* 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);
\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
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
@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
* \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
/**\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
this.mediaRepresentation = mediaRepresentation;\r
}\r
\r
- public String getUri() {\r
+ public URI getUri() {\r
return this.uri;\r
}\r
\r
* @param uri\r
* uri\r
*/\r
- public void setUri(String uri) {\r
+ public void setUri(URI uri) {\r
this.uri = uri;\r
}\r
\r
package eu.etaxonomy.cdm.model.media;
+import java.net.URI;
+
import org.apache.log4j.Logger;
import org.hibernate.envers.Audited;
@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);
}
/**
* Constructor
*/
- protected MovieFile(String uri, Integer size) {
+ protected MovieFile(URI uri, Integer size) {
super(uri, size);
}
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
@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;
}
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;
@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")
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);
}
this.citationMicroReference = citationMicroReference;
}
- public ReferenceBase getCitation(){
+ public Reference getCitation(){
return publishedIn;
}
}
\ No newline at end of file
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;
* @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()){
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");
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}
* @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) {
/**
* 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
* @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);
}
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;
* @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)
/**
* 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
* @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);
}
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}
/**
* 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() {
}
/**
* 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).
*
* <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);
/**
* 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).
*
* <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,
* 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()
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;
*
* @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);
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;
* 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>
* @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
* @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
* 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
* @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
* 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.
setSpecificEpithet(specificEpithet);
setInfraSpecificEpithet(infraSpecificEpithet);
setCombinationAuthorTeam(combinationAuthorTeam);
- setNomenclaturalReference((ReferenceBase)nomenclaturalReference);
+ setNomenclaturalReference((Reference)nomenclaturalReference);
this.setNomenclaturalMicroReference(nomenclMicroRef);
}
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
// /**
// * 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
// * @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;
// }
* Class constructor: creates a new empty specimen type designation.
*
* @see #SpecimenTypeDesignation(DerivedUnitBase, SpecimenTypeDesignationStatus,
- * ReferenceBase, String, String, boolean)
+ * Reference, String, String, boolean)
*/
protected SpecimenTypeDesignation(){
}
/**
* 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).
*
* @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);
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;
@Cascade({CascadeType.SAVE_UPDATE})
@CacheUpdate(noUpdate ="titleCache")
@IndexedEmbedded
- private ReferenceBase nomenclaturalReference;
+ private Reference nomenclaturalReference;
// ************* CONSTRUCTORS *************/
/**
* @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");
}
* @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);
}
* @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{
* @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);
}
* 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}
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;
}
* @see TypeDesignationBase#isNotDesignated()
*/
public NameTypeDesignation addNameTypeDesignation(TaxonNameBase typeSpecies,
- ReferenceBase citation,
+ Reference citation,
String citationMicroReference,
String originalNameString,
NameTypeDesignationStatus status,
* @see TypeDesignationBase#isNotDesignated()
*/
public NameTypeDesignation addNameTypeDesignation(TaxonNameBase typeSpecies,
- ReferenceBase citation,
+ Reference citation,
String citationMicroReference,
String originalNameString,
NameTypeDesignationStatus status,
*/
public SpecimenTypeDesignation addSpecimenTypeDesignation(Specimen typeSpecimen,
SpecimenTypeDesignationStatus status,
- ReferenceBase citation,
+ Reference citation,
String citationMicroReference,
String originalNameString,
boolean isNotDesignated,
* @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;
* 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()
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
/** \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
\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
* @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
* @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
@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>();
"collection",
"catalogNumber",
"storedUnder",
- "derivationEvent",
+ "derivedFrom",
"accessionNumber",
"collectorsNumber",
"barcode"
@ManyToOne(fetch = FetchType.LAZY)
@Cascade(CascadeType.SAVE_UPDATE)
@IndexedEmbedded(depth = 4)
- private DerivationEvent derivationEvent;
+ private DerivationEvent derivedFrom;
/**
* Constructor
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);
}
//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
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;
/**
@XmlIDREF
@XmlSchemaType(name = "IDREF")
@ManyToMany(fetch = FetchType.LAZY)
- private Set<ReferenceBase> setOfReferences = new HashSet<ReferenceBase>();
+ private Set<Reference> setOfReferences = new HashSet<Reference>();
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);
}
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;
/**
@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;
//************************** 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()
*/
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;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "FieldObservation", propOrder = {
"fieldNumber",
+ "primaryCollector",
"fieldNotes",
"gatheringEvent"
})
@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
return new FieldObservation();
}
+//****************************** CONSTRUCTOR **************************************/
+
/**
* Constructor
*/
super();
this.cacheStrategy = new IdentifiableEntityDefaultCacheStrategy<FieldObservation>();
}
+
+// ************************ GETTER / SETTER *******************************************
public GatheringEvent getGatheringEvent() {
return gatheringEvent;
}
}
+ /**
+ * 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;
}
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;
}
}
}
+
}
\ No newline at end of file
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;
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;
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,
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Specimen", propOrder = {
- "preservation"
+ "preservation",
+ "exsiccatum"
})
@XmlRootElement(name = "Specimen")
@Entity
@ManyToOne(fetch = FetchType.LAZY)
private PreservationMethod preservation;
+
+ @XmlElement(name = "Exsiccatum")
+ @NullOrNotEmpty
+ @Field(index=Index.TOKENIZED)
+ @Size(max = 255)
+ private String exsiccatum;
+
+
/**
* Factory method
* @return
super();
this.cacheStrategy = new IdentifiableEntityDefaultCacheStrategy<Specimen>();
}
+
+//***************************** GETTER / SETTER **************************************
public PreservationMethod getPreservation(){
return this.preservation;
public void setPreservation(PreservationMethod preservation){
this.preservation = preservation;
}
+
+
+ public void setExsiccatum(String exsiccatum) {
+ this.exsiccatum = exsiccatum;
+ }
+
+ public String getExsiccatum() {
+ return exsiccatum;
+ }
//*********** CLONE **********************************/
return null;
}
}
+
}
\ No newline at end of file
"sex",
"individualCount",
"lifeStage",
- "description",
+ "definition",
"descriptions",
"determinations",
"derivationEvents"
@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")
}
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);
}
/**
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);
}
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
* 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
* @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";
* 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
* <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
\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
* <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
* 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
* 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
* @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.
*/ \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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
// ,"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
@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
// @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
// @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
// @ManyToOne(fetch = FetchType.LAZY)\r
//// @IndexedEmbedded\r
// @Cascade(CascadeType.SAVE_UPDATE)\r
-// protected ReferenceBase abbreviatedReference;\r
+// protected Reference abbreviatedReference;\r
\r
\r
//********************************************************/ \r
@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
@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
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
// * @see #getAbbreviatedReference()\r
// * @return the full reference\r
// */\r
-// public ReferenceBase getFullReference() {\r
+// public Reference getFullReference() {\r
// return fullReference;\r
// }\r
//\r
// * @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
// * @see #getFullReference()\r
// * @return the full reference\r
// */\r
-// public ReferenceBase getAbbreviatedReference() {\r
+// public Reference getAbbreviatedReference() {\r
// return abbreviatedReference;\r
// }\r
//\r
// * @param abbreviatedReference\r
// * \r
// */\r
-// public void setAbbreviatedReference(ReferenceBase abbreviatedReference) {\r
+// public void setAbbreviatedReference(Reference abbreviatedReference) {\r
// this.abbreviatedReference = abbreviatedReference;\r
// }\r
\r
// @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
// * 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
@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
}\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
}\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
}\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
}\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
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
/** \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
/** \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
* @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
}\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
@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
@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
@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
// * @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
// 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
/**\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
\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
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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
+++ /dev/null
-/**
-* 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
\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
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
import javax.persistence.OneToMany;\r
import javax.persistence.OneToOne;\r
import javax.persistence.Transient;\r
-import javax.validation.constraints.NotNull;\r
import javax.xml.bind.annotation.XmlAccessType;\r
import javax.xml.bind.annotation.XmlAccessorType;\r
import javax.xml.bind.annotation.XmlElement;\r
import 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
* @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
@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
// 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
}\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
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
* @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
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
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
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
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
}\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
* @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
\r
\r
@Transient\r
- public ReferenceBase getCitation() {\r
+ public Reference getCitation() {\r
return reference;\r
}\r
\r
}\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
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
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;
/**
* @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
* @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
/**
* @return the citation for the parent child relationship or the tree itself
*/
- public ReferenceBase getReference();
+ public Reference getReference();
public Set<TaxonNode> getChildNodes();
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;
/**
* 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(){
/**
* 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>();
}
/**
* 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;
}
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;
* 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.
* @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);
}
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
@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);
@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;
//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 *************/
/**
* 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>();
}
/**
* 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;
* 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);
* 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.
*
* 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()
* {@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.
*
* @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);
}
/**
* @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);
}
* @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()
* @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{
* 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.
*
* @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 ){
/**
* 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
* 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;
}
* 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;
}
* 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.
*
* @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();
/**
* 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".
* 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();
/**
* 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
* @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;
}
/**
* @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()){
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.
*
* @see #getTaxonRelations()
* @see #getRelationsToThisTaxon()
- * @see #addMisappliedName(Taxon, ReferenceBase, String)
+ * @see #addMisappliedName(Taxon, Reference, String)
*/
@Transient
public Set<Taxon> getMisappliedNames(){
* @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)
*/
* @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)
*/
* @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)
*/
* 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()
/**
* 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
* @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;
}
* @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()
/**
* 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}
* @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);
}
* @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()
* 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}
* 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);
* 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}
* @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);
}
/**
* 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
* @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());
* @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){
}
}
- /**
- * 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}.
* @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(){
/**
* 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}.
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;
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
@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)
@IndexedEmbedded
@Cascade(CascadeType.SAVE_UPDATE)
@NotNull(groups = Level2.class)
- private ReferenceBase sec;
+ private Reference sec;
@XmlElement(name = "AppendedPhrase")
/**
* Class constructor: creates a new empty (abstract) taxon.
*
- * @see #TaxonBase(TaxonNameBase, ReferenceBase)
+ * @see #TaxonBase(TaxonNameBase, Reference)
*/
protected TaxonBase(){
super();
/**
* 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);
/**
* 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
}
/**
- * 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;
}
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
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
\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
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
\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
@XmlType(name = "TaxonNode", propOrder = {\r
"taxon",\r
"parent",\r
- "taxonomicTree",\r
+ "classification",\r
"childNodes",\r
"referenceForParentChildRelation",\r
"microReferenceForParentChildRelation",\r
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
@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
/**\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
//************************ 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
* @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
}\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
}\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
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
*/\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
@Transient\r
public ITreeNode getParentTreeNode() {\r
if(isTopmostNode())\r
- return getTaxonomicTree();\r
+ return getClassification();\r
return parent;\r
}\r
\r
* @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
\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
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
}\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
* \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
}\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
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;
/**
* 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.
*
* @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);
}
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");
* 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>
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.*;
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
}
@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;
}
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
/**\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
\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
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
* @return\r
*/\r
public static BookDefaultCacheStrategy NewInstance(){\r
- return new BookDefaultCacheStrategy<ReferenceBase>();\r
+ return new BookDefaultCacheStrategy<Reference>();\r
}\r
\r
/**\r
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
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
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
\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
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
* @return\r
*/\r
public static CdDvdDefaultCacheStrategy NewInstance(){\r
- return new CdDvdDefaultCacheStrategy<ReferenceBase>();\r
+ return new CdDvdDefaultCacheStrategy<Reference>();\r
}\r
\r
/**\r
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
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
\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
\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
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
* @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
* @return\r
*/\r
public static JournalDefaultCacheStrategy NewInstance(){\r
- return new JournalDefaultCacheStrategy<ReferenceBase>();\r
+ return new JournalDefaultCacheStrategy<Reference>();\r
}\r
\r
/**\r
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
* @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
\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
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
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
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
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
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
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
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
\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
}\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
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
"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
"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"
--- /dev/null
+"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","--","---"
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;
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,
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;
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);
import org.junit.Ignore;\r
import org.junit.Test;\r
\r
+\r
/**\r
* @author a.mueller\r
* @created 02.03.2009\r
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
--- /dev/null
+/**\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
import org.junit.BeforeClass;\r
import org.junit.Test;\r
\r
+\r
/**\r
* @author a.mueller\r
* @created 23.04.2008\r
--- /dev/null
+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
\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
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
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
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
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
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
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
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
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
*/\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
*/\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
*/\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
*/\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
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
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
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
}\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
}\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
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
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
* @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
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
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
//****************************** 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
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
}\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
\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
\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
}\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
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
\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
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
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
}\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
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
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
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
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
@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
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
\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
\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
@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
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
\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
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
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;
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;
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
}
/**
- * 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() {
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
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
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
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
@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
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
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
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
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
\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
\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
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
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
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
\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
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
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
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
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
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
*/\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
*/\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
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
\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
\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
\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
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
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
\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
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
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
private ReferenceFactory refFactory;\r
\r
\r
- private ReferenceBase book3;\r
+ private Reference book3;\r
\r
/**\r
* @throws java.lang.Exception\r
@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
@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
*/\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
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
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
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
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
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
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
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
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
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
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
\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
}\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
\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
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
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
\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
//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
//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
//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
<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
* 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
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
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
// 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
}\r
\r
private ITermUpdater getCurrentTermUpdater() {\r
- return TermUpdater_24_25.NewInstance();\r
+ return TermUpdater_25_30.NewInstance();\r
}\r
\r
/**\r
* @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
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
*\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
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
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
--- /dev/null
+// $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
--- /dev/null
+/**\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
+// $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
* @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
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
\r
public String getStepName();\r
\r
+ public List<ISchemaUpdaterStep> getInnerSteps();\r
+\r
}
\ No newline at end of file
+// $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
* @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
--- /dev/null
+// $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
--- /dev/null
+// $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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
\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
}\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
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
* @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
}\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
+++ /dev/null
-// $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();
- }
-
-}
* @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
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
--- /dev/null
+// $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
--- /dev/null
+// $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
* @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
}\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
--- /dev/null
+// $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
--- /dev/null
+// $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
* 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
*/\r
@Override\r
public ISchemaUpdater getNextUpdater() {\r
- return null;\r
+ return SchemaUpdater_25_30.NewInstance();\r
}\r
\r
/* (non-Javadoc)\r
\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
\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
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
* 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
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
* 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.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
* @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
*/\r
@Override\r
public ITermUpdater getNextUpdater() {\r
- return null;\r
+ return TermUpdater_25_30.NewInstance();\r
}\r
\r
/* (non-Javadoc)\r
--- /dev/null
+// $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
--- /dev/null
+// $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
--- /dev/null
+// $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();
+ }
+
+}
* 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;
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}
" `" + 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");
}
--- /dev/null
+// $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
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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
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
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;
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;
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;
@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[];
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
\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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
\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
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
*/\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
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
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
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
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
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
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
}\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
\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
\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
* @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
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
}\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
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
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
\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
}\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
\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
\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
* @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
* @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
String taxonSubselect = null;\r
String synonymSubselect = null;\r
\r
- if(taxonomicTree != null){\r
+ if(classification != null){\r
\r
if(doAreaRestriction){\r
\r
" 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
" 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
" 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
" 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
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
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
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
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
}\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
// }\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
/* (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
\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
}\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
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
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
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
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
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
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
\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
* 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
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
\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
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
* @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
* <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
\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
* 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
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
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
* @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
* @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
* 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
* @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
* @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
* </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
* @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
* @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
* {@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
* \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
<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
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
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;
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,
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;
private BotanicalName botanicalName;
IMethodCache methodCache;
- private ReferenceBase nomenclaturalReference;
+ private Reference nomenclaturalReference;
@Before
public void setUp() throws Exception {
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
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
* @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
@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
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
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
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
\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
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
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
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
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
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
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
// 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
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;
}
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
--- /dev/null
+// $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
@SpringBeanByType
IIdentificationKeyDao identificationKeyDao;
-
@Before
public void setUp() {
}
-
@Test
public void testCountByDistribution() {
identificationKeyDao.list(null, null, null);
}
+
}
--- /dev/null
+/**
+* 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
+ }
+}
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;
--- /dev/null
+/**
+* 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");
+ }
+
+ }
+
+}
\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
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
@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
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
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
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
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
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
private ITaxonDao taxonDao;\r
\r
@SpringBeanByType \r
- private ITaxonomicTreeDao taxonomicTreeDao;\r
+ private IClassificationDao classificationDao;\r
\r
@SpringBeanByType \r
private IReferenceDao referenceDao;\r
private UUID southernAmericaUuid;\r
private UUID antarcticaUuid;\r
\r
- private UUID taxonomicTreeUuid;\r
+ private UUID classificationUuid;\r
\r
\r
@Before\r
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
\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
}\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
} \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
//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
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
\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
//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
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
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
\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
@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
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
private ITaxonNodeDao taxonNodeDao;
@SpringBeanByType
- private ITaxonomicTreeDao taxonomicTreeDao;
+ private IClassificationDao classificationDao;
@SpringBeanByType
private ITaxonDao taxonDao;
@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>();
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();
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);
}
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
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
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
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
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
\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
<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>
-
- 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;
<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
<?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
<?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
<?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
<?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
<?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
<?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
<?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
<?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
<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"/>
<?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
<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
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
<?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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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
<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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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"/>
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
<?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>
--- /dev/null
+<?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>
--- /dev/null
+<?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>
<?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="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>
--- /dev/null
+<?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>
--- /dev/null
+<?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>
<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"/>
<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"/>
<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
<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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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"/>
<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 & 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 & 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 & 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. & 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 & 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 & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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. & 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
<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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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"/>
<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 & 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 & 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 & 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. & 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 & 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 & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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. & 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"/>
<?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 & 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 & 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 & 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. & 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 & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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 & 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. & 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 & 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. & Yuji Sasaki" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="N.Jacobsen, Bastm. & 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
<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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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 & 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 & 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 & 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. & 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"/>
<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
<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"/>
<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>
<roles>
<role>Java Developer</role>
</roles>
- <url></url>
+ <url>http://www.bgbm.org/bgbm/staff/wiss/HoffmannN/default.htm</url>
</developer>
</developers>
<dependencies>
private static final Logger logger = Logger.getLogger(XMLHelper.class);
public enum EntityType{
- CLASSIFICATION("TaxonomicTree"),
+ CLASSIFICATION("Classification"),
TAXON_NODE("TaxonNode"),
EMPTY("");
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;
--- /dev/null
+<!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
* 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
<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"/>
* 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;
* 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;
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
* 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;
<parent>
<artifactId>cdmlib-parent</artifactId>
<groupId>eu.etaxonomy</groupId>
- <version>2.5</version>
+ <version>3.0</version>
<relativePath>pom.xml</relativePath>
</parent>
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
</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
</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
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>cdmlib-parent</artifactId>
- <version>2.5</version>
+ <version>3.0</version>
<relativePath>pom.xml</relativePath>
</parent>
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
*/\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
*/\r
@Override\r
@Autowired\r
- public void setService(ITaxonTreeService service) {\r
+ public void setService(IClassificationService service) {\r
this.service = service;\r
}\r
\r
return Arrays.asList(new String[]{\r
"taxon.sec", \r
"taxon.name",\r
- "taxonomicTree"\r
+ "classification"\r
});}\r
\r
/**\r
) 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
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
* @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);
*/
@Override
@Autowired
- public void setService(ITaxonTreeService service) {
+ public void setService(IClassificationService service) {
this.service = service;
}
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
* 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
/**\r
* \r
*/\r
- public TaxonomicTreePortalController() {\r
+ public ClassificationPortalController() {\r
super();\r
- setInitializationStrategy(TAXONTREE_INIT_STRATEGY);\r
+ setInitializationStrategy(CLASSIFICATION_INIT_STRATEGY);\r
}\r
\r
\r
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
});\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
\r
\r
/**\r
- * Lists all available {@link TaxonomicTree}s.\r
+ * Lists all available {@link Classification}s.\r
* <p>\r
- * URI: <b>/{datasource-name}/portal/taxontree</b>\r
+ * URI: <b>/{datasource-name}/portal/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
* @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
\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
) 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
\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>/portal/taxontree/{treeUuid}/childNodesOf/{taxonUuid}</b>\r
+ * URI: <b>/portal/classification/{treeUuid}/childNodesOf/{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
* 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
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
/**\r
* Provides path of {@link TaxonNode}s from the base node to the node of the specified taxon.\r
* <p>\r
- * URI:<b>/portal/taxontree/{treeUuid}/pathFrom/{taxonUuid}/toRank/{rankUuid}</b>\r
+ * URI:<b>/portal/classification/{treeUuid}/pathFrom/{taxonUuid}/toRank/{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
* 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
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
/**\r
* Provides path of {@link TaxonNode}s from the base node to the node of the specified taxon.\r
* <p>\r
- * URI:<b>/portal/taxontree/{treeUuid}/pathFrom/{taxonUuid}</b>\r
+ * URI:<b>/portal/classification/{treeUuid}/pathFrom/{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
* 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
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
\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
\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
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
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
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
*/\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
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
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
private IOccurrenceService occurrenceService;\r
\r
@Autowired\r
- private ITaxonTreeService taxonTreeService;\r
+ private IClassificationService classificationService;\r
\r
@Autowired\r
private ITaxonService taxonService;\r
\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
});\r
\r
protected static final List<String> TAXONNODE_INIT_STRATEGY = Arrays.asList(new String []{\r
- "taxonNodes.taxonomicTree"\r
+ "taxonNodes.classification"\r
});\r
\r
\r
* 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
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
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
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
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
\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
\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
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
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
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
} \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
}\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
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() {
}
@Override
- public JSONObject processBeanSecondStep(ReferenceBase bean,
+ public JSONObject processBeanSecondStep(Reference bean,
JSONObject json, JsonConfig jsonConfig) {
return json;
}
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
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
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
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
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
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).
--- /dev/null
+// $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
</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>
<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
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;
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);
}
@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);
@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);
<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
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
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
\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
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
* @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
//@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
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
\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
*/\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
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
/**\r
* @return\r
*/\r
- public ITaxonTreeService getTaxonTreeService();\r
+ public IClassificationService getClassificationService();\r
\r
/**\r
* \r
*/\r
public IService<CdmBase> getMainService();\r
\r
+ \r
+ /**\r
+ * @return\r
+ */\r
+ public IWorkingSetService getWorkingSetService();\r
+ \r
/**\r
* @return\r
*/\r
* @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
\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
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
// 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
// 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
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
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
* @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
\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
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
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
\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
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;
/**
*/
@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;
/*
* (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);
/*
* (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);
* (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){
/*
* (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){
/* (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) {
/*
* (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);
/*
* (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);
/*
* (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);
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);
/*
* (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) {
}
/* (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);
}
/*
* (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,
}
- 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);
* @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;
}
*/
@Override
public void updateTitleCache() {
- Class<TaxonomicTree> clazz = TaxonomicTree.class;
+ Class<Classification> clazz = Classification.class;
super.updateTitleCache(clazz, null, null);
}
}
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;
* @created Sep 21, 2009
* @version 1.0
*/
-public interface ITaxonTreeService extends IIdentifiableEntityService<TaxonomicTree> {
+public interface IClassificationService extends IIdentifiableEntityService<Classification> {
/**
*
* @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);
/**
*
* 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>.
* 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>.
* @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);
* 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
* @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);
/**
*
--- /dev/null
+/**\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
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)
* 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
* @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
* <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);
}
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;
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;
* 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);
/**
*
* @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.
* @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.
* {@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.
* @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.
* @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.
* @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)
* @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();
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;
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);
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;
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
/**
* 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);
}
* 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);
* @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)
// 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);
}
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 ?
}
}
}
- 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.
*
}
//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();
}
// 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++){
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;
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;
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
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;
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);
}
}
}
--- /dev/null
+/**\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
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
*/\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
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
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
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
* 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
\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
\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
* @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
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
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
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
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
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
\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
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
\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
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
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
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
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
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
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
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
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
FieldObservation firstFieldObject;\r
Media media1 = Media.NewInstance();\r
\r
+ \r
//****************************** SET UP *****************************************/\r
\r
/**\r
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
specimen.setCollectorsNumber(collectorsNumber);\r
specimen.setCollection(collection);\r
specimen.setPreservation(preservationMethod);\r
+ specimen.setExsiccatum(exsiccatum);\r
\r
specimenFacade = DerivedUnitFacade.NewInstance(specimen);\r
\r
*/\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
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
@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
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
--- /dev/null
+// $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");
+ }
+}
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
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
\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
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
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;
\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
\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
+++ /dev/null
-// $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");
- }
-}
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
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
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;
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();
// 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
// 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);
// 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
// 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);
// 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);
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();
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
// 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
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
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
\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
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
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
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
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
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
\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
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
<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
// 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
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
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
\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
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
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
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
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
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;
<?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
<?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
<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
<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
<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