/// <summary> /// Elimina un proveedor /// </summary> /// <param name="configProvider"></param> public void Remove(ConfigProviderElement configProvider) { if (BaseIndexOf(configProvider) >= 0) { BaseRemove(configProvider.Name); } }
/// <summary> /// Agrega un nuevo proveedor si este no existe /// </summary> /// <param name="newProvider"></param> public void AddNewProvider(ConfigProviderElement newProvider) { if (this.GetProvider(newProvider.Name) == null) { this.Providers.Add(newProvider); } }
/// <summary> /// Busca la configuracion <see cref="ConfigurationFile"/> atravez de una llamada a un servicio fwk /// Este codigo se ejecuta del lado del clientes es decir en el Wrapper /// Del lado del servidor (dispatcher) debe existir una configuracion Xml o Database con el mismo nombre de provider que /// realiza la llmada del cliente de tipo Service. /// Utiliza provider.SourceInfo para localizar un wrapper valido en el ciente que es e q se utilizara para conectarce al Dispatcher /// </summary> /// <param name="provider">Proveedor de configuración.</param> /// <Author>Marcelo Oviedo</Author> static ConfigurationFile SetConfigurationFile(ConfigProviderElement provider) { GetFwkConfigurationReq req = new GetFwkConfigurationReq(); req.BusinessData.ConfigProviderName = provider.Name; GetFwkConfigurationRes res = req.ExecuteService<GetFwkConfigurationReq, GetFwkConfigurationRes>(provider.SourceInfo,req); if (res.Error != null) throw Fwk.Exceptions.ExceptionHelper.ProcessException(res.Error); return res.BusinessData; }
/// <summary> /// /// </summary> /// <param name="provider"></param> internal static void RemoveConfigManager(ConfigProviderElement provider) { ConfigurationFile wConfigurationFile = _Repository.GetConfigurationFile(provider.BaseConfigFile); _Repository.RemoveConfigurationFile(wConfigurationFile); }
/// <summary> /// Permite establecer el proveedor de configuración por defecto sin importar al proveedor por defecto configurado en el app config /// </summary> /// <param name="providerName"></param> public static void ChangeDefaultProvider(string providerName) { _DefaultProvider = _ConfigProvider.GetProvider(providerName); }
/// <summary> /// /// </summary> /// <param name="sourceConfigurationFile"></param> /// <param name="provider"></param> public static void Import(ConfigurationFile sourceConfigurationFile, ConfigProviderElement provider) { if (provider == null) return; switch (provider.ConfigProviderType) { case ConfigProviderType.local: { throw new NotImplementedException("Funcionalidad de exportacion no impolementada"); } case ConfigProviderType.sqldatabase: { DatabaseConfigManager.Import(provider, sourceConfigurationFile); break; } case ConfigProviderType.servicewrapper: { throw new NotImplementedException("Funcionalidad de exportacion no impolementada"); } } }
/// <summary> /// Realiza cambios a una propiedad.- /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="groupName">Nombre del grupo donde se encuentra la propiedad</param> /// <param name="property">Propiedad actualizada. Este objeto puede contener todos sus valores modifcados</param> /// <param name="propertyName">Nombre de la propiedad que se mofdifico.- Este valor es el original sin modificacion</param> internal static void ChangeProperty(ConfigProviderElement provider, string groupName, Key property, string propertyName) { try { using (FwkDatacontext dc = new FwkDatacontext(GetCnnString(provider))) { var prop = dc.fwk_ConfigManagers.Where(config => config.ConfigurationFileName.ToLower().Equals(provider.BaseConfigFile.ToLower()) && config.group.ToLower().Equals(groupName.ToLower()) && config.key.ToLower().Equals(propertyName.ToLower()) ).FirstOrDefault<fwk_ConfigManager>(); prop.value = property.Value.Text; prop.encrypted = property.Encrypted; prop.key = property.Name; dc.SubmitChanges(); } } catch (Exception ex) { TechnicalException te = new TechnicalException("Problemas con Fwk.Configuration al realizar operaciones con la base de datos \r\n", ex); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } }
/// <summary> /// Elimina un grupo de la configuracion /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="groupName">Nombre del grupo a eliminar</param> internal static void RemoveGroup(ConfigProviderElement provider, string groupName) { ConfigurationFile wConfigurationFile = GetConfig(provider); Group g = wConfigurationFile.Groups.GetFirstByName(groupName); wConfigurationFile.Groups.Remove(g); System.Text.StringBuilder sqlCommand = new StringBuilder("Delete from [fwk_ConfigManager] where "); sqlCommand.AppendLine(string.Concat("ConfigurationFileName = '", provider.BaseConfigFile, "'")); sqlCommand.AppendLine(string.Concat("and [group] = '", groupName, "'")); //if (!String.IsNullOrEmpty(provider.ApplicationId)) // sqlCommand.AppendLine(string.Concat("and AppId = '", provider.ApplicationId, "'")); EexeSqlCommand(sqlCommand.ToString(), provider.SourceInfo); }
public void Populate(ConfigProviderElement pProvider) { Provider = pProvider; if (pProvider == null) return; SetProvider(); }
/// <summary> /// /// </summary> /// <param name="sourceConfigurationFile"></param> /// <param name="provider"></param> public static void Import(ConfigurationFile sourceConfigurationFile,ConfigProviderElement provider) { ConfigurationManager.Import(sourceConfigurationFile, provider); }
void AddNewProvider(ConfigProviderElement newProvider) { try { ConfigProviderSection config = (ConfigProviderSection)configuration.Sections["FwkConfigProvider"]; config.Providers.Add(newProvider); configuration.Save(ConfigurationSaveMode.Minimal, true); Fwk.Configuration.ConfigurationManager.ConfigProvider.Providers.Add(newProvider); } catch (Exception ex) { this.ExceptionViewer.Show(ex); } }
/// <summary> /// Agrega un nuevo proveedor a la coleccion Providers .- /// </summary> /// <param name="configProvider"></param> public void Add(ConfigProviderElement configProvider) { base.BaseAdd(configProvider, true); }
/// <summary> /// Retorna el índice del proveedor de configuracion. /// </summary> /// <param name="configProvider">configProvider que se desea conocer su </param> /// <returns>índice</returns> public int IndexOf(ConfigProviderElement configProvider) { return(BaseIndexOf(configProvider)); }
/// <summary> /// Vuelve a cargar el archivo de configuracion desde el origen de datos /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <returns></returns> internal static ConfigurationFile RefreshConfigurationFile(ConfigProviderElement provider) { ConfigurationFile wConfigurationFile = _Repository.GetConfigurationFile(provider.Name); if (wConfigurationFile != null) { _Repository.RemoveConfigurationFile(wConfigurationFile); wConfigurationFile = null; } wConfigurationFile = SetConfigurationFile(provider); _Repository.AddConfigurationFile(wConfigurationFile); return wConfigurationFile; }
/// <summary> /// Obtiene un String con el contenido del archivo xml de configuracion. /// Si este metodo es accedido desde el servicio web extrae la informacion de estado del archivo: /// Encrypt /// TTL /// ForceUpdate /// CurrentVersion /// BaseConfigFile /// Cacheable /// </summary> /// <param name="provider">Proveedor de configuración.</param> /// <Author>Marcelo Oviedo</Author> static ConfigurationFile SetConfigurationFile(ConfigProviderElement provider) { ConfigurationFile wConfigurationFile = new ConfigurationFile(); string wFullFileName; if (System.IO.File.Exists(provider.BaseConfigFile)) { wFullFileName = provider.BaseConfigFile; } else { //Application.StartupPath wFullFileName = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), provider.BaseConfigFile); } if (!System.IO.File.Exists(wFullFileName)) { TechnicalException te = new TechnicalException(string.Concat("El archivo de artchivo de configuración ", provider.BaseConfigFile, " no existe. ", Environment.NewLine, "Revisar en el archivo .config de la aplicacion la configuración del proveedor [", provider.Name, "]")); te.ErrorId = "8011"; Fwk.Exceptions.ExceptionHelper.SetTechnicalException(te, typeof(LocalFileConfigurationManager)); throw te; } wConfigurationFile = ConfigurationFile.GetFromXml<ConfigurationFile>(Fwk.HelperFunctions.FileFunctions.OpenTextFile(wFullFileName)); wConfigurationFile.FileName = wFullFileName; if (wConfigurationFile != null) { wConfigurationFile.TTL = wConfigurationFile.TTL; wConfigurationFile.Encrypted = wConfigurationFile.Encrypted; wConfigurationFile.ForceUpdate = wConfigurationFile.ForceUpdate; wConfigurationFile.CurrentVersion = wConfigurationFile.CurrentVersion; wConfigurationFile.ProviderName = provider.Name; } return wConfigurationFile; }
/// <summary> /// Elimina un grupo de la configuracion /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="groupName">Nombre del grupo a eliminar</param> internal static void RemoveGroup(ConfigProviderElement provider, string groupName) { ConfigurationFile wConfigurationFile = GetConfig(provider); Group g = wConfigurationFile.Groups.GetFirstByName(groupName); wConfigurationFile.Groups.Remove(g); try { FileFunctions.SaveTextFile(wConfigurationFile.FileName, wConfigurationFile.GetXml(), false); } catch (System.UnauthorizedAccessException) { TechnicalException te = new TechnicalException(string.Concat("No tiene permiso para actualizar el archivo ", provider.BaseConfigFile)); te.ErrorId = "8008"; Fwk.Exceptions.ExceptionHelper.SetTechnicalException(te, typeof(LocalFileConfigurationManager)); throw te; } }
/// <summary> /// /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="group">Grupo</param> internal static void AddGroup(ConfigProviderElement provider, Group group) { ConfigurationFile wConfigurationFile = GetConfig(provider); wConfigurationFile.Groups.Add(group); fwk_ConfigManager confg; try { using (FwkDatacontext dc = new FwkDatacontext(GetCnnString(provider))) { foreach (Key k in group.Keys) { confg = new fwk_ConfigManager(); confg.ConfigurationFileName = provider.BaseConfigFile; confg.key = k.Name; confg.encrypted = k.Encrypted; confg.value = k.Value.Text; confg.group = group.Name; dc.fwk_ConfigManagers.InsertOnSubmit(confg); } dc.SubmitChanges(); } } catch (Exception ex) { TechnicalException te = new TechnicalException("Problemas con Fwk.Configuration al realizar operaciones con la base de datos \r\n", ex); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } }
/// <summary> /// Realiza cambios a una propiedad.- /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="groupName">Nombre del grupo donde se encuentra la propiedad</param> /// <param name="property">Propiedad actualizada. Este objeto puede contener todos sus valores modifcados</param> /// <param name="propertyName">Nombre de la propiedad que se mofdifico.- Este valor es el original sin modificacion</param> internal static void ChangeProperty(ConfigProviderElement provider, string groupName, Key property, string propertyName) { ConfigurationFile wConfigurationFile = GetConfig(provider); Group wGroup = wConfigurationFile.Groups.GetFirstByName(groupName); Key k = wGroup.Keys.GetFirstByName(propertyName); k.Name = property.Name; k.Encrypted = property.Encrypted; k.Value.Text = property.Value.Text; try { FileFunctions.SaveTextFile(wConfigurationFile.FileName, wConfigurationFile.GetXml(), false); } catch (System.UnauthorizedAccessException) { TechnicalException te = new TechnicalException(string.Concat("No tiene permiso para actualizar el archivo ", provider.BaseConfigFile)); te.ErrorId = "8008"; Fwk.Exceptions.ExceptionHelper.SetTechnicalException(te, typeof(LocalFileConfigurationManager)); throw te; } }
/// <summary> /// Cambia el nombre de un grupo.- /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="groupName">Nombre del grupo</param> /// <param name="newGroupName">Nuevo nombre del grupo</param> internal static void ChangeGroupName(ConfigProviderElement provider, string groupName, string newGroupName) { //ConfigurationFile wConfigurationFile = GetConfig(provider); try { using (FwkDatacontext dc = new FwkDatacontext(GetCnnString(provider))) { var configs = dc.fwk_ConfigManagers.Where(p => p.group.Equals(groupName) && p.ConfigurationFileName.Equals(provider.BaseConfigFile)); foreach (fwk_ConfigManager confg in configs) { confg.group = newGroupName; } dc.SubmitChanges(); } } catch (Exception ex) { TechnicalException te = new TechnicalException("Problemas con Fwk.Configuration al realizar operaciones con la base de datos \r\n", ex); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } }
/// <summary> /// Constructor de ConfigProviderSection. /// </summary> public ConfigProviderSection() { _ConfigProviderElement = new ConfigProviderElement(); }
internal static void Import(ConfigProviderElement provider, ConfigurationFile sourceConfigurationFile) { foreach (Group wGrp in sourceConfigurationFile.Groups) { foreach (Fwk.Configuration.Common.Key wKey in wGrp.Keys) { if (ExistProperty(wGrp.Name, wKey.Name, provider)) { ChangeProperty(provider,wGrp.Name,wKey,wKey.Name); } else { AddProperty(provider, wKey, wGrp.Name); } } } }
/// <summary> /// Constructor estatico del bloque de configuracion del framework /// </summary> static ConfigurationManager() { TechnicalException te; try { _ConfigProvider = System.Configuration.ConfigurationManager.GetSection("FwkConfigProvider") as ConfigProviderSection; if (_ConfigProvider == null) { te = new TechnicalException("No se puede cargar el proveedor de configuracion del framework fwk, verifique si existe la seccion [FwkConfigProvider] en el archivo de configuracion."); te.ErrorId = "8000"; te.Namespace = "Fwk.Configuration"; te.Class = "Fwk.Configuration.ConfigurationManager [static constructor --> ConfigurationManager()]"; te.UserName = Environment.UserName; te.Machine = Environment.MachineName; if (string.IsNullOrEmpty(ConfigurationsHelper.HostApplicationName)) te.Source = "Sistema de Configuration del framework en "; else te.Source = ConfigurationsHelper.HostApplicationName; throw te; } } catch (System.Exception ex) { te = new TechnicalException("No se puede cargar el proveedor de configuracion del framework fwk, verifique si existe la seccion [FwkConfigProvider] en el archivo de configuracion. \r\n", ex); te.ErrorId = "8000"; te.Namespace = "Fwk.Configuration"; te.Class = "Fwk.Configuration.ConfigurationManager [static constructor --> ConfigurationManager()]"; te.UserName = Environment.UserName; te.Machine = Environment.MachineName; if (string.IsNullOrEmpty(ConfigurationsHelper.HostApplicationName)) te.Source = "Sistema de Configuration del framework en "; else te.Source = ConfigurationsHelper.HostApplicationName; throw te; } _DefaultProvider = _ConfigProvider.DefaultProvider; }
static string GetCnnString(ConfigProviderElement provider) { if (provider.SourceInfoIsConnectionString) { return provider.SourceInfo; } else { if (System.Configuration.ConfigurationManager.ConnectionStrings[provider.SourceInfo] == null) { TechnicalException te = new TechnicalException(string.Concat("Problemas con Fwk.Configuration, no se puede encontrar la cadena de conexión: ", provider.SourceInfo)); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } return System.Configuration.ConfigurationManager.ConnectionStrings[provider.SourceInfo].ConnectionString; } }
/// <summary> /// Devuelve el contenido completo de un archivo de configuración /// dado el nombre de archivo. /// </summary> /// <param name="provider">Proveedor de configuración.</param> /// <returns>ConfigurationFile</returns> /// <Author>Marcelo Oviedo</Author> internal static ConfigurationFile GetConfigurationFile(ConfigProviderElement provider) { return GetConfig(provider); }
/// <summary> /// Devuelve el contenido completo de un archivo de configuración /// dado el nombre de archivo. /// </summary> /// <param name="provider">provider</param> /// <returns><see cref="ConfigurationFile"/></returns> /// <Author>Marcelo Oviedo</Author> static ConfigurationFile GetConfig(ConfigProviderElement provider) { ConfigurationFile wConfigurationFile = GetFromDatabase(provider.BaseConfigFile, provider); return wConfigurationFile; }
/// <summary> /// Devuelve el contenido completo de un archivo de configuración /// dado el nombre de archivo. /// </summary> /// <param name="provider">Proveedor de configuración.</param> /// <returns>ConfigurationFile</returns> /// <Author>Marcelo Oviedo</Author> static ConfigurationFile GetConfig(ConfigProviderElement provider) { ConfigurationFile wConfigurationFile = _Repository.GetConfigurationFile(provider.Name); if (wConfigurationFile == null) { wConfigurationFile = SetConfigurationFile(provider); _Repository.AddConfigurationFile(wConfigurationFile); } return wConfigurationFile; }
/// <summary> /// Busca en la base de datos el archivo de configuracion /// </summary> /// <param name="pFileName">Nombre de archivo.</param> /// <param name="provider">provider</param> /// <Author>Marcelo Oviedo</Author> static ConfigurationFile GetFromDatabase(string pFileName, ConfigProviderElement provider) { ConfigurationFile wConfigurationFile = new ConfigurationFile(); wConfigurationFile.Groups = new Groups(); string groupAuxiliar = string.Empty; Group g = null; Key k = null; wConfigurationFile.FileName = pFileName; try { using (FwkDatacontext dc = new FwkDatacontext(GetCnnString(provider))) { IEnumerable<fwk_ConfigManager> fwk_ConfigManagerList = from s in dc.fwk_ConfigManagers where s.ConfigurationFileName.Equals(pFileName) select s; foreach (fwk_ConfigManager fwk_Config in fwk_ConfigManagerList.OrderBy(p => p.group)) { if (!groupAuxiliar.Equals(fwk_Config.group)) { groupAuxiliar = Convert.ToString(fwk_Config.group); g = new Group(); g.Name = groupAuxiliar; wConfigurationFile.Groups.Add(g); } k = new Key(); k.Encrypted = fwk_Config.encrypted; k.Name = fwk_Config.key; k.Value.Text = fwk_Config.value; g.Keys.Add(k); } } } catch (Exception ex) { TechnicalException te = new TechnicalException("Problemas con Fwk.Configuration al realizar operaciones con la base de datos \r\n", ex); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } return wConfigurationFile; }
/// <summary> /// Realiza cambios a una propiedad.- /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="groupName">Nombre del grupo donde se encuentra la propiedad</param> /// <param name="property">Propiedad actualizada. Este objeto puede contener todos sus valores modifcados</param> /// <param name="propertyName">Nombre de la propiedad que se mofdifico.- Este valor es el original sin modificacion</param> internal static void ChangeProperty(ConfigProviderElement provider, string groupName, Key property, string propertyName) { TechnicalException te = new TechnicalException(string.Concat("No esta nimplementada esta funcionalidad de ConfigurationMannager contra servicios ", provider.BaseConfigFile)); te.ErrorId = "8008"; Fwk.Exceptions.ExceptionHelper.SetTechnicalException(te, typeof(LocalFileConfigurationManager)); throw te; }
/// <summary> /// Busca en la base de datos el archivo de configuracion /// </summary> /// <param name="groupName"></param> /// <param name="keyName"></param> /// <param name="destinationProvider">Provedor destino</param> /// <Author>Marcelo Oviedo</Author> static bool ExistProperty(string groupName,string keyName, ConfigProviderElement destinationProvider) { try { using (FwkDatacontext dc = new FwkDatacontext(GetCnnString(destinationProvider))) { var properties = dc.fwk_ConfigManagers.Where(config => config.ConfigurationFileName.ToLower().Equals(destinationProvider.BaseConfigFile.ToLower()) && config.group.ToLower().Equals(groupName.ToLower()) && config.key.ToLower().Equals(keyName.ToLower()) ); return properties.Any(); } } catch (Exception ex) { TechnicalException te = new TechnicalException("Problemas con Fwk.Configuration al realizar operaciones con la base de datos \r\n", ex); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } }
/// <summary> /// Retorna el índice del proveedor de configuracion. /// </summary> /// <param name="configProvider">configProvider que se desea conocer su </param> /// <returns>índice</returns> public int IndexOf(ConfigProviderElement configProvider) { return BaseIndexOf(configProvider); }
/// <summary> ///Si grupo no existe en un provider p/bd es por que seguramente se agrego el grupo por la aplicacion del fwk y ahun este grupo se encuentra vasio. ///y no es posible agregar grupos vasios ya que los grupos tienen que tener al menos una propiedad para ser agregados a la tabla /// </summary> /// <param name="provider">Proveedor de configuracion</param> /// <param name="key"></param> /// <param name="groupName">Nombre del gruop que contiene las propiedades</param> internal static void AddProperty(ConfigProviderElement provider, Key key, string groupName) { System.Text.StringBuilder sqlCommand = new StringBuilder(); ConfigurationFile wConfigurationFile = GetConfig(provider); Group wGroup = wConfigurationFile.Groups.GetFirstByName(groupName); //Si grupo no existe en un provider p/bd es por que seguramente se agrego el grupo por la aplicacion del fwk y ahun este grupo se encuentra vasio. //y no es posible agregar grupos vasios ya que los grupos tienen que tener al menos una propiedad para ser agregados a la tabla if (wGroup == null) { wGroup = new Group(); wGroup.Keys = new Keys(); wGroup.Name=groupName; AddGroup(provider, wGroup); } wGroup.Keys.Add(key); fwk_ConfigManager confg; try { using (FwkDatacontext dc = new FwkDatacontext(GetCnnString(provider))) { confg = new fwk_ConfigManager(); confg.ConfigurationFileName = provider.BaseConfigFile; confg.key = key.Name; confg.encrypted = key.Encrypted; confg.value = key.Value.Text; confg.group = groupName; dc.fwk_ConfigManagers.InsertOnSubmit(confg); dc.SubmitChanges(); } } catch (Exception ex) { TechnicalException te = new TechnicalException("Problemas con Fwk.Configuration al realizar operaciones con la base de datos \r\n", ex); ExceptionHelper.SetTechnicalException<DatabaseConfigManager>(te); te.ErrorId = "8200"; throw te; } }
/// <summary> /// Elimina un proveedor /// </summary> /// <param name="configProvider"></param> public void Remove(ConfigProviderElement configProvider) { if (BaseIndexOf(configProvider) >= 0) BaseRemove(configProvider.Name); }