Esempio n. 1
0
 private void handleMainAndNeededPackagesAreInDifferentBranches
     (Tree tree, Branch branchMainPackage, Branch branchNeededPackage,
     ParsedPackageDependencyPair parsedPackageDependencyPair)
 {
     if (Tree.GetIndex(tree, branchNeededPackage) > Tree.GetIndex(tree, branchMainPackage))
     {
         Tree.Remove(tree, branchNeededPackage);
         Tree.Insert(tree, branchNeededPackage);
     }
 }
 private void handleMainAndNeededPackagesAreInDifferentBranches
     (Tree tree, Branch branchMainPackage, Branch branchNeededPackage,
             ParsedPackageDependencyPair parsedPackageDependencyPair)
 {
     if (Tree.GetIndex(tree, branchNeededPackage) > Tree.GetIndex(tree, branchMainPackage))
     {
         Tree.Remove(tree, branchNeededPackage);
         Tree.Insert(tree, branchNeededPackage);
     }
 }
 private void addPackageBranch(Tree tree, ParsedPackageDependencyPair parsedPackageDependencyPair)
 {
     var branch = new Branch();
     if (parsedPackageDependencyPair.NeededPackage != null)
     {
         Branch.Append(branch, parsedPackageDependencyPair.NeededPackage);
     }
     Branch.Append(branch, parsedPackageDependencyPair.MainPackage);
     Tree.Append(tree, branch);
 }
Esempio n. 4
0
        private void addPackageBranch(Tree tree, ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            var branch = new Branch();

            if (parsedPackageDependencyPair.NeededPackage != null)
            {
                Branch.Append(branch, parsedPackageDependencyPair.NeededPackage);
            }
            Branch.Append(branch, parsedPackageDependencyPair.MainPackage);
            Tree.Append(tree, branch);
        }
Esempio n. 5
0
 private void handleMainPackageIsNotInTree(Tree tree, Branch branchMainPackage, Branch branchNeededPackage,
                                           ParsedPackageDependencyPair parsedPackageDependencyPair)
 {
     if (parsedPackageDependencyPair.NeededPackage == null ||
         branchNeededPackage == null)
     {
         addPackageBranch(tree, parsedPackageDependencyPair);
     }
     else
     {
         Branch.Append(branchNeededPackage, parsedPackageDependencyPair.MainPackage);
     }
 }
        public string GetInstallListFromDependencies(string[] packageDependencyPairs)
        {
            var parsedPackageDependencyPair = new ParsedPackageDependencyPair();
            var packageDependencyTree = new Tree();

            for (int i = 0; i < packageDependencyPairs.Length; i++)
            {
                parsedPackageDependencyPair = Parse.ParsePackageDependencPair(packageDependencyPairs[i]);

                storeParsedPackageDependencyPair(packageDependencyTree, parsedPackageDependencyPair);
            }

            return Tree.ExtractTreeDelimitedList(packageDependencyTree);
        }
Esempio n. 7
0
        public string GetInstallListFromDependencies(string[] packageDependencyPairs)
        {
            var parsedPackageDependencyPair = new ParsedPackageDependencyPair();
            var packageDependencyTree       = new Tree();

            for (int i = 0; i < packageDependencyPairs.Length; i++)
            {
                parsedPackageDependencyPair = Parse.ParsePackageDependencPair(packageDependencyPairs[i]);

                storeParsedPackageDependencyPair(packageDependencyTree, parsedPackageDependencyPair);
            }

            return(Tree.ExtractTreeDelimitedList(packageDependencyTree));
        }
Esempio n. 8
0
        private void storeParsedPackageDependencyPair
            (Tree tree, ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            Branch branchMainPackage =
                Tree.GetBranch(tree, parsedPackageDependencyPair.MainPackage);
            Branch branchNeededPackage =
                parsedPackageDependencyPair.NeededPackage == null ?
                null : Tree.GetBranch(tree, parsedPackageDependencyPair.NeededPackage);

            if (branchMainPackage != null)
            {
                handleMainPackageIsInTree(tree, branchMainPackage, branchNeededPackage, parsedPackageDependencyPair);
            }
            else
            {
                handleMainPackageIsNotInTree(tree, branchMainPackage, branchNeededPackage, parsedPackageDependencyPair);
            }
        }
        private void checkForDependencyCycle(Branch branch,
                                ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            int indexMainPackage =
                Branch.GetIndex(branch, parsedPackageDependencyPair.MainPackage);

            int indexNeededPackage = 0;

            if (parsedPackageDependencyPair.NeededPackage != null)
            {
                indexNeededPackage =
                 Branch.GetIndex(branch, parsedPackageDependencyPair.NeededPackage);
            }

            if (indexNeededPackage > indexMainPackage)
            {
                throw new Exception("The input package dependencies cause a dependency cycle");
            }
        }
Esempio n. 10
0
        private void checkForDependencyCycle(Branch branch,
                                             ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            int indexMainPackage =
                Branch.GetIndex(branch, parsedPackageDependencyPair.MainPackage);

            int indexNeededPackage = 0;

            if (parsedPackageDependencyPair.NeededPackage != null)
            {
                indexNeededPackage =
                    Branch.GetIndex(branch, parsedPackageDependencyPair.NeededPackage);
            }

            if (indexNeededPackage > indexMainPackage)
            {
                throw new Exception("The input package dependencies cause a dependency cycle");
            }
        }
Esempio n. 11
0
        public static ParsedPackageDependencyPair ParsePackageDependencPair(string packageDependencyPair)
        {
            var parsedPackageDependencyPair = new ParsedPackageDependencyPair();

            int indexPackageDependencyDelimiter = packageDependencyPair.IndexOf(PACKAGE_DEPENDENCY_DELIMITER);

            if (indexPackageDependencyDelimiter < 0)
            {
                throw new Exception("The input package dependencies are not in the correct format");
            }

            parsedPackageDependencyPair.MainPackage = packageDependencyPair.Substring(0, indexPackageDependencyDelimiter);

            if (indexPackageDependencyDelimiter + PACKAGE_DEPENDENCY_OFFSET < packageDependencyPair.Length)
            {
                parsedPackageDependencyPair.NeededPackage =
                    packageDependencyPair.Substring(indexPackageDependencyDelimiter + PACKAGE_DEPENDENCY_OFFSET);
            }

            return(parsedPackageDependencyPair);
        }
Esempio n. 12
0
        public static ParsedPackageDependencyPair ParsePackageDependencPair(string packageDependencyPair)
        {
            var parsedPackageDependencyPair = new ParsedPackageDependencyPair();

            int indexPackageDependencyDelimiter = packageDependencyPair.IndexOf(PACKAGE_DEPENDENCY_DELIMITER);

            if (indexPackageDependencyDelimiter < 0)
            {
                throw new Exception("The input package dependencies are not in the correct format");
            }

            parsedPackageDependencyPair.MainPackage = packageDependencyPair.Substring(0, indexPackageDependencyDelimiter);

            if (indexPackageDependencyDelimiter + PACKAGE_DEPENDENCY_OFFSET < packageDependencyPair.Length)
            {
                parsedPackageDependencyPair.NeededPackage =
                    packageDependencyPair.Substring(indexPackageDependencyDelimiter + PACKAGE_DEPENDENCY_OFFSET);
            }

            return parsedPackageDependencyPair;
        }
        private void handleMainPackageIsInTree(Tree tree, Branch branchMainPackage, Branch branchNeededPackage, 
            ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            if (parsedPackageDependencyPair.NeededPackage == null)
            {
                return;
            }

            if (branchNeededPackage == null)
            { 
                Branch.Insert(branchMainPackage, parsedPackageDependencyPair.NeededPackage);
            }
            else if (branchMainPackage == branchNeededPackage)
            {
                checkForDependencyCycle(branchMainPackage, parsedPackageDependencyPair);
            }
            else
            {
                handleMainAndNeededPackagesAreInDifferentBranches(tree,branchMainPackage, branchNeededPackage,
                        parsedPackageDependencyPair);
            }                        
        }
Esempio n. 14
0
        private void handleMainPackageIsInTree(Tree tree, Branch branchMainPackage, Branch branchNeededPackage,
                                               ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            if (parsedPackageDependencyPair.NeededPackage == null)
            {
                return;
            }

            if (branchNeededPackage == null)
            {
                Branch.Insert(branchMainPackage, parsedPackageDependencyPair.NeededPackage);
            }
            else if (branchMainPackage == branchNeededPackage)
            {
                checkForDependencyCycle(branchMainPackage, parsedPackageDependencyPair);
            }
            else
            {
                handleMainAndNeededPackagesAreInDifferentBranches(tree, branchMainPackage, branchNeededPackage,
                                                                  parsedPackageDependencyPair);
            }
        }
 private void handleMainPackageIsNotInTree(Tree tree, Branch branchMainPackage, Branch branchNeededPackage,
     ParsedPackageDependencyPair parsedPackageDependencyPair)
 {
     if (parsedPackageDependencyPair.NeededPackage == null || 
         branchNeededPackage == null)
     {
         addPackageBranch(tree, parsedPackageDependencyPair);
     }
     else
     {
         Branch.Append(branchNeededPackage, parsedPackageDependencyPair.MainPackage);
     }
 }
        private void storeParsedPackageDependencyPair
            (Tree tree, ParsedPackageDependencyPair parsedPackageDependencyPair)
        {
            Branch branchMainPackage =
                Tree.GetBranch(tree, parsedPackageDependencyPair.MainPackage);
            Branch branchNeededPackage =
                parsedPackageDependencyPair.NeededPackage == null ?
                null : Tree.GetBranch(tree, parsedPackageDependencyPair.NeededPackage);

            if (branchMainPackage != null)
            {
                handleMainPackageIsInTree(tree, branchMainPackage, branchNeededPackage, parsedPackageDependencyPair);                
            }
            else
            {
                handleMainPackageIsNotInTree(tree, branchMainPackage, branchNeededPackage, parsedPackageDependencyPair);
            } 
        }