package com.smtscript.lib.kettle;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.Map.Entry;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.mozilla.javascript.NativeObject;
import com.smtscript.lib.JSComment;
import com.smtscript.utils.HttpClient;
import com.smtscript.utils.SMTStatic;
public class ScriptKettleCarte
{
private boolean _jobRunning;
private String _jobState;
private String _baseUrl;
private String _authHead;
private String _repoName;
private String _jobId;
private HttpClient _web;
public ScriptKettleCarte(NativeObject nvConfig) throws Exception
{
_web = new HttpClient();
_jobRunning = false;
_baseUrl = (String) SMTStatic.getJSValue(nvConfig, "base_url");
_repoName = (String) SMTStatic.getJSValue(nvConfig, "repo_name");
String user = (String) SMTStatic.getJSValue(nvConfig, "user");
String pass = (String) SMTStatic.getJSValue(nvConfig, "pass");
if(!SMTStatic.isNullOrEmpty(user) && !SMTStatic.isNullOrEmpty(pass))
{
_authHead = "Basic " + Base64.getEncoder().encodeToString(String.format("%s:%s", user, pass).getBytes());
}
}
@JSComment(
"" +
"@param nvConfig \n" +
" job_name - String : job name\n" +
" wait_end - Boolean(true): Wait for job end\n" +
" params - Map : params for job\n" +
""
)
public boolean executeJob(NativeObject nvConfig) throws Exception
{
if(_jobRunning)
throw new Exception("current job is running");
// 初始化基本参数
Boolean waitEnd = (Boolean)SMTStatic.getJSValue(nvConfig, "wait_end", true);
String jobName = (String) SMTStatic.getJSValue(nvConfig, "job_name");
List listParams = new ArrayList();
listParams.add("xml");
listParams.add("Y");
listParams.add("rep");
listParams.add(_repoName);
listParams.add("job");
listParams.add(jobName);
// 初始化自定义参数
NativeObject nvParams = (NativeObject) SMTStatic.getJSValue(nvConfig, "params", null);
if(nvParams != null)
{
for(Entry