Package com.opengamma.financial.security.fx

Source Code of com.opengamma.financial.security.fx.FXForwardSecurityFudgeBuilder

/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.security.fx;

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.OpenGammaRuntimeException;
import com.opengamma.financial.security.FinancialSecurityFudgeBuilder;
import com.opengamma.id.ExternalIdFudgeBuilder;
import com.opengamma.util.fudgemsg.AbstractFudgeBuilder;
import com.opengamma.util.money.Currency;
import com.opengamma.util.time.ZonedDateTimeFudgeBuilder;

/**
* A Fudge builder for {@code FXForwardSecurity}.
*/
@FudgeBuilderFor(FXForwardSecurity.class)
public class FXForwardSecurityFudgeBuilder extends AbstractFudgeBuilder implements FudgeBuilder<FXForwardSecurity> {

  private static final int VERSION = 2;
  /** Field name. */
  public static final String VERSION_FIELD_NAME = "version";
  /** Field name. */
  public static final String PAY_CURRENCY_FIELD_NAME = "payCurrency";
  /** Field name. */
  public static final String PAY_AMOUNT_FIELD_NAME = "payAmount";
  /** Field name. */
  public static final String RECEIVE_CURRENCY_FIELD_NAME = "receiveCurrency";
  /** Field name. */
  public static final String RECEIVE_AMOUNT_FIELD_NAME = "receiveAmount";
  /** Field name. */
  public static final String UNDERLYING_IDENTIFIER_FIELD_NAME = "underlyingIdentifier";
  /** Field name. */
  public static final String FORWARD_DATE_FIELD_NAME = "forwardDate";
  /** Field name. */
  public static final String REGION_FIELD_NAME = "region";

  @Override
  public MutableFudgeMsg buildMessage(FudgeSerializer serializer, FXForwardSecurity object) {
    final MutableFudgeMsg msg = serializer.newMessage();
    FXForwardSecurityFudgeBuilder.toFudgeMsg(serializer, object, msg);
    return msg;
  }

  public static void toFudgeMsg(FudgeSerializer serializer, FXForwardSecurity object, final MutableFudgeMsg msg) {
    FinancialSecurityFudgeBuilder.toFudgeMsg(serializer, object, msg);
    addToMessage(msg, VERSION_FIELD_NAME, VERSION);
    addToMessage(msg, PAY_CURRENCY_FIELD_NAME, object.getPayCurrency());
    addToMessage(msg, PAY_AMOUNT_FIELD_NAME, object.getPayAmount());
    addToMessage(msg, RECEIVE_CURRENCY_FIELD_NAME, object.getReceiveCurrency());
    addToMessage(msg, RECEIVE_AMOUNT_FIELD_NAME, object.getReceiveAmount());
    addToMessage(msg, FORWARD_DATE_FIELD_NAME, ZonedDateTimeFudgeBuilder.toFudgeMsg(serializer, object.getForwardDate()));
    addToMessage(msg, REGION_FIELD_NAME, ExternalIdFudgeBuilder.toFudgeMsg(serializer, object.getRegionId()));
  }

  @Override
  public FXForwardSecurity buildObject(FudgeDeserializer deserializer, FudgeMsg msg) {
    FXForwardSecurity object = new FXForwardSecurity();
    FXForwardSecurityFudgeBuilder.fromFudgeMsg(deserializer, msg, object);
    return object;
  }

  public static void fromFudgeMsg(FudgeDeserializer deserializer, FudgeMsg msg, FXForwardSecurity object) {
    FinancialSecurityFudgeBuilder.fromFudgeMsg(deserializer, msg, object);
    if (msg.getInt(VERSION_FIELD_NAME) != VERSION) {
      throw new OpenGammaRuntimeException("Incorrect version of FXForwardSecurity persisted.  Object model has changed to not include underlying");
    }
    object.setPayCurrency(msg.getValue(Currency.class, PAY_CURRENCY_FIELD_NAME));
    object.setPayAmount(msg.getDouble(PAY_AMOUNT_FIELD_NAME));
    object.setReceiveCurrency(msg.getValue(Currency.class, RECEIVE_CURRENCY_FIELD_NAME));
    object.setReceiveAmount(msg.getDouble(RECEIVE_AMOUNT_FIELD_NAME));
    object.setForwardDate(ZonedDateTimeFudgeBuilder.fromFudgeMsg(deserializer, msg.getMessage(FORWARD_DATE_FIELD_NAME)));
    object.setRegionId(ExternalIdFudgeBuilder.fromFudgeMsg(deserializer, msg.getMessage(REGION_FIELD_NAME)));
  }

}
TOP

Related Classes of com.opengamma.financial.security.fx.FXForwardSecurityFudgeBuilder

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.