/// <summary> /// Método acionado quando um registro é criado. /// </summary> /// <param name="record"></param> public virtual void OnRecordInserted(Colosoft.Query.IRecord record) { if (!IsAlive) { return; } var item = CreateCollectionItem(record); var collection = Collection; if (collection != null && !collection.Contains(item)) { collection.Add(item); } }
/// <summary> /// Recupera os valores adicionais. /// </summary> /// <param name="record"></param> /// <param name="mode"></param> /// <returns></returns> public override IEnumerable <string> Bind(Colosoft.Query.IRecord record, Colosoft.Query.BindStrategyMode mode) { if (record.Descriptor.Contains("Tipo")) { var tipoSetor = (Glass.Data.Model.TipoSetor)(int) record["Tipo"]; if (mode == Colosoft.Query.BindStrategyMode.All || (tipoSetor != TipoSetor)) { TipoSetor = tipoSetor; yield return("TipoSetor"); } } foreach (var i in base.Bind(record, mode)) { yield return(i); } }
/// <summary> /// Recupera os valores adicionais. /// </summary> /// <param name="record"></param> /// <param name="mode"></param> /// <returns></returns> public override IEnumerable <string> Bind(Colosoft.Query.IRecord record, Colosoft.Query.BindStrategyMode mode) { if (record.Descriptor.Contains("Grupo")) { string grupo = record["Grupo"]; if (mode == Colosoft.Query.BindStrategyMode.All || (grupo != Grupo)) { Grupo = grupo; yield return("Grupo"); } } foreach (var i in base.Bind(record, mode)) { yield return(i); } }
/// <summary> /// Cria um registro para a coleção com base no registro informado. /// </summary> /// <param name="record"></param> /// <returns></returns> protected IEntityDescriptor CreateCollectionItem(Colosoft.Query.IRecord record) { var bindStrategy = _entityLoader.GetEntityDescriptorBindStrategy(); var objectCreator = _entityLoader.GetEntityDescriptorCreator(); var instance = objectCreator.Create(); bindStrategy.Bind(record, Query.BindStrategyMode.All, ref instance); if (instance is IConnectedEntity) { ((IConnectedEntity)instance).Connect(_sourceContext); } if (instance is IEntityRecordObserver && instance is BusinessEntityDescriptor) { ((IEntityRecordObserver)instance).RegisterObserver(((BusinessEntityDescriptor)instance).RecordKey); } if (instance is ILoadableEntity) { ((ILoadableEntity)instance).NotifyLoaded(); } return((IEntityDescriptor)instance); }
/// <summary> /// Avalia se o registro informado é compatível. /// </summary> /// <param name="record"></param> /// <returns></returns> public bool Evaluate(Colosoft.Query.IRecord record) { return(IsAlive); }
/// <summary> /// Realiza a carda da entidade com carga tardia dos dados filhos. /// </summary> /// <param name="record">Registro dos dados da entidade.</param> /// <param name="recordKey">Chave do registro.</param> /// <param name="bindStrategy">Estratégia de vinculação dos dados do resultado.</param> /// <param name="objectCreator">Instancia responsável por criar objetos.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="entityTypeManager">Instancia do gerenciador de tipos de entidades.</param> /// <param name="args">Argumentos que serão usados</param> /// <returns></returns> public abstract IEntity LazyLoad(Colosoft.Query.IRecord record, Query.RecordKey recordKey, Colosoft.Query.IQueryResultBindStrategy bindStrategy, Colosoft.Query.IQueryResultObjectCreator objectCreator, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs args = null);
/// <summary> /// Realiza a carga da entidade com carga tardia dos dados filhos. /// </summary> /// <param name="record">Registro dos dados da entidade.</param> /// <param name="recordKey">Chave do registro.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="entityTypeManager">Instancia do gerenciador de tipos de entidades.</param> /// <param name="args">Argumentos que serão usados</param> /// <returns></returns> public IEntity LazyLoad(Colosoft.Query.IRecord record, Query.RecordKey recordKey, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager, EntityLoaderLazyArgs args = null) { return(LazyLoad(record, recordKey, GetBindStrategy(), GetObjectCreator(), sourceContext, uiContext, entityTypeManager, args)); }
/// <summary> /// Realiza a carga completa da entidade. /// </summary> /// <param name="record">Registro dos dados da entidade.</param> /// <param name="recordKey">Chave do registro.</param> /// <param name="bindStrategy">Estratégia de vinculação dos dados do resultado.</param> /// <param name="objectCreator">Instancia responsável por criar objetos.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="entityTypeManager">Gerenciador de tipos.</param> /// <returns></returns> public abstract IEntity FullLoad(Colosoft.Query.IRecord record, Query.RecordKey recordKey, Colosoft.Query.IQueryResultBindStrategySession bindStrategy, Colosoft.Query.IQueryResultObjectCreator objectCreator, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager);
/// <summary> /// Realiza a carga completa da entidade. /// </summary> /// <param name="record">Registro dos dados da entidade.</param> /// <param name="recordKey">Chave que representa o registro.</param> /// <param name="sourceContext">Contexto de origem dos dados.</param> /// <param name="uiContext">Contexto visual.</param> /// <param name="entityTypeManager">Gerenciador de tipos.</param> /// <returns></returns> public IEntity FullLoad(Colosoft.Query.IRecord record, Colosoft.Query.RecordKey recordKey, Colosoft.Query.ISourceContext sourceContext, string uiContext, IEntityTypeManager entityTypeManager) { var bindStragetySession = GetBindStrategy().CreateSession(record.Descriptor); return(FullLoad(record, recordKey, bindStragetySession, GetObjectCreator(), sourceContext, uiContext, entityTypeManager)); }
/// <summary> /// Recupera a chave com base nos dados do registro informado. /// </summary> /// <param name="record"></param> /// <returns></returns> public string GetKey(Colosoft.Query.IRecord record) { return(string.Format("{0}:{1}", _typeName.FullName, GetSimpleKey(record))); }