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

📄 forumdao.java

📁 jGossip是一个简单而功能强大的Java论坛软件(消息板)
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            st.close();
            connection.close();
        }

        return modFlag;
    }

    /**
     * DOCUMENT ME!
     * 
     * @param fid
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void lockForum(String fid, int locked) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_GET_FORUM_LOCKED());
        ResultSet rs = null;
        int id = Integer.parseInt(fid);

        try {
            st.setInt(1, id);
            rs = st.executeQuery();

            if (rs.next()) {
                st = connection.prepareStatement(dbDriver.getQueries()
                        .getForumQueries().getSql_SET_FORUM_LOCKED_STATUS());
                st.setInt(1, locked);
                st.setInt(2, id);
                st.execute();
            }
        } finally {
            if (rs != null) {
                rs.close();
            }

            st.close();
            connection.close();
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param tid
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void lockThread(String tid) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_GET_THREAD_LOCKED());
        ResultSet rs = null;
        int id = Integer.parseInt(tid);

        try {
            st.setInt(1, id);
            rs = st.executeQuery();

            if (rs.next() && (rs.getInt(1) < 2)) {
                int newStatus = Math.abs(rs.getInt(1) - 1);
                st = connection.prepareStatement(dbDriver.getQueries()
                        .getForumQueries().getSql_SET_THREAD_LOCKED_STATUS());
                st.setInt(1, newStatus);
                st.setInt(2, id);
                st.execute();
            }
        } finally {
            if (rs != null) {
                rs.close();
            }

            st.close();
            connection.close();
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param tid
     * @param nfid
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void moveThread(String tid, String nfid) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_MOVE_THREAD());

        try {
            st.setInt(1, Integer.parseInt(nfid));
            st.setInt(2, Integer.parseInt(tid));
            st.execute();
        } finally {
            st.close();
            connection.close();
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param forum
     * @param st
     *            DOCUMENT ME!
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    private void setLastMessage(Forum forum, PreparedStatement st)
            throws SQLException {
        ResultSet rs = null;

        try {
            st.setInt(1, forum.getForumid());
            rs = (ResultSet) st.executeQuery();

            Message last = new Message();

            if (rs.next()) {
                last.setSender(rs.getString("m_from"));
                last.setIntime(rs.getTimestamp("t_stamp"));
                last.setCentents(rs.getString("cont"));
                last.setThreadSort(rs.getInt("sortby"));
                last.setId(rs.getInt("id"));
                forum.setLastMessThreadId(rs.getInt("tid"));
            }

            forum.setLastMessage(last);
        } finally {
            if (rs != null) {
                rs.close();
            }
        }
    }

    private void setLastMessage(Topic thread, PreparedStatement st)
            throws SQLException {
        ResultSet rs = null;

        try {
            st.setInt(1, thread.getThreadid());
            rs = (ResultSet) st.executeQuery();

            Message last = new Message();

            if (rs.next()) {
                last.setSender(rs.getString("sender"));
                last.setIntime(rs.getTimestamp("intime"));
                last.setCentents(rs.getString("centents"));
                last.setId(rs.getInt("id"));
            }

            thread.setLastMessage(last);

            // TODO work around bug 863191
            thread.setSubject(getThreadSubject(Integer.toString(thread
                    .getThreadid())));
        } finally {
            if (rs != null) {
                rs.close();
            }
        }
    }

    private void setRootMessage(LastTopic topic, PreparedStatement st)
            throws SQLException {
        ResultSet rs = null;

        try {
            st.setInt(1, topic.getThreadid());
            rs = (ResultSet) st.executeQuery();

            Message root = new Message();

            if (rs.next()) {
                root.setSender(rs.getString("sender"));
                root.setIntime(rs.getTimestamp("t_stamp"));
                root.setCentents(rs.getString("centents"));
                root.setId(rs.getInt("id"));
                root.setHeading(rs.getString("subject"));
                root.setIp(rs.getString("ip"));
                root.setThreadid(rs.getInt("tid"));
                root.setThreadSort(rs.getInt("sortby"));
            }

            topic.setRootMessage(root);
            topic.setSubject(root.getHeading());
        } finally {
            if (rs != null) {
                rs.close();
            }
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param messageForm
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void updateMessage(MessageForm messageForm) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_UPDATE_MESSAGE());

        try {
            st.setString(1, messageForm.getText());
            st.setString(2, messageForm.getTitle());
            st.setInt(3, Integer.parseInt(messageForm.getMid()));
            st.execute();
        } finally {
            st.close();
            connection.close();
        }
    }

    private void updateThreadIntime(String tid, Timestamp intime)
            throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_UPDATE_THREAD_LINTIME());

        try {
            st.setTimestamp(1, intime);
            st.setInt(2, Integer.parseInt(tid));
            st.execute();
        } finally {
            st.close();
            connection.close();
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param gid
     * 
     * @return 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public Group getGroupInfo(String gid) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_GET_GROUP_INFO());
        ResultSet rs = null;
        Group group = new Group();

        try {
            st.setInt(1, Integer.parseInt(gid));
            rs = st.executeQuery();

            if (rs.next()) {
                group.setName(rs.getString("group_name"));
                group.setSort(rs.getString("group_sort"));
                group.setGroupid(rs.getInt("groupid"));
            }
        } finally {
            if (rs != null) {
                rs.close();
            }

            st.close();
            connection.close();
        }

        return group;
    }

    /**
     * DOCUMENT ME!
     * 
     * @param form
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void updateGroup(GroupForm form) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_UPDATE_GROUP());

        try {
            st.setString(1, form.getGroup_name());
            st.setString(2, form.getGroup_sort());
            st.setInt(3, Integer.parseInt(form.getGid()));
            st.execute();
        } finally {
            st.close();
            connection.close();
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param form
     * 
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void updateForum(ForumForm form) throws SQLException {
        Connection connection = this.dataSource.getConnection();
        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_UPDATE_FORUM());

        try {
            st.setString(1, form.getForum_name());
            st.setString(2, form.getForum_desc());
            st.setInt(3, Integer.parseInt(form.getGroupid()));
            st.setString(4, form.getForum_sort());
            st.setInt(5, Integer.parseInt(form.getForumid()));
            st.execute();
        } finally {
            st.close();
            connection.close();
        }
    }

    /**
     * DOCUMENT ME!
     * 
     * @param form
     * @param recordsData
     * @param showInvisible
     * 
     * @throws InstantiationException
     *             DOCUMENT ME!
     * @throws IllegalAccessException
     *             DOCUMENT ME!
     * @throws InvocationTargetException
     *             DOCUMENT ME!
     * @throws NoSuchMethodException
     *             DOCUMENT ME!
     * @throws SQLException
     *             DOCUMENT ME!
     */
    public void processSearch(SearchForm form, RecordsData recordsData,
            boolean showInvisible) throws InstantiationException,
            IllegalAccessException, InvocationTargetException,
            NoSuchMethodException, SQLException {
        Connection connection = this.dataSource.getConnection();
        StringBuffer queryString = new StringBuffer();

        if (showInvisible) {
            queryString.append(" WHERE (");
        } else {
            queryString.append(" WHERE jrf_forum.locked < 3 AND (");
        }

        String[] fields = { " centents", " heading" };
        String searchType = (form.getType());
        String search = MySQLCodec.encode(form.getSearch());

        if (searchType.equals(IConst.VALUES.WHOLE)) {
            queryString.append(fields[0]);
            queryString.append(dbDriver.getQueries().getSql_LIKE());
            queryString.append("'%");
            queryString.append(search);
            queryString.append("%'");
            queryString.append(dbDriver.getQueries().getSql_OR());
            queryString.append(fields[1]);
            queryString.append(dbDriver.getQueries().getSql_LIKE());
            queryString.append("'%");
            queryString.append(search);
            queryString.append("%'");
        } else {
            String term = "";

            if (searchType.equals(IConst.VALUES.ALL)) {
                term = dbDriver.getQueries().getSql_AND();
            } else {
                term = dbDriver.getQueries().getSql_OR();
            }

            for (int i = 0; i < fields.length; i++) {
                queryString.append("(");

                StringTokenizer tokens = new StringTokenizer(search, " ");

                while (tokens.hasMoreTokens()) {
                    String token = tokens.nextToken();
                    queryString.append(fields[i]);
                    queryString.append(dbDriver.getQueries().getSql_LIKE());
                    queryString.append("'%");
                    queryString.append(token);
                    queryString.append("%'");

                    if (tokens.hasMoreTokens()) {
                        queryString.append(term);
                    }
                }

                queryString.append(")");

                if (i < (fields.length - 1)) {
                    queryString.append(dbDriver.getQueries().getSql_OR());
                }
            }
        }

        queryString.append(")");
        queryString.append(dbDriver.getQueries().getForumQueries()
                .getSql_SEARCH_QUERY_END());

        PreparedStatement st = connection.prepareStatement(dbDriver
                .getQueries().getForumQueries().getSql_SEARCH_QUERY_SUFF()
                + queryString.toString());
        ResultSet rs = null;

        try {
            rs = st.executeQuery();
            recordsData.fillRecords(rs, Mapping.getInstance().SearchMapping,
                    SearchResult.class);
            st = connection.prepareStatement(dbDriver.getQueries()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -