Package com.sogou.qadev.service.cynthia.bean

Source Code of com.sogou.qadev.service.cynthia.bean.ScriptAction

package com.sogou.qadev.service.cynthia.bean;

import java.util.List;

import org.w3c.dom.Document;
import org.w3c.dom.Node;

import bsh.Interpreter;

import com.sogou.qadev.service.cynthia.factory.DataAccessFactory;
import com.sogou.qadev.service.cynthia.service.DataAccessSession;
import com.sogou.qadev.service.cynthia.service.ScriptAccessSession;
import com.sogou.qadev.service.cynthia.util.ConfigUtil;
import com.sohu.rd.td.util.xml.XMLUtil;

/**
* @description:script action
* @author:liming
* @mail:liming@sogou-inc.com
* @date:2014-5-6 下午4:22:22
* @version:v1.0
*/
public class ScriptAction
{
  /**
   * @description:execute action
   * @date:2014-5-6 下午4:22:32
   * @version:v1.0
   * @param id:action id
   * @param content:action name
   * @param username:current user
   * @param xml:action xml
   * @return
   */
  public boolean execute(String id,String content, String username, String xml){
    return executeInternal(id,username, xml);
  }
 
  public boolean execute(String id,Data[] dataArray, String username, String xml){
    return executeInternal(id,username, xml);
  }
 
  /**
   * @description:execute action
   * @date:2014-5-6 下午4:23:05
   * @version:v1.0
   * @param id:action id
   * @param username:current user
   * @param xml:action xml
   * @return
   */
  protected boolean executeInternal(String id,String username, String xml){
    try{
      DataAccessSession das = DataAccessFactory.getInstance().createDataAccessSession(username, ConfigUtil.magic);
      ScriptAccessSession sas = das.createScriptAccessSession();
      Document doc = XMLUtil.string2Document(xml, "UTF-8");
      Node rootNode = XMLUtil.getSingleNode(doc, "root");
     
      List<Node> scriptIdNodeList = XMLUtil.getNodes(rootNode, "scriptId");
      for(Node scriptIdNode : scriptIdNodeList){
        UUID scriptId = DataAccessFactory.getInstance().createUUID(scriptIdNode.getTextContent());
        Script script = sas.queryScript(scriptId);
        if(script == null){
          continue;
        }
        Interpreter bsh = new Interpreter();
        bsh.setClassLoader(this.getClass().getClassLoader());
        bsh.set("das", das);
        bsh.eval(script.getScript());
      }
     
      return true;
    }
    catch(Exception e){
      e.printStackTrace();
    }
   
    return false;
  }
}
TOP

Related Classes of com.sogou.qadev.service.cynthia.bean.ScriptAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.