Example #1
0
        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();
            }