📄 defaultlockoutprovider.java
字号:
/** * $Revision$ * $Date$ * * Copyright (C) 2008 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution, or a commercial license * agreement with Jive. */package org.jivesoftware.openfire.lockout;import org.jivesoftware.database.DbConnectionManager;import org.jivesoftware.util.StringUtils;import java.sql.*;import java.util.Date;/** * The DefaultLockOutProvider works with the jiveUserFlag table to maintain a list of disabled/locked out * accounts., and as the name implies, is the default LockOutProvider implementation. * * @author Daniel Henninger */public class DefaultLockOutProvider implements LockOutProvider { private static final String FLAG_ID = "lockout"; private static final String DELETE_FLAG = "DELETE FROM jiveUserFlag WHERE username=? AND name='"+FLAG_ID+"'"; private static final String ADD_FLAG = "INSERT INTO jiveUserFlag VALUES(?,'"+FLAG_ID+"',?,?)"; private static final String RETRIEVE_FLAG = "SELECT name,startTime,endTime FROM jiveUserFlag WHERE username=? AND name='"+FLAG_ID+"'"; /** * Constructs a new DefaultLockOutProvider */ public DefaultLockOutProvider() { } /** * Default provider retrieves disabled status from jiveUserFlag table. * @see org.jivesoftware.openfire.lockout.LockOutProvider#getDisabledStatus(String) */ public LockOutFlag getDisabledStatus(String username) throws NotLockedOutException { Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; LockOutFlag ret = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(RETRIEVE_FLAG); pstmt.setString(1, username); rs = pstmt.executeQuery(); if (!rs.next()) { throw new NotLockedOutException(); } Date startTime = null; if (rs.getString(2) != null) { startTime = new Date(Long.parseLong(rs.getString(2).trim())); } Date endTime = null; if (rs.getString(3) != null) { endTime = new Date(Long.parseLong(rs.getString(3).trim())); } ret = new LockOutFlag(username, startTime, endTime); } catch (Exception e) { throw new NotLockedOutException(); } finally { DbConnectionManager.closeConnection(rs, pstmt, con); } return ret; } /** * Default provider deletes existing flag, if it exists, and adds new described flag in jiveUserFlag table. * @see org.jivesoftware.openfire.lockout.LockOutProvider#setDisabledStatus(LockOutFlag) */ public void setDisabledStatus(LockOutFlag flag) { Connection con = null; PreparedStatement pstmt = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(DELETE_FLAG); pstmt.setString(1, flag.getUsername()); pstmt.executeUpdate(); } catch (SQLException sqle) { // Nothing to do. } finally { DbConnectionManager.closeConnection(pstmt, con); } try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(ADD_FLAG); pstmt.setString(1, flag.getUsername()); if (flag.getStartTime() != null) { pstmt.setString(2, StringUtils.dateToMillis(flag.getStartTime())); } else { pstmt.setNull(2, Types.VARCHAR); } if (flag.getEndTime() != null) { pstmt.setString(3, StringUtils.dateToMillis(flag.getEndTime())); } else { pstmt.setNull(3, Types.VARCHAR); } pstmt.executeUpdate(); } catch (SQLException sqle) { // Nothing to do. } finally { DbConnectionManager.closeConnection(pstmt, con); } } /** * Default provider deletes existing flag from jiveUserFlag table. * @see org.jivesoftware.openfire.lockout.LockOutProvider#unsetDisabledStatus(String) */ public void unsetDisabledStatus(String username) { Connection con = null; PreparedStatement pstmt = null; try { con = DbConnectionManager.getConnection(); pstmt = con.prepareStatement(DELETE_FLAG); pstmt.setString(1, username); pstmt.executeUpdate(); } catch (SQLException sqle) { // Nothing to do. } finally { DbConnectionManager.closeConnection(pstmt, con); } } /** * Default provider allows editing of disabled status. * @see org.jivesoftware.openfire.lockout.LockOutProvider#isReadOnly() */ public boolean isReadOnly() { return false; } /** * Default provider allows delayed start to disabled status. * @see org.jivesoftware.openfire.lockout.LockOutProvider#isDelayedStartSupported() */ public boolean isDelayedStartSupported() { return true; } /** * Default provider allows timeout of disabled status. * @see org.jivesoftware.openfire.lockout.LockOutProvider#isTimeoutSupported() */ public boolean isTimeoutSupported() { return true; } /** * Default provider should be cached. * @see org.jivesoftware.openfire.lockout.LockOutProvider#shouldNotBeCached() */ public boolean shouldNotBeCached() { return false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -