/// <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);
        }
        /// <summary>
        /// Obtiene la implementación para la configuración de la base de datos.
        /// </summary>
        /// <remarks>
        ///     Registro de versiones:
        ///
        ///         1.0 02/03/2015 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial.
        /// </remarks>
        /// <returns>Una implementación de <see cref="Ada.Framework.Data.DBConnector.Connections.IConfiguracionBaseDatos"></see>.</returns>
        /// <exception cref="Ada.Framework.Data.DBConnector.Connections.Exceptions.ConfiguracionBaseDatosException">Lanzada al no encontrar la declaración de sección en el archivo de configuración.</exception>
        /// <exception cref="Ada.Framework.Util.FileMonitor.Exceptions.ArchivoNoEncontradoException">Lanzada al no encontrar el archivo en la ruta especificada por DataBaseConnectionsPath.</exception>
        /// <exception cref="Ada.Framework.Util.FileMonitor.Exceptions.ArchivoNoEncontradoException">Lanzada al no encontrar el archivo en la ruta especificada por DataBaseConnectionsValidatorPath.</exception>
        public static IConfiguracionBaseDatos ObtenerConfiguracionDeBaseDatos()
        {
            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

            string DataBaseConnectionsPath          = FrameworkConfigurationManager.ObtenerRutaArchivoConfiguracion("DataBaseConnections");
            string DataBaseConnectionsValidatorPath = FrameworkConfigurationManager.ObtenerRutaArchivoConfiguracion("DataBaseConnectionsValidator");

            DataBaseConnectionsPath          = monitor.ObtenerRutaArchivoExistente(DataBaseConnectionsPath, NOMBRE_ARCHIVO_CONEXION);
            DataBaseConnectionsValidatorPath = monitor.ObtenerRutaArchivoExistente(DataBaseConnectionsValidatorPath, NOMBRE_ARCHIVO_VALIDADOR_XML_CONEXION);

            return(new ConfiguracionBaseDatos(DataBaseConnectionsPath, DataBaseConnectionsValidatorPath));
        }
예제 #3
0
        /// <summary>
        /// Obtiene el serializador XML para el archivo de configuración. Carga los ensamblados de los escritores de Log4Me.
        /// </summary>
        /// <remarks>
        ///     Registro de versiones:
        ///
        ///         1.0 10/04/2016 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial.
        /// </remarks>
        /// <returns></returns>
        protected override XmlSerializer ObtenerXmlSerializer()
        {
            XmlAttributeOverrides xOver  = new XmlAttributeOverrides();
            XmlAttributes         xAttrs = new XmlAttributes();

            List <Assembly> ensamblados = new List <Assembly>();
            Assembly        assembly    = null;

            string ruta = FrameworkConfigurationManager.ObtenerValorPropiedad <string>("Log4Me", "LibrariesFolderWriters");

            ruta = MonitorArchivoFactory.ObtenerArchivo().ObtenerRutaAbsoluta(ruta);

            string[] archivos = Directory.GetFiles(ruta, "*.dll");

            foreach (string archivo in archivos)
            {
                if (Path.GetFileName(archivo).StartsWith("Log4Me.", StringComparison.InvariantCultureIgnoreCase))
                {
                    assembly = Assembly.LoadFile(archivo);
                    ensamblados.Add(assembly);
                }
            }

            var tipos = (from lAssembly in ensamblados
                         from tipo in lAssembly.GetTypes()
                         where typeof(ALogWriter).IsAssignableFrom(tipo)
                         where !tipo.IsAbstract
                         select tipo).ToArray();

            foreach (var tipo in tipos)
            {
                xAttrs.XmlArrayItems.Add(new XmlArrayItemAttribute(tipo));
            }

            xOver.Add(typeof(Log4MeConfig), "Writers", xAttrs);

            return(new XmlSerializer(typeof(Log4MeConfig), xOver));
        }