Example #1
0
 // parse a single file
 private void parse(CharSource charSource, ListMultimap <string, CurveSensitivities> parsed, IList <FailureItem> failures)
 {
     try
     {
         using (CsvIterator csv = CsvIterator.of(charSource, true))
         {
             if (!csv.containsHeader(TENOR_HEADER) && !csv.containsHeader(DATE_HEADER))
             {
                 failures.Add(FailureItem.of(FailureReason.PARSING, "CSV file could not be parsed as sensitivities, invalid format"));
             }
             else if (csv.containsHeader(REFERENCE_HEADER) && csv.containsHeader(TYPE_HEADER) && csv.containsHeader(VALUE_HEADER))
             {
                 parseStandardFormat(csv, parsed, failures);
             }
             else if (csv.containsHeader(REFERENCE_HEADER))
             {
                 parseListFormat(csv, parsed, failures);
             }
             else
             {
                 parseGridFormat(csv, parsed, failures);
             }
         }
     }
     catch (Exception ex)
     {
         failures.Add(FailureItem.of(FailureReason.PARSING, ex, "CSV file could not be parsed: {}", ex.Message));
     }
 }
Example #2
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Checks whether the source is a CSV format sensitivities file.
 /// <para>
 /// This parses the headers as CSV and checks that mandatory headers are present.
 ///
 /// </para>
 /// </summary>
 /// <param name="charSource">  the CSV character source to check </param>
 /// <returns> true if the source is a CSV file with known headers, false otherwise </returns>
 public bool isKnownFormat(CharSource charSource)
 {
     try
     {
         using (CsvIterator csv = CsvIterator.of(charSource, true))
         {
             if (!csv.containsHeader(TENOR_HEADER) && !csv.containsHeader(DATE_HEADER))
             {
                 return(false);
             }
             if (csv.containsHeader(REFERENCE_HEADER) && csv.containsHeader(TYPE_HEADER) && csv.containsHeader(VALUE_HEADER))
             {
                 return(true);        // standard format
             }
             else if (csv.containsHeader(REFERENCE_HEADER) || csv.containsHeader(TYPE_HEADER))
             {
                 return(true);        // list or grid format
             }
             else
             {
                 return(csv.headers().Any(SensitivityCsvLoader.knownReference));        // implied grid format
             }
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
Example #3
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Checks whether the source is a CSV format trade file.
 /// <para>
 /// This parses the headers as CSV and checks that mandatory headers are present.
 /// This is determined entirely from the 'Strata Trade Type' column.
 ///
 /// </para>
 /// </summary>
 /// <param name="charSource">  the CSV character source to check </param>
 /// <returns> true if the source is a CSV file with known headers, false otherwise </returns>
 public bool isKnownFormat(CharSource charSource)
 {
     try
     {
         using (CsvIterator csv = CsvIterator.of(charSource, true))
         {
             return(csv.containsHeader(TYPE_FIELD));
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
Example #4
0
 // loads a single CSV file, filtering by trade type
 private ValueWithFailures <IList <T> > parseFile <T>(CharSource charSource, Type <T> tradeType) where T : com.opengamma.strata.product.Trade
 {
     try
     {
         using (CsvIterator csv = CsvIterator.of(charSource, true))
         {
             if (!csv.headers().contains(TYPE_FIELD))
             {
                 return(ValueWithFailures.of(ImmutableList.of(), FailureItem.of(FailureReason.PARSING, "CSV file does not contain '{header}' header: {}", TYPE_FIELD, charSource)));
             }
             return(parseFile(csv, tradeType));
         }
     }
     catch (Exception ex)
     {
         return(ValueWithFailures.of(ImmutableList.of(), FailureItem.of(FailureReason.PARSING, ex, "CSV file could not be parsed: {exceptionMessage}: {}", ex.Message, charSource)));
     }
 }