예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
 /// <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);
         }
     }
 }