Введение
---------
Вот тут:
default.aspx?g=posts&t=1435
описание ситуации с системой ГРАД -
"график рассмотрения арбитражных дел"
это база - расписание судебных заседаний для всех арбитражных судов в России, которая доступна на сайте ВАС.
для примера можно попробовать посмотреть расписание тестового заседания - для дела номер a50-5568/08.
Как написано на форуме в обсуждении перед нами стоит в принципе задача итегрировать информацию по этому расписанию в наши программные продукты.
В частности, сейчас у нас в разработке находится дополнительный модуль к нашей программе "Помошник Арбитражного Управляющего", который предоставляет функции ежедневника для планирования рабочего времени
(на основе компонента DevExpress, что то вроде такого: http://www.russianit.info/ru/projects/soft/39/index.php
в общем такой специально заточенный под АУ вариант Outlook а)
В этом модуле хочется автоматически без шума и пыли видеть график судебных заседаний в которых должен учавстввать АУ (по номерам дел).
Задание
---------
Этап 1.
---------
Описать структуры данных для графика судебных заседаний по одному делу
На языке C#, framework 1.1 (т.е. без generic ов).
т.е. должны быть классы:
Court - информация о суде
Judge - информация о судье
Deal - информация о деле
Judicial_sitting - информация о запланированном судебном заседании
GRAD - информация о интересующих судебных заседаниях.
структуры данных должны воспроизводить соответствующие данные доступные в системе ГРАД на сайте ВАС.
Структуры данных (в частности GRAD) должны поддерживать методы сериализации в xml (т.е. загрузку и выгрузку в эти форматы)
результатом этапа должны стать исходные файлы
1. проект - библиотека классов C# с описаниями структур данных, компилирующаяся без ошибок и предупреждений под названием GRADUtil.
2. проект - консольное приложение на C#, принимающее два аргумента командной строки
1)имя xml файла из которого нужно загрузить класс GRAD и
2)имя xml файла в который нужно записать GRAD.
Проект также должен компилироваться без ошибок и предупреждений, а выгруженные утилитой файлы при повторной загрузке-выгрузке должны давать одинаковый результат. так мы протестируем чтение/запись.
Стандарт для отступов - 4 пробела. символы табуляции заменять на пробелы.
Этап 2.
---------
реализовать класс GRAD_loader в библиотеке GRADUtil - который загружает необходимую информацию с сайта ВАС.
класс должен иметь метод
GRAD Load(ArrayList dealNumbers);
где dealNumbers - коллекция интересующих номеров дел (каждый номер - строка string).
нужно найти соответствующие классы в C# которые реализуют http запрос
и реализовать функцию при их помощи.
настройки соединения с сетью должны стать частью класса GRAD_loader (например параметры proxy при необходимости или базовый URL сайта)
результатом этапа должно стать консольное приложение, которое в качестве аргументов получает два имени файла - входной (текстовый или xml - как проще, на усмотрение) и выходной (xml)
во входном файле в каждой строке должен быть номер одного дела (если проще xml сделать - используйте его)
программа должна загрузить графики заседаний для соответствующих дел и выгрузить их в выходной файл.
Этап 3.
---------
реализвать класс GRAD_comparer в библиотеке GRADUtil - который будет сравнивать две структуры GRAD
т.е. должен быть метод
void compare(GRAD grad1, GRAD grad2);
класс должен объявить разные события (event) для найденных изменений
например
Added_Judicial_sitting - в grad2 добавлено новое судебное заседание, которого нет в grad1
аналогичные события должны быть объявлены и для других возможных изменений данных (изменился состав суда, место время, и т.п. отмениолсь заседание и т.п. - только основные, не нужно тут сильно усердствовать)
каждое событие в виде аргументов должно нести всю необходимую информацию (какое заседание добавилось или изменилось и т.п.)
результатом этапа должно стать сонсольное приложение, которое в качестве аргументов принимает два имени xml файла - для grad1 и grad2 и сравнивает их методом GRAD_comparer.compare
при этом для всех событий GRAD_comparer в консольном приложении должна печататься информационный текст на стандартный поток вывода (Console.Out)
Заключение
----------
Итого результатом задания должны стать:
1. библиотека классов GRADUtil
2. консольное приложение для тестирования сериализации графиков
3. консольное приложение для тестирования загрузки графика с сайта
4. консольное приложение для тестирования сравнения графиков
Всё это нам нужно для того, чтобы уметь загружать информацию с сайта ВАС и синхронизировать её с нашим Ежедневником АУ.