Package com.opengamma.financial.generator

Source Code of com.opengamma.financial.generator.SimplePositionGenerator

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

import com.opengamma.core.position.Position;
import com.opengamma.core.position.impl.SimplePosition;
import com.opengamma.master.position.ManageableTrade;
import com.opengamma.master.security.ManageableSecurity;
import com.opengamma.util.ArgumentChecker;

/**
* Utility class for creating a position as a quantity/security pair.
*
* @param <T> the security type or a common super-type of the securities
*/
public class SimplePositionGenerator<T extends ManageableSecurity> implements PositionGenerator {

  private static final String DEFAULT_COUNTER_PARTY = "COUNTERPARTY";
 
  private final QuantityGenerator _quantityGenerator;
  private final SecurityGenerator<? extends T> _securityGenerator;
  private final SecurityPersister _securityPersister;
  private final NameGenerator _counterPartyGenerator;

  public SimplePositionGenerator(final QuantityGenerator quantityGenerator, final SecurityGenerator<? extends T> securityGenerator,
      final SecurityPersister securityPersister, final NameGenerator counterPartyGenerator) {
    ArgumentChecker.notNull(quantityGenerator, "quantityGenerator");
    ArgumentChecker.notNull(securityGenerator, "securityGenerator");
    ArgumentChecker.notNull(securityPersister, "securityPersister");
    ArgumentChecker.notNull(counterPartyGenerator, "counterPartyGenerator");
    _quantityGenerator = quantityGenerator;
    _securityGenerator = securityGenerator;
    _securityPersister = securityPersister;
    _counterPartyGenerator = counterPartyGenerator;
  }

  public SimplePositionGenerator(final SecurityGenerator<? extends T> securityGenerator, final SecurityPersister securityPersister, final NameGenerator counterPartyGenerator) {
    this(new StaticQuantityGenerator(1), securityGenerator, securityPersister,  counterPartyGenerator);
  }
 
  public SimplePositionGenerator(final SecurityGenerator<? extends T> securityGenerator, final SecurityPersister securityPersister) {
    this(new StaticQuantityGenerator(1), securityGenerator, securityPersister);
  }
 
  public SimplePositionGenerator(final QuantityGenerator quantityGenerator, final SecurityGenerator<? extends T> securityGenerator, final SecurityPersister securityPersister) {
    this(quantityGenerator, securityGenerator, securityPersister, new StaticNameGenerator(DEFAULT_COUNTER_PARTY));
  }

  protected QuantityGenerator getQuantityGenerator() {
    return _quantityGenerator;
  }

  protected SecurityGenerator<? extends T> getSecurityGenerator() {
    return _securityGenerator;
  }

  protected SecurityPersister getSecurityPersister() {
    return _securityPersister;
  }
 
  protected NameGenerator getCounterPartyGenerator() {
    return _counterPartyGenerator;
  }

  public static Position createPositionFromTrade(final ManageableTrade trade) {
    if (trade != null) {
      final SimplePosition position = new SimplePosition(trade.getQuantity(), trade.getSecurityLink().getExternalId());
      position.addTrade(trade);
      return position;
    } else {
      return null;
    }
  }

  @Override
  public Position createPosition() {
//    final ManageableTrade trade = getSecurityGenerator().createSecurityTrade(getQuantityGenerator(), getSecurityPersister(), getCounterPartyGenerator());
//    if (trade == null) {
//      final BigDecimal quantity = getQuantityGenerator().createQuantity();
//      if (quantity == null) {
//        return null;
//      }
//      final T security = getSecurityGenerator().createSecurity();
//      if (security == null) {
//        return null;
//      }
//      return new SimplePosition(quantity, getSecurityPersister().storeSecurity(security));
//    } else {
//      return createPositionFromTrade(trade);
//    }
   
    Position position = null;
    final ManageableTrade trade = getSecurityGenerator().createSecurityTrade(getQuantityGenerator(), getSecurityPersister(), getCounterPartyGenerator());
    if (trade != null) {
      position = createPositionFromTrade(trade);
    }
    return position;
  }

}
TOP

Related Classes of com.opengamma.financial.generator.SimplePositionGenerator

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.