Разработка контента курса дистанционного обучения "DB2 универсальная база данных", страница 20

- Операция INSERT.

Элемент "row" должен содержать минимум один элемент "column-value" (вставляемое в колонку таблицы значение).

- Операция UPDATE.

Элемент "row" должен содержать один элемент "key" (ключ для поиска строки, над которой необходимо провести операцию UPDATE) и как минимум один элемент "column-value" (новое значение для колонки).

- Операция DELETE.

Элемент "row" должен содержать один элемент "key" (в данном случае это ключ поиска строки, которую необходимо удалить из таблицы).

Элемент "key" (ключ поиска для операции UPDATE или DELETE) атрибутов не имеет. Он должен содержать как минимум один элемент "column-value" (значения ключа). При формировании SQL-запроса эти значения используются для формирования предиката WHERE.

Элемент "column-value" имеет два обязательных атрибута: "columnName" (имя колонки таблицы) и "sqlType" (DB2 SQL тип данных этой колонки). Допустимыми значениями атрибута "sqlType" являются названия следующих DB2 SQL типов данных: CHAR, SMALLINT, INTEGER, DATE, TIME, TIMESTAMP, BIGINT. При необходимости перечень типов можно расширить за счет численных типов, просто добавив их в DTD. Например, можно добавить типы DECIMAL и DOUBLE. Это не станет причиной корректировки программ. Символьные типы, например VARCHAR, для системы ничем не отличаются от типа CHAR и должны описываться как CHAR. Такие типы данных, как LOB не поддерживаются.

Элемент "column-value" должен содержать  значение колонки таблицы, либо оставаться пустым (например, если операцией UPDATE значение столбца необходимо установить в NULL).

В приложении использовался XML-парсер XERCES 2.6.2 (реализация SAX 2.0 - Simple API for XML).

Пример XML-файла для операции UPDATE:

<?xml version="1.0" encoding="windows-1251"?>

<!DOCTYPE rowset SYSTEM "file:C:/test/rowset.dtd">

<rowset timeStamp="2004-06-08-22.55.00.000000">

    <row id="row2" tableName="NAME_OB" sqlOperation="UPDATE">

          <key>

                  <column-value columnName="ID_OBJ" sqlType="BIGINT">

                    1

                  </column-value>

          </key>

        <column-value columnName="NAME_20" sqlType="CHAR">

          Новые черемушки

        </column-value>

        <column-value columnName="NAME_6" sqlType="CHAR">

          НовЧер

        </column-value>

    </row>

</rowset>

2.7.4. Перечень программных модулей

В следующей таблице 2.3 приведен перечень всех программ, разработанных в рамках данного приложения.

Таблица 2.3 Перечень программ приложения

Файл с исходным кодом

Пакет/исполняемый файл (если есть)

Назначение

index.jsp

-

Пользовательский интерфейс для загрузки XML-файла на сервер. Стартовая страница приложения

error.jsp

-

Страница вывода сообщений об ошибках

XMLReceiver.java

XMLReceiver.class

Сервлет, обслуживающий HTTP-запрос с "присоединенным" XML-файлом (“multipart”-запрос)

MultiPartParser.java

MultiPartParser.class

Парсер, предназначенный для разбора “multipart”-запроса. Получает XML-документ из запроса и передает его XML-парсеру

Part.java

Part.class

Класс, описывающий одну часть “multipart”-запроса (параметр или файл)

RowSet.java

RowSet.class

Реализация SAX 2.0 интерфейсов ContentHandler, DTDHandler, ErrorHandler. Получает от XML-парсера сообщения о содержимом документа и сообщения об ошибках в XML и DTD-файлах. Превращает содержимое XML-файла в SQL-запросы

Row.java

courseExample/Row.class

Класс, описывающий одну строку XML-файла. SQL-запрос, относящийся к этой строке является свойством этого класса.

Массив этих классов передается EJB-компоненту в качестве входного параметра

ReplicatorHome.java

courseExample/ReplicatorHome.class

Home-интерфейс EJB-компонента