Тестовое задание

Java приложение, выполняющее две основные функции:

  1. выгрузка содержимого таблицы БД в XML файл;
  2. синхронизация содержимого таблицы БД по заданному 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