Ejemplo n.º 1
0
        /// <summary>
        /// Salva um objeto na persistencia.
        /// Overload do método para trabalhar com mensagens
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="objeto"></param>
        public SalvarObjetoResponse <T> SalvarObjeto <T>(SalvarObjetoRequest <T> parametros) where T : ICodigoEntidade
        {
            // Permite que o hook interfira no processamento
            if (this.EventoSalvar != null)
            {
                // Cria eventargs para permitir que o hook crie sua resposta
                PersistenciaArquivoEventoEventArgs eventArgs =
                    new PersistenciaArquivoEventoEventArgs()
                {
                    MensagemRequest = parametros
                };

                // Faz a chamada do hook
                this.EventoSalvar(this, eventArgs);

                // Se tem resposta, é a que deve ser retornada
                if (eventArgs.MensagemResponse != null)
                {
                    return(eventArgs.MensagemResponse as SalvarObjetoResponse <T>);
                }
            }

            // Pega o código da entidade
            string codigoEntidade = ((ICodigoEntidade)parametros.Objeto).ReceberCodigo();

            // Serializa
            EntidadeInfo entidadeInfo = serializar <T>(parametros.Objeto);

            // Verifica se já existe para adicionar ou alterar
            string chave = gerarChaveEntidade(entidadeInfo);

            lock (_persistenciaHelper)
                if (_persistenciaHelper.Entidades.ContainsKey(chave))
                {
                    _persistenciaHelper.Entidades[chave] = entidadeInfo;
                }
                else
                {
                    _persistenciaHelper.Entidades.Add(chave, entidadeInfo);
                }

            // Retorna
            return
                (new SalvarObjetoResponse <T>()
            {
                Objeto = parametros.Objeto
            });
        }
Ejemplo n.º 2
0
 public SalvarObjetoResponse <T> SalvarObjeto <T>(SalvarObjetoRequest <T> parametros) where T : ICodigoEntidade
 {
     // Repassa a mensagem
     return(localizarHelper(typeof(T)).Instancia.SalvarObjeto <T>(parametros));
 }