Example #1
0
        private void AddColumnAliasToQueryBlock(string columnName, string alias, OracleReference objectReference)
        {
            var parentObjectReferences = new HashSet <OracleDataObjectReference>();
            var columnReferences       = objectReference.Owner.AllColumnReferences
                                         .Where(c =>
                                                (c.ValidObjectReference == objectReference ||
                                                 (c.Owner != null && c.ValidObjectReference?.QueryBlocks.FirstOrDefault() == c.Owner) ||
                                                 (c.ValidObjectReference as OracleDataObjectReference)?.IncludeInnerReferences.Any(r => r == objectReference) == true) &&
                                                String.Equals(c.NormalizedName, columnName));

            foreach (var columnReference in columnReferences)
            {
                _executionContext.SegmentsToReplace.Add(
                    new TextSegment
                {
                    IndextStart = columnReference.ColumnNode.SourcePosition.IndexStart,
                    Length      = columnReference.ColumnNode.SourcePosition.Length,
                    Text        = alias
                });

                if (columnReference.SelectListColumn != null &&
                    columnReference.SelectListColumn.IsDirectReference && columnReference.SelectListColumn.AliasNode == columnReference.ColumnNode)
                {
                    parentObjectReferences.UnionWith(GetParentObjectReferences(objectReference.Owner));
                }
            }

            foreach (var parentReference in parentObjectReferences)
            {
                AddColumnAliasToQueryBlock(columnName, alias, parentReference);
            }
        }
Example #2
0
        private static bool IsBooleanLiteral(OracleReference columnReference)
        {
            if (columnReference.ObjectNode != null)
            {
                return(false);
            }

            return(String.Equals(columnReference.NormalizedName, "\"TRUE\"") || String.Equals(columnReference.NormalizedName, "\"FALSE\""));
        }
        private bool TryBuildSchemaTooltip(OracleReference reference)
        {
            if (reference.OwnerNode == _terminal)
            {
                BuildSchemaTooltip(reference.Container.SemanticModel.DatabaseModel);
            }

            return(ToolTip != null);
        }
Example #4
0
        private static ColumnDescriptionItem GetExpandedColumn(OracleReference objectReference, OracleColumn column, bool isPseudocolumn)
        {
            var nullable = objectReference?.SchemaObject.GetTargetSchemaObject() is OracleView
                                ? (bool?)null
                                : column.Nullable;

            return
                (new ColumnDescriptionItem
            {
                OwnerIdentifier = objectReference?.FullyQualifiedObjectName ?? OracleObjectIdentifier.Empty,
                ColumnName = OracleCodeCompletionProvider.GetPrettyColumnName(column.Name),
                DataType = column.FullTypeName,
                Nullable = nullable,
                IsPseudocolumn = isPseudocolumn,
                IsHidden = column.Hidden
            });
        }
Example #5
0
		private static ColumnDescriptionItem GetExpandedColumn(OracleReference objectReference, OracleColumn column, bool isPseudocolumn)
		{
			var nullable = objectReference?.SchemaObject.GetTargetSchemaObject() is OracleView
				? (bool?)null
				: column.Nullable;

			return
				new ColumnDescriptionItem
				{
					OwnerIdentifier = objectReference?.FullyQualifiedObjectName ?? OracleObjectIdentifier.Empty,
					ColumnName = OracleCodeCompletionProvider.GetPrettyColumnName(column.Name),
					DataType = column.FullTypeName,
					Nullable = nullable,
					IsPseudocolumn = isPseudocolumn,
					IsHidden = column.Hidden
				};
		}
Example #6
0
		private bool TryBuildSchemaTooltip(OracleReference reference)
		{
			if (reference.OwnerNode == _terminal)
			{
				BuildSchemaTooltip(reference.Container.SemanticModel.DatabaseModel);
			}

			return ToolTip != null;
		}
Example #7
0
        private static IEnumerable <TerminalUsage> GetModelClauseAndPivotTableReferences(OracleReference columnReference, bool onlyAliasOrigin)
        {
            var usages = new List <TerminalUsage>();

            if (columnReference.Owner == null)
            {
                return(usages);
            }

            var normalizedName = columnReference.NormalizedName;
            var modelClauseAndPivotTableColumnReferences = columnReference.Owner.AllColumnReferences
                                                           .Where(c => c.ColumnNodeObjectReferences.Count == 1 &&
                                                                  c != columnReference &&
                                                                  c.Placement.In(StatementPlacement.Model, StatementPlacement.PivotClause) &&
                                                                  String.Equals(c.SelectListColumn?.NormalizedName, normalizedName));

            foreach (var innerReference in modelClauseAndPivotTableColumnReferences)
            {
                var definition = new TerminalUsage {
                    Terminal = innerReference.SelectListColumn.AliasNode, Option = DisplayOptions.Definition
                };
                usages.Add(definition);

                if (!innerReference.SelectListColumn.IsDirectReference)
                {
                    continue;
                }

                if (innerReference.SelectListColumn.HasExplicitAlias)
                {
                    var usage = new TerminalUsage {
                        Terminal = innerReference.ColumnNode, Option = DisplayOptions.Usage
                    };
                    usages.Add(usage);
                }

                var objectReference = (OracleDataObjectReference)innerReference.ColumnNodeObjectReferences.First();
                foreach (var innerObjectReference in objectReference.IncludeInnerReferences)
                {
                    usages.AddRange(GetChildQueryBlockColumnReferences(innerObjectReference, innerReference, onlyAliasOrigin));
                }
            }

            if (columnReference.Owner.ModelReference != null)
            {
                foreach (var modelColumn in columnReference.Owner.ModelReference.ColumnDefinitions.Where(c => !c.IsDirectReference && c.AliasNode != null && String.Equals(c.NormalizedName, normalizedName)))
                {
                    var definition = new TerminalUsage {
                        Terminal = modelColumn.AliasNode, Option = DisplayOptions.Definition
                    };
                    usages.Add(definition);
                }
            }

            return(usages);
        }
Example #8
0
		private void AddColumnAliasToQueryBlock(string columnName, string alias, OracleReference objectReference)
		{
			var parentObjectReferences = new HashSet<OracleDataObjectReference>();
			var columnReferences = objectReference.Owner.AllColumnReferences
				.Where(c =>
					(c.ValidObjectReference == objectReference ||
					 (c.Owner != null && c.ValidObjectReference?.QueryBlocks.FirstOrDefault() == c.Owner) ||
					 (c.ValidObjectReference as OracleDataObjectReference)?.IncludeInnerReferences.Any(r => r == objectReference) == true) &&
					String.Equals(c.NormalizedName, columnName));

			foreach (var columnReference in columnReferences)
			{
				_executionContext.SegmentsToReplace.Add(
					new TextSegment
					{
						IndextStart = columnReference.ColumnNode.SourcePosition.IndexStart,
						Length = columnReference.ColumnNode.SourcePosition.Length,
						Text = alias
					});

				if (columnReference.SelectListColumn != null &&
					columnReference.SelectListColumn.IsDirectReference && columnReference.SelectListColumn.AliasNode == columnReference.ColumnNode)
				{
					parentObjectReferences.UnionWith(GetParentObjectReferences(objectReference.Owner));
				}
			}

			foreach (var parentReference in parentObjectReferences)
			{
				AddColumnAliasToQueryBlock(columnName, alias, parentReference);
			}
		}
Example #9
0
		private static IEnumerable<TerminalUsage> GetModelClauseAndPivotTableReferences(OracleReference columnReference, bool onlyAliasOrigin)
		{
			var usages = new List<TerminalUsage>();
			if (columnReference.Owner == null)
			{
				return usages;
			}

			var normalizedName = columnReference.NormalizedName;
			var modelClauseAndPivotTableColumnReferences = columnReference.Owner.AllColumnReferences
				.Where(c => c.ColumnNodeObjectReferences.Count == 1 &&
				            c != columnReference &&
				            c.Placement.In(StatementPlacement.Model, StatementPlacement.PivotClause) &&
				            String.Equals(c.SelectListColumn?.NormalizedName, normalizedName));

			foreach (var innerReference in modelClauseAndPivotTableColumnReferences)
			{
				var definition = new TerminalUsage { Terminal = innerReference.SelectListColumn.AliasNode, Option = DisplayOptions.Definition };
				usages.Add(definition);

				if (!innerReference.SelectListColumn.IsDirectReference)
				{
					continue;
				}

				if (innerReference.SelectListColumn.HasExplicitAlias)
				{
					var usage = new TerminalUsage { Terminal = innerReference.ColumnNode, Option = DisplayOptions.Usage };
					usages.Add(usage);
				}

				var objectReference = (OracleDataObjectReference)innerReference.ColumnNodeObjectReferences.First();
				foreach (var innerObjectReference in objectReference.IncludeInnerReferences)
				{
					usages.AddRange(GetChildQueryBlockColumnReferences(innerObjectReference, innerReference, onlyAliasOrigin));
				}
			}

			if (columnReference.Owner.ModelReference != null)
			{
				foreach (var modelColumn in columnReference.Owner.ModelReference.ColumnDefinitions.Where(c => !c.IsDirectReference && c.AliasNode != null && String.Equals(c.NormalizedName, normalizedName)))
				{
					var definition = new TerminalUsage { Terminal = modelColumn.AliasNode, Option = DisplayOptions.Definition };
					usages.Add(definition);
				}
			}

			return usages;
		}