/// <summary> /// Obtiene las conexiones de un contexto /// </summary> private NormalizedDictionary <DataBaseConnectionModel> GetConnections(JobProjectModel project, JobContextModel context) { NormalizedDictionary <DataBaseConnectionModel> connections = new NormalizedDictionary <DataBaseConnectionModel>(); // Obtiene las conexiones del árbol foreach (LibDataStructures.Trees.TreeNodeModel node in context.Tree.Nodes) { if (node.Id.EqualsIgnoreCase("Connection")) { DataBaseConnectionModel connection = GetConnection(project, node); connections.Add(connection.GlobalId, connection); } } // Devuelve la lista de conexiones return(connections); }
/// <summary> /// Obtiene la conexión asociada a un nodo /// </summary> private DataBaseConnectionModel GetConnection(JobProjectModel project, LibDataStructures.Trees.TreeNodeModel node) { DataBaseConnectionModel connection = new DataBaseConnectionModel(); // Asigna las propiedades básicas a la conexión connection.Type = node.Attributes["Type"].GetValueString(); connection.GlobalId = node.Attributes["Key"].GetValueString(); // Asigna el resto de propiedades foreach (LibDataStructures.Trees.TreeNodeModel child in node.Nodes) { if (!string.IsNullOrWhiteSpace(child.Id)) { string value = child.Value?.ToString(); if (child.Id.Equals("Name", StringComparison.CurrentCultureIgnoreCase)) { connection.Name = value; } else if (child.Id.Equals("Description", StringComparison.CurrentCultureIgnoreCase)) { connection.Description = value; } else // Parámetros correspondientes a la conexión { // Si el parámetro identifica un nombre de archivo, le añade el directorio if (child.Id.EqualsIgnoreCase("FileName") && !System.IO.File.Exists(value)) { value = project.GetFullFileName(value); } // Añade un parámetro a la conexión connection.Parameters.Add(child.Id, value); } } } // Devuelve la conexión return(connection); }