Esempio n. 1
0
        public void ResolveModuleDependencies()
        {
            foreach (var module in _KraftModulesCollection)
            {
                KraftModule kraftModule = module.Value as KraftModule;
                kraftModule.ConstructDependencies();
            }

            _KraftModulesCollection = _KraftModulesCollection.SortByDependencies();
            int k = 0;

            foreach (var module in _KraftModulesCollection)
            {
                KraftModule kraftModule = module.Value as KraftModule;
                //Check the version
                foreach (KeyValuePair <string, IDependable <KraftModule> > dependency in kraftModule.Dependencies)
                {
                    string             requiredVersion = kraftModule.KraftModuleRootConf.Dependencies.First(item => item.Key == dependency.Key).Value;
                    KraftModule        actualModule    = (_KraftModulesCollection.Values.First(m => m.Key == dependency.Key) as KraftModule);
                    string             moduleVersion   = actualModule.KraftModuleRootConf.Version;
                    KraftModuleVersion versionChecker  = new KraftModuleVersion(moduleVersion, requiredVersion);
                    if (!versionChecker.IsEqualOrHigher())
                    {
                        throw new Exception($"The required version: {requiredVersion} defined in module: {kraftModule.Key} is not complient with actual version: {moduleVersion} of module: {actualModule.Key}");
                    }
                }

                kraftModule.DependencyOrderIndex = k;
                k++;
                //call sorting for the modules
                kraftModule.Dependencies = kraftModule.Dependencies.SortByDependencyOrderIndex();
            }
        }