ProcedureExecutor.java 4.54 KB
package com.sitech.ismp.check.mbean;

import java.util.Date;
import java.util.HashMap;

import com.sitech.ismp.check.util.SqlCollThread;
import com.sitech.ismp.messageObject.cc.CommandParameters;
import com.sitech.ismp.messageObject.cc.CommandResults;

public class ProcedureExecutor implements ProcedureExecutorMBean {

	public static String Exec_Flag_Success = "1";
	public static String Exec_Flag_Failure = "-1";
	
	public CommandResults executeProcedures(CommandParameters cps) {
		HashMap _customProp = null;
		String _taskid = "";
		int _type = 0;
		String _dburl = "";
		Date _begintime = null;
		Date _endtime = null;
		String _execresult = "";
		String _execlog = "";
		String _execflag = "";
		String _failurereasion = "";

		SqlCollThread sct = null;
		
		_execlog = "指令执行器准备开始执行PROCEDURE\n";
		CommandResults crs = new CommandResults();
//		init(cps);
		_customProp = cps.getCUSTOMPROP();
		_taskid = cps.getTASK_ID();
		_type = cps.getTYPE();
		_dburl = cps.getDB_URL();
		
		_execlog += "准备连接数据库" + _dburl + ",并执行SQL语句\n";
		sct = new SqlCollThread(cps);
		
		try {
			_begintime = new Date();
			_execresult = sct.execute();
			_endtime = new Date();
			_execlog += "执行PROCEDURE结束\n";
			_execflag = Exec_Flag_Success;
		} catch (Exception e) {
			_endtime = new Date();
			e.printStackTrace();
			_execlog += "执行PROCEDURE结束\n";
			_execflag = Exec_Flag_Failure;
			_failurereasion = e.getMessage();
			_execresult = e.getMessage();
		} finally {
			crs.setTASK_ID(_taskid);
			crs.setTYPE(_type);
			crs.setBEGIN_TIME(_begintime);
			crs.setEND_TIME(_endtime);
			crs.setEXEC_RESULT(_execresult);
			crs.setEXEC_LOG(_execlog);
			crs.setEXEC_FLAG(_execflag);
			crs.setFAILURE_REASION(_failurereasion);
			crs.setCUSTOMPROP(_customProp);
		}
		return crs;
	}
	
	public CommandResults createProcedure(CommandParameters cps) {
		HashMap _customProp = null;
		String _taskid = "";
		int _type = 0;
		String _dburl = "";
		Date _begintime = null;
		Date _endtime = null;
		String _execresult = "";
		String _execlog = "";
		String _execflag = "";
		String _failurereasion = "";

		SqlCollThread sct = null;
		
		_execlog = "指令执行器准备开始创建PROCEDURE\n";
		CommandResults crs = new CommandResults();
//		init(cps);
		_customProp = cps.getCUSTOMPROP();
		_taskid = cps.getTASK_ID();
		_type = cps.getTYPE();
		_dburl = cps.getDB_URL();
		
		_execlog += "准备连接数据库" + _dburl + ",并执行SQL语句\n";
		sct = new SqlCollThread(cps);
		
		try {
			_begintime = new Date();
			_execresult = sct.createProc();
			_endtime = new Date();
			_execlog += "创建PROCEDURE成功结束\n";
			_execflag = Exec_Flag_Success;
		} catch (Exception e) {
			_endtime = new Date();
			e.printStackTrace();
			_execlog += "创建PROCEDURE失败结束\n";
			_execflag = Exec_Flag_Failure;
			_failurereasion = e.getMessage();
			_execresult = e.getMessage();
		} finally {
			crs.setTASK_ID(_taskid);
			crs.setTYPE(_type);
			crs.setBEGIN_TIME(_begintime);
			crs.setEND_TIME(_endtime);
			crs.setEXEC_RESULT(_execresult);
			crs.setEXEC_LOG(_execlog);
			crs.setEXEC_FLAG(_execflag);
			crs.setFAILURE_REASION(_failurereasion);
			crs.setCUSTOMPROP(_customProp);
		}
		return crs;
	}

//	public String init(CommandParameters cps) {
//		_customProp = cps.getCUSTOMPROP();
//		_taskid = cps.getTASK_ID();
//		_type = cps.getTYPE();
//		_content = cps.getCONTENT();
//		_dburl = cps.getDB_URL();
//		if (String.valueOf(_type) != null && _type == 1) {
//			// SHELL指令方式,此类处理的是SQL/存储过程指令方式
//		} else if (String.valueOf(_type) != null && (_type == 2 || _type == 3)) {
//			// SQL/存储过程指令方
//			_execlog += "准备连接数据库" + _dburl + ",并执行SQL语句\n";
//			sct = new SqlCollThread(cps);
//		}
//		return "SUCCESS";
//	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ProcedureExecutor pe = new ProcedureExecutor();
		CommandParameters cps = new CommandParameters();
		cps.setTASK_ID("TaskID-mooker");
		cps.setTYPE(2);
		cps.setCONTENT("{call #proc_name#()}");
//		cps.setCONTENT("create or replace procedure insert_abcd is begin insert into abcd(id, NOWDATETIME) values (trunc(dbms_random.value(100, 10000)), sysdate); commit; end insert_abcd;");
		cps.setDB_DRIVER("oracle.jdbc.driver.OracleDriver");
		cps.setDB_URL("jdbc:oracle:thin:@172.21.1.9:1533:bnms");
		cps.setDB_USERNAME("bnms1");
		cps.setDB_PASSWORD("bnms1");
//		CommandResults cr = pe.executeProcedures(cps);
		CommandResults cr = pe.createProcedure(cps);
		System.out.println(cr.getEXEC_RESULT());
		
	}

}