private List <DbObjectTableSource> GetPosibleTables(string tableAlias) { List <DbObjectTableSource> ret = new List <DbObjectTableSource>(); if (string.IsNullOrEmpty(tableAlias)) { //it could be any of available tables in context foreach (IList <DbObjectTableSource> list in mTablesContext) { if (list == null) { continue; } foreach (DbObjectTableSource ts in list) { ret.Add(ts); } } } else { //find the nearest same table alias foreach (IList <DbObjectTableSource> list in mTablesContext) { if (list == null) { continue; } foreach (DbObjectTableSource ts in list) { bool found = (ts.Alias != null && ts.Alias.Name.ToLower() == tableAlias.ToLower()); if (found == false) { string fullName = IdentifierRequest.GetSimpleFullName(ts.DbObject); if (tableAlias.ToLower() == fullName.ToLower()) { found = true; } else { if (ts.DbObject.Identifiers.Count > 1 && ts.DbObject.Identifiers[ts.DbObject.Identifiers.Count - 1].Name.ToLower() == tableAlias.ToLower()) { found = true; } } } if (found == true) { ret.Add(ts); return(ret); } } } } return(ret); }
private List <IdentifierRequest> CreateUniqueRequestsList(List <KeyValuePair <DbObject, List <DbObjectTableSource> > > list) { List <IdentifierRequest> uniqueRequests = new List <IdentifierRequest>(); foreach (KeyValuePair <DbObject, List <DbObjectTableSource> > record in list) { DbObject node = record.Key; if (node == null) { continue; } List <DbObjectTableSource> availTables = record.Value; IdentifierRequest dbRec = null; bool addNew = true; foreach (IdentifierRequest rq in uniqueRequests) { if (rq.HaveSameName(node)) { // column name already in list, check the tables if (rq.EqualsTables(availTables)) { rq.mObjects.Add(node); addNew = false; } } } if (addNew) { dbRec = new IdentifierRequest(); dbRec.mName = node.Identifiers.Last().Name; foreach (DbObjectTableSource tSource in availTables) { dbRec.mTables.Add(IdentifierRequest.GetSimpleFullName(tSource.DbObject)); } dbRec.mObjects.Add(node); uniqueRequests.Add(dbRec); } } return(uniqueRequests); }