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

import org.fudgemsg.types.FudgeSecondaryType;
import org.fudgemsg.types.SecondaryFieldType;
import org.fudgemsg.wire.types.FudgeWireType;

/**
 * Allows a {@link CurrencyPair} to be stored as a string in a Fudge message.
 */
public class CurrencyPairFudgeSecondaryType extends SecondaryFieldType<CurrencyPair, String> {

  /** Serialization version. */
  private static final long serialVersionUID = 1L;
  /**
   * Singleton instance of the type.
   */
  @FudgeSecondaryType
  public static final CurrencyPairFudgeSecondaryType INSTANCE = new CurrencyPairFudgeSecondaryType();

  protected CurrencyPairFudgeSecondaryType() {
    super(FudgeWireType.STRING, CurrencyPair.class);
  }

  /**
   * @param currencyPair The currency pair
   * @return The currency pair as a string in the form AAA/BBB
   */
  @Override
  public String secondaryToPrimary(final CurrencyPair currencyPair) {
    return currencyPair.getName();
  }

  /**
   * @param currencyPairString The currency pair in the form AAA/BBB
   * @return The currency pair
   */
  @Override
  public CurrencyPair primaryToSecondary(final String currencyPairString) {
    return CurrencyPair.parse(currencyPairString);
  }
}
