コード例 #1
0
		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
				};
		}
コード例 #2
0
		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);
		}