Класс DataManager
Glossary Item Box
Общие сведения
При работе с клиентской частью приложения возникает необходимость создавать, изменять и удалять данные сущностей без сохранения этих изменений в базу данных. Фиксация изменений в базу данных должна происходить при явном вызове метода сохранения. Данная функциональность реализована в классах DataManager и DataManagerItem.
Класс DataManager — синглтон, и доступен через глобальный объект Terrasoft. Данный класс предоставляет хранилище dataStore. В хранилище может быть загружено содержимое одной или нескольких таблиц базы данных. Например:
dataStore: { SysModule: sysModuleCollection, SysModuleEntity: sysModuleEntityCollection }
Здесь sysModuleCollection и sysModuleEntityCollection — коллекции данных типа DataManagerItem схем SysModule и SysModuleEntity. Каждая запись коллекции представляет запись из соответствующей таблицы в базе данных.
Диаграмма классов DataManager и DataManagerItem представлена на рисунке 1.
Рис. 1. — Диаграмма классов
Класс Terrasoft.manager.DataManager
Свойства
Табл. 1. — Основные свойства класса DataManager
- dataStore
- Object
-
Хранилище коллекций данных.
- itemClassName
- String
-
Имя класса записи. Имеет значение Terrasoft.DataManagerItem.
Методы
Табл. 2. — Основные методы класса DataManager
- select
-
В случае если dataStore не содержит коллекцию данных с именем config.entitySchemaName, то метод формирует и выполняет запрос в базу данных, затем возвращает полученные данные, иначе возвращает коллекцию данных из dataStore.
Параметры:
- config {Object} — конфигурационный объект;
- callback {Function} — функция обратного вызова;
- scope {Object} — контекст выполнения функции обратного вызова.
- createItem
-
Создает новую запись типа config.entitySchemaName со значениями колонок config.columnValues.
Параметры:
- config {Object} — конфигурационный объект;
- callback {Function} — функция обратного вызова;
- scope {Object} — контекст выполнения функции обратного вызова.
- addItem
-
Добавляет запись item в коллекцию данных схемы.
Параметры:
- item {Terrasoft.DataManagerItem} — добавляемая запись.
- findItem
-
Возвращает запись из коллекции данных схемы с именем entitySchemaName и с идентификатором id.
Параметры:
- entitySchemaName {String} — название коллекции данных;
- id {String} — идентификатор записи.
- remove
-
Устанавливает признак isDeleted для записи item, при фиксации изменений запись будет удалена из базы данных.
Параметры:
- item {Terrasoft.DataManagerItem} — удаляемая запись.
- removeItem
-
Удаляет запись из коллекции данных схемы.
Параметры:
- item {Terrasoft.DataManagerItem} — удаляемая запись.
- update
-
Обновляет запись со значением первичной колонки config.primaryColumnValue значениями из config.columnValues.
Параметры:
- config {Object} — конфигурационный объект;
- callback {Function} — функция обратного вызова;
- scope {Object} — контекст выполнения функции обратного вызова.
- discardItem
-
Отменяет изменения для записи item, сделанные в текущей сессии работы с DataManger.
Параметры:
- item {Terrasoft.DataManagerItem} — запись, по которой будут отменены изменения.
- save
-
Выполняет сохранение в базу данных коллекций данных схем, указанных в config.entitySchemaNames.
Параметры:
- config {Object} — конфигурационный объект;
- callback {Function} — функция обратного вызова;
- scope {Object} — контекст выполнения функции обратного вызова.
Класс Terrasoft.DataManagerItem
Свойства
Табл. 3. — Основные свойства класса DataManagerItem
- viewModel
- Terrasoft.BaseViewMode
-
Объектная проекция записи в базе данных.
Методы
Табл. 4. — Основные методы класса DataManagerItem
- setColumnValue
-
Устанавливает новое значение columnValue для колонки с именем columnName.
Параметры:
- columnName {String} — название колонки;
- columnValue {String} — значение колонки.
- getColumnValue
-
Возвращает значение колонки с именем columnName.
Параметры:
- columnName {String} — название колонки.
- getValues
-
Возвращает значения всех колонок записи.
- remove
-
Устанавливает признак isDeleted для записи.
- discard
-
Отменяет изменения для записи, сделанные в текущей сессии работы с DataManger.
- save
-
Фиксирует изменения в базе данных.
- getIsNew
-
Возвращает признак того, что запись новая.
- getIsChanged
-
Возвращает признак того, что запись была изменена.
Примеры работы
Получение записей из таблицы [Contact]:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaName: "Contact", // Убирать дубли в результирующем наборе данных. isDistinct: true }; // Получение данных. Terrasoft.DataManager.select(config, function (collection) { // Сохранение полученных записей в локальное хранилище. collection.each(function (item) { Terrasoft.DataManager.addItem(item); }); }, this);
Добавление новой записи в объект DataManager:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaName: "Contact", // Значения колонок. columnValues: { Id: "00000000-0000-0000-0000-000000000001", Name: "Name1" } }; // Создание новой записи. Terrasoft.DataManager.createItem(config, function (item) { Terrasoft.DataManager.addItem(item); }, this);
Получение записи и изменение значения колонки:
// Получение записи. var item = Terrasoft.DataManager.findItem("Contact", "00000000-0000-0000-0000-000000000001"); // Установка нового значения "Name2" колонке [Name]. item.setColumnValue("Name", "Name2");
Удаление записи из DataManager:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaName: "Contact", // Значение первичной колонки. primaryColumnValue: "00000000-0000-0000-0000-000000000001" }; // Устанавливает признак isDeleted для записи item. Terrasoft.DataManager.remove(config, function () { }, this);
Отмена изменений, сделанных в текущей сессии работы с DataManager:
// Получение записи. var item = Terrasoft.DataManager.findItem("Contact", "00000000-0000-0000-0000-000000000001"); // Отмена изменений для записи. Terrasoft.DataManager.discardItem(item);
Фиксация изменений в базе данных:
// Определение конфигурационного объекта. var config = { // Название схемы сущности. entitySchemaNames: ["Contact"] }; // Сохранение изменений в базу данных. Terrasoft.DataManager.save(config, function () { }, this);