class DataObjectReaperConfig {

    public String validate()
    {
        List<String> validationIssues = new LinkedList<>();

        if(StringUtils.isBlank(tableName))
            validationIssues.add("tableName must be specified");

        if(StringUtils.isBlank(idFieldName))
            validationIssues.add("idFieldName must be specified");

        if(StringUtils.isBlank(timeFieldName))
            validationIssues.add("timeFieldName must be specified");

        if(reapAgeMinutes < 0)
            validationIssues.add("reapAgeMinutes must be non-negative");

        if(deleteCallDelayMillis < 0)
            validationIssues.add("deleteCallDelayMillis must be non-negative");

        if(scanDelayMillis < 0)
            validationIssues.add("scanDelayMillis must be non-negative");

        if(targetBatchSize < 1)
            validationIssues.add("targetBatchSize must be 1 or more");

        if(objectScanLimit < 1)
            validationIssues.add("objectScanLimit must be 1 or more");

        if(maximumExecutionSeconds < 0)
            validationIssues.add("maximumExecutionSeconds must be non-negative");

        return validationIssues.size() == 0
            ? null
            : String.join(",", validationIssues);

    }

    public  DataObjectReaperConfig();

}