Exemple #1
0
        private void ParseRequirements(ReqPro40.Package___v1 rpxPkg, ReqTreeNode tn)
        {
            ReqPro40.Requirement___v6 rpxReq;
            ReqPro40.Package___v1     rpxPkgChild;
            ReqTreeNode tnPkgChild;
            ReqTreeNode tnReqNew;
            int         nKey;
            int         i;

            object[,] o = (object[, ])rpxPkg.KeyList(ReqPro40.enumElementTypes.eElemType_Requirement);
            for (i = 0; i < o.GetLength(1); i++)
            {
                if (o[0, i] != null)
                {
                    nKey     = (int)o[0, i];
                    rpxReq   = GetRequirement(nKey);
                    tnReqNew = new ReqTreeNode
                                   (rpxReq.get_Tag(ReqPro40.enumTagFormat.eTagFormat_Tag) + ": " + rpxReq.Name,
                                   rpxReq.key, ReqTreeNode.eReqTreeNodeType.eTreeNodeReq);
                    tn.Add(ref tnReqNew);
                    ParseReqChildren(rpxReq, tnReqNew);
                }
            }

            for (i = 0; i < tn.Count; i++)
            {
                tnPkgChild = tn[i];
                if (tnPkgChild.IsPackage())
                {
                    rpxPkgChild = (ReqPro40.Package___v1)rpxProject.GetPackage(tnPkgChild.Key, ReqPro40.enumPackageWeights.ePackageWeight_Empty);
                    //tnPkgChild = (ReqTreeNode)dictPackage[rpxPkgChild.PackageKey];
                    ParseRequirements(rpxPkgChild, tnPkgChild);
                }
            }
        }
Exemple #2
0
        public void CreateTree(ReqTreeNode reqTreeNode)
        {
            int      i;
            TreeNode tn = new TreeNode(reqTreeNode.Text);

            Set(reqTreeNode, tn);

            Nodes.Add(tn);
            for (i = 0; i < reqTreeNode.Count; i++)
            {
                CreateTreeNode(ref tn, reqTreeNode[i]);
            }
        }
Exemple #3
0
        public void CreateTree(ReqTreeNode reqTreeNode)
        {
            int      i;
            TreeNode tn = new TreeNode(reqTreeNode.Text);

            tn.Tag = reqTreeNode.Key;

            treeView.Nodes.Add(tn);
            for (i = 0; i < reqTreeNode.Count; i++)
            {
                CreateTreeNode(ref tn, reqTreeNode[i]);
            }
        }
Exemple #4
0
        public ReqTreeNode ReadReqTree(out int nPackageCount, int nStartKey)
        {
            ReqPro40.Package___v1 rpxPkg;
            // root is just a dummy - will not be used at the end
            ReqTreeNode reqDummy = new ReqTreeNode("", 0, ReqTreeNode.eReqTreeNodeType.eTreeNodeRoot);

            nPackageCount = 0;
            rpxPkg        = (ReqPro40.Package___v1)rpxProject.GetPackage(nStartKey, ReqPro40.enumPackageWeights.ePackageWeight_Empty);
            rpxPkg.Refresh(ReqPro40.enumPackageWeights.ePackageWeight_Package, true);
            ReadReqTreeNode(rpxPkg, ref reqDummy, ref nPackageCount);
            ParseRequirements(rpxPkg, reqDummy[0]);
            return(reqDummy[0]);
        }
Exemple #5
0
        private TreeNode CreateTreeNode(ref TreeNode tnParent, ReqTreeNode reqTreeNode)
        {
            int      i;
            TreeNode tn;

            tn = new TreeNode(reqTreeNode.Text);
            Set(reqTreeNode, tn);
            tnParent.Nodes.Add(tn);

            for (i = 0; i < reqTreeNode.Count; i++)
            {
                CreateTreeNode(ref tn, reqTreeNode[i]);
            }
            return(tn);
        }
Exemple #6
0
        public void ReplaceActualTree(ReqTreeNode reqTreeNode)
        {
            Set(reqTreeNode, ActiveNode);
            ActiveNode.Text = reqTreeNode.Text;

            foreach (TreeNode tn in ActiveNode.Nodes)
            {
                tn.Remove();
            }
            ActiveNode.Nodes.Clear();
            for (int i = 0; i < reqTreeNode.Count; i++)
            {
                CreateTreeNode(ref ActiveNode, reqTreeNode[i]);
            }
        }
Exemple #7
0
        private void ReadReqTreeNode(ReqPro40.Package___v1 rpxPackage, ref ReqTreeNode reqParentTreeNode,
                                     ref int nPackageRead)
        {
            ReqPro40.Package___v1 rpxChildPackage;
            ReqTreeNode           reqMyTreeNode;

            reqMyTreeNode = new ReqTreeNode(rpxPackage.Name, rpxPackage.key, ReqTreeNode.eReqTreeNodeType.eTreeNodePkg);
            reqParentTreeNode.Add(ref reqMyTreeNode);
            dictPackage.Add(rpxPackage.key, reqMyTreeNode);
            cb.ShowProgressReqPkgTree(0, ++nPackageRead, 0, 0, null);

            rpxPackage.MoveFirst();
            while (!rpxPackage.IsEOF)
            {
                rpxChildPackage = (ReqPro40.Package___v1)rpxPackage.GetCurrentElement();
                ReadReqTreeNode(rpxChildPackage, ref reqMyTreeNode, ref nPackageRead);
                rpxPackage.MoveNext();
            }
        }
Exemple #8
0
 public void Set(ReqTreeNode reqTreeNode, TreeNode tn)
 {
     tn.Tag = reqTreeNode.Key;
     if (reqTreeNode.IsReq())
     {
         tn.ImageIndex         = 3;
         tn.SelectedImageIndex = 3;
         tn.ContextMenuStrip   = mnuCtxReq;
     }
     else
     if (reqTreeNode.IsRoot())
     {
         tn.ImageIndex         = 0;
         tn.SelectedImageIndex = 0;
     }
     else
     {
         tn.ContextMenuStrip = mnuCtxPkg;
     }
 }
Exemple #9
0
        private void ParseReqChildren(ReqPro40.Requirement___v6 rpxReq, ReqTreeNode tn)
        {
            ReqPro40.Relationships    rpxReqChildrenRelation;
            ReqPro40.Requirement___v6 rpxReqChild;
            ReqTreeNode tnReqNew;
            int         nChildCount;

            rpxReqChildrenRelation = rpxReq.Children;
            nChildCount            = rpxReqChildrenRelation.Count;
            rpxReqChildrenRelation.MoveFirst();

            for (int i = 0; i < nChildCount; i++)
            {
                rpxReqChild = GetRequirement(rpxReqChildrenRelation.ItemCurrent.DestinationKey);
                tnReqNew    = new ReqTreeNode
                                  (rpxReqChild.get_Tag(ReqPro40.enumTagFormat.eTagFormat_Tag) + ": " + rpxReqChild.Name,
                                  rpxReqChild.key, ReqTreeNode.eReqTreeNodeType.eTreeNodeReq);
                ParseReqChildren(rpxReqChild, tnReqNew);
                tn.Add(ref tnReqNew);
                rpxReqChildrenRelation.MoveNext();
            }
        }
Exemple #10
0
        public ReqTreeNode ReadReqTree(out int nPackageCount)
        {
            ReqPro40.Package___v1     rpxPackage;
            ReqPro40.RootPackage___v1 rpxRootPackage;
            ReqTreeNode reqRootTreeNode;

            int nPackageRead = 0;

            cb.ShowProgressReqPkgTree(0, 0, 0, 0, "Identifying Packages");
            rpxRootPackage = (ReqPro40.RootPackage___v1)rpxProject.GetRootPackage(true);
            object[,] o    = (object[, ])rpxRootPackage.
                             FindPackageElements(ReqPro40.enumElementTypes.eElemType_Package,
                                                 "*", 0, ReqPro40.enumElementTypes.eElemType_Package, false);
            nPackageCount = o.GetLength(1);
            o             = null;
            cb.ShowProgressReqPkgTree(nPackageCount, 0, 0, 0, nPackageCount + " Packages identified");
            reqRootTreeNode = new ReqTreeNode
                                  (rpxRootPackage.Name, rpxRootPackage.key, ReqTreeNode.eReqTreeNodeType.eTreeNodeRoot);

            dictPackage = new Dictionary <int, object>();

            rpxRootPackage.Refresh(ReqPro40.enumPackageWeights.ePackageWeight_Package, true);

            rpxRootPackage.MoveFirst();
            while (!rpxRootPackage.IsEOF)
            {
                rpxPackage = (ReqPro40.Package___v1)rpxRootPackage.GetCurrentElement();
                ReadReqTreeNode(rpxPackage, ref reqRootTreeNode, ref nPackageRead);
                rpxRootPackage.MoveNext();
            }

            cb.ShowProgressReqPkgTree(0, 0, 0, 0, nPackageRead + " Packages read");
            ParseRequirements();

            state = eState.stParsed;
            return(reqRootTreeNode);
        }
Exemple #11
0
 public void Add(ref ReqTreeNode child)
 {
     aReqTreeNodeChilds.Add(child);
 }
Exemple #12
0
        private void ParseRequirements()
        {
            ReqPro40.Requirements     rpxReqColl;
            ReqPro40.Requirement___v6 rpxReq;
            ReqPro40.Relationship     reqRelParent;

            int                           nReqCount;
            ReqTreeNode                   tnPackage;
            ReqTreeNode                   reqMyTreeNode;
            List <ReqTreeNode>            reqUnassigned;
            Dictionary <int, ReqTreeNode> dictReq;
            int                           i = 0;

            reqUnassigned = new List <ReqTreeNode>();
            dictReq       = new Dictionary <int, ReqTreeNode>();

            cb.ShowProgressReqPkgTree(0, 0, 0, 0, "Identifying Requirements");
            rpxReqColl = rpxProject.GetRequirements("*", ReqPro40.enumRequirementsLookups.eReqsLookup_All,
                                                    ReqPro40.enumRequirementsWeights.eReqWeight_Medium, ReqPro40.enumRequirementFlags.eReqFlag_Empty, 1000, 8);
            ReqProRequirementPrx.RPXReqColl = rpxReqColl;

            nReqCount = rpxReqColl.Count;
            cb.ShowProgressReqPkgTree(0, 0, nReqCount, 0, nReqCount + " Requirements identified");
            foreach (object o in rpxReqColl)
            {
                Tracer tracer = new Tracer("Req (Key: " + o + ") from Req Coll");
                rpxReq = (ReqPro40.Requirement___v6)rpxReqColl[o, ReqPro40.enumRequirementLookups.eReqLookup_Key];
                tracer.Stop("Req " + rpxReq.get_Tag(ReqPro40.enumTagFormat.eTagFormat_Tag) +
                            " got via eReqLookup_Key from Requirements Collection");
                try
                {
                    i++;
                    cb.ShowProgressReqPkgTree(0, 0, 0, i, null);
                    tnPackage = (ReqTreeNode)dictPackage[rpxReq.PackageKey];

                    reqMyTreeNode = new ReqTreeNode
                                        (rpxReq.get_Tag(ReqPro40.enumTagFormat.eTagFormat_Tag) + ": " + rpxReq.Name,
                                        rpxReq.key, ReqTreeNode.eReqTreeNodeType.eTreeNodeReq);
                    if (rpxReq.IsRoot)
                    {
                        if (tnPackage != null)
                        {
                            tnPackage.Add(ref reqMyTreeNode);
                        }
                        dictReq.Add(rpxReq.key, reqMyTreeNode);
                    }
                    else
                    {
                        //Tracer tr = new Tracer("Parent of " + reqMyTreeNode.Text + " discovering");

                        // performance is too low for that step :-(
                        //reqRelParent = rpxReq.get_Parent(ReqPro40.enumRequirementsWeights.eReqWeight_Medium);
                        //reqMyTreeNode.Parent = reqRelParent.SourceKey;
                        //reqUnassigned.Add(reqMyTreeNode);
                        //tr.Stop("Parent of " + reqMyTreeNode.Text + " discovered");

                        if (tnPackage != null)
                        {
                            tnPackage.Add(ref reqMyTreeNode);
                        }
                        dictReq.Add(rpxReq.key, reqMyTreeNode);
                    }
                }
                catch (Exception)
                {
                }
            }

            Tracer trCleanup = new Tracer("Cleanup Children Requirements");

            while (reqUnassigned.Count > 0)
            {
                for (int j = 0; j < reqUnassigned.Count; j++)
                {
                    reqMyTreeNode = reqUnassigned[j];
                    if (dictReq.ContainsKey(reqMyTreeNode.Parent))
                    {
                        tnPackage = dictReq[reqMyTreeNode.Parent];

                        tnPackage.Add(ref reqMyTreeNode);
                        dictReq.Add(reqMyTreeNode.Key, reqMyTreeNode);
                        reqUnassigned.Remove(reqMyTreeNode);
                        j--;
                    }
                }
            }
            trCleanup.Stop("Cleanup Children Requirements");

            cb.ShowProgressReqPkgTree(0, 0, 0, 0, i + " Requirements inserted");
            cb.ShowProgressReqPkgTree(0, 0, 0, 0, null);
        }