Exemple #1
0
        /// <summary>
        /// Constructo. Este metodo se llama cuando se lanza la apliación.
        /// </summary>
        public Form1()
        {
            InitializeComponent();

            //Contador usado para el envio y recepción de tramas.
            count = 0;

            //Crea el modelo de datos.
            CreateDataModel();


            //------------------------------------
            //Carga de los conectores y protocolos
            //------------------------------------

            //Se cargan los conectores (Se usa el primero de la lista)
            listaConectores = ConectionConfig.LoadConfig("config.xml", "conector");
            //Se cargan los protocolos
            listaProtocolos = ConectionConfig.LoadConfig("config.xml", "protocol");


            //CONEXION
            try
            {
                //Se cargan los conectores
                conexionEstablecida = (IConector)listaConectores[0].getInstance();
                //Se establece la conexión.

                //Inicialización de la lista de peticiones
                listaPeticiones = new ListaPeticiones(conexionEstablecida);


                //Se cargan los protocolos (Se usa el primero de la lista)
                protocoloEnUso = (IIOProtocolInterface)listaProtocolos[0].getInstance();

                //Se prepara la lista de peticiones
                RellenarPeticiones(listaPeticiones);
                //Se enciende el timer.

                conexionEstablecida.Connect(listaConectores[0].Config);
                listaPeticiones.Start();


                tm          = new Timer();
                tm.Interval = 50;
                tm.Tick    += new EventHandler(ActualizaInterfaz);
                tm.Start();
            }
            catch (Exception ex)
            {
                //Si ha habido algún error en la conexión se cierra y se muestra el mensaje.
                if (conexionEstablecida != null)
                {
                    conexionEstablecida.Close();
                    conexionEstablecida = null;
                }
                MessageBox.Show("Error..... " + ex.Message);
            }
        }
Exemple #2
0
        public EntidadBaseDAL(IConector connector, IBuilder <T> builder, string nombreEntidad)
        {
            _connector     = connector;
            _builder       = builder;
            _nombreEntidad = nombreEntidad;

            GenerarNombresSP();
        }
        public ListaPeticiones(IConector con)
        {
            //Inicialización de la lista de peticiones
            listaPeticiones = new Dictionary <byte[], StatePeticion>();
            conector        = con;

            //Inicialización del timer
            tm_envio = new Timer();
            //Configuración del timer
            tm_envio.Interval = 50;                    //intervalo de tiempo (cada 50 ms se hace un tick)
            tm_envio.Elapsed += new ElapsedEventHandler(Envio);
            // new EventHandler(Envio); //Se ajusta para que se llame a la función Envio.

            //Establece una función que será llamada cuando lleguen datos al conector.
            conector.SetReceiveEventHandler(RecepcionDeDatos);
        }
Exemple #4
0
        public IConector GetConector(string nomeBanco)
        {
            IConector conector = null;

            switch (nomeBanco)
            {
            case Banco.SQLSERVER:
                conector = new ConectorSQLService(_conexaoConf, _log);
                break;

            case Banco.MYSQL:
                conector = new ConectorMySql(_conexaoConf, _log);
                break;

            case Banco.SYBASE:
                conector = new ConectorSyBase(_conexaoConf, _log);
                break;
            }

            return(conector);
        }
        public void SincronizarTabelas()
        {
            _log.TraceMethodStart();
            _log.Information($"Iniciando Sincronização de tabelas para a conexão: {_configConexao.NomeConexao}");

            IConector conectorDe   = _factory.GetConector(_configConexao.NomeBancoDe);
            IConector conectorPara = _factory.GetConector(_configConexao.NomeBancoPara);

            foreach (var tabela in _configConexao.ListaTabelas)
            {
                try
                {
                    DataTable data = conectorDe.BuscarDadosTabela(tabela);

                    if (data.Rows.Count > 0)
                    {
                        _log.Information("Encontrado dados para Sincronização");
                    }

                    foreach (DataRow row in data.Rows)
                    {
                        string guid             = row[ColunasConfiguracao.CHAVEINTEGRACAO].Equals(DBNull.Value) ? Guid.NewGuid().ToString() :  row[ColunasConfiguracao.CHAVEINTEGRACAO].ToString();
                        int    qtdeTentativas   = row[ColunasConfiguracao.QTDETENTATIVA].Equals(DBNull.Value) ? 0 : (int)row[ColunasConfiguracao.QTDETENTATIVA];
                        string statusIntegracao = string.Empty;

                        _log.Trace($"Iniciando sincronização com o GUID: {guid} ");
                        _log.SetIdentificador(guid);

                        qtdeTentativas++;

                        conectorDe.IniciarSincronizacao(guid, tabela, data, row);
                        statusIntegracao = StatusIntegracao.Atualizando;

                        try
                        {
                            conectorPara.EnviarComandosTabela(guid, tabela, data, row);
                            statusIntegracao = StatusIntegracao.Finalizado;
                        }
                        catch (Exception ex)
                        {
                            _log.Error("Erro no processo de envio ao banco de dados de destino: ", ex);
                        }

                        if (statusIntegracao.Equals(StatusIntegracao.Atualizando))
                        {
                            if (qtdeTentativas >= _configConexao.QuantidadeMaximaTentativas)
                            {
                                statusIntegracao = StatusIntegracao.Erro;
                            }
                        }

                        conectorDe.AtualizarSincronizacao(guid, tabela, data, row, qtdeTentativas, statusIntegracao);

                        _log.SetIdentificador(string.Empty);
                    }
                }
                catch (Exception ex)
                {
                    _log.Error("Erro no processo de busca ao banco de dados de envio: ", ex);
                }
            }
            _log.Information($"Finalizando Sincronização de tabelas para a conexão: {_configConexao.NomeConexao}");
            _log.TraceMethodEnd();
        }