Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Практическое задание 1 # CSV Writer

Библиотека CsvWriter сериализует Java-объекты в CSV-файл с помощью reflection и аннотаций. Проект реализует интерфейс Writable, покрыт unit-тестами, содержит JavaDoc и демонстрационные примеры в main.

Возможности

  • Сериализация списка объектов одного типа в CSV со строкой заголовка.
  • Настройка разделителя через аннотацию @CsvEntity.
  • Управление порядком и именем колонок через @CsvColumn.
  • Поддержка null-значений, enum, коллекций и экранирования специальных символов.
  • Автоматическое создание вложенных директорий при записи файла.
  • Генерация тестовых и демонстрационных данных через Datafaker.

Структура проекта

  • org.writer.Writable — общий контракт для записи данных в файл.
  • org.writer.csv.CsvSerializer — преобразует список объектов в CSV-строку.
  • org.writer.csv.CsvWritable — сохраняет результат сериализации в файл.
  • org.writer.csv.annotation — аннотации @CsvEntity и @CsvColumn.
  • org.writer.model — модели, готовые к экспорту в CSV.
  • org.writer.factory.SampleDataFactory — фабрика демонстрационных данных.
  • org.writer.Main — несколько примеров сохранения файлов в директорию output.

Поведение библиотеки

  • Все объекты в списке должны быть одного типа.
  • Пустой список и null не допускаются.
  • Класс обязан иметь аннотацию @CsvEntity.
  • Хотя бы одно поле должно быть помечено @CsvColumn.
  • Значения order в @CsvColumn должны быть уникальны.
  • Коллекции сериализуются в одну ячейку через ;.
  • Значения с разделителем, кавычками или переносами строк автоматически экранируются.

Запуск

Выполнить тесты

 ./gradlew test

Запустить примеры из main

 ./gradlew run

После запуска будут созданы файлы:

  • output/persons.csv
  • output/students.csv

About

Тема 1. Задача 1 # CSV Writer

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages