Пример #1
0
        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);
        }
Пример #2
0
        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);
        }