/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.fudgemsg; import static com.opengamma.financial.analytics.volatility.surface.SurfaceInstrumentProvider.DATA_FIELD_NAME; import static com.opengamma.financial.analytics.volatility.surface.SurfaceInstrumentProvider.POSTFIX_FIELD_NAME; import static com.opengamma.financial.analytics.volatility.surface.SurfaceInstrumentProvider.PREFIX_FIELD_NAME; import org.fudgemsg.FudgeMsg; import org.fudgemsg.MutableFudgeMsg; import org.fudgemsg.mapping.FudgeBuilder; import org.fudgemsg.mapping.FudgeBuilderFor; import org.fudgemsg.mapping.FudgeDeserializer; import org.fudgemsg.mapping.FudgeSerializer; import com.opengamma.financial.analytics.volatility.surface.BloombergSwaptionVolatilitySurfaceInstrumentProvider; /** * Builder for converting BloombergSwaptionVolatilitySurfaceInstrumentProvider instances to/from Fudge messages. */ @FudgeBuilderFor(BloombergSwaptionVolatilitySurfaceInstrumentProvider.class) public class BloombergSwaptionVolatilitySurfaceInstrumentProviderFudgeBuilder implements FudgeBuilder<BloombergSwaptionVolatilitySurfaceInstrumentProvider> { @Override public MutableFudgeMsg buildMessage(final FudgeSerializer serializer, final BloombergSwaptionVolatilitySurfaceInstrumentProvider object) { final MutableFudgeMsg message = serializer.newMessage(); FudgeSerializer.addClassHeader(message, BloombergSwaptionVolatilitySurfaceInstrumentProvider.class); message.add(PREFIX_FIELD_NAME, object.getCountryPrefix()); message.add("type", object.getTypePrefix()); message.add(POSTFIX_FIELD_NAME, object.getPostfix()); message.add("zeroPadFirstTenor", object.isZeroPadSwapMaturityTenor()); //TODO rename the field name message.add("zeroPadSecondTenor", object.isZeroPadSwaptionExpiryTenor()); //TODO rename the field name message.add(DATA_FIELD_NAME, object.getDataFieldName()); return message; } @Override public BloombergSwaptionVolatilitySurfaceInstrumentProvider buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) { String dataFieldName = getDataFieldName(message); if (dataFieldName == null) { return new BloombergSwaptionVolatilitySurfaceInstrumentProvider(getCountryPrefix(message), message.getString("type"), message.getBoolean("zeroPadFirstTenor"), message.getBoolean("zeroPadSecondTenor"), getPostFix(message)); } return new BloombergSwaptionVolatilitySurfaceInstrumentProvider(getCountryPrefix(message), message.getString("type"), message.getBoolean("zeroPadFirstTenor"), message.getBoolean("zeroPadSecondTenor"), getPostFix(message), dataFieldName); } private String getPostFix(final FudgeMsg message) { String postfix = message.getString(POSTFIX_FIELD_NAME); //backward compatibility if (postfix == null) { postfix = message.getString("postfix"); } return postfix; } private String getCountryPrefix(final FudgeMsg message) { String countryPrefix = message.getString(PREFIX_FIELD_NAME); //backward compatibility if (countryPrefix == null) { countryPrefix = message.getString("countryPrefix"); } return countryPrefix; } private String getDataFieldName(final FudgeMsg message) { String dataFieldName = message.getString(DATA_FIELD_NAME); //backward compatibility if (dataFieldName == null) { dataFieldName = message.getString("dataFieldName"); } return dataFieldName; } }