У меня есть следующие требования:
- Чтение данных из файла CSV.
- Поиск повторяющихся строк на основе переданного ключа.(Например, CSV-файл имеет 10 столбцов, нам нужно найти дубликаты, основанные на определенном ключе строки)
- Логическое значение, чтобы отклонять / принимать дублирующиеся строки.
- Процессоры ячеек для проверки каждой строки вфайл.
Это для массовой загрузки данных, где я читаю файл строка за строкой, определяю, есть ли в строке правильные данные, и не является ли строка дубликатом на основе переданного ключа, и, наконец, возвращаю списокдопустимых строк.
abstract class BulkUploadService {
List<BulkDTO> process(File file) {
// Read a file and the value from below methods overridden by their child classes
}
abstract CellProcessors[] cellProcessors();
abstract boolean isDuplicatesAllowed();
abstract String[] headers();
abstract String rowKey();
}
Метод process () требует - Файл, ключ строки, CellProcessors, логическое значение для приема / отклонения дубликатов и еще несколько для обработки и возврата списка допустимых строк вформа DTO.Дочерние классы будут реализовывать BulkUploadService
и переопределять все методы, кроме process (), для предоставления данных для метода process () для возврата действительного списка.
Причина, по которой я хочу абстрагироваться, заключается в следующем: BulkUploadService
должен обрабатывать всю бизнес-логику и возвращать действительный список для конкретных классов, а конкретные классы должны быть сосредоточены только на предоставлении информации.Есть ли лучший способ разработки для этого сценария?