Skip to content

Latest commit

 

History

History
49 lines (29 loc) · 4.82 KB

File metadata and controls

49 lines (29 loc) · 4.82 KB
Value Datasources

Value datasources позволяют выполнять запросы, возвращающие скалярные и агрегатные значения. Например, следующим запросом можно загрузить некоторую агрегатную статистику по покупателям:

select o.customer, sum(o.amount) from demo$Order o group by o.customer

Value datasources работают с сущностями особого типа: KeyValueEntity. Такая сущность может содержать произвольный набор атрибутов, задаваемый во время работы приложения. Так, в примере выше, экземпляры KeyValueEntity будут содержать два атрибута: первый типа Customer, второй типа BigDecimal.

Реализации value datasources унаследованы от других широко используемых классов источников данных и дополнительно реализуют специфический интерфейс ValueDatasource. На диаграмме ниже изображены реализации value datasources и их базовые классы:

ValueDatasources

Интерфейс ValueDatasource содержит следующие методы:

  • addProperty() - так как источник данных может содержать произвольный набор атрибутов, с помощью данного метода необходимо указать, какие атрибуты ожидаются. Он принимает имя атрибута и его тип в виде Datatype или Java-класса. В последнем случае класс должен быть либо сущностью, либо классом, поддерживаемым одним из типов данных (datatypes).

  • setIdName() - опциональный метод, позволяющий назначить один из атрибутов идентификатором сущности. Это означает, что экземпляры KeyValueEntity, содержащиеся в данном источнике данных будут иметь идентификаторы, получаемые из данного атрибута. В противном случае, экземпляры KeyValueEntity получают случайно сгенерированные UUIDs.

  • getMetaClass() возвращает динамическую реализацию интерфейса MetaClass, которая представляет текущую схему экземпляров KeyValueEntity, заданную вызовами метода addProperty().

Value datasources могут быть заданы декларативно в XML-дескрипторе. Существует три XML-элемента, соответствующих классам реализации:

  • valueCollectionDatasource

  • valueGroupDatasource

  • valueHierarchicalDatasource

XML описание value datasource должно содержать элемент properties, который задает атрибуты KeyValueEntity, содержащихся в источнике данных (см. метод addProperty() выше). Порядок элементов property должен соответствовать порядку колонок в результирующем наборе, возвращаемом запросом. Например, в следующем определении атрибут customer получит значение из колонки o.customer, а атрибут sum из колонки sum(o.amount):

link:../../../../../source/gui/value_datasources_1.xml[role=include]

Value datasources предназначены только для чтения данных, так как сущность KeyValueEntity является неперсистентной и не может быть сохранена стандартным механизмом работы с БД.

Value datasource можно создать как вручную, так и с помощью Studio на вкладке Datasources дизайнера экранов.

ValueDatasources Studio

Окно редактирования атрибутов Properties позволяет создать атрибуты источника данных с указанным типом данных и/или Java-класса.

ValueDatasources Studio properties