📄 cmsworkflowdriver.java
字号:
* @see org.opencms.db.I_CmsWorkflowDriver#readTask(org.opencms.db.CmsDbContext, int)
*/
public CmsTask readTask(CmsDbContext dbc, int id) throws CmsDataAccessException {
ResultSet res = null;
CmsTask task = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASK_READ");
stmt.setInt(1, id);
res = stmt.executeQuery();
if (res.next()) {
task = internalCreateTask(res);
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} catch (Exception exc) {
throw new CmsDataAccessException(Messages.get().container(Messages.ERR_READ_TASK_1), exc);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return task;
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#readTaskLog(org.opencms.db.CmsDbContext, int)
*/
public CmsTaskLog readTaskLog(CmsDbContext dbc, int id) throws CmsDataAccessException {
ResultSet res = null;
CmsTaskLog tasklog = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASKLOG_READ");
stmt.setInt(1, id);
res = stmt.executeQuery();
if (res.next()) {
String comment = res.getString(m_sqlManager.readQuery("C_LOG_COMMENT"));
id = res.getInt(m_sqlManager.readQuery("C_LOG_ID"));
java.sql.Timestamp starttime = CmsDbUtil.getTimestamp(res, m_sqlManager.readQuery("C_LOG_STARTTIME"));
CmsUUID user = new CmsUUID(res.getString(m_sqlManager.readQuery("C_LOG_USER")));
int type = res.getInt(m_sqlManager.readQuery("C_LOG_TYPE"));
tasklog = new CmsTaskLog(id, comment, user, starttime, type);
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} catch (Exception exc) {
throw new CmsDataAccessException(Messages.get().container(Messages.ERR_READ_TASK_LOG_0), exc);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return tasklog;
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#readTaskLogs(org.opencms.db.CmsDbContext, int)
*/
public List readTaskLogs(CmsDbContext dbc, int taskId) throws CmsDataAccessException {
Connection conn = null;
ResultSet res = null;
CmsTaskLog tasklog = null;
List logs = new ArrayList();
PreparedStatement stmt = null;
String comment = null;
java.sql.Timestamp starttime = null;
int id = CmsDbUtil.UNKNOWN_ID;
CmsUUID user = CmsUUID.getNullUUID();
int type = CmsDbUtil.UNKNOWN_ID;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASKLOG_READ_LOGS");
stmt.setInt(1, taskId);
res = stmt.executeQuery();
while (res.next()) {
comment = res.getString(m_sqlManager.readQuery("C_TASKLOG_COMMENT"));
id = res.getInt(m_sqlManager.readQuery("C_TASKLOG_ID"));
starttime = CmsDbUtil.getTimestamp(res, m_sqlManager.readQuery("C_TASKLOG_STARTTIME"));
user = new CmsUUID(res.getString(m_sqlManager.readQuery("C_TASKLOG_USER")));
type = res.getInt(m_sqlManager.readQuery("C_TASKLOG_TYPE"));
tasklog = new CmsTaskLog(id, comment, user, starttime, type);
logs.add(tasklog);
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} catch (Exception exc) {
throw new CmsDataAccessException(Messages.get().container(Messages.ERR_READ_TASK_LOGS_0), exc);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return logs;
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#readTaskParameter(org.opencms.db.CmsDbContext, int, java.lang.String)
*/
public String readTaskParameter(CmsDbContext dbc, int taskId, String parname) throws CmsDataAccessException {
String result = null;
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASKPAR_GET");
stmt.setInt(1, taskId);
stmt.setString(2, parname);
res = stmt.executeQuery();
if (res.next()) {
result = res.getString(m_sqlManager.readQuery("C_PAR_VALUE"));
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return result;
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#readTasks(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsUser, org.opencms.file.CmsUser, org.opencms.file.CmsGroup, int, java.lang.String, java.lang.String)
*/
public List readTasks(
CmsDbContext dbc,
CmsProject project,
CmsUser agent,
CmsUser owner,
CmsGroup role,
int tasktype,
String orderBy,
String sort) throws CmsDataAccessException {
boolean first = true;
List tasks = new ArrayList(); // vector for the return result
CmsTask task = null; // tmp task for adding to vector
ResultSet res = null;
Connection conn = null;
// create the sql string depending on parameters
// handle the project for the SQL String
String sqlstr = "SELECT * FROM " + m_sqlManager.readQuery("C_TABLENAME_TASK") + " WHERE ";
if (project != null) {
sqlstr = sqlstr + m_sqlManager.readQuery("C_TASK_ROOT") + "=" + project.getTaskId();
first = false;
} else {
sqlstr = sqlstr
+ m_sqlManager.readQuery("C_TASK_ROOT")
+ "<> 0 AND "
+ m_sqlManager.readQuery("C_TASK_PARENT")
+ "<> 0";
first = false;
}
// handle the agent for the SQL String
if (agent != null) {
if (!first) {
sqlstr = sqlstr + " AND ";
}
sqlstr = sqlstr + m_sqlManager.readQuery("C_TASK_AGENTUSER") + "='" + agent.getId() + "'";
first = false;
}
// handle the owner for the SQL String
if (owner != null) {
if (!first) {
sqlstr = sqlstr + " AND ";
}
sqlstr = sqlstr + m_sqlManager.readQuery("C_TASK_INITIATORUSER") + "='" + owner.getId() + "'";
first = false;
}
// handle the role for the SQL String
if (role != null) {
if (!first) {
sqlstr = sqlstr + " AND ";
}
sqlstr = sqlstr + m_sqlManager.readQuery("C_TASK_ROLE") + "='" + role.getId() + "'";
first = false;
}
sqlstr = sqlstr + internalReadTaskTypeCondition(first, tasktype);
// handel the order and sort parameter for the SQL String
if (orderBy != null) {
if (!orderBy.equals("")) {
sqlstr = sqlstr + " ORDER BY " + orderBy;
if (orderBy != null) {
if (!orderBy.equals("")) {
sqlstr = sqlstr + " " + sort;
}
}
}
}
Statement stmt = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = conn.createStatement();
res = stmt.executeQuery(sqlstr);
// if resultset exists - return vector of tasks
while (res.next()) {
task = internalCreateTask(res);
tasks.add(task);
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} catch (Exception exc) {
throw new CmsDataAccessException(Messages.get().container(Messages.ERR_READ_TASKS_0), exc);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return tasks;
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#readTaskType(org.opencms.db.CmsDbContext, java.lang.String)
*/
public int readTaskType(CmsDbContext dbc, String taskName) throws CmsDataAccessException {
int result = 1;
PreparedStatement stmt = null;
ResultSet res = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASK_GET_TASKTYPE");
stmt.setString(1, taskName);
res = stmt.executeQuery();
if (res.next()) {
result = res.getInt("id");
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return result;
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#writeSystemTaskLog(org.opencms.db.CmsDbContext, int, java.lang.String)
*/
public void writeSystemTaskLog(CmsDbContext dbc, int taskid, String comment) throws CmsDataAccessException {
this.writeTaskLog(
dbc,
taskid,
CmsUUID.getNullUUID(),
new java.sql.Timestamp(System.currentTimeMillis()),
comment,
CmsTaskService.TASKLOG_USER);
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#writeTask(org.opencms.db.CmsDbContext, org.opencms.workflow.CmsTask)
*/
public CmsTask writeTask(CmsDbContext dbc, CmsTask task) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASK_UPDATE");
stmt.setString(1, task.getName());
stmt.setInt(2, task.getState());
stmt.setInt(3, task.getTaskType());
stmt.setInt(4, task.getRoot());
stmt.setInt(5, task.getParent());
stmt.setString(6, task.getInitiatorUser().toString());
stmt.setString(7, task.getRole().toString());
stmt.setString(8, task.getAgentUser().toString());
stmt.setString(9, task.getOriginalUser().toString());
stmt.setTimestamp(10, task.getStartTime());
stmt.setTimestamp(11, task.getWakeupTime());
stmt.setTimestamp(12, task.getTimeOut());
stmt.setTimestamp(13, task.getEndTime());
stmt.setInt(14, task.getPercentage());
stmt.setString(15, task.getPermission());
stmt.setInt(16, task.getPriority());
stmt.setInt(17, task.getEscalationType());
stmt.setString(18, task.getHtmlLink());
stmt.setInt(19, task.getMilestone());
stmt.setInt(20, task.getAutoFinish());
stmt.setInt(21, task.getId());
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
return (readTask(dbc, task.getId()));
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#writeTaskLog(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID, java.sql.Timestamp, java.lang.String, int)
*/
public void writeTaskLog(
CmsDbContext dbc,
int taskId,
CmsUUID userId,
java.sql.Timestamp starttime,
String comment,
int type) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_TASKLOG_WRITE");
stmt.setInt(1, m_sqlManager.nextId(TABLE_TASKLOG));
stmt.setInt(2, taskId);
if (!userId.isNullUUID()) {
stmt.setString(3, userId.toString());
} else {
// no user is specified so set to system user is only valid for system task log
stmt.setString(3, m_driverManager.readUser(
dbc,
OpenCms.getDefaultUsers().getUserGuest(),
CmsUser.USER_TYPE_SYSTEMUSER).getId().toString());
}
stmt.setTimestamp(4, starttime);
stmt.setString(5, m_sqlManager.validateEmpty(comment));
stmt.setInt(6, type);
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
/**
* @see org.opencms.db.I_CmsWorkflowDriver#writeTaskParameter(org.opencms.db.CmsDbContext, int, java.lang.String, java.lang.String)
*/
public void writeTaskParameter(CmsDbContext dbc, int taskId, String parname, String parvalue)
throws CmsDataAccessException {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -