/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.fudgemsg; import org.fudgemsg.FudgeMsg; import org.fudgemsg.MutableFudgeMsg; import org.fudgemsg.mapping.FudgeBuilderFor; import org.fudgemsg.mapping.FudgeDeserializer; import org.fudgemsg.mapping.FudgeSerializer; import com.opengamma.analytics.financial.credit.isdastandardmodel.ISDACompliantCreditCurve; import com.opengamma.analytics.financial.credit.isdastandardmodel.ISDACompliantCurve; import com.opengamma.analytics.financial.credit.isdastandardmodel.ISDACompliantYieldCurve; /** * Fudge builder for objects used in ISDA pricing of CDS, CDX and CDS options * */ final class ISDAResultsBuilder { private ISDAResultsBuilder() { } /** * Fudge builder for {@link ISDACompliantCurve} */ @FudgeBuilderFor(ISDACompliantCurve.class) public static final class ISDACompliantCurveBuilder extends AbstractFudgeBuilder<ISDACompliantCurve> { private static final String T_FIELD_NAME = "t"; private static final String RT_FIELD_NAME = "rt"; @Override public ISDACompliantCurve buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) { final double[] t = deserializer.fieldValueToObject(double[].class, message.getByName(T_FIELD_NAME)); final double[] rt = deserializer.fieldValueToObject(double[].class, message.getByName(RT_FIELD_NAME)); return ISDACompliantCurve.makeFromRT(t, rt); } @Override protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final ISDACompliantCurve object) { serializer.addToMessage(message, T_FIELD_NAME, null, object.getT()); serializer.addToMessage(message, RT_FIELD_NAME, null, object.getRt()); } } /** * Fudge builder for {@link ISDACompliantYieldCurve} */ @FudgeBuilderFor(ISDACompliantYieldCurve.class) public static final class ISDACompliantYieldCurveBuilder extends AbstractFudgeBuilder<ISDACompliantYieldCurve> { private static final String T_FIELD_NAME = "t"; private static final String R_FIELD_NAME = "r"; private static final String RT_FIELD_NAME = "rt"; private static final String DF_FIELD_NAME = "df"; @Override public ISDACompliantYieldCurve buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) { final double[] t = deserializer.fieldValueToObject(double[].class, message.getByName(T_FIELD_NAME)); final double[] rt = deserializer.fieldValueToObject(double[].class, message.getByName(RT_FIELD_NAME)); return ISDACompliantYieldCurve.makeFromRT(t, rt); } @Override protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final ISDACompliantYieldCurve object) { serializer.addToMessage(message, T_FIELD_NAME, null, object.getT()); serializer.addToMessage(message, RT_FIELD_NAME, null, object.getRt()); } } /** * Fudge builder for {@link ISDACompliantCreditCurve} */ @FudgeBuilderFor(ISDACompliantCreditCurve.class) public static final class ISDACompliantCreditCurveBuilder extends AbstractFudgeBuilder<ISDACompliantCreditCurve> { private static final String T_FIELD_NAME = "t"; private static final String RT_FIELD_NAME = "rt"; @Override public ISDACompliantCreditCurve buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) { final double[] t = deserializer.fieldValueToObject(double[].class, message.getByName(T_FIELD_NAME)); final double[] rt = deserializer.fieldValueToObject(double[].class, message.getByName(RT_FIELD_NAME)); return ISDACompliantCreditCurve.makeFromRT(t, rt); } @Override protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final ISDACompliantCreditCurve object) { serializer.addToMessage(message, T_FIELD_NAME, null, object.getT()); serializer.addToMessage(message, RT_FIELD_NAME, null, object.getRt());; } } }