public ViewDumpTransformer BuildLines( bool dbObjectsCreateOrReplace = false, bool ignorePrepend = false, Action <string> lineCallback = null) { Prepend.Clear(); Create.Clear(); Append.Clear(); if (lineCallback == null) { lineCallback = s => { }; } bool isPrepend = true; bool isCreate = false; bool isAppend = true; const string startSequence = "CREATE VIEW "; const string endSequence = ";"; string statement = ""; foreach (var l in lines) { var line = l; if (line.StartsWith("--") || line.StartsWith("SET ") || (!isCreate && line.StartsWith("SELECT "))) { continue; } var createStart = line.StartsWith(startSequence); var createEnd = line.EndsWith(endSequence); if (createStart) { if (dbObjectsCreateOrReplace) { line = line.Replace("CREATE", "CREATE OR REPLACE"); } isPrepend = false; isCreate = true; isAppend = false; } if (isCreate) { Create.Add(line); if (createEnd) { isPrepend = false; isCreate = false; isAppend = true; } if (!createStart) { lineCallback(line); } } else { statement = string.Concat(statement, statement == "" ? "" : Environment.NewLine, line); if (statement.EndsWith(";")) { if (isPrepend && !ignorePrepend) { Prepend.Add(statement); } else if (isAppend) { Append.Add(statement); } statement = ""; } } } return(this); }
public SequenceDumpTransformer BuildLines( bool ignorePrepend = false, Action <string> lineCallback = null) { Prepend.Clear(); Create.Clear(); Append.Clear(); if (lineCallback == null) { lineCallback = s => { }; } bool isPrepend = true; bool isCreate = false; bool isAppend = true; var startSequence = $"CREATE SEQUENCE "; string statement = ""; const string endSequence = ";"; foreach (var l in lines) { var line = l; if (!isCreate && (line.StartsWith("--") || line.StartsWith("SET ") || line.StartsWith("SELECT "))) { continue; } var createStart = line.StartsWith(startSequence); var createEnd = line.EndsWith(endSequence); if (createStart) { isPrepend = false; isCreate = true; isAppend = false; if (Create.Count > 0) { Create.Add(""); } } if (isCreate) { Create.Add(line); if (createEnd) { isPrepend = false; isCreate = false; isAppend = true; } if (!createStart && !createEnd && !isAppend) { lineCallback(line); } } else { statement = string.Concat(statement, statement == "" ? "" : Environment.NewLine, line); if (statement.EndsWith(";")) { if (isPrepend && !ignorePrepend) { Prepend.Add(statement); } else if (isAppend) { Append.Add(statement); } statement = ""; } } } return(this); }
public TypeDumpTransformer BuildLines( bool ignorePrepend = false, Action <string> lineCallback = null) { Prepend.Clear(); Create.Clear(); Append.Clear(); if (lineCallback == null) { lineCallback = s => { }; } bool isPrepend = true; bool isCreate = false; bool isAppend = true; var name1 = $"{Item.Schema}.{Item.Name}"; var startSequence1 = $"CREATE TYPE {name1} AS "; string statement = ""; const string endSequence = ";"; bool shouldContinue(string line) { return(!isCreate && string.IsNullOrEmpty(statement) && !line.Contains(string.Concat(name1, ";")) && !line.Contains(string.Concat(name1, " "))); } foreach (var l in lines) { var line = l; if (!isCreate && (line.StartsWith("--") || line.StartsWith("SET ") || line.StartsWith("SELECT "))) { continue; } if (shouldContinue(line)) { continue; } var createStart = line.StartsWith(startSequence1); var createEnd = line.EndsWith(endSequence); if (createStart) { isPrepend = false; isCreate = true; isAppend = false; if (Create.Count > 0) { Create.Add(""); } } if (isCreate) { Create.Add(line); if (createEnd) { isPrepend = false; isCreate = false; isAppend = true; } if (!createStart && !createEnd && !isAppend) { lineCallback(line); } } else { statement = string.Concat(statement, statement == "" ? "" : Environment.NewLine, line); if (statement.EndsWith(";")) { if (isPrepend && !ignorePrepend) { Prepend.Add(statement); } else if (isAppend) { Append.Add(statement); } statement = ""; } } } return(this); }
public RoutineDumpTransformer BuildLines( string paramsString = null, bool dbObjectsCreateOrReplace = false, bool ignorePrepend = false, Action <string> lineCallback = null) { Prepend.Clear(); Create.Clear(); Append.Clear(); if (lineCallback == null) { lineCallback = s => { }; } bool isPrepend = true; bool isCreate = false; bool isAppend = true; var name1 = $"{Item.Schema}.{Item.Name}{paramsString ?? "("}"; var name2 = $"{Item.Schema}.\"{Item.Name}\"{paramsString ?? "("}"; var name3 = $"\"{Item.Schema}\".\"{Item.Name}\"{paramsString ?? "("}"; var name4 = $"\"{Item.Schema}\".{Item.Name}{paramsString ?? "("}"; var startSequence1 = $"CREATE {Item.TypeName} {name1}"; var startSequence2 = $"CREATE {Item.TypeName} {name2}"; var startSequence3 = $"CREATE {Item.TypeName} {name3}"; var startSequence4 = $"CREATE {Item.TypeName} {name4}"; string statement = ""; string endSequence = null; foreach (var l in lines) { var line = l; if (!isCreate && (line.StartsWith("--") || line.StartsWith("SET ") || line.StartsWith("SELECT "))) { continue; } if (!isCreate && string.IsNullOrEmpty(statement) && !line.Contains(name1) && !line.Contains(name2) && !line.Contains(name3) && !line.Contains(name4)) { continue; } var createStart = line.StartsWith(startSequence1) || line.StartsWith(startSequence2) || line.StartsWith(startSequence3) || line.StartsWith(startSequence4); var createEnd = endSequence != null && line.Contains($"{endSequence};"); if (createStart) { if (dbObjectsCreateOrReplace) { line = line.Replace("CREATE", "CREATE OR REPLACE"); } isPrepend = false; isCreate = true; isAppend = false; if (Create.Count > 0) { Create.Add(""); } } if (isCreate) { if (endSequence == null) { endSequence = line.GetSequence(); } Create.Add(line); if (createEnd) { isPrepend = false; isCreate = false; isAppend = true; } if (!createStart && !createEnd && !isAppend) { lineCallback(line); } } else { statement = string.Concat(statement, statement == "" ? "" : Environment.NewLine, line); if (statement.EndsWith(";")) { if (isPrepend && !ignorePrepend) { Prepend.Add(statement); } else if (isAppend) { Append.Add(statement); } statement = ""; } } } return(this); }