Esempio n. 1
0
        /// <summary>
        /// Recupera o gerador de chave com base no nome informado.
        /// </summary>
        /// <param name="name"></param>
        /// <returns>Instancia do gerador ou null caso não seja encontrado.</returns>
        public static IGeneratorKey GetGeneratorKey(string name)
        {
            IGeneratorKey item = null;

            if (_generatorsKey.TryGetValue(name, out item))
            {
                return(item);
            }
            return(null);
        }
Esempio n. 2
0
 /// <summary>
 /// Adiciona a instancia de um gerador de chave que será usada no sistema.
 /// </summary>
 /// <param name="name">Nome do gerador.</param>
 /// <param name="instance">Instancia do gerador.</param>
 public static void AddGeneratorKey(string name, IGeneratorKey instance)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentNullException("name");
     }
     else if (instance == null)
     {
         throw new ArgumentNullException("instance");
     }
     if (_generatorsKey.ContainsKey(name))
     {
         throw new GDAException(string.Format("Generator with name '{0}' has been added in the collection configuration", name));
     }
     _generatorsKey.Add(name, instance);
 }
Esempio n. 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);
         }
     }
 }