/// <summary>
        /// Obtiene la configuración desde el archivo XML.
        /// </summary>
        /// <remarks>
        ///     Registro de versiones:
        ///
        ///         1.0 08/10/2015 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial.
        /// </remarks>
        /// <param name="claseDAO">Tipo de la clase de un DAO.</param>
        /// <returns></returns>
        public static DynamicQueryRoot ObtenerConfiguracion(Type claseDAO)
        {
            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();
            string          DynamicQueryConfigPath = FrameworkConfigurationManager.ObtenerRutaArchivoConfiguracion(CARPETA_DYNAMIC_QUERIES);

            string ruta  = monitor.ObtenerRutaArchivo(DynamicQueryConfigPath, claseDAO.FullName + ".dbq.xml");
            string clave = null;

            if (monitor.Existe(ruta))
            {
                DynamicQueryConfigPath = ruta;
                clave = claseDAO.FullName;
            }
            else
            {
                DynamicQueryConfigPath = monitor.ObtenerRutaArchivoExistente(DynamicQueryConfigPath, claseDAO.Name + ".dbq.xml");
                clave = claseDAO.Name;
            }

            if ((!ArchivosConsultas.ContainsKey(clave)) || (monitor.FueModificado(ArchivosConsultas[clave].FechaUltimaModificacion, DynamicQueryConfigPath)))
            {
                XmlSerializer    serializer = new XmlSerializer(typeof(DynamicQueryRoot));
                FileStream       file       = null;
                DynamicQueryRoot retorno    = null;

                try
                {
                    file    = new FileStream(DynamicQueryConfigPath, FileMode.Open);
                    retorno = serializer.Deserialize(file) as DynamicQueryRoot;
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    if (file != null)
                    {
                        file.Close();
                    }
                }

                if (retorno != null)
                {
                    Configuracion = retorno;
                }

                if (!ArchivosConsultas.ContainsKey(clave))
                {
                    ArchivosConsultas.Add(clave, retorno);
                }

                ArchivosConsultas[clave].FechaUltimaModificacion = monitor.ObtenerFechaUltimaModificacion(DynamicQueryConfigPath);
            }

            return(Configuracion);
        }
示例#2
0
        static int Main(string[] args)
        {
            IMonitorArchivo monitor      = MonitorArchivoFactory.ObtenerArchivo();
            string          rutaLogError = monitor.ObtenerRutaAbsoluta(".[DS]Error.log.txt");

            try
            {
                FileSystemManager       manager = new FileSystemManager();
                AdministradorArchivoTag admin   = manager.ObtenerConfiguracion();

                foreach (Accion accion in admin.Acciones)
                {
                    foreach (FileSystem fileSystem in FileSystemManager.ObtenerFileSystems(accion))
                    {
                        IList <Evaluador <object> >  evaluadores = FileSystemManager.ObtenerEvaluadores(admin.Evaluadores);
                        IList <ExpresionCondicional> condiciones = FileSystemManager.ObtenerCondiciones(accion.Condiciones);

                        if (EvaluadorExpresiones.EvaluarCondiciones(fileSystem, condiciones, evaluadores))
                        {
                            accion.Realizar(fileSystem);
                        }
                    }
                }

                if (monitor.Existe(rutaLogError))
                {
                    new Eliminar().Realizar(new FileSystem()
                    {
                        Info = new FileInfo(rutaLogError), Tipo = TipoFileSystem.Archivo
                    });
                }
            }
            catch (Exception ex)
            {
                FileStream   logError = new FileStream(rutaLogError, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
                StreamWriter writer   = new StreamWriter(logError);
                writer.AutoFlush = true;

                Exception exepcionAux = ex;
                while (exepcionAux != null)
                {
                    writer.WriteLine(exepcionAux.Message);
                    writer.WriteLine("------------------------------------------------------------------------------");
                    writer.WriteLine(exepcionAux.StackTrace);
                    writer.WriteLine("\n");
                    exepcionAux = exepcionAux.InnerException;
                }

                writer.Close();
                logError.Close();
                return(1);
            }
            return(0);
        }
示例#3
0
        public override void Inicializar()
        {
            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

            if (NumeroArchivo == 0)
            {
                NumeroArchivo = 1;
            }

            if (Rolling.By.Equals("Date", StringComparison.InvariantCultureIgnoreCase))
            {
                if (Rolling.Unit.Equals("Day", StringComparison.InvariantCultureIgnoreCase))
                {
                    checked
                    {
                        if (FechaUltimoArchivoCreado.AddDays((int)Rolling.Value) >= DateTime.Now)
                        {
                            FechaUltimoArchivoCreado = DateTime.Now;
                            NumeroArchivo++;
                        }
                    }
                }
                else if (Rolling.Unit.Equals("Week", StringComparison.InvariantCultureIgnoreCase))
                {
                    checked
                    {
                        int diferenciaDias = (int)Rolling.Value;
                        diferenciaDias *= 7;

                        if (FechaUltimoArchivoCreado.AddDays(diferenciaDias) >= DateTime.Now)
                        {
                            FechaUltimoArchivoCreado = DateTime.Now;
                            NumeroArchivo++;
                        }
                    }
                }
                else if (Rolling.Unit.Equals("Month", StringComparison.InvariantCultureIgnoreCase))
                {
                    checked
                    {
                        if (FechaUltimoArchivoCreado.AddMonths((int)Rolling.Value) >= DateTime.Now)
                        {
                            FechaUltimoArchivoCreado = DateTime.Now;
                            NumeroArchivo++;
                        }
                    }
                }
                else if (Rolling.Unit.Equals("Year", StringComparison.InvariantCultureIgnoreCase))
                {
                    checked
                    {
                        if (FechaUltimoArchivoCreado.AddYears((int)Rolling.Value) >= DateTime.Now)
                        {
                            FechaUltimoArchivoCreado = DateTime.Now;
                            NumeroArchivo++;
                        }
                    }
                }
            }
            else if (Rolling.By.Equals("Size", StringComparison.InvariantCultureIgnoreCase))
            {
                if (monitor.Existe(RutaActualArchivo))
                {
                    //Tamaño en MB.
                    double tamañoArchivo = (new FileInfo(RutaActualArchivo).Length / 1048576.0);

                    double tamañoLimite = Rolling.Value;

                    if (Rolling.Unit.Equals("GB", StringComparison.InvariantCultureIgnoreCase))
                    {
                        tamañoLimite *= 1024;
                    }

                    if (Rolling.Unit.Equals("MB", StringComparison.InvariantCultureIgnoreCase) ||
                        Rolling.Unit.Equals("GB", StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (tamañoArchivo > tamañoLimite)
                        {
                            FechaUltimoArchivoCreado = DateTime.Now;
                            NumeroArchivo++;
                        }
                    }
                }
            }

            string ruta = Output.ObtenerRuta(NumeroArchivo);

            if (RutaActualArchivo != ruta)
            {
                file   = new FileStream(ruta, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
                writer = new StreamWriter(file)
                {
                    AutoFlush = true
                };
            }

            RutaActualArchivo = ruta;
        }
        /// <summary>
        /// Carga la configuración desde el archivo XML a memoria. De paso lo valida.
        /// </summary>
        /// <remarks>
        ///     Registro de versiones:
        ///
        ///         1.0 02/03/2015 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial.
        /// </remarks>
        /// <exception cref="Ada.Framework.Util.FileMonitor.Exceptions.ArchivoNoEncontradoException">Lanzado al no encontrar el archivo XML o su esquema.</exception>
        /// <exception cref="Ada.Framework.Data.DBConnector.Connections.Exceptions.ConfiguracionBaseDatosException">Lanzado al encontrar al archivo de configuración inválido.</exception>
        public void CargarConfiguracion(bool comprobarFechaModificacion = false)
        {
            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

            if (monitor.Existe(DataBaseConnectionsPath))
            {
                if (!fechaUltimaModificacionArchivo.HasValue)
                {
                    fechaUltimaModificacionArchivo = new DateTime(1, 1, 1);
                }

                if (!comprobarFechaModificacion || (Conexiones == null || Conexiones.Count == 0 || monitor.FueModificado(fechaUltimaModificacionArchivo.Value, DataBaseConnectionsPath)))
                {
                    Conexiones = new List <ConexionTO>();
                    Conectores = new List <ConectorTO>();

                    XmlDocument doc;
                    XmlReader   reader = null;
                    try
                    {
                        CargarXML(out doc, out reader);

                        foreach (XmlNode appender in doc.DocumentElement.ChildNodes[1].ChildNodes)
                        {
                            if (appender is XmlElement)
                            {
                                XmlElement element = (appender as XmlElement);

                                Conectores.Add(new ConectorTO()
                                {
                                    Name         = element.GetAttribute("Name"),
                                    Instance     = element.GetAttribute("Instance"),
                                    AssemblyName = element.GetAttribute("AssemblyName"),
                                    AssemblyPath = element.GetAttribute("AssemblyPath")
                                });
                            }
                        }

                        foreach (XmlNode elemento in doc.DocumentElement.ChildNodes[0].ChildNodes)
                        {
                            if (elemento is XmlElement)
                            {
                                XmlElement element = (elemento as XmlElement);

                                ConectorTO conector = Conectores.Where(c => c.Name == element.GetAttribute("Type")).First();

                                Conexiones.Add(new ConexionTO()
                                {
                                    ConnectionString = element.GetAttribute("ConnectionString"),
                                    Name             = element.GetAttribute("Name"),
                                    Instance         = conector.Instance,
                                    Type             = element.GetAttribute("Type"),
                                    AssemblyName     = conector.AssemblyName,
                                    AssemblyPath     = conector.AssemblyPath
                                });
                            }
                        }
                    }
                    finally
                    {
                        if (reader != null)
                        {
                            reader.Close();
                        }
                    }
                }

                fechaUltimaModificacionArchivo = monitor.ObtenerFechaUltimaModificacion(DataBaseConnectionsPath);
            }
            else
            {
                throw new ArchivoNoEncontradoException("¡No se ha encontrado el archivo de conexiones a bases de datos!", DataBaseConnectionsPath);
            }
        }