Тестовое задание
Java приложение, выполняющее две основные функции:
- выгрузка содержимого таблицы БД в XML файл;
- синхронизация содержимого таблицы БД по заданному XML файлу.
- Основные этапы операций логируются в лог файл. На экран выводится только краткая информация о результате прохождения операции.
- Название и местонахождение файла для логирования, а также параметры соединения с БД заданы в файле настроек приложения. Формат файла – java properties.
Требования к таблице в БД
- В БД одна таблица со следующей структурой:
- ID int – суррогатный ключ генерируемый при вставке записи в таблицу;
- DepCode String(длина 20 символов) – код отдела;
- DepJob String(длина 100 символов) – название должности в отделе;
- Description String (длина 255 символов) – комментарий. Первичный ключ – ID. Натуральный ключ состоит из двух полей – DepCode, DepJob. Соответственно в таблице нет двух и более записей с одинаковым сочетанием DepCode и DepJob.
Функции выгрузки содержимого таблицы в XML файл
- Пользователь имеет возможность указывать имя файла, в который будет осуществлена выгрузка.
- Формат получаемого файла – XML.
- В полученный файл выгружаются все поля таблицы, перечисленные выше, кроме поля ID.
Функции синхронизации содержимого таблицы c заданным XML файлом
- Пользователь имеет возможность указывать имя файла по содержимому которого будет осуществляться синхронизация данных в таблице.
- Структура загружаемого файла такой же, как и у выгружаемого в функции выше.
- Синхронизация проходит по натуральному ключу таблицы с минимальным числом обращений к БД. Т.е. удаляются только те записи, которые отсутствуют в XML файле. Добавляются соответственно только новые. Измененные обновляются.
- В случае если в XML файле есть две записи с одним натуральным ключом, то приложение должно выдает соответствующую ошибку.
- Весь процесс синхронизации осуществляется в одной транзакции, т.е. если в процессе синхронизации произошла ошибка, то данные в БД должны остаться нетронутые.
Использованные технологии
- Доступ к СУБД осуществляется посредством JDBC.
- Обновление данных в БД осуществляется с помощью SQL выражений, а не CONCUR_UPDATABLE режима.
- Логирование в файл осуществляется посредством библиотеки log4j
- В алгоритме синхронизации был использован класс HashMap или HashSet. Для контроля ключей создан специальный класс, в котором реализованы методы хеширования и equals.
- Чтение XML файла осуществляется с помощью технологии XML DOM.
- Для работы с файлом настроек приложения необходимо использован класс Properties.
- Задание выполняемой команды (функции), а также имени файла сделано через параметры командной строки. Пример: test.bat sync test.xml