package com.processpuzzle.artifact_management.control;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.processpuzzle.application.control.control.CommandDispatcher;
import com.processpuzzle.artifact.domain.ArtifactView;
public class RetrieveArtifactViewDataCommand extends ArtifactViewCommand {
private static final String MODE_PARAMETER_NAME = "mode";
public static final String METHOD_PARAMETER_NAME = "method";
public static final String COMMAND_NAME = "RetrieveDataView";
protected XmlActionResponse xmlData = null;
public void init( CommandDispatcher dispatcher ) {
super.init( dispatcher );
}
public String execute( CommandDispatcher dispatcher ) throws Exception {
buildXmlResponse( dispatcher, this.subjectArtifactView );
return "";
}
@SuppressWarnings("unchecked")
private void buildXmlResponse( CommandDispatcher dispatcher, ArtifactView<?> view ) throws IOException {
HttpServletResponse response = dispatcher.getResponse();
String dataRetrieveMode = dispatcher.getRequest().getParameter( MODE_PARAMETER_NAME );
String dataRetrieverMethod = dispatcher.getRequest().getParameter( METHOD_PARAMETER_NAME );
Map<?, ?> requestParameters = dispatcher.getRequest().getParameterMap();
Map<String, String> dataRetrieverMethodParameters = new HashMap<String, String>();
for( Iterator requestParametersIterator = requestParameters.entrySet().iterator(); requestParametersIterator.hasNext(); ){
Map.Entry<?,?> reqestParametersEntry = (Map.Entry<?,?>) requestParametersIterator.next();
String key = reqestParametersEntry.getKey().toString();
if( key.startsWith( "par" ) ){
String value = ((String[]) reqestParametersEntry.getValue())[0];
dataRetrieverMethodParameters.put( key, value );
}
}
String responseValue = "";
if( dataRetrieveMode.equals( "xml" ) ){
responseValue += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
response.setContentType( "text/xml; charset=UTF-8" );
}else if( dataRetrieveMode.equals( "text" ) ){
response.setContentType( "text/plain" );
}
responseValue += view.getData( dataRetrieverMethod, dataRetrieverMethodParameters );
response.setCharacterEncoding( "UTF-8" );
response.setHeader( "Cache-Control", "no-cache" );
System.out.println( "data: " + responseValue );
response.getWriter().write( responseValue );
}
public String getName() {
return "RetreiveDataView";
}
protected void retrieveRequestParameters( CommandDispatcher dispatcher ) {
super.retrieveRequestParameters( dispatcher );
}
protected void retrieveResponseDocument() {
}
}