package br.com.centralit.citajax.framework;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import br.com.centralit.citajax.html.DocumentHTML;
public class CITScriptProcess {
public void processScript(String methodName, Object objetoClasse, Object bean, DocumentHTML document, HttpServletRequest request, HttpServletResponse response){
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
scope.put("document", scope, document);
scope.put("bean", scope, bean);
scope.put("request", scope, request);
scope.put("response", scope, response);
scope.put("methodName", scope, methodName);
scope.put("objetoClasse", scope, objetoClasse);
String sourceName = objetoClasse.getClass().getName() + "_" + methodName;
sourceName = sourceName.replaceAll("\\.", "_");
URL url = objetoClasse.getClass().getResource("/dynamicScript/SYSTEM_" + sourceName + ".script");
URI uri = null;
try {
if (url != null){
uri = url.toURI();
}
} catch (URISyntaxException e1) {
e1.printStackTrace();
uri = null;
}
File f = null;
if (uri != null){
f = new File(uri);
}
FileInputStream is = null;
try {
if (f != null){
is = new FileInputStream(f);
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
is = null;
}
if (is != null){
String conteudoScript = "";
try {
conteudoScript = getConteudo(is);
} catch (IOException e) {
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (conteudoScript != null && !conteudoScript.trim().equalsIgnoreCase("")){
Object result = cx.evaluateString(scope, conteudoScript, sourceName, 1, null);
document.setReturnScriptSystem(result);
}
}
url = objetoClasse.getClass().getResource("/dynamicScript/USER_" + objetoClasse.getClass().getName() + "_" + methodName + ".script");
uri = null;
try {
if (url != null){
uri = url.toURI();
}
} catch (URISyntaxException e1) {
e1.printStackTrace();
uri = null;
}
f = null;
if (uri != null){
f = new File(uri);
}
try {
if (f != null){
is = new FileInputStream(f);
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
if (is != null){
String conteudoScript = "";
try {
conteudoScript = getConteudo(is);
} catch (IOException e) {
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (conteudoScript != null && !conteudoScript.trim().equalsIgnoreCase("")){
Object result = cx.evaluateString(scope, conteudoScript, sourceName, 1, null);
document.setReturnScriptUser(result);
}
}
}
public String getConteudo(FileInputStream is) throws IOException{
String conteudo = "";
if (is != null){
int ch;
while( (ch = is.read()) != -1)
conteudo += ((char)ch);
}
return conteudo;
}
}