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

📄 dbusermanager.java

📁 用java写的ftp服务器程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    
    /**
     * Get the user object. Fetch the row from the table.
     */
    public synchronized User getUserByName(String name) throws FtpException {
        
        Statement stmt = null;
        ResultSet rs = null;
        try {
            
            // create sql query
            HashMap map = new HashMap();
            map.put( BaseUser.ATTR_LOGIN, escapeString(name) );
            String sql = StringUtils.replaceString(m_selectUserStmt, map);
            m_log.info(sql);
            
            // execute query
            prepareConnection();
            stmt = m_connection.createStatement();
            rs = stmt.executeQuery(sql);
            
            // populate user object
            BaseUser thisUser = null;
            String trueStr = Boolean.TRUE.toString();
            if(rs.next()) {
                thisUser = new BaseUser();
                thisUser.setName(rs.getString(BaseUser.ATTR_LOGIN));
                thisUser.setHomeDirectory(rs.getString(BaseUser.ATTR_HOME));
                thisUser.setEnabled(trueStr.equalsIgnoreCase(rs.getString(BaseUser.ATTR_ENABLE)));
                thisUser.setWritePermission(trueStr.equalsIgnoreCase(rs.getString(BaseUser.ATTR_WRITE_PERM)));
                thisUser.setMaxIdleTime(rs.getInt(BaseUser.ATTR_MAX_IDLE_TIME));
                thisUser.setMaxUploadRate(rs.getInt(BaseUser.ATTR_MAX_UPLOAD_RATE));
                thisUser.setMaxDownloadRate(rs.getInt(BaseUser.ATTR_MAX_DOWNLOAD_RATE));
            }
            return thisUser;
        }
        catch(SQLException ex) {
            m_log.error("DbUserManager.getUserByName()", ex);
            throw new FtpException("DbUserManager.getUserByName()", ex);
        }
        finally {
            if(rs != null) {
                try { 
                    rs.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.getUserByName()", ex);
                }
            }
            if(stmt != null) {
                try { 
                    stmt.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.getUserByName()", ex);
                }
            }
        }
    }
    
    /**
     * User existance check.
     */
    public synchronized boolean doesExist(String name) throws FtpException {
        Statement stmt = null;
        ResultSet rs = null;
        try {
            
            // create the sql
            HashMap map = new HashMap();
            map.put( BaseUser.ATTR_LOGIN, escapeString(name) );
            String sql = StringUtils.replaceString(m_selectUserStmt, map);
            m_log.info(sql);
            
            // execute query
            prepareConnection();
            stmt = m_connection.createStatement();
            rs = stmt.executeQuery(sql);
            return rs.next();
        }
        catch(SQLException ex) {
            m_log.error("DbUserManager.doesExist()", ex);
            throw new FtpException("DbUserManager.doesExist()", ex);
        }
        finally {
            if(rs != null) {
                try { 
                    rs.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.doesExist()", ex);
                }
            }
            if(stmt != null) {
                try { 
                    stmt.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.doesExist()", ex);
                }
            }
        }
    }
    
    /**
     * Get all user names from the database.
     */
    public synchronized Collection getAllUserNames() throws FtpException {
        
        Statement stmt = null;
        ResultSet rs = null;
        try {
            
            // create sql query
            String sql = m_selectAllStmt;
            m_log.info(sql);
            
            // execute query
            prepareConnection();
            stmt = m_connection.createStatement();
            rs = stmt.executeQuery(sql);
            
            // populate list
            ArrayList names = new ArrayList();
            while(rs.next()) {
                names.add(rs.getString(BaseUser.ATTR_LOGIN));
            }
            return names;
        }
        catch(SQLException ex) {
            m_log.error("DbUserManager.getAllUserNames()", ex);
            throw new FtpException("DbUserManager.getAllUserNames()", ex);
        }
        finally {
            if(rs != null) {
                try { 
                    rs.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.getAllUserNames()", ex);
                }
            }
            if(stmt != null) {
                try { 
                    stmt.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.getAllUserNames()", ex);
                }
            }
        }
    }
    
    /**
     * Get user password.
     * <pre>
     * If the password value is not null
     *    password = new password 
     * else 
     *   if user does exist
     *     password = old password
     *   else 
     *     password = ""
     * </pre>
     */
    private synchronized String getPassword(User user) throws SQLException {
        
        String password = user.getPassword();
        if (password != null) {
            return password;
        }

        // create sql query
        HashMap map = new HashMap();
        map.put( BaseUser.ATTR_LOGIN, escapeString(user.getName()) );
        String sql = StringUtils.replaceString(m_selectUserStmt, map);
        m_log.info(sql);
        
        // execute query
        Statement stmt = null;
        ResultSet rs = null;
        try {
            prepareConnection();
            stmt = m_connection.createStatement();
            rs = stmt.executeQuery(sql);
            if (rs.next()) {
                password = rs.getString(BaseUser.ATTR_PASSWORD);
            }
        }
        finally {
            if(rs != null) {
                try { 
                    rs.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.getPassword()", ex);
                }
            }
            if(stmt != null) {
                try { 
                    stmt.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.getPassword()", ex);
                }
            }
        }
        
        if (password == null) {
            password = "";
        }
        return password;
    }
    
    /**
     * User authentication.
     */
    public synchronized boolean authenticate(String user, 
                                             String password) throws FtpException {
        
        // check input
        if( (user == null) || (password == null) ) {
            return false;
        }
        
        Statement stmt = null;
        ResultSet rs = null;
        try {
            
            // create the sql query
            HashMap map = new HashMap();
            map.put( BaseUser.ATTR_LOGIN, escapeString(user) );
            map.put( BaseUser.ATTR_PASSWORD, escapeString(password) );
            String sql = StringUtils.replaceString(m_authenticateStmt, map);
            m_log.info(sql);
            
            // execute query
            prepareConnection();
            stmt = m_connection.createStatement();
            rs = stmt.executeQuery(sql);
            return rs.next();
        }
        catch(SQLException ex) {
            m_log.error("DbUserManager.authenticate()", ex);
            throw new FtpException("DbUserManager.authenticate()", ex);
        }
        finally {
            if(rs != null) {
                try { 
                    rs.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.authenticate()", ex);
                }
            }
            if(stmt != null) {
                try { 
                    stmt.close(); 
                } 
                catch(Exception ex) {
                    m_log.error("DbUserManager.authenticate()", ex);
                }
            }
        }
    }
    
    /**
     * Close this user manager. Close the database statements and connection.
     */
    public synchronized void dispose() {
        closeConnection();
    }
    
    /**
     * Escape string to be embedded in SQL statement.
     */
    private String escapeString(String input) {
        StringBuffer valBuf = new StringBuffer(input);
        for (int i=0; i<valBuf.length(); i++) {
            char ch = valBuf.charAt(i);
            if (ch == '\'' || 
                ch == '\\' || 
                ch == '$'  || 
                ch == '^'  || 
                ch == '['  || 
                ch == ']'  || 
                ch == '{'  || 
                ch == '}') {
                 
                valBuf.insert(i, '\\'); 
                i++;
             }
         }
         return valBuf.toString();
    }
}

⌨️ 快捷键说明

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