package org.eclipse.iee.web.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.iee.core.IParameterProvider;
import org.eclipse.iee.core.IResultContainer;
import org.eclipse.iee.core.store.IDocumentStore;
import org.eclipse.iee.web.renderer.IHTMLRendererContext;
public class DefaultHTMLRendererContext implements IHTMLRendererContext {
private String evaluationId;
private IResultContainer fResultContainer;
private String docUrl;
private Map<String, String> params;
private boolean isEditMode;
private IParameterProvider parameterProvider;
private String bundle;
private String document;
private IDocumentStore documentStore;
protected HttpServletRequest request;
protected HttpServletResponse response;
public DefaultHTMLRendererContext(
String evaluationId,
HttpServletRequest request,
HttpServletResponse response,
String docUrl,
Map<String, String> params,
IDocumentStore documentStore,
String bundle,
String document,
IResultContainer fResultContainer,
boolean isEditMode,
IParameterProvider parameterProvider) {
super();
this.evaluationId = evaluationId;
this.request = request;
this.response = response;
this.fResultContainer = fResultContainer;
this.docUrl = docUrl;
this.params = params;
this.isEditMode = isEditMode;
this.parameterProvider = parameterProvider;
this.documentStore = documentStore;
this.bundle = bundle;
this.document = document;
}
public String getEvaluationId() {
return evaluationId;
}
@Override
public String createResourceURL(String padId, String resourceId, Map<String, String> params) {
Map<String, String> mergedParams = new HashMap<String, String>(this.params);
mergedParams.putAll(params);
mergedParams.put("evalId", getEvaluationId());
StringBuilder sb = new StringBuilder(docUrl);
sb.append("/").append(padId);
sb.append("/").append(resourceId);
boolean first = true;
for (Entry<String, String> entry : mergedParams.entrySet()) {
if (first) {
sb.append('?');
first = false;
} else {
sb.append('&');
}
sb.append(entry.getKey());
sb.append('=');
sb.append(entry.getValue());
}
return sb.toString();
}
@Override
public String createURL(Map<String, String> params) {
Map<String, String> mergedParams = new HashMap<String, String>(this.params);
mergedParams.putAll(params);
StringBuilder sb = new StringBuilder(docUrl);
boolean first = true;
for (Entry<String, String> entry : mergedParams.entrySet()) {
if (first) {
sb.append('?');
first = false;
} else {
sb.append('&');
}
sb.append(entry.getKey());
sb.append('=');
sb.append(entry.getValue());
}
return sb.toString();
}
@Override
public IResultContainer getResultContainer() {
return fResultContainer;
}
@Override
public boolean isEditMode() {
return isEditMode;
}
@Override
public IParameterProvider getParameterProvider() {
return parameterProvider;
}
@Override
public InputStream getResourceAsStream(String string) throws IOException {
return documentStore.getResourceAsStream(bundle, document, string);
}
@Override
public Writer getWriter() throws IOException {
return response.getWriter();
}
}