Project

General

Profile

Download (2.15 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id: RdfView.java 7281 2009-10-07 12:09:25Z ben.clark $
2
package eu.etaxonomy.cdm.remote.view;
3

    
4
import java.util.Enumeration;
5
import java.util.Map;
6

    
7
import javax.servlet.http.HttpServletRequest;
8
import javax.servlet.http.HttpServletResponse;
9
import javax.xml.transform.stream.StreamResult;
10

    
11
import org.dozer.Mapper;
12
import org.springframework.beans.factory.annotation.Autowired;
13
import org.springframework.beans.factory.annotation.Qualifier;
14
import org.springframework.oxm.Marshaller;
15
import org.springframework.web.servlet.view.AbstractView;
16

    
17
import eu.etaxonomy.cdm.remote.dto.oaipmh.OAIPMH;
18

    
19
/**
20
 * View class which takes a MetadataResponse and returns the Source for serialization
21
 * @author ben
22
 * @see javax.xml.transform.Source
23
 * @see com.ibm.lsid.MetadataResponse
24
 */
25
public abstract class OaiPmhResponseView extends AbstractView {
26
	
27
	private Marshaller marshaller;
28
	
29
	protected Mapper mapper;
30
	
31
	@Autowired
32
	@Qualifier("marshaller")
33
	public void setMarshaller(Marshaller marshaller) {
34
		this.marshaller = marshaller;
35
	}
36
	
37
	@Autowired
38
	public void setMapper(Mapper mapper) {
39
		this.mapper = mapper;
40
	}
41
	
42
    protected abstract void constructResponse(OAIPMH oaiPmh,Map<String,Object> model);
43

    
44
    @Override
45
    protected void renderMergedOutputModel(Map<String,Object> model,HttpServletRequest request, HttpServletResponse response)
46
			throws Exception {
47
	    OAIPMH oaiPmh = new OAIPMH();
48
	    StringBuffer requestBuffer = request.getRequestURL();
49
	    if(!request.getParameterMap().isEmpty()) {
50
	    	int i = 0;
51
	    	Enumeration<String> parameterNames = request.getParameterNames();
52
	        while(parameterNames.hasMoreElements()) {
53
	        	String parameterName = parameterNames.nextElement();
54
	        	if(i == 0) {
55
	        		requestBuffer.append("?");
56
	        	} else {
57
	        		requestBuffer.append("&");
58
	        	}
59
	            requestBuffer.append(parameterName + "=" + request.getParameter(parameterName));
60
	        }
61
	    }
62
        model.put("request",requestBuffer.toString());
63
        constructResponse(oaiPmh,model);
64
		marshaller.marshal(oaiPmh, new StreamResult(response.getOutputStream()));
65
	}
66

    
67
}
(6-6/10)