/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.credit;
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.util.money.Currency;
/**
* Builder for converting {@link CreditCurveIdentifier} instances to / from Fudge messages.
*/
@FudgeBuilderFor(CreditCurveIdentifier.class)
public class CreditCurveIdentifierFudgeBuilder implements FudgeBuilder<CreditCurveIdentifier> {
private static final String RED_CODE = "redCode";
private static final String CURRENCY = "currency";
private static final String TERM = "term";
private static final String SENIORITY = "seniority";
private static final String RESTRUCTURING_CLAUSE = "restructuringClause";
private static final String CURVE_TYPE_PREFIX = "curveTypePrefix";
@SuppressWarnings("deprecation")
@Override
public MutableFudgeMsg buildMessage(final FudgeSerializer serializer, final CreditCurveIdentifier object) {
final MutableFudgeMsg message = serializer.newMessage();
FudgeSerializer.addClassHeader(message, CreditCurveIdentifier.class);
message.add(RED_CODE, object.getRedCode());
message.add(CURRENCY, object.getCurrency());
message.add(TERM, object.getTerm());
message.add(SENIORITY, object.getSeniority());
message.add(RESTRUCTURING_CLAUSE, object.getRestructuringClause());
if (object.getCurveTypePrefix() != null) {
message.add(CURVE_TYPE_PREFIX, object.getCurveTypePrefix());
}
return message;
}
@SuppressWarnings("deprecation")
@Override
public CreditCurveIdentifier buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
final String redCode = message.getString(RED_CODE);
final Currency currency = message.getValue(Currency.class, CURRENCY);
if (currency == null) {
return CreditCurveIdentifier.of(redCode);
}
final String term = message.getString(TERM);
final String seniority = message.getString(SENIORITY);
final String restructuringClause = message.getString(RESTRUCTURING_CLAUSE);
if (message.hasField(CURVE_TYPE_PREFIX)) {
final String curveTypePrefix = message.getString(CURVE_TYPE_PREFIX);
return CreditCurveIdentifier.of(curveTypePrefix, redCode, currency, seniority, restructuringClause);
}
return CreditCurveIdentifier.of(redCode, currency, term, seniority, restructuringClause);
}
}