public static SqlCodeScope CreateRoot(IScopeNameResolverContext scopeNameResolverContext) { var result = new SqlCodeScope("DB", null, true, null, scopeNameResolverContext); result.Content = new SqlScope(); return(result); }
public SqlCodeScope CreateChildDeclarationScope(string name, IScopeNameResolverContext scopeNameResolverContext) { var result = new SqlCodeScope(name, this, true, null, scopeNameResolverContext ?? this.ScopeNameResolverContext); result.Content = new SqlScope(); return(result); }
/// <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); }
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); }
/// <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); }
public SqlCodeScope CreateNextScope(string name, IScopeNameResolverContext scopeNameResolverContext) { var result = new SqlCodeScope(name, this.Parent, false, this, scopeNameResolverContext ?? this.ScopeNameResolverContext); return(result); }
public SqlCodeScope CreateChildScope(string name, IScopeNameResolverContext scopeNameResolverContext) { var result = new SqlCodeScope(name, this, false, null, scopeNameResolverContext ?? this.ScopeNameResolverContext); return(result); }
/// <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); }