2 package eu
.etaxonomy
.cdm
.remote
.view
;
4 import java
.util
.HashMap
;
7 import javax
.servlet
.http
.HttpServletRequest
;
8 import javax
.servlet
.http
.HttpServletResponse
;
9 import javax
.xml
.transform
.stream
.StreamResult
;
11 import net
.sf
.dozer
.util
.mapping
.MapperIF
;
13 import org
.joda
.time
.DateTime
;
14 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
15 import org
.springframework
.oxm
.Marshaller
;
16 import org
.springframework
.web
.servlet
.view
.AbstractView
;
18 import com
.ibm
.lsid
.http
.HTTPConstants
;
20 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
21 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
22 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
23 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
24 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
25 import eu
.etaxonomy
.cdm
.remote
.dto
.tdwg
.BaseThing
;
26 import eu
.etaxonomy
.cdm
.remote
.dto
.tdwg
.voc
.SpeciesProfileModel
;
27 import eu
.etaxonomy
.cdm
.remote
.dto
.tdwg
.voc
.TaxonConcept
;
28 import eu
.etaxonomy
.remote
.dto
.rdf
.Rdf
;
31 * View class which takes a MetadataResponse and returns the Source for serialization
33 * @see javax.xml.transform.Source
34 * @see com.ibm.lsid.MetadataResponse
36 public class RdfView
extends AbstractView
{
38 private Marshaller marshaller
;
40 private MapperIF mapper
;
42 private Map
<Class
<?
extends CdmBase
>,Class
<?
extends BaseThing
>> classMap
= new HashMap
<Class
<?
extends CdmBase
>,Class
<?
extends BaseThing
>>();
44 private Integer expiresPlus
;
47 classMap
.put(Taxon
.class, TaxonConcept
.class);
48 classMap
.put(Synonym
.class, TaxonConcept
.class);
49 classMap
.put(TaxonDescription
.class, SpeciesProfileModel
.class);
53 public void setMarshaller(Marshaller marshaller
) {
54 this.marshaller
= marshaller
;
58 public void setMapper(MapperIF mapper
) {
62 public void setExpiresPlus(Integer expiresPlus
) {
63 this.expiresPlus
= expiresPlus
;
67 protected void renderMergedOutputModel(Map model
,HttpServletRequest request
, HttpServletResponse response
)
69 if(expiresPlus
!= null) {
70 DateTime expires
= new DateTime();
71 response
.setHeader(HTTPConstants
.EXPIRES_HEADER
, HTTPConstants
.HTTP_DATE_FORMAT
.format(expires
.plusDays(expiresPlus
).toDate()));
75 for(Object object
: model
.values()) {
76 if(object
instanceof IdentifiableEntity
) {
77 IdentifiableEntity identifiableEntity
= (IdentifiableEntity
)object
;
78 Class clazz
= classMap
.get(identifiableEntity
.getClass());
80 rdf
.addThing((BaseThing
)mapper
.map(identifiableEntity
, clazz
));
85 marshaller
.marshal(rdf
, new StreamResult(response
.getOutputStream()));