private static NameWrapper AddNameToUniqueStrings(string name, Dictionary <string, string> dontShortenStrings, CaseInsensitiveDictionary <StringWrapper> uniqueStrings) { NameWrapper nameWrapper = new NameWrapper(); List <string> nameStrings = StringUtils.SplitAndReallyRemoveEmptyEntries(name, Utils.NAME_SEPARATOR, StringComparison.OrdinalIgnoreCase); foreach (string nameString in nameStrings) { bool canShorten = !dontShortenStrings.ContainsKey(nameString); StringWrapper stringWrapper; if (uniqueStrings.TryGetValue(nameString, out stringWrapper)) { DebugUtils.AssertDebuggerBreak(stringWrapper.CanShorten == canShorten); } else { stringWrapper = new StringWrapper(nameString, canShorten); uniqueStrings.Add(nameString, stringWrapper); } nameWrapper.AddString(stringWrapper); } return(nameWrapper); }
private static CaseInsensitiveDictionary <StringWrapper> GetUniqueStrings(IDictionary <string, Table> tables, List <KeyValuePair <string, string> > nameReplacements, out Dictionary <Table, NameWrapper> tableNames, out Dictionary <Column, NameWrapper> columnNames) { Dictionary <string, string> dontShortenStrings; if (nameReplacements == null) { dontShortenStrings = new Dictionary <string, string>(); } else { dontShortenStrings = new Dictionary <string, string>(nameReplacements.Count); foreach (KeyValuePair <string, string> pair in nameReplacements) { dontShortenStrings[pair.Value] = pair.Value; } } CaseInsensitiveDictionary <StringWrapper> uniqueStrings = new CaseInsensitiveDictionary <StringWrapper>(); tableNames = new Dictionary <Table, NameWrapper>(); columnNames = new Dictionary <Column, NameWrapper>(); foreach (Table table in tables.Values) { if (!string.IsNullOrEmpty(table.TableNamePrefix)) { List <string> nameStrings = StringUtils.SplitAndReallyRemoveEmptyEntries(table.TableNamePrefix, Utils.NAME_SEPARATOR, StringComparison.OrdinalIgnoreCase); foreach (string nameString in nameStrings) { dontShortenStrings[nameString] = nameString; } } } foreach (Table table in tables.Values) { NameWrapper nameWrapper = AddNameToUniqueStrings(table.TableName, dontShortenStrings, uniqueStrings); tableNames.Add(table, nameWrapper); foreach (Column column in table.AllColumns) { if (!column.IsPrimaryKey && !column.IsForeignKey) { nameWrapper = AddNameToUniqueStrings(column.ColumnName, dontShortenStrings, uniqueStrings); columnNames.Add(column, nameWrapper); } } } return(uniqueStrings); }