class RetentionExpirationDestroyerController {

    protected List<BusinessObjectDataKey> getBusinessObjectDataKeys(File inputCsvFile) throws IOException
    {
        List<BusinessObjectDataKey> businessObjectDataKeyList = new ArrayList<>();

        // Read the input CSV file and populate business object data key list.
        try (CSVReader csvReader = new CSVReader(new InputStreamReader(new FileInputStream(inputCsvFile), StandardCharsets.UTF_8)))
        {
            String[] line;

            // Validate required header of the CSV input file.
            if ((line = csvReader.readNext()) == null || !Arrays.equals(line, CSV_FILE_HEADER_COLUMNS))
            {
                throw new IllegalArgumentException(String.format("Input file \"%s\" does not contain the expected CSV file header.", inputCsvFile.toString()));
            }

            // Process the input CSV file line by line.
            int lineCount = 2;
            while ((line = csvReader.readNext()) != null)
            {
                businessObjectDataKeyList.add(getBusinessObjectDataKey(line, lineCount++, inputCsvFile));
            }
        }

        return businessObjectDataKeyList;
    }

}