Package com.opengamma.master.position

Examples of com.opengamma.master.position.ManageablePosition


  protected ManageablePosition makePositionAndTrade(Security security) {

    int shares = (RandomUtils.nextInt(490) + 10) * 10;
    ExternalIdBundle bundle = security.getExternalIdBundle();
   
    ManageablePosition position = new ManageablePosition(BigDecimal.valueOf(shares), bundle);
    ManageableTrade trade = new ManageableTrade(BigDecimal.valueOf(shares), bundle, LocalDate.of(2010, 12, 3), null, ExternalId.of("CPARTY", "BACS"));
    position.addTrade(trade);
  
    return position;
  }
View Full Code Here


    // ID, look up the portfolio, find the node in the portfolio, modify that copy of the node and save the portfolio
    // TODO can use a portfolio search request and only hit the master once
    ManageablePortfolioNode node = _portfolioMaster.getNode(nodeId);
    ManageablePortfolio portfolio = _portfolioMaster.get(node.getPortfolioId()).getPortfolio();
    ManageablePortfolioNode portfolioNode = findNode(portfolio, nodeId);
    ManageablePosition position = findPosition(portfolioNode, security);
    if (position == null) {
      // no position in this security on the node, create a new position just for this trade
      ManageablePosition newPosition = new ManageablePosition(trade.getQuantity(), security.getExternalIdBundle());
      newPosition.addTrade(trade);
      ManageablePosition savedPosition = getPositionMaster().add(new PositionDocument(newPosition)).getPosition();
      portfolioNode.addPosition(savedPosition.getUniqueId());
      _portfolioMaster.update(new PortfolioDocument(portfolio));
      return savedPosition.getTrades().get(0).getUniqueId();
    } else {
      position.addTrade(trade);
      position.setQuantity(position.getQuantity().add(trade.getQuantity()));
      ManageablePosition savedPosition = getPositionMaster().update(new PositionDocument(position)).getPosition();
      List<ManageableTrade> savedTrades = savedPosition.getTrades();
      return savedTrades.get(savedTrades.size() - 1).getUniqueId();
    }
  }
View Full Code Here

   * @param positionId Unique ID of the position
   */
  /* package */ void updatePosition(BeanDataSource tradeData, UniqueId positionId) {
    ManageableTrade trade = buildTrade(tradeData);
    // TODO check if the ID is versioned?
    ManageablePosition position = getPositionMaster().get(positionId).getPosition();
    // TODO this is a temporary workaround for a client bug. not sure what the correct behaviour is yet
    trade.setUniqueId(null);
    /*if (!trade.getSecurityLink().equals(position.getSecurityLink())) {
      throw new IllegalArgumentException("Cannot update a position's security. new version " + trade.getSecurityLink() +
                                             ", previous version: " + position.getSecurityLink());
    }*/
    if (position.getTrades().size() != 0) {
      throw new IllegalArgumentException("Cannot directly update a position that contains trade. Update the trades");
    }
    position.setTrades(Lists.newArrayList(trade));
    position.setQuantity(trade.getQuantity());
    getPositionMaster().update(new PositionDocument(position)).getPosition();
  }
View Full Code Here

  // TODO would it make more sense to have a void return type? does the client use the returned ID?
  /* package */ UniqueId updateTrade(BeanDataSource tradeData) {
    ManageableTrade trade = buildTrade(tradeData);
    ManageableTrade previousTrade = getPositionMaster().getTrade(trade.getUniqueId());
    ManageablePosition position = getPositionMaster().get(previousTrade.getParentPositionId()).getPosition();
    if (!trade.getSecurityLink().equals(previousTrade.getSecurityLink())) {
      throw new IllegalArgumentException("Cannot update a trade's security. new version " + trade +
                                             ", previous version: " + previousTrade);
    }
    List<ManageableTrade> trades = Lists.newArrayList();
    for (ManageableTrade existingTrade : position.getTrades()) {
      if (existingTrade.getUniqueId().equals(trade.getUniqueId())) {
        trades.add(trade);
        position.setQuantity(position.getQuantity().subtract(existingTrade.getQuantity()).add(trade.getQuantity()));
      } else {
        trades.add(existingTrade);
      }
    }
    position.setTrades(trades);
    ManageablePosition savedPosition = getPositionMaster().update(new PositionDocument(position)).getPosition();
    ManageableTrade savedTrade = savedPosition.getTrade(trade.getUniqueId().getObjectId());
    if (savedTrade == null) {
      // shouldn't ever happen
      throw new DataNotFoundException("Failed to save trade " + trade + " to position " + savedPosition);
    } else {
      return savedTrade.getUniqueId();
View Full Code Here

   */
  private ManageablePosition findPosition(ManageablePortfolioNode node, Security security) {
    for (ObjectId positionId : node.getPositionIds()) {
      // TODO which version do I want? will LATEST do?
      PositionDocument document = getPositionMaster().get(positionId, VersionCorrection.LATEST);
      ManageablePosition position = document.getPosition();
      Security positionSecurity = position.getSecurityLink().resolve(_securitySource);
      if (positionSecurity.getExternalIdBundle().containsAny(security.getExternalIdBundle())) {
        return position;
      }
    }
    return null;
View Full Code Here

      security = buildSecurity(securityData, savedUnderlying);
    }
    ManageableSecurity savedSecurity = getSecurityMaster().add(new SecurityDocument(security)).getSecurity();
    ManageableTrade trade = buildTrade(tradeData);
    trade.setSecurityLink(new ManageableSecurityLink(savedSecurity.getUniqueId()));
    ManageablePosition position = new ManageablePosition();
    position.setQuantity(BigDecimal.ONE);
    position.setSecurityLink(new ManageableSecurityLink(trade.getSecurityLink()));
    position.setTrades(Lists.newArrayList(trade));
    ManageablePosition savedPosition = getPositionMaster().add(new PositionDocument(position)).getPosition();
    ManageableTrade savedTrade = savedPosition.getTrades().get(0);

    PortfolioSearchRequest searchRequest = new PortfolioSearchRequest();
    searchRequest.addNodeObjectId(nodeId.getObjectId());
    PortfolioSearchResult searchResult = getPortfolioMaster().search(searchRequest);
    ManageablePortfolio portfolio = searchResult.getSinglePortfolio();
    ManageablePortfolioNode node = findNode(portfolio, nodeId);
    node.addPosition(savedPosition.getUniqueId());
    getPortfolioMaster().update(new PortfolioDocument(portfolio));
    return savedTrade.getUniqueId();
  }
View Full Code Here

  /* package */ UniqueId updatePosition(UniqueId positionId,
                                        BeanDataSource tradeData,
                                        BeanDataSource securityData,
                                        BeanDataSource underlyingData) {
    ManageableTrade trade = buildTrade(tradeData);
    ManageablePosition position = getPositionMaster().get(positionId).getPosition();
    ManageableSecurity previousSecurity = loadSecurity(position.getSecurityLink());
    return updateSecuritiesAndPosition(securityData, underlyingData, trade, previousSecurity, positionId);
  }
View Full Code Here

    // any changes in the security data are interpreted as edits to the security
    validateSecurity(security, previousSecurity);
    security.setUniqueId(previousSecurity.getUniqueId());
    ManageableSecurity savedSecurity = getSecurityMaster().update(new SecurityDocument(security)).getSecurity();
    trade.setSecurityLink(new ManageableSecurityLink(savedSecurity.getUniqueId()));
    ManageablePosition position = getPositionMaster().get(positionId).getPosition();
    position.setTrades(Lists.newArrayList(trade));
    ManageablePosition savedPosition = getPositionMaster().update(new PositionDocument(position)).getPosition();
    ManageableTrade savedTrade = savedPosition.getTrades().get(0);
    return savedTrade.getUniqueId();
  }
View Full Code Here

    updatePosition(doc, quantity, trades);
    return Response.ok().build();
  }

  private URI updatePosition(PositionDocument doc, BigDecimal quantity, Collection<ManageableTrade> trades) {
    ManageablePosition position = doc.getPosition();
    if (Objects.equal(position.getQuantity(), quantity) == false || trades != null) {
      position.setQuantity(quantity);
      position.getTrades().clear();
      for (ManageableTrade trade : trades) {
        trade.setSecurityLink(position.getSecurityLink());
        position.addTrade(trade);
      }
      doc = data().getPositionMaster().update(doc);
      data().setPosition(doc);
    }
    return WebPositionResource.uri(data());
View Full Code Here

    return addPosition(quantity, secUid, Collections.<ManageableTrade>emptyList());
  }
 
  private URI addPosition(BigDecimal quantity, UniqueId secUid, Collection<ManageableTrade> trades) {
    ExternalIdBundle secId = data().getSecuritySource().get(secUid).getExternalIdBundle();
    ManageablePosition position = new ManageablePosition(quantity, secId);
    for (ManageableTrade trade : trades) {
      trade.setSecurityLink(new ManageableSecurityLink(secId));
      position.addTrade(trade);
    }
    PositionDocument doc = new PositionDocument(position);
    doc = data().getPositionMaster().add(doc);
    data().setPosition(doc);
    return WebPositionResource.uri(data());
View Full Code Here

TOP

Related Classes of com.opengamma.master.position.ManageablePosition

Copyright © 2018 www.massapicom. 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.