public DoubleTimeSeries<?> buildObject(FudgeDeserializer deserializer, FudgeMsg message) {
// read old LocalDateDoubleTimeSeries, see OpenGammaFudgeContext
if (message.getByOrdinal(0).toString().contains("ArrayLocalDateDoubleTimeSeries") ||
message.getByOrdinal(0).toString().contains("ListLocalDateDoubleTimeSeries") ||
message.getByOrdinal(0).toString().contains("MapLocalDateDoubleTimeSeries")) {
FudgeMsg fastSeries = message.getMessage(2);
String encoding = fastSeries.getMessage(1).getString(1);
int[] dates = (int[]) fastSeries.getValue(2);
double[] values = (double[]) fastSeries.getValue(3);
if (encoding.equals("DATE_DDMMYYYY")) { // CSIGNORE
// correct encoding
} else if (encoding.equals("DATE_EPOCH_DAYS")) {
for (int i = 0; i < dates.length; i++) {
LocalDate d = LocalDate.ofEpochDay(dates[i]);
dates[i] = LocalDateToIntConverter.convertToInt(d);
}
} else {
throw new IllegalArgumentException("Unknown time-series encoding");
}
return ImmutableLocalDateDoubleTimeSeries.of(dates, values);
}
// read old ZonedDateTimeDoubleTimeSeries, see OpenGammaFudgeContext
if (message.getByOrdinal(0).toString().contains("ZonedDateTimeDoubleTimeSeries")) {
ZoneId zone = ZoneOffset.UTC;
try {
FudgeMsg converter = message.getMessage(1);
zone = ZoneId.of(converter.getString(1));
} catch (RuntimeException ex) {
// ignore
}
FudgeMsg fastSeries = message.getMessage(2);
String encoding = fastSeries.getMessage(1).getString(1);
long[] instants = (long[]) fastSeries.getValue(2);
double[] values = (double[]) fastSeries.getValue(3);
if (encoding.equals("TIME_EPOCH_NANOS")) { // CSIGNORE
// correct encoding
} else if (encoding.equals("TIME_EPOCH_MILLIS")) {
for (int i = 0; i < instants.length; i++) {
instants[i] = instants[i] * 1_000_000;