private static MandatoryGroupInfo ProcessGroupedMandatories(Dictionary <int, MandatoryGroupInfo> groupedMandatories, ArgumentInfo argumentInfo) { MandatoryGroupInfo groupInfo = null; int groupId = argumentInfo.GroupedMandatoryArgument.GroupId; if (!groupedMandatories.ContainsKey(groupId)) { groupInfo = new MandatoryGroupInfo(argumentInfo); groupedMandatories.Add(groupId, groupInfo); } else { groupInfo = groupedMandatories[groupId]; groupInfo.Add(argumentInfo); } return(groupInfo); }
private void ValidateMandatoryArguments(ArgumentInfoCollection argumentsInfo) { Dictionary <int, MandatoryGroupInfo> groupedMandatories = new Dictionary <int, MandatoryGroupInfo>(); foreach (ArgumentInfo argumentInfo in argumentsInfo) { if (argumentInfo.Found == false) { ArgumentInfo parentArgInfo = argumentInfo.ParentArgumentInfo; if (parentArgInfo != null) { // If the parent has been found, if (parentArgInfo.Found && argumentInfo.MandatoryArgument != null) { ProcessMandatoryMissing(argumentInfo); } // If the parent has been found, if (parentArgInfo.Found && argumentInfo.GroupedMandatoryArgument != null) { ProcessGroupedMandatories(groupedMandatories, argumentInfo); } } else // The current argument is not a child argument { if (argumentInfo.MandatoryArgument != null) { ProcessMandatoryMissing(argumentInfo); } if (argumentInfo.GroupedMandatoryArgument != null) { ProcessGroupedMandatories(groupedMandatories, argumentInfo); } } } else { if (argumentInfo.GroupedMandatoryArgument != null) { if (groupedMandatories.ContainsKey(argumentInfo.GroupedMandatoryArgument.GroupId)) { groupedMandatories[argumentInfo.GroupedMandatoryArgument.GroupId].Found = true; } else { MandatoryGroupInfo groupInfo = ProcessGroupedMandatories(groupedMandatories, argumentInfo); groupInfo.Found = true; } } } ValidateMandatoryArguments(argumentInfo.Children); } if (groupedMandatories.Count > 0) { foreach (MandatoryGroupInfo mgInfo in groupedMandatories.Values) { if (mgInfo.Found == false) { ProcessGroupedMandatoryMissing(mgInfo.ArgumentInfos); } } } }