001package com.hammurapi.common;
002
003import javax.script.*;
004import java.util.List;
005import java.util.Arrays;
006
007/**
008 * HTML script engine factory used TokenExpander engine to expands tokens in HTML.
009 * @author Pavel
010 *
011 */
012public class HtmlScriptEngineFactory implements javax.script.ScriptEngineFactory {
013        final List<String> extensions = Arrays.asList("html", "htm");
014
015        final List<String> mimeTypes = Arrays.asList("text/html");
016
017        final List<String> names = Arrays.asList("HTML");
018
019        public String getEngineName() {
020                return "HTML with token expansion";
021        }
022
023        public String getEngineVersion() {
024                return "1.0";
025        }
026
027        public List<String> getExtensions() {
028                return extensions;
029        }
030
031        public List<String> getMimeTypes() {
032                return mimeTypes;
033        }
034
035        public List<String> getNames() {
036                return names;
037        }
038
039        public String getLanguageName() {
040                return "HTML";
041        }
042
043        public String getLanguageVersion() {
044                return "4.1";
045        }
046
047        public Object getParameter(String param) {
048                if (param.equals(ScriptEngine.ENGINE))
049                        return getEngineName();
050                if (param.equals(ScriptEngine.ENGINE_VERSION))
051                        return getEngineVersion();
052                if (param.equals(ScriptEngine.NAME))
053                        return getEngineName();
054                if (param.equals(ScriptEngine.LANGUAGE))
055                        return getLanguageName();
056                if (param.equals(ScriptEngine.LANGUAGE_VERSION))
057                        return getLanguageVersion();
058                if (param.equals("THREADING"))
059                        return "MULTITHREADED";
060
061                return null;
062        }
063
064        public String getMethodCallSyntax(String objectName, String methodName, String... args) {
065                return null;
066        }
067
068        public String getOutputStatement(String message) {
069                return null;
070        }
071
072        public String getProgram(String... statements) {
073                StringBuilder sb = new StringBuilder();
074                for (int i = 0; i < statements.length; i++) {
075                        sb.append(statements[i]);
076                }
077                return sb.toString();
078        }
079
080        public ScriptEngine getScriptEngine() {
081                return new TokenExpanderScriptEngine();
082        }
083}