/// <summary> /// Processa a ação de exclusão. /// </summary> /// <param name="action"></param> private void ProcessDeleteAction(PersistenceAction action) { var observerManager = Colosoft.Query.RecordObserverManager.Instance; if (observerManager == null) { return; } Colosoft.Reflection.TypeName typeName = null; Query.Record record; Query.RecordKey recordKey; var deleteActionResult = action.Parameters.Where(f => f.Name == DeleteActionResultParameterName).Select(f => (IDeleteActionResult)f.Value).FirstOrDefault(); IEnumerable <Colosoft.Query.RecordKey> recordKeys = null; if (deleteActionResult == null) { typeName = GetActionRecord(action, out record, out recordKey); recordKeys = new Colosoft.Query.RecordKey[] { recordKey }; } else { typeName = new Reflection.TypeName(action.EntityFullName); recordKeys = deleteActionResult.RecordKeys; } observerManager.NotifyRecordDeleted(typeName, recordKeys); }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="dataModel"></param> /// <param name="recordKey"></param> /// <param name="children"></param> /// <param name="linkContainer"></param> /// <param name="references">Container das referências.</param> /// <param name="uiContext"></param> /// <param name="typeManager"></param> public EntityLoaderCreatorArgs(Data.IModel dataModel, Query.RecordKey recordKey, EntityLoaderChildContainer children, IEntityLoaderLinksContainer linkContainer, EntityLoaderReferenceContainer references, string uiContext, IEntityTypeManager typeManager) { _dataModel = dataModel; _recordKey = recordKey; _children = children; _links = linkContainer; _references = references; _uiContext = uiContext; _entityTypeManager = typeManager; }
/// <summary> /// Verifica se a instancia possui dados iguais a chave /// de registro informada. /// </summary> /// <param name="recordKey">Instancia da chave que será comparada.</param> /// <param name="comparisonType">Tipo de comparação que será realizada.</param> /// <returns></returns> public virtual bool Equals(Colosoft.Query.RecordKey recordKey, Colosoft.Query.RecordKeyComparisonType comparisonType) { recordKey.Require("recordKey").NotNull(); bool result = false; if ((comparisonType & Query.RecordKeyComparisonType.Key) == Query.RecordKeyComparisonType.Key) { result = recordKey.Key == _recordKey.Key; } if ((comparisonType & Query.RecordKeyComparisonType.RowVersion) == Query.RecordKeyComparisonType.RowVersion) { result = result || _recordKey.RowVersion == recordKey.RowVersion; } return(result); }
/// <summary> /// Método acionado quando um registro for removido. /// </summary> /// <param name="recordKey"></param> public void OnRecordDeleted(Colosoft.Query.RecordKey recordKey) { if (!IsAlive) { return; } var collection = Collection; if (collection != null) { for (var i = 0; i < collection.Count; i++) { var recordKeyEquatable = collection[i] as Colosoft.Query.IRecordKeyEquatable; if (recordKeyEquatable != null && recordKeyEquatable.Equals(recordKey, Colosoft.Query.RecordKeyComparisonType.Key)) { collection.RemoveAt(i--); } } } }
/// <summary> /// Avalia se a chave do registro é compatível. /// </summary> /// <param name="recordKey"></param> /// <returns></returns> public bool Evaluate(Colosoft.Query.RecordKey recordKey) { return(IsAlive); }
/// <summary> /// Compara a instancia com a chave do registro informada. /// </summary> /// <param name="recordKey"></param> /// <returns></returns> public bool Equals(Colosoft.Query.RecordKey recordKey) { return(Equals(recordKey, Query.RecordKeyComparisonType.Key)); }
/// <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)); }