public void VisitProgramReference(OracleProgramReference programReference) { if (TryBuildSchemaTooltip(programReference)) { return; } var scriptExtractor = programReference.Container.SemanticModel.DatabaseModel.ObjectScriptExtractor; if (programReference.ObjectNode == _terminal) { var targetObject = programReference.SchemaObject.GetTargetSchemaObject(); if (targetObject != null) { var objectDetailModel = new ObjectDetailsModel { Title = GetFullSchemaObjectToolTip(programReference.SchemaObject), Comment = programReference.SchemaObject.Documentation, Object = targetObject }; ToolTip = new ToolTipView { ScriptExtractor = scriptExtractor, IsExtractDdlVisible = true, DataContext = objectDetailModel }; } return; } if (programReference.DatabaseLinkNode != null || programReference.Metadata == null) { return; } ToolTip = new ToolTipProgram(programReference.Metadata.Identifier.FullyQualifiedIdentifier, programReference.Metadata.Documentation, programReference.Metadata) { ScriptExtractor = scriptExtractor }; }
private static bool IsMetadataMatched(OracleProgramMetadata metadata, OracleProgramReference programReference, int currentParameterIndex) { var isParameterlessCompatible = currentParameterIndex == 0 && metadata.NamedParameters.Count == 0; if (!isParameterlessCompatible && metadata.Parameters.Count > 0 && metadata.Parameters[0].Direction == ParameterDirection.ReturnValue && currentParameterIndex >= metadata.NamedParameters.Count) { return false; } var isNotAnalyticCompatible = !metadata.IsAnalytic || !String.IsNullOrEmpty(metadata.Identifier.Owner); return (programReference.AnalyticClauseNode == null && isNotAnalyticCompatible) || (programReference.AnalyticClauseNode != null && metadata.IsAnalytic); }