예제 #1
0
        public override async Task UpdateViewDetailsAsync(OracleObjectIdentifier objectIdentifier, ObjectDetailsModel dataModel, CancellationToken cancellationToken)
        {
            var viewCommentDataProvider      = new CommentDataProvider(dataModel, objectIdentifier, null);
            var columnConstraintDataProvider = new ConstraintDataProvider(dataModel, objectIdentifier, null);

            await UpdateModelAsync(true, cancellationToken, viewCommentDataProvider, columnConstraintDataProvider);
        }
예제 #2
0
		public override Task UpdateViewDetailsAsync(OracleObjectIdentifier schemaObject, ObjectDetailsModel dataModel, CancellationToken cancellationToken)
		{
			dataModel.Comment = "This is a view comment. ";

			var constraint =
				new ConstraintDetailsModel
				{
					DeleteRule = "Cascade",
					IsDeferrable = true,
					IsDeferred = true,
					IsEnabled = true,
					IsValidated = true,
					Reliability = "Enforced",
					LastChange = new DateTime(2015, 1, 20, 21, 31, 12),
					Name = "TEST_CONSTRAINT",
					Owner = "HUSQVIK",
					Type = "Reference integrity"
				};

			dataModel.ConstraintDetails.Add(constraint);

			return Task.FromResult<object>(null);
		}
예제 #3
0
		public void VisitDataObjectReference(OracleDataObjectReference objectReference)
		{
			if (TryBuildSchemaTooltip(objectReference))
			{
				return;
			}

			if (objectReference.Type == ReferenceType.SchemaObject)
			{
				var schemaObject = objectReference.SchemaObject.GetTargetSchemaObject();
				if (schemaObject == null)
				{
					return;
				}

				TableDetailsModel dataModel;

				var databaseModel = objectReference.Container.SemanticModel.DatabaseModel;
				var toolTipText = GetFullSchemaObjectToolTip(objectReference.SchemaObject);

				switch (schemaObject.Type)
				{
					case OracleObjectType.MaterializedView:
						var materializedView = (OracleMaterializedView)schemaObject;
						dataModel =
							new MaterializedViewDetailsModel
							{
								MaterializedViewTitle = toolTipText,
								Title = GetObjectTitle(OracleObjectIdentifier.Create(materializedView.Owner, materializedView.TableName), OracleObjectType.Table.ToLower()),
								MaterializedView = materializedView
							};

						SetPartitionKeys(dataModel);

						databaseModel.UpdateTableDetailsAsync(schemaObject.FullyQualifiedName, dataModel, CancellationToken.None);
						ToolTip =
							new ToolTipMaterializedView
							{
								ScriptExtractor = databaseModel.ObjectScriptExtractor,
								DataContext = dataModel
							};

						break;

					case OracleObjectType.Table:
						dataModel =
							new TableDetailsModel
							{
								Title = toolTipText,
								Table = (OracleTable)schemaObject
							};

						SetPartitionKeys(dataModel);

						databaseModel.UpdateTableDetailsAsync(schemaObject.FullyQualifiedName, dataModel, CancellationToken.None);

						ToolTip =
							new ToolTipTable
							{
								ScriptExtractor = databaseModel.ObjectScriptExtractor,
								DataContext = dataModel
							};

						break;

					case OracleObjectType.View:
						var objectDetailModel =
							new ObjectDetailsModel
							{
								Title = toolTipText,
								Object = schemaObject
							};

						DocumentationDataDictionaryObject documentation;
						if (TryGetDataDictionaryObjectDocumentation(schemaObject.FullyQualifiedName, out documentation) && !String.IsNullOrWhiteSpace(documentation.Value))
						{
							objectDetailModel.Comment = documentation.Value;
						}
						else
						{
							databaseModel.UpdateViewDetailsAsync(schemaObject.FullyQualifiedName, objectDetailModel, CancellationToken.None);
						}

						ToolTip =
							new ToolTipView
							{
								IsExtractDdlVisible = true,
								ScriptExtractor = databaseModel.ObjectScriptExtractor,
								DataContext = objectDetailModel
							};
						
						break;

					case OracleObjectType.Sequence:
						ToolTip = new ToolTipSequence(toolTipText, (OracleSequence)schemaObject);
						break;
				}
			}
			else
			{
				ToolTip =
					new ToolTipObject
					{
						DataContext = $"{objectReference.FullyQualifiedObjectName.ToLabel()} ({objectReference.Type.ToCategoryLabel()})"
					};
			}
		}
예제 #4
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
				};
		}
예제 #5
0
 public abstract Task UpdateViewDetailsAsync(OracleObjectIdentifier objectIdentifier, ObjectDetailsModel dataModel, CancellationToken cancellationToken);