Источник объектов - позволяет работать с набором объектов. А именно:
Задача конфигураци - регистрация источников объектов
Структура:
<objectSource ...>
<query ...>
строка_запроса
</query>
<filter ...>
<alias .../>
<element .../>
<static-element .../>
</filter>
<detailObjectSource .../>
<summary>
<element .../>
</summary>
<listeners>
<listener .../>
</listeners>
</objectSource>
Элементы конфигурации:
| Название элемента | Описание |
|---|---|
| objectSource | Создает источник объектов |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| name | Уникальное имя источника объектов | Нет |
| baseClass | Класс являющийся базовым для источника данных | Нет |
| baseClassPosition |
Позиция базового класса в строке (можно сказать позиция объекта
в операторе select запроса). Нумерация начинается
с нуля.
| Нет |
| baseClassAlias |
Псевдоним данного объекта в строке запроса. Например
в запросе from budget.domain.MoneyOperation moneyOperationпсевдонимом будет moneyOperation
| Нет |
| readOnly |
Если установить в true тогда источник не разрешит изменять данные в нем.
(по умолчанию false)
|
Да |
| Название элемента | Описание |
|---|---|
| query | Создает запрос, используя который источник объектов получает список объектов. Строка запроса задается в теле элемента. |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| maxRows | Максимальное количество строк которое можно получить выполняя запрос. По умолчанию 500 | Да |
| fetchSize | Порциями по столько будут доставаться строки из БД. По умолчанию 40 | Да |
| timeout | Максимальное время выполнения запроса (сек.). По умолчанию 60 | Нет |
| Название элемента | Описание |
|---|---|
| filter | Конфигурирует фильтр источника объектов. Подробнее о фильтрах можно узнать в разделе Фильтры |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| namesList | Название списка имен который будет использован для формирования элементов фильтра | Да |
| Название элемента | Описание |
|---|---|
| alias | Описывает псевдоним для объекта, используемый в запросе |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| alias | Псевдоним объекта | Нет |
| objectClass | Тип объекта для которого описывается псевдоним | Нет |
| Название элемента | Описание |
|---|---|
| static-element |
Описывает элемент фильтра значение которого можно задать
прямо в конфигурации (атрибут expression).
Значение фильтра можно изменять программно, но нельзя
изменять из пользовательского интерфейса.
|
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| property | Название свойства объекта | Нет |
| objectAlias | Название псевдонима. Если значение атрибута не установлено, тогда baseClassAlias | Да |
| staticExpression | Значение фильтра | Нет |
| parameter |
Название параметра в запросе в который будет установлено
выражение фильтра. Параметр задается в запросе в виде
:название_параметра
Например: where company.employeCount > :param
|
Да |
| Название элемента | Описание |
|---|---|
| element | Описывает элемент фильтра значение которого может изменяться из пользовательского интерфейса |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| property | Название свойства объекта | Нет |
| objectAlias | Название псевдонима. Если значение атрибута не установлено, тогда baseClassAlias | Да |
| parameter |
Название параметра в запросе в который будет установлено
выражение фильтра. Параметр задается в запросе в виде
:название_параметра
Например: where company.employeCount > :param
|
Да |
| Название элемента | Описание |
|---|---|
| detailObjectSource |
Задает связь типа master-detail
между источниками объектов. Взаимосвязь активируется
автоматически при редактировании объекта (но только одного)
выделенного в источнике и деактивируется после завершения
редактирования.
|
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| name | Имя подчиненного источника объектов | Нет |
| property |
Свойство основного класса в подчиненном источнике объектов
по которому будет создан элемент фильтра. В качестве
значения будет выступать либо объект основного класса выделенной строки
в главном источнике или значение его свойства, если задано
значение атрибута masterProperty
| Нет |
| masterProperty | Имя свойства основного класса (baseClass) значение которого будет использовано для фильтрации данных в подчиненном источнике объектов. | Да |
| refreshOnActivate |
Если установить в true тогда после активации
взаимосвязи данные подчиненный источник данных будет открыт.
|
Нет |
| Название элемента | Описание |
|---|---|
| summary | Позволяет применить агрегатные функции к источнику объектов. Например можно подсчитать сумму для заданного свойства определенного объекта. |
| Название элемента | Описание |
|---|---|
| element (для summary) | Позволяет применить агрегатную функцию к свойству объекта. |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| property | Имя свойства объекта | Нет |
| objectPosition | Позиция объекта в строке данных источника. По умолчанию baseClassPosition |
Да |
| function | Название агрегатной функции | Нет |
| Название элемента | Описание |
|---|---|
| listener |
Регистрирует слушателя событий происходящих в источнике
объектов. Функциональность summary
реализована с помощью этого механизма.
|
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| object | Ссылка на объект слушателя. Каждый слушатель должен релизовывать интерфейс org.weda.store.ObjectSourceListener | Нет |
Пример конфигурации:
<contribution configuration-id="org.weda.store.ObjectSources">
<objectSource
name="moneyOperation" baseClass="domain.MoneyOperation"
baseClassPosition="0" baseClassAlias="money"
>
<query maxRows="100" fetchSize="50" timeout="60">
from budget.domain.MoneyOperation as money
where 1=1
{#}
order by money.operationDate desc
</query>
<filter namesList="moneyOperation-filter"/>
<summary>
<element property="amount" function="sum"/>
</summary>
<listeners>
<listener object="instance:listeners.MoneyOperationObjectSourceListener"/>
</listeners>
</objectSource>
</contribution>