DyerQ / Java-SE-Practice-Artifacts

0 stars 0 forks source link

Парсинг визиток и чтение шаблонов писем #2

Open DyerQ opened 8 years ago

DyerQ commented 8 years ago

Описание задачи

Нужно написать класс, у которого будет следующий API:

public abstract class FileParser {
    private String businessCardsDirectory;
    private String mailTemplatesDirectory;
    private String recipientsFileName;

    public FileParser(String businessCardsDirectory, String mailTemplatesDirectory, String recipientsFileName) {
        this.businessCardsDirectory = businessCardsDirectory;
        this.mailTemplatesDirectory = mailTemplatesDirectory;
        this.recipientsFileName = recipientsFileName;
    }

    public abstract int parseBusinessCards();
    public abstract Collection<MailTemplate> parseMailTemplates();
}

Метод parseBusinessCards() должен возвращать количество обновлённых и добавленных записей в адресную книгу. Метод parseMailTemplates() возвращает коллекцию добавленных шаблонов (при отсутствии добавленных - пустую коллекцию).

Рекомендую обновление записей сделать следующим образом: 1) Сохранение всех записей из xml в множестве (HashSet set) 2) Сканирование файлов в указанной директории, получение массива File[] 3) Для каждого файла запустить функцию private BusinessCard parseBusinessCard(File file), которая при успешной обработке файла поместит его (переименованием) в поддиректорию processed, при неудачной обработке пометит его в директорию invalid и вернёт null. 4) Для каждой обработанной бизнес-карты необходимо проверить, не присутствует ли в адресной книге карточка с тем же адресом (set.contains). Если имеет, то перед добавлением в общее множество, старый объект необходимо удалить (set.remove). 5) Полученное множество записей снова перевести в xml и перезаписать файл.

Шаблоны текстов писем парсить проще: необходимо всё содержимое файла перегнать в объект типа String и создать MailTemplate через конструктор.

Используемый формат бизнес-карт смотри в комментарии.

DyerQ commented 8 years ago

Формат файлов с визитками

property-name, двоеточие, один пробел и значение. Один файл соответствует ровно одной визитке. В конце файла пустая строка

e-mail: vasiliy.urosov@phystech.edu
full-name: Василий Уросов
university: МФТИ (ГУ)
DyerQ commented 8 years ago

Формат шаблона письма

Здравствуйте, #{full-name}!

Вы учитесь в #{university}? Тогда это предложение точно для Вас!!!
...

В сочетании с вышеописанной визиткой:

Здравствуйте, Василий Уросов!

Вы учитесь в МФТИ (ГУ)? Тогда это предложение точно для Вас!!!
...