using System; using System.Collections.Generic; namespace MultiProjectValidator.AnalysisRules.DependencyMismatch { internal class DependencyGroup { public static DependencyGroup CreateWithEntry(DependencyInfo dependencyInfo) { var dependencyGroup = new DependencyGroup { DependencyName = dependencyInfo.Name, VersionDependencyInfoMap = new Dictionary>() }; dependencyGroup.AddEntry(dependencyInfo); return dependencyGroup; } public string DependencyName { get; private set; } public Dictionary> VersionDependencyInfoMap { get; private set; } public bool HasConflict { get { return VersionDependencyInfoMap.Count > 1; } } public void AddEntry(DependencyInfo dependencyInfo) { if (!dependencyInfo.Name.Equals(DependencyName, StringComparison.OrdinalIgnoreCase)) { throw new Exception("Added dependency does not match group"); } if (VersionDependencyInfoMap.ContainsKey(dependencyInfo.Version)) { VersionDependencyInfoMap[dependencyInfo.Version].Add(dependencyInfo); } else { VersionDependencyInfoMap[dependencyInfo.Version] = new List() { dependencyInfo }; } } } }