Java Code Examples for org.jivesoftware.database.DbConnectionManager#setFetchSize()

The following examples show how to use org.jivesoftware.database.DbConnectionManager#setFetchSize() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DefaultSecurityAuditProvider.java    From Openfire with Apache License 2.0 4 votes vote down vote up
/**
 * The default provider retrieves events from a ofSecurityAuditLog table in the database.
 * @see org.jivesoftware.openfire.security.SecurityAuditProvider#getEvents(String, Integer, Integer, java.util.Date, java.util.Date)
 */
@Override
public List<SecurityAuditEvent> getEvents(String username, Integer skipEvents, Integer numEvents, Date startTime, Date endTime) {
    List<SecurityAuditEvent> events = new ArrayList<>();
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    String sql = GET_EVENTS;
    boolean addedOne = false;
    if (username != null) {
        sql += " WHERE username = ?";
        addedOne = true;
    }
    if (startTime != null) {
        if (!addedOne) {
            sql += " WHERE";
        }
        else {
            sql += " AND";
        }
        sql += " entryStamp >= ?";
        addedOne = true;
    }
    if (endTime != null) {
        if (!addedOne) {
            sql += " WHERE";
        }
        else {
            sql += " AND";
        }
        sql += " entryStamp <= ?";
    }
    sql += " ORDER BY entryStamp DESC";
    try {
        con = DbConnectionManager.getConnection();
        pstmt = DbConnectionManager.createScrollablePreparedStatement(con, sql);
        
        int i = 1;
        if (username != null) {
            pstmt.setString(i, username);
            i++;
        }
        if (startTime != null) {
            pstmt.setLong(i, startTime.getTime());
            i++;
        }
        if (endTime != null) {
            pstmt.setLong(i, endTime.getTime());
        }
        
        rs = pstmt.executeQuery();
        if (skipEvents != null) {
            DbConnectionManager.scrollResultSet(rs, skipEvents);
        }
        if (numEvents != null) {
            DbConnectionManager.setFetchSize(rs, numEvents);
        }
        
        int count = 0;
        while (rs.next() && (numEvents == null || count < numEvents)) {
            SecurityAuditEvent event = new SecurityAuditEvent();
            event.setMsgID(rs.getLong(1));
            event.setUsername(rs.getString(2));
            event.setEventStamp(new Date(rs.getLong(3)));
            event.setSummary(rs.getString(4));
            event.setNode(rs.getString(5));
            event.setDetails(rs.getString(6));
            events.add(event);
            count++;
        }
    }
    catch (SQLException e) {
        Log.error(e.getMessage(), e);
    }
    finally {
        DbConnectionManager.closeConnection(rs, pstmt, con);
    }
    return events;
}
 
Example 2
Source File: DefaultUserProvider.java    From Openfire with Apache License 2.0 4 votes vote down vote up
private Collection<String> getUsernames(int startIndex, int numResults) {
    List<String> usernames = new ArrayList<>(500);
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        con = DbConnectionManager.getConnection();
        if ((startIndex==0) && (numResults==Integer.MAX_VALUE))
        {
            pstmt = con.prepareStatement(ALL_USERS);
            // Set the fetch size. This will prevent some JDBC drivers from trying
            // to load the entire result set into memory.
            DbConnectionManager.setFetchSize(pstmt, 500);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                usernames.add(rs.getString(1));
            }
        }
        else {
            pstmt = DbConnectionManager.createScrollablePreparedStatement(con, ALL_USERS);
            DbConnectionManager.limitRowsAndFetchSize(pstmt, startIndex, numResults);
            rs = pstmt.executeQuery();
            DbConnectionManager.scrollResultSet(rs, startIndex);
            int count = 0;
            while (rs.next() && count < numResults) {
                usernames.add(rs.getString(1));
                count++;
            }
        }
        if (Log.isDebugEnabled()) {
               Log.debug("Results: " + usernames.size());
               LogResults(usernames);
        }
    }
    catch (SQLException e) {
        Log.error(e.getMessage(), e);
    }
    finally {
        DbConnectionManager.closeConnection(rs, pstmt, con);
    }
    return usernames;
}