From 11e75ce8bf4d37be4b383db9209534d50d41a0c7 Mon Sep 17 00:00:00 2001 From: Andreas Kohlbecker Date: Wed, 20 Oct 2010 20:52:13 +0000 Subject: [PATCH] improved dwc mapping --- .../controller/AbstractOaiPmhController.java | 4 ++++ .../oaipmh/ReferenceOaiPmhController.java | 2 +- .../HibernateProxyNullSafeDeepConverter.java | 4 ---- .../cdm/remote/dto/oaipmh/mappings.xml | 8 ++++---- .../dto/assembler/lsid/AssemblerTest.java | 20 +++++++++++++++++++ 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/AbstractOaiPmhController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/AbstractOaiPmhController.java index b7469d03a8..ab84a0ce42 100644 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/AbstractOaiPmhController.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/AbstractOaiPmhController.java @@ -189,6 +189,10 @@ public abstract class AbstractOaiPmhController obtainCdmEntity(LSID identifier) throws IdDoesNotExistException { T object = service.find(identifier); + if(object == null){ + throw new IdDoesNotExistException(identifier); + } + Pager> results = service.pageAuditEvents(object, 1, 0, AuditEventSort.BACKWARDS, getPropertyPaths()); diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java index 945a38a07f..70ee142d0d 100644 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java @@ -48,6 +48,7 @@ public class ReferenceOaiPmhController extends AbstractOaiPmhController TAXON_INIT_STRATEGY = Arrays.asList(new String []{ "titleCache", "name.titleCache", + "name.nomenclaturalReference.titleCache", "$" }); @@ -94,7 +95,6 @@ public class ReferenceOaiPmhController extends AbstractOaiPmhController auditEventRecord = obtainCdmEntity(identifier); ReferenceBase referenceBase = auditEventRecord.getAuditableObject(); List list = service.listCoveredTaxa(referenceBase, true, TAXON_INIT_STRATEGY); - return list; } diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/dto/assembler/converter/HibernateProxyNullSafeDeepConverter.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/dto/assembler/converter/HibernateProxyNullSafeDeepConverter.java index 233a1e1616..9299b56bcf 100644 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/dto/assembler/converter/HibernateProxyNullSafeDeepConverter.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/dto/assembler/converter/HibernateProxyNullSafeDeepConverter.java @@ -12,13 +12,9 @@ package eu.etaxonomy.cdm.remote.dto.assembler.converter; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.Iterator; import java.util.List; -import java.util.Stack; -import java.util.Vector; import org.dozer.ConfigurableCustomConverter; import org.dozer.Mapper; diff --git a/cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml b/cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml index 706e40a792..fbc6b80f5c 100644 --- a/cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml +++ b/cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml @@ -104,12 +104,12 @@ titleCache scientificName - - nomenclaturalReference + + citationString namePublishedIn - - nomenclaturalReference + + authorshipCache scientificNameAuthorship diff --git a/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java b/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java index 4cdb6b53b3..c107c02dd1 100644 --- a/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java +++ b/cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java @@ -48,7 +48,9 @@ import eu.etaxonomy.cdm.model.description.TextData; import eu.etaxonomy.cdm.model.location.NamedArea; import eu.etaxonomy.cdm.model.name.BotanicalName; import eu.etaxonomy.cdm.model.name.NonViralName; +import eu.etaxonomy.cdm.model.name.Rank; import eu.etaxonomy.cdm.model.reference.IBook; +import eu.etaxonomy.cdm.model.reference.INomenclaturalReference; import eu.etaxonomy.cdm.model.reference.ReferenceBase; import eu.etaxonomy.cdm.model.reference.ReferenceFactory; import eu.etaxonomy.cdm.model.taxon.Synonym; @@ -56,6 +58,7 @@ import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonRelationship; +import eu.etaxonomy.cdm.remote.dto.dwc.SimpleDarwinRecord; import eu.etaxonomy.cdm.remote.dto.tdwg.voc.SpeciesProfileModel; import eu.etaxonomy.cdm.remote.dto.tdwg.voc.TaxonConcept; @@ -89,7 +92,12 @@ public class AssemblerTest extends UnitilsJUnit4 { name = BotanicalName.NewInstance(null); name.setNameCache("nameCache"); + INomenclaturalReference nomenclaturalReference = refFactory.newArticle(); + nomenclaturalReference.setTitleCache("nomenclaturalReference", true); + name.setNomenclaturalReference(nomenclaturalReference); + name.setNomenclaturalMicroReference("1"); name.setAuthorshipCache("authorshipCache"); + name.setRank(Rank.SPECIES()); sec = refFactory.newBook(); sec.setAuthorTeam(authorTeam); @@ -98,6 +106,7 @@ public class AssemblerTest extends UnitilsJUnit4 { taxon = Taxon.NewInstance(name, (ReferenceBase)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); @@ -185,6 +194,17 @@ public class AssemblerTest extends UnitilsJUnit4 { assertEquals(speciesProfileModel.getHasInformation().size(),2); } + @Test + public void testSimpleDarwinCoreMapping() { + SimpleDarwinRecord simpleDarwinRecord = mapper.map(taxon, SimpleDarwinRecord.class); + mapper.map((NonViralName)taxon.getName(), simpleDarwinRecord); + assertNotNull(simpleDarwinRecord.getModified()); + assertEquals(taxon.getName().getTitleCache(), simpleDarwinRecord.getScientificName()); + assertEquals(((NonViralName)taxon.getName()).getAuthorshipCache(), simpleDarwinRecord.getScientificNameAuthorship()); + assertEquals(((NonViralName)taxon.getName()).getCitationString(), simpleDarwinRecord.getNamePublishedIn()); + assertEquals(Rank.SPECIES().getLabel(), simpleDarwinRecord.getTaxonRank()); + } + private T getUninitializedPersistentCollection(final Class clazz,final T wrappedCollection) { final Enhancer enhancer = new Enhancer(); List interfaces = new ArrayList(); -- 2.34.1