improved dwc mapping
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Wed, 20 Oct 2010 20:52:13 +0000 (20:52 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Wed, 20 Oct 2010 20:52:13 +0000 (20:52 +0000)
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/AbstractOaiPmhController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/oaipmh/ReferenceOaiPmhController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/dto/assembler/converter/HibernateProxyNullSafeDeepConverter.java
cdmlib-remote/src/main/resources/eu/etaxonomy/cdm/remote/dto/oaipmh/mappings.xml
cdmlib-remote/src/test/java/eu/etaxonomy/cdm/remote/dto/assembler/lsid/AssemblerTest.java

index b7469d03a8a00b3816371e6c7858d4147e328f4a..ab84a0ce42bb7047002abd0885dd40f87a1ed4b4 100644 (file)
@@ -189,6 +189,10 @@ public abstract class AbstractOaiPmhController<T extends IdentifiableEntity, SER
        protected AuditEventRecord<T> obtainCdmEntity(LSID identifier)\r
                        throws IdDoesNotExistException {\r
                T object = service.find(identifier);\r
+               if(object == null){             \r
+                       throw new IdDoesNotExistException(identifier);\r
+               }\r
+               \r
                Pager<AuditEventRecord<T>> results = service.pageAuditEvents(object, 1,\r
                                0, AuditEventSort.BACKWARDS, getPropertyPaths());\r
 \r
index 945a38a07f4fd7a1208c54ee6091ebfd58042f72..70ee142d0d143cbed9f25d29f1edac93e520752e 100644 (file)
@@ -48,6 +48,7 @@ public class ReferenceOaiPmhController extends AbstractOaiPmhController<Referenc
        private static final List<String> TAXON_INIT_STRATEGY = Arrays.asList(new String []{\r
                        "titleCache",\r
                        "name.titleCache",\r
+                       "name.nomenclaturalReference.titleCache",\r
                        "$"\r
                        });\r
 \r
@@ -94,7 +95,6 @@ public class ReferenceOaiPmhController extends AbstractOaiPmhController<Referenc
                AuditEventRecord<ReferenceBase> auditEventRecord = obtainCdmEntity(identifier);\r
                ReferenceBase referenceBase = auditEventRecord.getAuditableObject();\r
                List<TaxonBase> list = service.listCoveredTaxa(referenceBase, true, TAXON_INIT_STRATEGY);\r
-               \r
                return list;\r
        }\r
     \r
index 233a1e161688921d378ae25eda28860e6bb47695..9299b56bcf3bad544f574b2d944d7da3ea9d5f80 100644 (file)
@@ -12,13 +12,9 @@ package eu.etaxonomy.cdm.remote.dto.assembler.converter;
 import java.beans.PropertyDescriptor;\r
 import java.lang.reflect.InvocationTargetException;\r
 import java.lang.reflect.Method;\r
-import java.util.ArrayList;\r
 import java.util.Arrays;\r
-import java.util.Collections;\r
 import java.util.Iterator;\r
 import java.util.List;\r
-import java.util.Stack;\r
-import java.util.Vector;\r
 \r
 import org.dozer.ConfigurableCustomConverter;\r
 import org.dozer.Mapper;\r
index 706e40a7926d045ff02b14e97227f3047b801bd9..fbc6b80f5cc3588cb31229672e1023eef821d03d 100644 (file)
             <a>titleCache</a>
             <b>scientificName</b>
        </field>
-       <field custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="titleCache">
-            <a>nomenclaturalReference</a>
+       <field>
+            <a>citationString</a>
             <b>namePublishedIn</b>
        </field>
-       <field custom-converter-id="hibernateProxyDeepConverter" custom-converter-param="authorTeam.titleCache">
-            <a>nomenclaturalReference</a>
+       <field>
+            <a>authorshipCache</a>
             <b>scientificNameAuthorship</b>
        </field>    
        <field>
index 4cdb6b53b3912f6801fff4d3ccb70a9140cea2db..c107c02dd1985dac857974fbec20c290b802fd46 100644 (file)
@@ -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 extends Collection> T getUninitializedPersistentCollection(final Class<T> clazz,final T wrappedCollection) {
                final Enhancer enhancer = new Enhancer();
                List<Class> interfaces = new ArrayList<Class>();