Advertisement
yambroskin

Untitled

Jul 22nd, 2018
282
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using EleWise.ELMA.Actions;
  2. using EleWise.ELMA.ComponentModel;
  3. using EleWise.ELMA.Deploy.ExportHelper;
  4. using EleWise.ELMA.Model.Common;
  5. using EleWise.ELMA.Model.Metadata;
  6. using NHibernate;
  7. using NHibernate.Criterion;
  8. using System;
  9. using System.Collections;
  10. using System.Collections.Generic;
  11. using System.Security;
  12.  
  13. namespace EleWise.ELMA.Model.Managers
  14. {
  15.     /// <summary>
  16.     /// Нетипизированный интерфейс менеджера сущности
  17.     /// </summary>
  18.     [ExtensionPoint(false, ComponentType.Server, ServiceScope.Application)]
  19.     public interface IEntityManager
  20.     {
  21.         /// <summary>
  22.         /// Создать новую сущность (без записи в БД)
  23.         /// </summary>
  24.         /// <returns>Сущность</returns>
  25.         object Create();
  26.  
  27.         /// <summary>
  28.         /// Проверить, является ли сущность новой (не сохраненной в БД)
  29.         /// </summary>
  30.         /// <param name="obj">Сущность</param>
  31.         /// <returns>True, если новая</returns>
  32.         bool IsNew(object obj);
  33.  
  34.         /// <summary>
  35.         /// Проверить, есть ли несохраненные изменения в сущности
  36.         /// </summary>
  37.         /// <param name="obj">Сущность</param>
  38.         /// <returns>True, если есть</returns>
  39.         bool IsDirty(object obj);
  40.  
  41.         /// <summary>
  42.         /// Проверить, есть ли несохраненные изменения в сущности
  43.         /// </summary>
  44.         /// <param name="obj">Сущность</param>
  45.         /// <param name="originalState">Оригинальное состояние сущности</param>
  46.         /// <returns>True, если есть</returns>
  47.         bool IsDirty(object obj, object originalState);
  48.  
  49.         /// <summary>
  50.         /// Получить идентификаторы измененных свойств
  51.         /// </summary>
  52.         /// <param name="obj">Сущность</param>
  53.         /// <returns>Список идентификаторов свойств</returns>
  54.         System.Guid[] GetDirtyPropertyUids(object obj);
  55.  
  56.         /// <summary>
  57.         /// Получить идентификаторы измененных свойств
  58.         /// </summary>
  59.         /// <param name="obj">Сущность</param>
  60.         /// <param name="originalState">Оригинальное состояние сущности</param>
  61.         /// <returns>Список идентификаторов свойств</returns>
  62.         System.Guid[] GetDirtyPropertyUids(object obj, object originalState);
  63.  
  64.         /// <summary>
  65.         /// Получить текущее состояние сущности (для применения в функции GetDirtyPropertyUids)
  66.         /// </summary>
  67.         /// <returns></returns>
  68.         object GetCurrentState(object obj);
  69.  
  70.         /// <summary>
  71.         /// Загрузить по идентификатору. Если не найдена - вызывается исключение
  72.         /// </summary>
  73.         /// <param name="id">Идентификатор</param>
  74.         /// <returns>Сущность</returns>
  75.         object Load(object id);
  76.  
  77.         /// <summary>
  78.         /// Загрузить по идентификатору. Если не найдена - возвращается null
  79.         /// </summary>
  80.         /// <param name="id">Идентификатор сущности</param>
  81.         /// <returns>Сущность или null</returns>
  82.         object LoadOrNull(object id);
  83.  
  84.         /// <summary>
  85.         /// Загрузить по идентификатору. Если не найдена - возвращается новая сущность
  86.         /// </summary>
  87.         /// <param name="id">Идентификатор сущности</param>
  88.         /// <returns>Сущность</returns>
  89.         object LoadOrCreate(object id);
  90.  
  91.         /// <summary>
  92.         /// Загрузить по уникальному идентификатору. Если не найдена - возвращается новая сущность
  93.         /// </summary>
  94.         /// <param name="uid">Уникальный идентификатор сущности</param>
  95.         /// <returns>Сущность</returns>
  96.         object LoadOrCreate(System.Guid uid);
  97.  
  98.         /// <summary>
  99.         /// Загрузить по уникальному идентификатору. Если не найдена - вызывается исключение
  100.         /// </summary>
  101.         /// <param name="uid">Уникальный идентификатор сущности</param>
  102.         /// <returns>Сущность</returns>
  103.         object Load(System.Guid uid);
  104.  
  105.         /// <summary>
  106.         /// Загрузить по уникальному идентификатору. Если не найдена - возвращается null
  107.         /// </summary>
  108.         /// <param name="uid">Уникальный идентификатор сущности</param>
  109.         /// <returns>Сущность или null</returns>
  110.         object LoadOrNull(System.Guid uid);
  111.  
  112.         /// <summary>
  113.         /// Проверить возможно ли сохранить данную сущность в текущем контексте выполнения
  114.         /// </summary>
  115.         /// <param name="obj">Сущность</param>
  116.         /// <returns>Результат проверки</returns>
  117.         ActionCheckResult CanSave(object obj);
  118.  
  119.         /// <summary>
  120.         /// Сохранить сущность в БД
  121.         /// </summary>
  122.         /// <param name="obj">Сущность</param>
  123.         void Save(object obj);
  124.  
  125.         /// <summary>
  126.         /// Проверить возможно ли удалить данную сущность в текущем контексте выполнения
  127.         /// </summary>
  128.         /// <param name="obj">Сущность</param>
  129.         /// <returns>Результат проверки</returns>
  130.         ActionCheckResult CanDelete(object obj);
  131.  
  132.         /// <summary>
  133.         /// Удалить сущность в БД
  134.         /// </summary>
  135.         /// <param name="obj">Сущность</param>
  136.         void Delete(object obj);
  137.  
  138.         /// <summary>
  139.         /// Удалить сущность в БД по запросу.
  140.         /// ВНИМАНИЕ!!! Не использовать для больших массивов, т.к. данные сначала загружаются в память из БД и только потом удаляются.
  141.         /// </summary>
  142.         /// <param name="query">Запрос</param>
  143.         void Delete(string query);
  144.  
  145.         /// <summary>
  146.         /// Удалить все сущности из БД
  147.         /// </summary>
  148.         void DeleteAll();
  149.  
  150.         /// <summary>
  151.         /// Обновить (перечитать) сущность из БД
  152.         /// </summary>
  153.         /// <param name="obj">Сущность</param>
  154.         void Refresh(object obj);
  155.  
  156.         /// <summary>
  157.         /// Обновить (перечитать) сущность из БД c блокировками
  158.         /// </summary>
  159.         /// <param name="obj">Сущность</param>
  160.         void Refresh(object obj, LockMode mode);
  161.  
  162.         /// <summary>
  163.         /// Найти все сущности
  164.         /// </summary>
  165.         /// <returns>Список всех сущностей</returns>
  166.         System.Collections.IEnumerable FindAll();
  167.  
  168.         /// <summary>
  169.         /// Найти все сущности по идентификаторам из массива
  170.         /// </summary>
  171.         /// <param name="idArray">Массив идентификаторов</param>
  172.         /// <returns>Список сущностей</returns>
  173.         System.Collections.IEnumerable FindByIdArray(object[] idArray);
  174.  
  175.         /// <summary>
  176.         /// Найти сущности в соответствии с параметрами выборки
  177.         /// </summary>
  178.         /// <param name="fetchOptions">Параметры выборки</param>
  179.         /// <returns>Список найденных сущностей</returns>
  180.         System.Collections.IEnumerable Find(FetchOptions fetchOptions);
  181.  
  182.         /// <summary>
  183.         /// Найти сущности в соответствии с фильтром и параметрами выборки
  184.         /// </summary>
  185.         /// <param name="filter">Фильтр</param>
  186.         /// <param name="fetchOptions">Параметры выборки</param>
  187.         /// <returns>Список найденных сущностей</returns>
  188.         System.Collections.IEnumerable Find(IEntityFilter filter, FetchOptions fetchOptions);
  189.  
  190.         /// <summary>
  191.         /// Найти сущности в соответствии с фильтром и параметрами выборки
  192.         /// </summary>
  193.         /// <param name="filter">Фильтр</param>
  194.         /// <param name="fetchOptions">Параметры выборки</param>
  195.         /// <typeparam name="T">Тип сущности</typeparam>
  196.         /// <returns>Список найденных сущностей</returns>
  197.         System.Collections.Generic.IEnumerable<T> Find<T>(IEntityFilter filter, FetchOptions fetchOptions);
  198.  
  199.         /// <summary>
  200.         /// Возвращает количество всех сущностей
  201.         /// </summary>
  202.         /// <returns>Количество всех сущностей</returns>
  203.         long Count();
  204.  
  205.         /// <summary>
  206.         /// Возвращает количество сущностей по фильтру
  207.         /// </summary>
  208.         /// <param name="filter">Фильтр</param>
  209.         /// <returns>Количество сущностей по фильтру</returns>
  210.         long Count(IEntityFilter filter);
  211.  
  212.         /// <summary>
  213.         /// Проверяет правильность фильтра (основная проверка для EQL), в противном случае исключение
  214.         /// </summary>
  215.         /// <param name="filter">Фильт</param>
  216.         void CheckFilter(IEntityFilter filter);
  217.  
  218.         /// <summary>
  219.         /// Получить проекцию значений свойства
  220.         /// </summary>
  221.         /// <typeparam name="PT">Тип свойства</typeparam>
  222.         /// <param name="propertyName">Имя свойства</param>
  223.         /// <returns>Список выбранных значений</returns>
  224.         System.Collections.Generic.ICollection<PT> Projection<PT>(string propertyName);
  225.  
  226.         /// <summary>
  227.         /// Установить фильтр в NHibernate критерию
  228.         /// </summary>
  229.         /// <param name="criteria"></param>
  230.         /// <param name="filter"></param>
  231.         void SetupFilter(ICriteria criteria, IEntityFilter filter);
  232.  
  233.         /// <summary>
  234.         /// Создать detached-критерию
  235.         /// </summary>
  236.         /// <param name="fetchOptions">Параметры выборки</param>
  237.         /// <param name="type">Тип, для которого производится выборка</param>
  238.         /// <param name="alias">Псевдоним</param>
  239.         /// <param name="filter"></param>
  240.         /// <returns>Критерий</returns>
  241.         DetachedCriteria CreateDetachedCriteria(FetchOptions fetchOptions, System.Type type, string alias = null, IEntityFilter filter = null);
  242.  
  243.         /// <summary>
  244.         /// Заполнить фильтрацию в detached-критерии
  245.         /// </summary>
  246.         /// <param name="detachedCriteria">detached-критерия</param>
  247.         /// <param name="fetchOptions">Параметры выборки</param>
  248.         /// <param name="type">Тип, для которого производится выборка</param>
  249.         /// <param name="filter"></param>
  250.         void FilterDetachedCriteria(DetachedCriteria detachedCriteria, FetchOptions fetchOptions, System.Type type, IEntityFilter filter = null);
  251.  
  252.         /// <summary>
  253.         /// Генерировать исключение безопасности
  254.         /// </summary>
  255.         /// <param name="text"></param>
  256.         /// <param name="id"></param>
  257.         /// <returns></returns>
  258.         System.Security.SecurityException CreateSecurityException(string text, object id);
  259.  
  260.         /// <summary>
  261.         /// Правила экспорта для свойств сущности
  262.         /// </summary>
  263.         /// <returns></returns>
  264.         ExportRuleList ExportRules();
  265.  
  266.         /// <summary>
  267.         /// Есть ли поля учавствующие в быстром поиске
  268.         /// </summary>
  269.         /// <param name="metadata">Метаданные</param>
  270.         /// <param name="filter">Фильтр</param>
  271.         /// <returns>true если есть поля учавствующие в быстром поиске</returns>
  272.         bool ExistPropertiesForFastSearch(IEntityMetadata metadata, IEntityFilter filter = null);
  273.     }
  274. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement