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 org
.dozer
.Mapper
;
12 import org
.joda
.time
.DateTime
;
13 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
14 import org
.springframework
.oxm
.Marshaller
;
15 import org
.springframework
.web
.servlet
.view
.AbstractView
;
17 import com
.ibm
.lsid
.http
.HTTPConstants
;
19 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
20 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
21 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
22 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
23 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
24 import eu
.etaxonomy
.cdm
.remote
.dto
.tdwg
.BaseThing
;
25 import eu
.etaxonomy
.cdm
.remote
.dto
.tdwg
.voc
.SpeciesProfileModel
;
26 import eu
.etaxonomy
.cdm
.remote
.dto
.tdwg
.voc
.TaxonConcept
;
27 import eu
.etaxonomy
.remote
.dto
.rdf
.Rdf
;
30 * View class which takes a MetadataResponse and returns the Source for serialization
32 * @see javax.xml.transform.Source
33 * @see com.ibm.lsid.MetadataResponse
35 public class RdfView
extends AbstractView
{
37 private Marshaller marshaller
;
39 private Mapper mapper
;
41 private Map
<Class
<?
extends CdmBase
>,Class
<?
extends BaseThing
>> classMap
= new HashMap
<Class
<?
extends CdmBase
>,Class
<?
extends BaseThing
>>();
43 private Integer expiresPlus
;
46 classMap
.put(Taxon
.class, TaxonConcept
.class);
47 classMap
.put(Synonym
.class, TaxonConcept
.class);
48 classMap
.put(TaxonDescription
.class, SpeciesProfileModel
.class);
52 public void setMarshaller(Marshaller marshaller
) {
53 this.marshaller
= marshaller
;
57 public void setMapper(Mapper mapper
) {
61 public void setExpiresPlus(Integer expiresPlus
) {
62 this.expiresPlus
= expiresPlus
;
66 protected void renderMergedOutputModel(Map model
,HttpServletRequest request
, HttpServletResponse response
)
68 if(expiresPlus
!= null) {
69 DateTime expires
= new DateTime();
70 response
.setHeader(HTTPConstants
.EXPIRES_HEADER
, HTTPConstants
.HTTP_DATE_FORMAT
.format(expires
.plusDays(expiresPlus
).toDate()));
74 for(Object object
: model
.values()) {
75 if(object
instanceof IdentifiableEntity
) {
76 IdentifiableEntity identifiableEntity
= (IdentifiableEntity
)object
;
77 Class clazz
= classMap
.get(identifiableEntity
.getClass());
79 rdf
.addThing((BaseThing
)mapper
.map(identifiableEntity
, clazz
));
84 marshaller
.marshal(rdf
, new StreamResult(response
.getOutputStream()));