Package com.opengamma.financial.analytics.fudgemsg

Source Code of com.opengamma.financial.analytics.fudgemsg.ISDACurveBuilder

/**
* Copyright (C) 2009 - 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.cds.ISDACurve;
import com.opengamma.analytics.math.curve.DoublesCurve;

/**
* Fudge builder for ISDA curve
*
* @author Martin Traverse, Niels Stchedroff (Riskcare)
* @see ISDACurve
*/
@FudgeBuilderFor(ISDACurve.class)
public class ISDACurveBuilder extends AbstractFudgeBuilder<ISDACurve> {
 
  private static final String NAME_FIELD_NAME = "name";
  private static final String CURVE_FIELD_NAME = "curve";
  private static final String OFFSET_FIELD_NAME = "offset";
  private static final String ZERO_DISCOUNT_FACTOR_FIELD_NAME = "zero discount factor";
  private static final String SHIFTED_TIME_POINTS_FIELD_NAME = "shifted time points";

  @Override
  public ISDACurve buildObject(FudgeDeserializer deserializer, FudgeMsg message) {
   
    final DoublesCurve curve = (DoublesCurve) deserializer.fieldValueToObject(message.getByName(CURVE_FIELD_NAME));
   
    final String name;
    if (message.hasField(NAME_FIELD_NAME)) {
      name = message.getString(NAME_FIELD_NAME);
    } else {
      name = curve.getName();
    }
   
    final double offset = deserializer.fieldValueToObject(double.class, message.getByName(OFFSET_FIELD_NAME)).doubleValue();
    final double zeroDiscountFactor = deserializer.fieldValueToObject(double.class, message.getByName(ZERO_DISCOUNT_FACTOR_FIELD_NAME)).doubleValue();
    final double[] shiftedTimePoints = deserializer.fieldValueToObject(double[].class, message.getByName(SHIFTED_TIME_POINTS_FIELD_NAME));
   
    return new ISDACurve(name, curve, offset, zeroDiscountFactor, shiftedTimePoints);
  }

  @Override
  protected void buildMessage(FudgeSerializer serializer, MutableFudgeMsg message, ISDACurve object) {
    serializer.addToMessageWithClassHeaders(message, NAME_FIELD_NAME, null, object.getName(), String.class);
    serializer.addToMessageWithClassHeaders(message, CURVE_FIELD_NAME, null, object.getCurve());
    serializer.addToMessageWithClassHeaders(message, OFFSET_FIELD_NAME, null, object.getOffset(), double.class);
    serializer.addToMessageWithClassHeaders(message, ZERO_DISCOUNT_FACTOR_FIELD_NAME, null, object.getZeroDiscountFactor(), double.class);
    serializer.addToMessageWithClassHeaders(message, SHIFTED_TIME_POINTS_FIELD_NAME, null, object.getTimePoints(), double[].class);
  }
 
}
TOP

Related Classes of com.opengamma.financial.analytics.fudgemsg.ISDACurveBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.