public void initialize() {
        connection = getSQLConnection();
        try {
            PreparedStatement ps = connection.prepareStatement("SELECT * FROM " + bantable + " WHERE type != ? AND type != ?");
            ps.setInt(1, BanType.INFO.getId());
            ps.setInt(2, BanType.UNBAN.getId());
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                String pName = rs.getString("name");
                List<BanInfo> list = new ArrayList<BanInfo>();
                if (plugin.cache.containsKey(pName.toLowerCase()))
                    list = plugin.cache.get(pName.toLowerCase());
                list.add(new BanInfo(rs.getString("name"), rs.getString("reason"), rs.getString("admin"), rs.getLong("temptime"), BanType.fromID(rs.getInt("type"))));
                plugin.cache.put(pName.toLowerCase(), list);
                if (rs.getInt("type") == BanType.IPBAN.getId() || rs.getInt("type") == BanType.TEMPIPBAN.getId()) {
                    list = new ArrayList<BanInfo>();
                    String ip = getAddress(pName);
                    if (ip != null && plugin.cacheIP.containsKey(ip))
                        list = plugin.cacheIP.get(ip);
                    list.add(new BanInfo(rs.getString("name"), rs.getString("reason"), rs.getString("admin"), rs.getLong("temptime"), BanType.fromID(rs.getInt("type"))));
                    plugin.cacheIP.put(ip, list);
                }
            }
            close(ps, rs);
        } catch (SQLException ex) {
            plugin.getLogger().log(Level.SEVERE, "Unable to retrieve connection", ex);
        }
    }