Интерфейс IExportManager

advertisement
Описание интерфейса IExportManager и класса ExportManager
Иващенко Дима, ivas-90@mail.ru
Рисунок 1. Диаграмма классов
1. Интерфейс IExportManager
Данный интерфейс описывает функции, реализующие экспорт анкетных данных, фото и
базы данных на бизнес уровне. Интерфейс содержит три метода:
1.1 public String exportPhotos() throws IOException; --функция отвечает за экспорт фото.
Предполагается, что ее вызов будет осуществлять уровень Presentation. Функция
должна обращаться к уровню данных, получает анкеты студентов, извлекает из них
фото, сохраняет их в файлы на сервере, упаковывает в архив и возвращает уровню
Presentation ссылку на архив.
!Внимание. В случае возникновения проблем с записью файлов будет брошен
IOException, который должен быть отловлен на уровне Presentation
1.2 public String exportProfiles(List<Profile> listProfile) throws
IOException,DocumentException;
Функция отвечает за экспорт анкетных данных. Она должна производить обращение
к уровню данных, получение анкет, конвертирование их в pdf, упаковку в архив и
возвращение уровню Presentation ссылки на архив
!Внимание. В случае ошибки записи файлов будет брошен IOException. В случае ошибки
конвертирования в pdf будет брошен DocumentException
1.3 public String exportDB() throws IOException;
Функция отвечает за экспорт базы данных в Excel. Она должна создавать на сервере
excel файл, содержащий копию БД, упаковывать его в архив и возвращать ссылку на
архив
Важно: интерфейс предназначен для использования со стороны уровня Presentation. Все методы
преднамеренно пропускают эксепшены наверх для обработки на уровне Presentation.
2. Класс ExportManager
Данный класс реализует интерфейс IExportManager и является синглтоном.
Рассмотрим поля класса:
private String photosFolderPath; --директория хранения фотографий. Данное поле
инициализируется автоматически при создании объекта класса с помощью функции
getInstance()
private String profileFolderPath; --директория хранения анкет в формате pdf.
Данное поле инициализируется автоматически при создании объекта класса с помощью
функции getInstance()
private String excelFolderPath—директория хранения БД в excel файле;
private String zipFolderPath—директория хранения архивов с фото, анкетами и excel;
private volatile static ExportManager instance;--объект данного класса(Instance of
singleton)
Рассмотрим методы класса:
private ExportManager(String photosFolderPath, String profileFolderPath,
String excelFolderPath, String zipFolder) –private конструктор
public static ExportManager getInstance() –метод создания или получения
единственного объекта класса(т.к. класс синглтон)
public String exportPhotos() throws IOException –экспорт фото. Возвращает ссылку на
архив с фотографиями
public String exportProfiles(List<Profile> listProfile) throws IOException,
DocumentException –экспорт анкет в pdf.
Возвращает ссылку на архив с pdf
private void zipDirectory(String directoryPath,
String zipPath) throws IOException –запаковать в архив директорию.
Основной метод
private void zip(File directory, File base,
ZipOutputStream zos) throws IOException –запаковать в архив директорию.
Вспомогательный метод
private void writeImageToFile(BufferedImage img,
String imageName) throws IOException –записать изображение в
файл
private void writeProfileToPDF(Profile prof,
String fileName) throws DocumentException,
IOException –записать анкету в pdf
private void createEmptyDirectories() –создать пустые директории для фото, архивов,
анкет и excel
private void deleteDirectory(File path) –удалить директорию
Download