⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmsworkflowdriver.java

📁 cms是开源的框架
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * @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 + -