class PsqlEventSource implements EventSource {

    @Override public List<Event<Map<String, Object>>> getNewEvents() throws DataAccessException {
        state(connection != null, ERROR_MSG_ILLEGALSTATE);
        try {
            PGNotification[] notifications = getLatestEvents();
            return parseNotificationsArray(notifications);
        } catch (SQLException sqle) {
            throw new DataAccessException(ERROR_MSG_GET_NEW_NOTIFICATIONS + streamName, sqle);
        } catch (InvalidPayloadException ipe) {
            throw new DataAccessException("Could not parse notification payload.", ipe);
        }
    }

    public  PsqlEventSource(String dbUrl, String username, String password, String tableName);
    public  PsqlEventSource(String dbUrl, String username, String password, String tableName, boolean autoConfig);
    public  PsqlEventSource(ConnectionProvider connectionProvider, String tableName);
    public  PsqlEventSource(ConnectionProvider connectionProvider, String tableName, boolean autoConfig);
    @VisibleForTesting  PsqlEventSource(ConnectionProvider connectionProvider, String tableName, PsqlEventMapper mapper,
                                       boolean autoConfig);
    @VisibleForTesting public  PsqlEventSource(ConnectionProvider connectionProvider, String tableName, PsqlEventMapper mapper,
                           boolean autoConfig, PsqlConfigurator configurator);

}