@Override public PortfolioDocument update(PortfolioDocument document) { ArgumentChecker.notNull(document, "document"); ArgumentChecker.notNull(document.getUniqueId(), "document.uniqueId"); ArgumentChecker.notNull(document.getPortfolio(), "document.portfolio"); final UniqueId uniqueId = document.getUniqueId(); final Instant now = Instant.now(); final PortfolioDocument storedDocument = _store.get(uniqueId.getObjectId()); if (storedDocument == null) { throw new DataNotFoundException("Portfolio not found: " + uniqueId); } final PortfolioDocument clonedDoc = clonePortfolioDocument(document); removeNodes(storedDocument.getPortfolio().getRootNode()); setVersionTimes(document, clonedDoc, now, null, now, null); if (_store.replace(uniqueId.getObjectId(), storedDocument, clonedDoc) == false) { throw new IllegalArgumentException("Concurrent modification"); } storeNodes( clonedDoc.getPortfolio().getRootNode(), document.getPortfolio().getRootNode(), uniqueId, null); _changeManager.entityChanged( ChangeType.CHANGED, document.getObjectId(), document.getVersionFromInstant(), document.getVersionToInstant(), now); updateCaches(storedDocument, clonedDoc); return document; }
@Override public PortfolioDocument add(PortfolioDocument document) { ArgumentChecker.notNull(document, "document"); ArgumentChecker.notNull(document.getPortfolio(), "document.portfolio"); final ObjectId objectId = _objectIdSupplier.get(); final UniqueId uniqueId = objectId.atVersion(""); final Instant now = Instant.now(); final PortfolioDocument clonedDoc = clonePortfolioDocument(document); setDocumentId(document, clonedDoc, uniqueId); setVersionTimes(document, clonedDoc, now, null, now, null); _store.put(objectId, clonedDoc); storeNodes( clonedDoc.getPortfolio().getRootNode(), document.getPortfolio().getRootNode(), uniqueId, null); _changeManager.entityChanged( ChangeType.ADDED, objectId, document.getVersionFromInstant(), document.getVersionToInstant(), now); updateCaches(null, clonedDoc); return document; }
private void setDocumentId( final PortfolioDocument document, final PortfolioDocument clonedDoc, final UniqueId uniqueId) { document.getPortfolio().setUniqueId(uniqueId); clonedDoc.getPortfolio().setUniqueId(uniqueId); document.setUniqueId(uniqueId); clonedDoc.setUniqueId(uniqueId); }
/** * Creates the output root data. * * @return the output root data, not null */ protected FlexiBean createRootData() { FlexiBean out = super.createRootData(); PortfolioDocument doc = data().getPortfolio(); out.put("portfolioDoc", doc); out.put("portfolio", doc.getPortfolio()); out.put("childNodes", doc.getPortfolio().getRootNode().getChildNodes()); out.put("deleted", !doc.isLatest()); out.put("rootNode", doc.getPortfolio().getRootNode()); return out; }
private URI updatePortfolio(String name, DocumentVisibility visibility, PortfolioDocument doc) { doc.getPortfolio().setName(name); doc.setVisibility(visibility); doc = data().getPortfolioMaster().update(doc); data().setPortfolio(doc); URI uri = WebPortfolioResource.uri(data()); return uri; }
// ------------------------------------------------------------------------- @Override public PortfolioDocument add(final PortfolioDocument document) { ArgumentChecker.notNull(document, "document"); ArgumentChecker.notNull(document.getPortfolio(), "document.portfolio"); ArgumentChecker.notNull(document.getPortfolio().getRootNode(), "document.portfolio.rootNode"); URI uri = DataPortfoliosResource.uri(getBaseUri(), null); return accessRemote(uri).post(PortfolioDocument.class, document); }
// ------------------------------------------------------------------------- @Override public PortfolioDocument correct(final PortfolioDocument document) { ArgumentChecker.notNull(document, "document"); ArgumentChecker.notNull(document.getPortfolio(), "document.portfolio"); ArgumentChecker.notNull(document.getUniqueId(), "document.uniqueId"); URI uri = DataPortfolioResource.uriVersion(getBaseUri(), document.getUniqueId()); return accessRemote(uri).put(PortfolioDocument.class, document); }
private PortfolioDocument clonePortfolioDocument(PortfolioDocument document) { if (isCloneResults()) { PortfolioDocument clone = JodaBeanUtils.clone(document); ManageablePortfolio portfolioClone = JodaBeanUtils.clone(document.getPortfolio()); portfolioClone.setRootNode(clonePortfolioNode(portfolioClone.getRootNode())); clone.setPortfolio(portfolioClone); return clone; } else { return document; } }
private FlexiBean createPortfolioData() { PortfolioDocument doc = data().getPortfolio(); PositionSearchRequest positionSearch = new PositionSearchRequest(); positionSearch.setPositionObjectIds(doc.getPortfolio().getRootNode().getPositionIds()); PositionSearchResult positionsResult = data().getPositionMaster().search(positionSearch); FlexiBean out = createRootData(); out.put("positionsResult", positionsResult); out.put("positions", positionsResult.getPositions()); return out; }
@Override public void remove(ObjectIdentifiable objectIdentifiable) { ArgumentChecker.notNull(objectIdentifiable, "objectIdentifiable"); PortfolioDocument storedDocument = _store.remove(objectIdentifiable.getObjectId()); if (storedDocument == null) { throw new DataNotFoundException("Portfolio not found " + objectIdentifiable); } removeNodes(storedDocument.getPortfolio().getRootNode()); _changeManager.entityChanged( ChangeType.REMOVED, objectIdentifiable.getObjectId(), null, null, Instant.now()); updateCaches(storedDocument, null); }
// ------------------------------------------------------------------------- @Override protected void validateDocument(PortfolioDocument document) { ArgumentChecker.notNull(document, "document"); ArgumentChecker.notNull(document.getPortfolio(), "document.portfolio"); }