/**
*
*/
package org.eclipse.iee.web.server;
import java.io.File;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import org.apache.commons.lang3.text.StrSubstitutor;
import org.eclipse.iee.core.IResultContainer;
import org.eclipse.iee.core.InMemoryResultContainer;
import org.eclipse.iee.core.document.parser.DefaultDocumentParser;
import org.eclipse.iee.core.store.InMemoryEvaluationContextStore;
import org.eclipse.iee.pad.formula.FormulaPadParser;
import org.eclipse.iee.pad.formula.InputPadParser;
import org.eclipse.iee.pad.formula.SymbolicEngine;
import org.eclipse.iee.pad.formula.SymbolicPadParser;
import org.eclipse.iee.pad.formula.image.FormulaImageRenderer;
import org.eclipse.iee.pad.graph.GraphPadParser;
import org.eclipse.iee.pad.image.ImagePadParser;
import org.eclipse.iee.pad.text.TextPadParser;
import org.eclipse.iee.web.renderer.DefaultHTMLDocumentRenderer;
import org.eclipse.iee.web.renderer.DefaultTextRenderer;
import org.eclipse.iee.web.renderer.FormulaHTMLRenderer;
import org.eclipse.iee.web.renderer.GraphHTMLRenderer;
import org.eclipse.iee.web.renderer.HTMLRendererManager;
import org.eclipse.iee.web.renderer.ImageHTMLRenderer;
import org.eclipse.iee.web.renderer.InputHTMLRenderer;
import org.eclipse.iee.web.renderer.SymbolicHTMLRenderer;
import org.eclipse.iee.web.renderer.TextHTMLRenderer;
import org.eclipse.iee.web.server.store.OSGIContainerDocumentStore;
import org.eclipse.iee.web.servlet.TestServlet;
/**
* @author aefimchuk
*
*/
public class DocumentServlet extends TestServlet {
private OSGIContainerDocumentStore containerStore;
@Override
public void init(ServletConfig arg0) throws ServletException {
String ieeFolder = StrSubstitutor.replaceSystemProperties(arg0.getInitParameter("iee-folder"));
File file = new File(ieeFolder);
if (!file.exists()) {
file.mkdirs();
}
DefaultDocumentParser documentParser = new DefaultDocumentParser();
documentParser.registerPadParser(new InputPadParser());
documentParser.registerPadParser(new FormulaPadParser());
documentParser.registerPadParser(new SymbolicPadParser());
documentParser.registerPadParser(new TextPadParser());
documentParser.registerPadParser(new GraphPadParser());
documentParser.registerPadParser(new ImagePadParser());
containerStore = new OSGIContainerDocumentStore(ieeFolder, documentParser);
setDocumentStore(containerStore);
FormulaImageRenderer formulaImageRenderer = new FormulaImageRenderer();
HTMLRendererManager manager = new HTMLRendererManager();
manager.registerPadHTMLRenderer(new FormulaHTMLRenderer(formulaImageRenderer));
manager.registerPadHTMLRenderer(new InputHTMLRenderer(formulaImageRenderer));
manager.registerPadHTMLRenderer(new SymbolicHTMLRenderer(new SymbolicEngine(), formulaImageRenderer));
manager.registerPadHTMLRenderer(new ImageHTMLRenderer());
manager.registerPadHTMLRenderer(new TextHTMLRenderer());
manager.registerPadHTMLRenderer(new DefaultTextRenderer());
manager.registerPadHTMLRenderer(new GraphHTMLRenderer(formulaImageRenderer));
setDocumentRenderer(new DefaultHTMLDocumentRenderer(manager));
setEvaluationContextStore(new InMemoryEvaluationContextStore());
}
@Override
protected IResultContainer createResultContainer() {
return new InMemoryResultContainer();
}
@Override
public void destroy() {
containerStore.stop();
}
}