Esempio n. 1
0
        /// <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;
 }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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--);
                    }
                }
            }
        }
Esempio n. 5
0
 /// <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);
 }
Esempio n. 6
0
 /// <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));
 }
Esempio n. 7
0
        /// <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));
        }