private void appendProcedureRelations(Dlineage dlineage, Element dlineageRelation) { targetProcedure[] targetProcedures = dlineage.Procedures.Item1.targetProcedures; if (targetProcedures != null && targetProcedures.Length > 0) { for (int z = 0; z < targetProcedures.Length; z++) { targetProcedure target = targetProcedures[z]; if (target.sourceProcedures != null) { for (int j = 0; j < target.sourceProcedures.Length; j++) { sourceProcedure source = target.sourceProcedures[j]; Element relationNode = new Element("relation"); Element sourceNode = new Element("source"); sourceNode.Add(new XAttribute("coordinate", source.coordinate)); if (!string.ReferenceEquals(source.owner, null)) { sourceNode.Add(new XAttribute("owner", source.owner)); } sourceNode.Add(new XAttribute("procedure", source.name)); Element targetNode = new Element("target"); targetNode.Add(new XAttribute("coordinate", target.coordinate)); if (!string.ReferenceEquals(target.owner, null)) { targetNode.Add(new XAttribute("owner", target.owner)); } targetNode.Add(new XAttribute("procedure", target.name)); relationNode.Add(sourceNode); relationNode.Add(targetNode); bool append = true; IEnumerator <Element> iter = dlineageRelation.Elements().GetEnumerator(); while (iter.MoveNext()) { if (iter.Current.Equals(relationNode)) { append = false; break; } } if (append) { dlineageRelation.Add(relationNode); } } } } } }
internal virtual List <sourceProcedure> getSourceProcedureList(targetProcedure targetProcedure) { if (targetProcedure.sourceProcedures == null) { targetProcedure.sourceProcedures = new sourceProcedure[0]; } return(new List <sourceProcedure>(targetProcedure.sourceProcedures)); }
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(); }