class DBReportManager extends DBManager<Report> implements ReportManager {

    @Override
    @SuppressWarnings("checkstyle:parameternumber")
    public final FilteredRecordsList<SimpleImaRecordBean>
    getOrderedRecordListWithoutRecords(
            final IMARecordScope scope,
            final String id,
            final boolean sinceLastFullReport,
            final IMARecordField columnToOrder,
            final boolean ascending,
            final int firstResult,
            final int maxResults,
            final String search,
            final Map<String, Boolean> searchableColumns)
            throws ReportManagerException {

        // check columnToOrder
        if (columnToOrder == null) {
            final String msg = "columnToOrder cannot be null";
            LOGGER.error(msg);
            throw new IllegalArgumentException(msg);
        }

        // check scope
        if (scope == null) {
            throw new IllegalArgumentException("IMARecordScope cannot be null");
        }

        switch (scope) {
            case NONE:
                // Returns an empty FilteredRecordsList to make DataTables
                // display "No Data".
                return new FilteredRecordsList<>();
            case REPORT:
                return getImaRecordsForReport(id, columnToOrder, ascending,
                        firstResult,
                        maxResults, search, searchableColumns);
            case DEVICE:
                return getImaRecordsForDevice(id, sinceLastFullReport,
                        columnToOrder, ascending, firstResult,
                        maxResults, search, searchableColumns);
            default:
                throw new UnsupportedOperationException(
                        "IMARecordScope " + scope + " is not supported");
        }
    }

    public  DBReportManager(final SessionFactory sessionFactory);

}