Как прочитать и проверить данные из CSV-файла и сохранить их в документе mongodb с помощью Spring Boot? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть сущность Предметов, состоящая из размеров предмета, как показано во фрагменте ниже. Я хочу прочитать все эти поля из файла CSV, проверить его и сохранить в соответствующей таблице в базе данных? файл может содержать от сотен до тысяч элементов.

@Document(collection = "items")
public class ItemEntity {

    @Id
    private String id;
    private double height;
    private double width;
    private double length;
    private double weight;
}

пользователь должен будет загрузить один CSV-файл через пользовательский интерфейс и отправить запрос POST с телом, содержащим содержимое файла.

Я определил MongoRepository для доступа к базе данных:

@Repository
public interface ItemRepository extends MongoRepository<Item, String> {
}

, затем для десериализации CSV, я мог бы, вероятно, использовать Джексона и добавить расширение формата данных для CSV? ( если у кого-то есть пример того, как это сделать, это было бы здорово? )

compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-csv', version: '2.5.3'

сначала мне нужно выяснить вспомогательный метод, который знает, как читать CSV для заданный класс POJO ( Нужна помощь Здесь )? затем создайте Rest Controller для обработки загрузки:

 @PostMapping(value = "/upload", consumes = "text/csv")
    public void uploadFile(@RequestBody InputStream body) {
        repository.saveAll(CsvUtility.read(Item.class, body));
    }

Для части проверки я хочу проверить случай, когда элементы не имеют размеров (высота, ширина, длина, вес пусты )

Для этого я хочу проверить данные сразу же после загрузки файла, затем вызвать исключение, если данные отсутствуют, сообщить пользователю . На мой взгляд, для достижения этого наилучшим подходом будет уровень обслуживания, который довольно прост в реализации.

@Service
@Validated
@RequiredArgsConstructor
class ItemService {
    private final ItemRepository repository;
    public void saveAll(@Valid List<Item> items) {
        repository.saveAll(items);
    }
} 

Мне все еще неясно, является ли это лучшим подходом? Кроме того, я хотел бы иметь несколько примеров того, как проверить данные (как описано выше), прочитать и сохранить CSV-файл в документе (таблице) в MongoDB?

NB Я довольно новичок в этом стеке, так я учусь, делая и исследуя?

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...