/** * Creates a summary instance for a position. * * @param position the position * @param type the type * @param description the description * @param currencies the currencies, may be empty * @return the string form */ public static PortfolioItemSummary summary(Position position, ProductType type, String description, Currency... currencies) { return PortfolioItemSummary.of( position.getId().orElse(null), PortfolioItemType.POSITION, type, ImmutableSet.copyOf(currencies), description); }
@Override public Set<String> tokens(Position position) { MetaBean metaBean = MetaBean.of(position.getClass()); return Sets.union(metaBean.metaPropertyMap().keySet(), position.getInfo().propertyNames()); }
@Override public default PortfolioItemSummary summarize() { // AAPL x 200 String description = getSecurityId().getStandardId().getValue() + " x " + SummarizerUtils.value(getQuantity()); return SummarizerUtils.summary(this, ProductType.SECURITY, description); }
public void test_methods() { Position test = sut(); assertEquals(test.getId(), Optional.empty()); assertEquals(test.getInfo(), PositionInfo.empty()); assertEquals(test.getQuantity(), 123d); assertEquals(test.getSecurityId(), SecurityId.of(STANDARD_ID)); }
public void test_summarize() { Position trade = sut(); PortfolioItemSummary expected = PortfolioItemSummary.builder() .portfolioItemType(PortfolioItemType.POSITION) .productType(ProductType.SECURITY) .description("B x 123") .build(); assertEquals(trade.summarize(), expected); }
@Override public EvaluationResult evaluate( Position position, CalculationFunctions functions, String firstToken, List<String> remainingTokens) { MetaBean metaBean = MetaBean.of(position.getClass()); // position Optional<String> positionPropertyName = metaBean.metaPropertyMap().keySet().stream() .filter(p -> p.equalsIgnoreCase(firstToken)) .findFirst(); if (positionPropertyName.isPresent()) { Object propertyValue = metaBean.metaProperty(positionPropertyName.get()).get((Bean) position); return propertyValue != null ? EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken); } // position info Optional<String> positionInfoPropertyName = position.getInfo().propertyNames().stream() .filter(p -> p.equalsIgnoreCase(firstToken)) .findFirst(); if (positionInfoPropertyName.isPresent()) { Object propertyValue = position.getInfo().property(positionInfoPropertyName.get()).get(); return propertyValue != null ? EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken); } // not found return invalidTokenFailure(position, firstToken); }