private IEnumerable <TextSegment> GetMissingFunctionQualifications() { var programReference = SingleReference.Value as OracleProgramReference; if (SingleReference.Value != null && programReference == null) { return(EmptySegments); } var sourceProgramReferences = programReference == null ? SourceReferenceContainers.SelectMany(c => c.ProgramReferences) : Enumerable.Repeat(programReference, 1); var formatOption = OracleConfiguration.Configuration.Formatter.FormatOptions.Identifier; return(sourceProgramReferences .Where(f => f.OwnerNode == null && f.Metadata != null && !f.Metadata.IsBuiltIn) .Select(f => new TextSegment { IndextStart = (f.ObjectNode ?? f.ProgramIdentifierNode).SourcePosition.IndexStart, Length = 0, Text = $"{OracleStatementFormatter.FormatTerminalValue(f.Metadata.Identifier.Owner.ToSimpleIdentifier(), formatOption)}." })); }
private IEnumerable <TextSegment> GetMissingObjectReferenceQualifications() { var objectReference = SingleReference.Value as OracleObjectWithColumnsReference; if (SingleReference.Value != null && objectReference == null) { var dataObjectReference = SingleReference.Value as OracleColumnReference; if (dataObjectReference?.ValidObjectReference == null) { return(EmptySegments); } } var sourceObjectReferences = objectReference == null ? SourceReferenceContainers.SelectMany(c => c.ObjectReferences) : Enumerable.Repeat(objectReference, 1); var formatOption = OracleConfiguration.Configuration.Formatter.FormatOptions.Identifier; return(sourceObjectReferences .Where(o => o.OwnerNode == null && o.Type == ReferenceType.SchemaObject && o.SchemaObject != null && !String.Equals(o.SchemaObject.FullyQualifiedName.Owner, OracleObjectIdentifier.SchemaPublic)) .Select(o => new TextSegment { IndextStart = o.ObjectNode.SourcePosition.IndexStart, Length = 0, Text = $"{OracleStatementFormatter.FormatTerminalValue(o.SchemaObject.Owner.ToSimpleIdentifier(), formatOption)}." })); }
private IEnumerable <TextSegment> GetMissingColumnReferenceObjectQualifications() { var columnReference = SingleReference.Value as OracleColumnReference; if (SingleReference.Value != null && columnReference?.ValidObjectReference == null) { yield break; } var sourceObjectReferences = columnReference == null ? SourceReferenceContainers.SelectMany(c => c.ColumnReferences) : Enumerable.Repeat(columnReference, 1); var columnReferences = sourceObjectReferences .Where(c => c.ValidObjectReference != null && (!c.ReferencesAllColumns || c.ObjectNode != null)); var formatOption = OracleConfiguration.Configuration.Formatter.FormatOptions.Identifier; var qualificationBuilder = new StringBuilder(); foreach (var column in columnReferences) { qualificationBuilder.Clear(); var validObjectReference = column.ValidObjectReference; var tableReference = validObjectReference as OracleDataObjectReference; if (column.OwnerNode == null && validObjectReference.Type == ReferenceType.SchemaObject && tableReference?.AliasNode == null && validObjectReference.SchemaObject != null && !String.Equals(validObjectReference.SchemaObject.FullyQualifiedName.Owner, OracleObjectIdentifier.SchemaPublic)) { qualificationBuilder.Append(OracleStatementFormatter.FormatTerminalValue(validObjectReference.SchemaObject.Owner.ToSimpleIdentifier(), formatOption)); qualificationBuilder.Append("."); } int indexStart; if (column.ObjectNode == null) { if (!String.IsNullOrEmpty(validObjectReference.FullyQualifiedObjectName.Name)) { qualificationBuilder.Append(validObjectReference.FullyQualifiedObjectName.Name); qualificationBuilder.Append("."); } indexStart = column.ColumnNode.SourcePosition.IndexStart; } else { indexStart = column.ObjectNode.SourcePosition.IndexStart; } if (qualificationBuilder.Length == 0) { continue; } yield return (new TextSegment { IndextStart = indexStart, Length = 0, Text = qualificationBuilder.ToString() }); } }