public override void Realizar(FileSystem fileSystem)
        {
            if (fileSystem.Info is FileInfo)
            {
                string rutaFinal = RutaDestino;

                if (rutaFinal[rutaFinal.Length - 1] == '\\')
                {
                    rutaFinal = rutaFinal.Substring(rutaFinal.Length - 2);
                }

                rutaFinal = string.Format(@"{0}\{1}.zip", rutaFinal, fileSystem.Info.Name.Replace(fileSystem.Info.Extension, ""));

                IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();
                monitor.PrepararDirectorio(rutaFinal);

                using (FileStream zipToOpen = new FileStream(rutaFinal, FileMode.OpenOrCreate))
                {
                    using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
                    {
                        archive.CreateEntryFromFile(fileSystem.Info.FullName, fileSystem.Info.Name);
                    }
                }
                new Eliminar().Realizar(fileSystem);
            }
            else
            {
                throw new Exception("¡No se puede mover un directorio!");
            }
        }
        /// <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);
        }
        public static void Inicializar()
        {
            if (!Inicializado)
            {
                Config = new DynamicLoaderConfigManager().ObtenerConfiguracion();

                IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

                foreach (AppDomainTag appDomainTag in Config.Domains)
                {
                    foreach (AElementsTag elemento in appDomainTag.Elementos)
                    {
                        elemento.Ruta = monitor.ObtenerRutaAbsoluta(elemento.Ruta);

                        if (elemento is DirectoryTag)
                        {
                            CargarEnsamblados(appDomainTag.Nombre, elemento.Ruta, (elemento as DirectoryTag).Recursivo);
                        }
                        else if (elemento is AssemblyTag)
                        {
                            CargarEnsamblado(appDomainTag.Nombre, elemento.Ruta);
                        }

                        FileSystemWatcher watcher = new FileSystemWatcher();
                        watcher.Path         = elemento.Ruta;
                        watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
                        watcher.Filter       = "*.dll";

                        watcher.Changed            += new FileSystemEventHandler(OnChanged);
                        watcher.EnableRaisingEvents = true;
                    }
                }

                foreach (AElementsTag elemento in Config.Elementos)
                {
                    elemento.Ruta = monitor.ObtenerRutaAbsoluta(elemento.Ruta);

                    if (elemento is DirectoryTag)
                    {
                        CargarEnsamblados(elemento.Ruta, (elemento as DirectoryTag).Recursivo);
                    }
                    else if (elemento is AssemblyTag)
                    {
                        AppDomain dominio = CrearDominio(elemento.Ruta);
                        CargarEnsamblado(dominio, elemento.Ruta);
                    }

                    FileSystemWatcher watcher = new FileSystemWatcher();
                    watcher.Path         = elemento.Ruta;
                    watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
                    watcher.Filter       = "*.dll";

                    watcher.Changed            += new FileSystemEventHandler(OnChanged);
                    watcher.EnableRaisingEvents = true;
                }
            }
        }
Example #4
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);
        }
        /// <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));
        }
Example #6
0
        public override void Inicializar()
        {
            if (file == null)
            {
                IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();
                file = new FileStream(monitor.ObtenerRutaAbsoluta(OutputPath), FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite);
            }

            if (writer == null)
            {
                writer = new StreamWriter(file) { AutoFlush = true };
            }
        }
        public static Assembly CargarEnsamblado(string nombreDominio, string rutaEnsamblado)
        {
            rutaEnsamblado = MonitorArchivoFactory.ObtenerArchivo().ObtenerRutaAbsoluta(rutaEnsamblado);

            AppDomain dominio = ObtenerDominio(nombreDominio);

            if (dominio != null)
            {
                return(CargarEnsamblado(dominio, rutaEnsamblado));
            }

            return(null);
        }
        public static Assembly ObtenerEnsambladoPorRuta(string rutaEnsamblado)
        {
            rutaEnsamblado = MonitorArchivoFactory.ObtenerArchivo().ObtenerRutaAbsoluta(rutaEnsamblado);

            Assembly[] ensamblados = ObtenerEnsamblados();

            if (ensamblados != null)
            {
                return(ensamblados.FirstOrDefault(c => c.Location.Equals(rutaEnsamblado, StringComparison.InvariantCultureIgnoreCase)));
            }

            return(null);
        }
        public string ObtenerRuta(int numeroArchivo)
        {
            string retorno     = FileNameFormat;
            string fechaActual = string.Empty;

            if (!string.IsNullOrEmpty(DateTimeFormat) && !string.IsNullOrEmpty(DateTimeFormat.Trim()))
            {
                fechaActual = DateTime.Now.ToString(DateTimeFormat);
            }

            if (numeroArchivo > 1)
            {
                if (retorno.Contains("[FileNumber]"))
                {
                    retorno = retorno.Replace("[FileNumber]", numeroArchivo.ToString());
                }
                else
                {
                    if (retorno.LastIndexOf(".") != -1)
                    {
                        retorno = retorno.Substring(0, retorno.LastIndexOf(".")) + numeroArchivo + retorno.Substring(retorno.LastIndexOf("."));
                    }
                    else
                    {
                        retorno += numeroArchivo;
                    }
                }
            }
            else
            {
                retorno = retorno.Replace("[FileNumber]", string.Empty);
            }

            if (retorno.Contains("[DateTime]"))
            {
                retorno = retorno.Replace("[DateTime]", fechaActual);
            }

            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

            if (!Path.EndsWith(monitor.SEPARADOR_CARPETAS))
            {
                Path += monitor.SEPARADOR_CARPETAS;
            }

            monitor.PrepararDirectorio(Path);
            retorno = monitor.ObtenerRutaAbsoluta(Path + retorno);

            return(retorno);
        }
        public static Assembly CargarEnsamblado(AppDomain dominio, string rutaEnsamblado)
        {
            rutaEnsamblado = MonitorArchivoFactory.ObtenerArchivo().ObtenerRutaAbsoluta(rutaEnsamblado);

            Assembly retorno = ObtenerEnsambladoPorRuta(dominio, rutaEnsamblado);

            if (retorno == null)
            {
                string nombreEnsamblado = Assembly.LoadFrom(rutaEnsamblado).FullName;
                retorno = dominio.Load(nombreEnsamblado);
                OnLoadAssembly(retorno);
            }

            return(retorno);
        }
        public virtual T ObtenerConfiguracion(string rutaReferencial, string ruta)
        {
            try
            {
                IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();
                ruta = monitor.ObtenerRutaAbsoluta(rutaReferencial, ruta);

                DateTime fechaUltimaModificacionActual = monitor.ObtenerFechaUltimaModificacion(ruta);

                if (fechaUltimaModificacionActual > FechaUltimaModificacion)
                {
                    if (ValidarXmlSchema)
                    {
                        ValidarContraXmlSchema();
                    }
                    else
                    {
                        XmlDocument doc = ObtenerXmlDocument(ruta);
                        ValidarXml(doc);
                    }

                    XmlSerializer serializer = ObtenerXmlSerializer();

                    FileStream file = null;

                    try
                    {
                        file          = ObtenerFileStreamForRead(ruta);
                        Configuracion = Deserialize(serializer, file);
                    }
                    finally
                    {
                        if (file != null)
                        {
                            file.Close();
                        }
                    }

                    FechaUltimaModificacion = fechaUltimaModificacionActual;
                }
                return(Configuracion);
            }
            catch (Exception ex)
            {
                throw new AdaFrameworkConfigurationException(string.Format("!Error al obtener la configuración de {0}!. {1}", NombreArchivoConfiguracion, ex.Message), ex);
            }
        }
Example #12
0
 public override void Realizar(FileSystem fileSystem)
 {
     if (fileSystem.Info is FileInfo)
     {
         IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();
         monitor.PrepararDirectorio(RutaDestino);
         if (RutaDestino[RutaDestino.Length - 1] != '\\')
         {
             RutaDestino += "\\";
         }
         (fileSystem.Info as FileInfo).MoveTo(RutaDestino + fileSystem.Info.Name);
     }
     else
     {
         throw new Exception("¡No se puede mover un directorio!");
     }
 }
Example #13
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));
        }
        public virtual void GuardarConfiguracion(T config, string rutaReferencial, string ruta)
        {
            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

            ruta = monitor.ObtenerRutaAbsoluta(rutaReferencial, ruta);

            FileStream file = null;

            try
            {
                XmlSerializer serializer = ObtenerXmlSerializer();

                file = ObtenerFileStreamForWrite(ruta);
                Serialize(serializer, file, config);
            }
            finally
            {
                if (file != null)
                {
                    file.Close();
                }
            }
        }
        private static void OnChanged(object source, FileSystemEventArgs e)
        {
            IMonitorArchivo monitor = MonitorArchivoFactory.ObtenerArchivo();

            switch (e.ChangeType)
            {
            case WatcherChangeTypes.Created:
                AppDomain dominio = CrearDominio(e.FullPath);
                CargarEnsamblado(dominio, e.FullPath);
                break;

            case WatcherChangeTypes.Deleted:
                DescargarEnsambladoPorRuta(e.FullPath);
                break;

            case WatcherChangeTypes.Changed:
                RecargarEnsamblado(e.FullPath);
                break;

            case WatcherChangeTypes.Renamed:

                break;
            }
        }
        /// <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);
            }
        }
Example #17
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;
        }