/** * Parses the seasonality definition CSV file. * * @param charSource the seasonality CSV character source * @return the map of seasonality definitions */ public static Map<CurveName, SeasonalityDefinition> parseSeasonalityDefinitions(CharSource charSource) { ImmutableMap.Builder<CurveName, SeasonalityDefinition> builder = ImmutableMap.builder(); CsvFile csv = CsvFile.of(charSource, true); for (CsvRow row : csv.rows()) { String curveNameStr = row.getField(CURVE_NAME); String shiftTypeStr = row.getField(SHIFT_TYPE); DoubleArray values = DoubleArray.of(12, i -> Double.parseDouble(row.getField(MONTH_PAIRS.get(i)))); CurveName curveName = CurveName.of(curveNameStr); ShiftType shiftType = ShiftType.valueOf(shiftTypeStr.toUpperCase(Locale.ENGLISH)); builder.put(curveName, SeasonalityDefinition.of(values, shiftType)); } return builder.build(); }