private void parseProcedureStmt(TStoredProcedureSqlStatement procedureStmt) { if (procedureStmt.StoredProcedureName == null) { return; } ProcedureMetaData procedureMetaData = getProcedureMetaData(procedureStmt.StoredProcedureName); procedureMetaData = getProcedureMetaData(procedureMetaData, true); TObjectName procedureName = procedureStmt.StoredProcedureName; procedure procedure = new procedure(); procedure.name = procedureMetaData.DisplayName; procedure.owner = getOwnerString(procedureMetaData); procedure.coordinate = procedureName.startToken.lineNo + "," + procedureName.startToken.columnNo; procedure.highlightInfo = procedureName.startToken.offset + "," + (procedureName.endToken.offset - procedureName.startToken.offset + procedureName.endToken.astext.Length); List <procedure> procedureList = getProcedureList(procedures.Item1); procedureList.Add(procedure); procedures.Item1.procedures = procedureList.ToArray(); parseProcedureLineage(procedureStmt, procedureMetaData, procedure); }
private ProcedureMetaData getProcedureMetaData(ProcedureMetaData procedureMetaData, bool replace) { int index = procedures.Item2.IndexOf(procedureMetaData); if (index != -1) { if (replace) { procedures.Item2.RemoveAt(index); procedures.Item2.Add(procedureMetaData); return(procedureMetaData); } else { return(procedures.Item2[index]); } } else { if (replace) { procedures.Item2.Add(procedureMetaData); return(procedureMetaData); } else { return(null); } } }
public virtual ProcedureMetaData getProcedureMetaData(ProcedureMetaData parentProcedure, TObjectName procedureName) { ProcedureMetaData procedureMetaData = new ProcedureMetaData(vendor, strict); procedureMetaData.Name = procedureName.PartString == null ? procedureName.ObjectString : procedureName.PartString; if (procedureName.SchemaString != null) { procedureMetaData.SchemaName = procedureName.SchemaString; } else { procedureMetaData.SchemaName = parentProcedure.SchemaName; procedureMetaData.SchemaDisplayName = parentProcedure.SchemaDisplayName; } if (isNotEmpty(procedureName.DatabaseString)) { procedureMetaData.CatalogName = procedureName.DatabaseString; } else { procedureMetaData.CatalogName = parentProcedure.CatalogName; procedureMetaData.CatalogDisplayName = parentProcedure.CatalogDisplayName; } return(procedureMetaData); }
public override void preVisit(TMssqlExecute statement) { if (statement.ModuleName != null) { TObjectName procedureName = statement.ModuleName; ProcedureMetaData procedureMetaData = getProcedureMetaData(procedureName); setProcedureDlinage(procedureMetaData, procedureName); } }
public override void preVisit(TCallStatement statement) { if (statement.RoutineName != null) { TObjectName procedureName = statement.RoutineName; ProcedureMetaData procedureMetaData = getProcedureMetaData(procedureName); setProcedureDlinage(procedureMetaData, procedureName); } }
public override void preVisit(TFunctionCall node) { if (node.FunctionName != null) { TObjectName procedureName = node.FunctionName; ProcedureMetaData procedureMetaData = getProcedureMetaData(procedureName); setProcedureDlinage(procedureMetaData, procedureName); } }
private string getOwnerString(ProcedureMetaData procedureMetaData) { StringBuilder buffer = new StringBuilder(); if (!SQLUtil.isEmpty(procedureMetaData.CatalogDisplayName)) { buffer.Append(procedureMetaData.CatalogDisplayName).Append("."); } if (!SQLUtil.isEmpty(procedureMetaData.SchemaDisplayName)) { buffer.Append(procedureMetaData.SchemaDisplayName); } return(buffer.ToString().ToUpper()); }
public functionVisitor(ProcedureRelationScanner outerInstance, ProcedureMetaData parentProcedure, procedure procedure) { this.outerInstance = outerInstance; this.parentProcedure = parentProcedure; this.targetProcedure = new targetProcedure(); targetProcedure.coordinate = procedure.coordinate; targetProcedure.highlightInfo = procedure.highlightInfo; targetProcedure.name = procedure.name; targetProcedure.owner = procedure.owner; List <targetProcedure> targetProcedureList = getTargetProcedureList(outerInstance.procedures.Item1); targetProcedureList.Add(targetProcedure); outerInstance.procedures.Item1.targetProcedures = targetProcedureList.ToArray(); }
private ProcedureMetaData getProcedureMetaData(TObjectName procedureName) { ProcedureMetaData procedureMetaData = new ProcedureMetaData(vendor, strict); procedureMetaData.Name = procedureName.PartString == null ? procedureName.ObjectString : procedureName.PartString; procedureMetaData.SchemaName = procedureName.SchemaString; if (isNotEmpty(procedureName.DatabaseString)) { procedureMetaData.CatalogName = procedureName.DatabaseString; } else { procedureMetaData.CatalogName = database; } return(procedureMetaData); }
internal virtual void setProcedureDlinage(ProcedureMetaData procedureMetaData, TObjectName procedureName) { if (procedureMetaData == null) { return; } sourceProcedure sourceProcedure = new sourceProcedure(); sourceProcedure.name = procedureMetaData.DisplayName; sourceProcedure.owner = outerInstance.getOwnerString(procedureMetaData); sourceProcedure.coordinate = procedureName.startToken.lineNo + "," + procedureName.startToken.columnNo; sourceProcedure.highlightInfo = procedureName.startToken.offset + "," + (procedureName.endToken.offset - procedureName.startToken.offset + procedureName.endToken.astext.Length); List <sourceProcedure> sourceProcedureList = getSourceProcedureList(targetProcedure); sourceProcedureList.Add(sourceProcedure); targetProcedure.sourceProcedures = sourceProcedureList.ToArray(); }
internal virtual ProcedureMetaData getProcedureMetaData(TObjectName procedureName) { ProcedureMetaData procedureMetaData = outerInstance.getProcedureMetaData(parentProcedure, procedureName); procedureMetaData = outerInstance.getProcedureMetaData(procedureMetaData, false); if (procedureMetaData == null) { return(null); } if (string.ReferenceEquals(procedureMetaData.CatalogName, null)) { procedureMetaData.CatalogName = parentProcedure.CatalogName; procedureMetaData.CatalogDisplayName = parentProcedure.CatalogDisplayName; } if (string.ReferenceEquals(procedureMetaData.SchemaName, null)) { procedureMetaData.SchemaName = parentProcedure.SchemaName; procedureMetaData.SchemaDisplayName = parentProcedure.SchemaDisplayName; } return(procedureMetaData); }
private void appendProcedures(Dlineage dlineage, Element dlineageRelation) { if (dlineage.Procedures != null && dlineage.Procedures.Item2.Count > 0) { for (int i = 0; i < dlineage.Procedures.Item2.Count; i++) { ProcedureMetaData procedure = dlineage.Procedures.Item2[i]; Element procedureNode = new Element("procedure"); procedureNode.Add(new XAttribute("name", procedure.DisplayFullName)); if (procedure.Function) { procedureNode.Add(new XAttribute("isFunction", procedure.DisplayFullName)); } if (procedure.Trigger) { procedureNode.Add(new XAttribute("isTrigger", procedure.DisplayFullName)); } dlineageRelation.Add(procedureNode); } } }
private void parseProcedureLineage(TStoredProcedureSqlStatement procedureStmt, ProcedureMetaData procedureMetaData, procedure sourceProcedure) { functionVisitor fv = new functionVisitor(this, procedureMetaData, sourceProcedure); procedureStmt.acceptChildren(fv); }