Exemple #1
0
        public static SqlCodeScope CreateRoot(IScopeNameResolverContext scopeNameResolverContext)
        {
            var result = new SqlCodeScope("DB", null, true, null, scopeNameResolverContext);

            result.Content = new SqlScope();
            return(result);
        }
Exemple #2
0
        public SqlCodeScope CreateChildDeclarationScope(string name, IScopeNameResolverContext scopeNameResolverContext)
        {
            var result = new SqlCodeScope(name, this, true, null, scopeNameResolverContext ?? this.ScopeNameResolverContext);

            result.Content = new SqlScope();
            return(result);
        }
Exemple #3
0
 /// <summary>
 /// Resolve the name.
 /// </summary>
 /// <param name="name">the name to find the item thats called name</param>
 /// <param name="context">the resolver context.</param>
 /// <returns>the named object or null.</returns>
 public virtual object ResolveObject(SqlName name, IScopeNameResolverContext context)
 {
     for (int idx = 0; idx < this.Columns.Count; idx++)
     {
         var column = this.Columns[idx];
         if (column.Name.Equals(name))
         {
             return(column);
         }
     }
     return(null);
 }
Exemple #4
0
 private SqlCodeScope(
     string name,
     SqlCodeScope parent,
     bool isDeclaration,
     SqlCodeScope previous,
     IScopeNameResolverContext scopeNameResolverContext)
 {
     this.Name                     = name;
     this.Parent                   = parent;
     this.Previous                 = previous;
     this.IsDeclaration            = isDeclaration;
     this.ScopeNameResolverContext = scopeNameResolverContext;
 }
 /// <summary>
 /// Resolve the name.
 /// </summary>
 /// <param name="name">the name to find the item thats called name</param>
 /// <param name="context">the resolver context.</param>
 /// <returns>the named object or null.</returns>
 public object ResolveObject(SqlName name, IScopeNameResolverContext context)
 {
     for (var that = this; (that != null); that = that.Parent)
     {
         {
             var result = that.ChildElements.GetValueOrDefault(name);
             if ((object)result != null)
             {
                 return(result);
             }
         }
         if ((object)that._NameResolver != null)
         {
             var result = that._NameResolver.ResolveObject(name, context);
             if ((object)result != null)
             {
                 return(result);
             }
         }
     }
     return(null);
 }
Exemple #6
0
        /// <summary>
        /// Resolve the name.
        /// </summary>
        /// <param name="name">the name to find the item thats called name</param>
        /// <param name="context">the resolver context.</param>
        /// <returns>the named object or null.</returns>
        public object ResolveObject(SqlName name, IScopeNameResolverContext context)
        {
            if (this.Content != null)
            {
                var result = this.Content.ResolveObject(name, context ?? this.ScopeNameResolverContext);
                if ((object)result != null)
                {
                    return(result);
                }
            }
            if (this.Previous != null)
            {
                return(this.Parent.ResolveObject(name, context));
            }
            if (this.IsDeclaration)
            {
                // if (this.ModelDatabase != null) {
                // var modelType = this.ModelDatabase.ResolveObject(name, context ?? this.ScopeNameResolverContext);
                var modelType = this.ScopeNameResolverContext.Resolve(name);
                if ((object)modelType != null)
                {
                    return(modelType);
                }

                // if (modelType != null) {
                //     if (modelType is ModelSqlType modelSqlType) {
                //         return modelSqlType.SqlCodeType ?? (modelSqlType.SqlCodeType = new SqlCodeType(modelSqlType));
                //     }
                //     if (modelType is ModelSqlObjectWithColumns modelSqlObjectWithColumns) {
                //         return modelSqlObjectWithColumns.SqlCodeType ?? (modelSqlObjectWithColumns.SqlCodeType = new SqlCodeTypeObjectWithColumns(modelSqlObjectWithColumns));
                //     }
                // }
            }
            if (this.Parent != null)
            {
                return(this.Parent.ResolveObject(name, context));
            }
            return(null);
        }
Exemple #7
0
        public SqlCodeScope CreateNextScope(string name, IScopeNameResolverContext scopeNameResolverContext)
        {
            var result = new SqlCodeScope(name, this.Parent, false, this, scopeNameResolverContext ?? this.ScopeNameResolverContext);

            return(result);
        }
Exemple #8
0
        public SqlCodeScope CreateChildScope(string name, IScopeNameResolverContext scopeNameResolverContext)
        {
            var result = new SqlCodeScope(name, this, false, null, scopeNameResolverContext ?? this.ScopeNameResolverContext);

            return(result);
        }
Exemple #9
0
        /// <summary>
        /// Resolve the name.
        /// </summary>
        /// <param name="name">the name to find the item thats called name</param>
        /// <param name="context">the resolver context.</param>
        /// <returns>the named object or null.</returns>
        public object ResolveObject(SqlName name, IScopeNameResolverContext context)
        {
            ModelSqlDatabase database = null;

            {
                var nameA = name.GetAncestorAtLevel(ObjectLevel.Database);
                if ((object)nameA != null)
                {
                    if ((nameA.LevelCount == 1) && (nameA.ObjectLevel == ObjectLevel.Database))
                    {
                        database = this._Database.GetValueOrDefault(nameA);
                    }
                }
                else if ((nameA.LevelCount == 2) && (nameA.ObjectLevel == ObjectLevel.Database))
                {
                    if (SqlNameEqualityComparer.Level1.Equals(this.Name, nameA.Parent /* Server */))
                    {
                        database = this._Database.GetValueOrDefault(nameA);
                    }
                    else
                    {
                        return(null);
                    }
                }
                if (ReferenceEquals(nameA, name))
                {
                    return(database);
                }
                if ((object)database != null)
                {
                    return(database.ResolveObject(name, context));
                }
            }
#if false
            {
                if ((name.Level == 1) && (name.ObjectLevel == ObjectLevel.Database))
                {
                    return(this._Database.GetValueOrDefault(name));
                }
                if ((name.Level == 1) && (name.ObjectLevel == ObjectLevel.Unknown))
                {
                    var result = this._Database.GetValueOrDefault(name);
                    if ((object)result != null)
                    {
                        return(result);
                    }
                }
                if ((name.Level == 2) && (name.ObjectLevel == ObjectLevel.Database))
                {
                    if (SqlNameEqualityComparer.Level1.Equals(this.Name, name.Parent))
                    {
                        var result = this._Database.GetValueOrDefault(name);
                        if ((object)result != null)
                        {
                            return(result);
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
                if ((name.Level == 2) && (name.ObjectLevel == ObjectLevel.Unknown))
                {
                    if (SqlNameEqualityComparer.Level1.Equals(this.Name, name.Parent))
                    {
                        var result = this._Database.GetValueOrDefault(name);
                        if ((object)result != null)
                        {
                            return(result);
                        }
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
#warning TODO check if name has 3 parts - than use the 3rd and go ahead with 2
            {
                var schemaName = name.Parent;
                var dbName     = schemaName?.Parent;
                if (!ReferenceEquals(dbName, null) && ReferenceEquals(dbName?.Parent, SqlName.Root))
                {
                    var result = this._Database.GetValueOrDefault(dbName);
                    if ((object)result != null)
                    {
                        return(result);
                    }
                }

                var serverName = dbName?.Parent;
                if (!ReferenceEquals(serverName, null) && ReferenceEquals(serverName?.Parent, SqlName.Root))
                {
                    if (serverName.Name == this.Name.Name)
                    {
                        var result = this._Database.GetValueOrDefault(serverName);
                        if ((object)result != null)
                        {
                            return(result);
                        }
                    }
                }
            }
#endif
            return(null);
        }