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

📄 groupdao.java

📁 EasyJForum 是一个基于 Java 技术的免费社区论坛软件系统
💻 JAVA
字号:
package com.hongshee.ejforum.data;

/**
 * <p>Title: GroupDAO.java</p>
 * <p>Description: Forum group data access object</p>
 * <p>Copyright: Hongshee Software (c) 2007</p>
 * @author jackie du
 * @version 1.0
 */

import java.util.ArrayList;
import java.util.Enumeration;
import java.sql.Connection;
//import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;

import com.hongshee.ejforum.common.CacheManager;
import com.hongshee.ejforum.util.PageUtils;

public class GroupDAO extends EntityDAO
{
    private static GroupDAO _dao = null;

    protected GroupDAO()
    {}

    public static GroupDAO getInstance()
    {
        if (_dao == null)
        {
            _dao = new GroupDAO();
        }
        return _dao;
    } 

    /**
     * Modify group rights
     * @param 
     *      request - HttpServletRequest
     * @return none
     * @throws SQLException
     * @since 1.0
     */
    public void modifyRights(HttpServletRequest request) throws SQLException
    {
        Enumeration params = request.getParameterNames();
        StringBuilder rights = new StringBuilder();
        String key = null;
        while(params.hasMoreElements())
        {
            key = (String)params.nextElement();
            if (key.equalsIgnoreCase("act")
                    || key.equalsIgnoreCase("submit")
                    || key.equalsIgnoreCase("groupID")
                    || key.equalsIgnoreCase("fromPath"))
                continue;
            rights.append(request.getParameter(key));
        }
        String groupID = request.getParameter("groupID");
            
        ArrayList<Object> paramValues = new ArrayList<Object>();
        paramValues.add(rights.toString());
        paramValues.add(groupID);
        this.execUpdateSql(adapter.Group_ModRights, paramValues);
        
        CacheManager cache = CacheManager.getInstance();
        GroupVO aGroup = cache.getGroup(groupID.charAt(0));
        aGroup.rights = rights.toString();
    }
    
    /**
     * Update member groups
     * @param 
     *      request - HttpServletRequest
     * @return none
     * @throws SQLException
     * @since 1.0
     */
    public String updateMemberGroups(HttpServletRequest request) throws SQLException
    {
        String result = "OK";
        int credits = 0;
        ArrayList<Integer> seqnos = new ArrayList<Integer>();
        ArrayList<Integer> sortedCredits = new ArrayList<Integer>();
        String[] minCredits = request.getParameterValues("minCredits");
        // Order by minCredits 
        for (int i=0; i<minCredits.length; i++)
        {
            if (minCredits[i].trim().length() > 0)
            {
                credits = Integer.parseInt(minCredits[i]);
                boolean isSorted = false;
                for (int j=0; j<sortedCredits.size(); j++)
                {
                    if (credits < sortedCredits.get(j))
                    {
                        sortedCredits.add(j, credits);
                        seqnos.add(j, i);
                        isSorted = true;
                        break;
                    }
                }
                if (!isSorted)
                {
                    sortedCredits.add(credits);
                    seqnos.add(i);
                }
            }
        }
        if (seqnos.size() > 9)
            result = "会员用户组数量不能超过9个";

        String[] rights = request.getParameterValues("rights");
        String[] groupNames = request.getParameterValues("groupName");
        String[] stars = request.getParameterValues("stars");
        
        Connection conn = dbManager.getConnection();
        PreparedStatement pstmtUpdate = null;
        try
        {
            conn.setAutoCommit(false);
            this.execUpdateSql(adapter.Group_RemoveMembers, null, conn);
            
            pstmtUpdate = conn.prepareStatement(adapter.Group_Insert);
            String right = null;
            
            for (int i=0; i<seqnos.size(); i++)
            {
                pstmtUpdate.setString(1, String.valueOf(i+1));
                pstmtUpdate.setString(2, PageUtils.decodeParam(groupNames[seqnos.get(i)]));
                pstmtUpdate.setString(3, "M");
                pstmtUpdate.setInt(4, sortedCredits.get(i));
                pstmtUpdate.setString(5, stars[seqnos.get(i)].trim());

                right = rights[seqnos.get(i)].trim();
                if (right.length() == 0) right = "ACEFGJK";

                pstmtUpdate.setString(6, right);
                pstmtUpdate.addBatch();
            }
            pstmtUpdate.executeBatch();
            
            conn.commit();
            return result;
        }
        catch(SQLException se)
        {
            conn.rollback();
            throw se;
        }
        finally
        {
            dbManager.closePStatement(pstmtUpdate);
            dbManager.closeConnection(conn);
        }
    }
    
    /**
     * Delete member group from DB
     * @param 
     *      groupID - Group ID to be deleted
     * @return none
     * @throws SQLException
     * @since 1.0
     */
    public void deleteGroup(String groupID) throws SQLException
    {
        ArrayList<Object> paramValues = new ArrayList<Object>();
        paramValues.add(groupID);
        this.execUpdateSql(adapter.Group_Delete, paramValues);

        CacheManager cache = CacheManager.getInstance();
        cache.loadGroups();
    }
    
    /**
     * Get all groups info
     * @param none
     * @return Group list
     * @throws SQLException
     * @since 1.0
     */
    public ArrayList<GroupVO> getAllGroups() throws SQLException
    {
        Connection conn = null;
        PreparedStatement pstmtQuery = null;
        ResultSet rs = null;
        try
        {
            conn = dbManager.getConnection();
            pstmtQuery = conn.prepareStatement(adapter.Group_SelectAll);
            rs = pstmtQuery.executeQuery();
            
            ArrayList<GroupVO> result = new ArrayList<GroupVO>();
            GroupVO aGroup = null;
            GroupVO lastGroup = null;
            while(rs.next())
            {
                aGroup = new GroupVO();
                aGroup.groupID = rs.getString("groupID").charAt(0);
                aGroup.groupName = rs.getString("groupName");
                aGroup.groupType = rs.getString("groupType").charAt(0);
                aGroup.minCredits = rs.getInt("minCredits");
                aGroup.stars = rs.getInt("stars");
                aGroup.rights = rs.getString("rights");
                result.add(aGroup);
                
                if (aGroup.groupType == 'M')
                {
                    aGroup.maxCredits = 999999;
                    if (lastGroup != null)
                        lastGroup.maxCredits = aGroup.minCredits;
                    lastGroup = aGroup;
                }
            }
            return result;
        }
        finally
        {
            dbManager.closeResultSet(rs);
            dbManager.closePStatement(pstmtQuery);
            dbManager.closeConnection(conn);
        }
    }

    public static class GroupVO
    {
        public char groupID = '1';
        public String groupName = null;
        public char groupType = 'M';
        public int minCredits = 0;
        public int maxCredits = 0;
        public int stars = 0;
        public String rights = null;
    }   
}

⌨️ 快捷键说明

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