package com.sogou.qadev.service.cynthia.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import com.sogou.qadev.service.cynthia.bean.TimerAction;
import com.sogou.qadev.service.cynthia.bean.UUID;
import com.sogou.qadev.service.cynthia.bean.impl.TimerActionImpl;
import com.sogou.qadev.service.cynthia.factory.DataAccessFactory;
import com.sogou.qadev.service.cynthia.service.DataAccessSession.ErrorCode;
import com.sogou.qadev.service.cynthia.service.DbPoolConnection;
/**
* @description:timer action db processor
* @author:liming
* @mail:liming@sogou-inc.com
* @date:2014-5-6 下午5:59:51
* @version:v1.0
*/
public class TimerActionAccessSessionMySQL
{
public TimerActionAccessSessionMySQL()
{
}
/**
* @description:create timer action
* @date:2014-5-6 下午6:00:03
* @version:v1.0
* @return
*/
public TimerAction createTimerAction()
{
UUID timerActionId = DataAccessFactory.getInstance().newUUID("TIAC");
return new TimerActionImpl(timerActionId);
}
/**
* @description:add timer action to db
* @date:2014-5-6 下午6:00:12
* @version:v1.0
* @param timerAction
* @return
*/
public ErrorCode addTimerAction(TimerAction timerAction)
{
Connection conn = null;
PreparedStatement pstm = null;
try
{
conn = DbPoolConnection.getInstance().getConnection();
pstm = conn.prepareStatement("INSERT INTO timer_action"
+ " SET id = ?"
+ ", name = ?"
+ ", class_name = ?"
+ ", method = ?"
+ ", create_user = ?"
+ ", param = ?");
pstm.setLong(1, Long.parseLong(timerAction.getId().getValue()));
pstm.setString(2, timerAction.getName());
pstm.setString(3, timerAction.getClassName());
pstm.setString(4, timerAction.getMethod());
pstm.setString(5, timerAction.getCreateUser());
if(timerAction.getParam() != null)
pstm.setString(6, timerAction.getParam());
else
pstm.setNull(6, java.sql.Types.NULL);
if(pstm.executeUpdate()>0)
return ErrorCode.success;
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DbPoolConnection.getInstance().closeAll(pstm, conn);
}
return ErrorCode.dbFail;
}
/**
* @description:remove timer action from db
* @date:2014-5-6 下午6:00:22
* @version:v1.0
* @param timerActionId
* @return
*/
public ErrorCode removeTimerAction(UUID timerActionId)
{
ErrorCode errorCode = ErrorCode.unknownFail;
Connection conn = null;
PreparedStatement pstm = null;
try
{
conn = DbPoolConnection.getInstance().getConnection();
pstm = conn.prepareStatement("DELETE FROM timer_action"
+ " WHERE id = ?");
pstm.setLong(1, Long.parseLong(timerActionId.getValue()));
if(pstm.executeUpdate()>0)
errorCode = ErrorCode.success;
}
catch(Exception e)
{
e.printStackTrace();
errorCode = ErrorCode.dbFail;
}
finally
{
DbPoolConnection.getInstance().closeAll(pstm, conn);
}
return errorCode;
}
/**
* @description:modify timer action from db
* @date:2014-5-6 下午6:00:32
* @version:v1.0
* @param timerAction
* @return
*/
public ErrorCode modifyTimerAction(TimerAction timerAction)
{
ErrorCode errorCode = ErrorCode.unknownFail;
Connection conn = null;
PreparedStatement pstm = null;
try
{
conn = DbPoolConnection.getInstance().getConnection();
pstm = conn.prepareStatement("update timer_action"
+ " SET name = ?"
+ ", class_name = ?"
+ ", method = ?"
+ ", param = ?"
+ " WHERE id = ?");
pstm.setString(1, timerAction.getName());
pstm.setString(2, timerAction.getClassName());
pstm.setString(3, timerAction.getMethod());
if(timerAction.getParam() != null)
pstm.setString(4, timerAction.getParam());
else
pstm.setNull(4, java.sql.Types.NULL);
pstm.setLong(5, Long.parseLong(timerAction.getId().getValue()));
if(pstm.executeUpdate()>0)
errorCode = ErrorCode.success;
}
catch(Exception e)
{
e.printStackTrace();
errorCode = ErrorCode.dbFail;
}
finally
{
DbPoolConnection.getInstance().closeAll(pstm, conn);
}
return errorCode;
}
/**
* @description:query timer action by timer action id
* @date:2014-5-6 下午6:00:44
* @version:v1.0
* @param timerActionId
* @return
*/
public TimerAction queryTimerAction(UUID timerActionId)
{
TimerAction timerAction = null;
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rst = null;
try
{
conn = DbPoolConnection.getInstance().getReadConnection();
pstm = conn.prepareStatement("SELECT * FROM timer_action"
+ " WHERE id = ?");
pstm.setLong(1, Long.parseLong(timerActionId.getValue()));
rst = pstm.executeQuery();
if(rst.next())
{
timerAction = new TimerActionImpl(timerActionId);
timerAction.setName(rst.getString("name"));
timerAction.setClassName(rst.getString("class_name"));
timerAction.setMethod(rst.getString("method"));
timerAction.setParam(rst.getString("param"));
timerAction.setCreateUser(rst.getString("create_user"));
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DbPoolConnection.getInstance().closeResultSet(rst);
DbPoolConnection.getInstance().closeStatment(pstm);
DbPoolConnection.getInstance().closeConn(conn);
}
return timerAction;
}
/**
* @description:query all timer actions
* @date:2014-5-6 下午6:00:56
* @version:v1.0
* @return
*/
public TimerAction[] queryTimerActions()
{
Set<TimerAction> timerActionSet = new LinkedHashSet<TimerAction>();
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rst = null;
try
{
conn = DbPoolConnection.getInstance().getReadConnection();
pstm = conn.prepareStatement("SELECT * FROM timer_action");
rst = pstm.executeQuery();
while(rst.next())
{
UUID id = DataAccessFactory.getInstance().createUUID(rst.getObject("id").toString());
TimerAction timerAction = new TimerActionImpl(id);
timerAction.setName(rst.getString("name"));
timerAction.setClassName(rst.getString("class_name"));
timerAction.setMethod(rst.getString("method"));
timerAction.setParam(rst.getString("param"));
timerAction.setCreateUser(rst.getString("create_user"));
timerActionSet.add(timerAction);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DbPoolConnection.getInstance().closeResultSet(rst);
DbPoolConnection.getInstance().closeStatment(pstm);
DbPoolConnection.getInstance().closeConn(conn);
}
return timerActionSet.toArray(new TimerAction[0]);
}
/**
* @description:query all timeractions public or create by user
* @date:2014-5-6 下午6:01:06
* @version:v1.0
* @param userName
* @return
*/
public TimerAction[] queryStatisticByUser(String userName) {
List<TimerAction> timerActionSet = new ArrayList<TimerAction>();
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rst = null;
try
{
conn = DbPoolConnection.getInstance().getReadConnection();
pstm = conn.prepareStatement("SELECT * FROM timer_action where is_public = 1 or create_user = ? order by is_public desc , id");
pstm.setString(1, userName);
rst = pstm.executeQuery();
while(rst.next())
{
UUID id = DataAccessFactory.getInstance().createUUID(rst.getObject("id").toString());
TimerAction timerAction = new TimerActionImpl(id);
timerAction.setName(rst.getString("name"));
timerAction.setClassName(rst.getString("class_name"));
timerAction.setMethod(rst.getString("method"));
timerAction.setParam(rst.getString("param"));
timerAction.setCreateUser(rst.getString("create_user"));
timerAction.setIsPublic(rst.getBoolean("is_public"));
timerActionSet.add(timerAction);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DbPoolConnection.getInstance().closeResultSet(rst);
DbPoolConnection.getInstance().closeStatment(pstm);
DbPoolConnection.getInstance().closeConn(conn);
}
return timerActionSet.toArray(new TimerAction[0]);
}
}