/// <summary> /// </summary> /// <param name="model"></param> /// <param name="cls"></param> /// <param name="definition"></param> /// <returns></returns> public SqlScript Setup(PersistentModel model, IBSharpClass cls, XElement definition) { Model = model; MyClass = cls; Definition = definition; Name = definition.Attr("code"); Comment = definition.Attr("name"); External = definition.Attr("external"); Position = definition.Attr("position", "After").To <ScriptPosition>(); Mode = definition.Attr("mode", "Create").To <ScriptMode>(); DbDialect = definition.Attr("dialect", "Ansi").To <DbDialect>(); if (string.IsNullOrWhiteSpace(definition.Value) && string.IsNullOrWhiteSpace(External)) { External = Name; } if (!string.IsNullOrWhiteSpace(External) && !External.EndsWith(".sql")) { External += ".sql"; } XElement[] subscripts = definition.Elements("script").ToArray(); if (0 == subscripts.Length) { if (string.IsNullOrWhiteSpace(External)) { Text = definition.Value; } else { Text = model.ResolveExternalContent(definition, External); } } else { foreach (XElement subscriptdef in definition.Elements("script")) { var subscript = new SqlScript(); subscript.Parent = this; subscript.Setup(Model, cls, subscriptdef); SubScripts.Add(subscript); } } return(this); }
public virtual void LoadScripts(string scriptConfigName = "scriptConfig.xml") { var config = XElement.Load(scriptConfigName); var mainScriptSource = config.Descendants("MainScriptSource").Select(elem => { return(elem.Value); }).ElementAt(0); var scriptXMLParams = config.Descendants("Parameters").ToList(); MainScript = new Script(mainScriptSource, null); var subScriptSources = config.Descendants("SubScriptSource").ToList(); subScriptSources.ForEach(elem => { var scriptSource = elem.Descendants("SourceName").Select(source => { return(source.Value); }).ElementAt(0); var functionNamesNode = elem.Descendants("FunctionNames").ToList(); var functionDataPairs = functionNamesNode.Select(node => { return(new Tuple <string, bool>(node.Value, bool.Parse(node.Attribute("NeedCompile").Value))); }); var newSubScript = new Script(elem.Value, functionDataPairs); SubScripts.Add(newSubScript); }); scriptXMLParams.ForEach(elem => { var currentParameter = new Parameter(); currentParameter.IsSerialized = bool.Parse(elem.Attribute("Serialized").Value); currentParameter.Name = elem.Name.LocalName; currentParameter.Value = elem.Value; ScriptParameters.Add(currentParameter); }); InjectFunctions(SubScripts); InjectParameters(ScriptParameters); }