//------------------------------------------------------------------------- /// <summary> /// Parses the curve groups definition CSV file. /// <para> /// The list of <seealso cref="NodalCurveDefinition"/> will be empty in the resulting definition. /// /// </para> /// </summary> /// <param name="groupsCharSource"> the curve groups CSV character source </param> /// <returns> the list of definitions </returns> public static IList <RatesCurveGroupDefinition> parseCurveGroupDefinitions(CharSource groupsCharSource) { IDictionary <CurveName, ISet <GroupAndReference> > curveGroups = new LinkedHashMap <CurveName, ISet <GroupAndReference> >(); CsvFile csv = CsvFile.of(groupsCharSource, true); foreach (CsvRow row in csv.rows()) { string curveGroupStr = row.getField(GROUPS_NAME); string curveTypeStr = row.getField(GROUPS_CURVE_TYPE); string referenceStr = row.getField(GROUPS_REFERENCE); string curveNameStr = row.getField(GROUPS_CURVE_NAME); GroupAndReference gar = createKey(CurveGroupName.of(curveGroupStr), curveTypeStr, referenceStr); CurveName curveName = CurveName.of(curveNameStr); curveGroups.computeIfAbsent(curveName, k => new LinkedHashSet <>()).add(gar); } return(buildCurveGroups(curveGroups)); }