/// <summary> /// Recupera a consulta SQL mapeada. /// </summary> /// <param name="queryName"></param> /// <returns></returns> public static SqlQueryMapping GetSqlQuery(string queryName) { SqlQueryMapping mapping = null; if (_queries.TryGetValue(queryName, out mapping)) { return(mapping); } return(null); }
/// <summary> /// Adiciona o mapeamento de uma consulta no sistema. /// </summary> /// <param name="query">Dados da consulta.</param> public static void AddSqlQuery(SqlQueryMapping query) { if (query == null) { throw new ArgumentNullException("query"); } if (_queries.ContainsKey(query.Name)) { _queries.Remove(query.Name); } _queries.Add(query.Name, query); }
/// <summary> /// Importa os dados do mapeamento contido na stream. /// </summary> /// <param name="inputStream"></param> public static void Import(System.IO.Stream inputStream) { if (inputStream == null) { throw new ArgumentNullException("inputStream"); } try { var reader = XmlReader.Create(inputStream, new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true, }); var doc = new System.Xml.XmlDocument(); doc.Load(reader); var root = doc.DocumentElement; if (!(root.LocalName == "gda-mapping" && root.NamespaceURI == "urn:gda-mapping-1.0")) { return; } var mappingNamespace = ElementMapping.GetAttributeString(root, "namespace"); var mappingAssembly = ElementMapping.GetAttributeString(root, "assembly"); var defaultProviderName = ElementMapping.GetAttributeString(root, "defaultProviderName"); var defaultProviderConfigurationName = ElementMapping.GetAttributeString(root, "defaultProviderConfigurationName"); var defaultConnectionString = ElementMapping.GetAttributeString(root, "defaultConnectionString"); var defaultSchema = ElementMapping.GetAttributeString(root, "defaultSchema"); foreach (XmlElement referencesElement in root.GetElementsByTagName("references")) { foreach (XmlElement i in referencesElement.GetElementsByTagName("reference")) { var refMapping = new ReferenceMapping(i); bool exists = false; lock (objLock) exists = _references.Exists(f => f.Equals(refMapping)); if (!exists) { lock (objLock) _references.Add(refMapping); if (!string.IsNullOrEmpty(refMapping.FileName)) { Import(refMapping.FileName); } else { Import(refMapping.AssemblyName, refMapping.ResourceName); } } } break; } lock (objLock) { foreach (XmlElement i in root.GetElementsByTagName("class")) { var classMap = new ClassMapping(i, mappingNamespace, mappingAssembly, defaultProviderName, defaultProviderConfigurationName, defaultConnectionString, defaultSchema); if (!_classes.ContainsKey(classMap.TypeInfo.Fullname)) { _classes.Add(classMap.TypeInfo.Fullname, classMap); } } foreach (XmlElement i in root.GetElementsByTagName("sql-query")) { var queryMap = new SqlQueryMapping(i); if (!_queries.ContainsKey(queryMap.Name)) { _queries.Add(queryMap.Name, queryMap); } } var modelsNamespace = ElementMapping.FirstOrDefault <XmlElement>(root.GetElementsByTagName("modelsNamespace")); if (modelsNamespace != null) { foreach (XmlElement i in modelsNamespace.GetElementsByTagName("namespace")) { var ns = new ModelsNamespaceMapping(i); GDASettings.AddModelsNamespace(ns.Assembly, ns.Namespace); } } XmlElement generateKeyHandlerElement = ElementMapping.FirstOrDefault <XmlElement>(root.GetElementsByTagName("generateKeyHandler")); if (generateKeyHandlerElement != null) { GDASettings.DefineGenerateKeyHandler(ElementMapping.GetAttributeString(generateKeyHandlerElement, "classType", true), ElementMapping.GetAttributeString(generateKeyHandlerElement, "methodName", true)); } var generatorsElement = ElementMapping.FirstOrDefault <XmlElement>(root.GetElementsByTagName("generatorsKey")); if (generatorsElement != null) { foreach (XmlElement i in generatorsElement.GetElementsByTagName("generator")) { var gk = new GeneratorKeyMapping(i); IGeneratorKey instance = null; try { instance = Activator.CreateInstance(gk.ClassType) as IGeneratorKey; } catch (Exception ex) { if (ex is System.Reflection.TargetInvocationException) { ex = ex.InnerException; } throw new GDAMappingException("Fail on create instance for \"{0}\".", gk.ClassType.FullName); } if (instance == null) { throw new GDAMappingException("\"{0}\" not inherits of {1}.", gk.ClassType.FullName, typeof(IGeneratorKey).FullName); } GDASettings.AddGeneratorKey(gk.Name, instance); } } } } catch (Exception ex) { if (ex is GDAMappingException) { throw ex; } else { throw new GDAMappingException("Fail on load mapping", ex); } } }