public List getPortfolio() { List result = new ArrayList(); Map map = new HashMap(); for (Iterator iter2 = getTransactions().iterator(); iter2.hasNext(); ) { Transaction transaction = (Transaction) iter2.next(); PortfolioPosition position = (PortfolioPosition) map.get(transaction.getSecurity()); if (position == null) map.put( transaction.getSecurity(), new PortfolioPosition( this, transaction.getSecurity(), transaction.getQuantity(), transaction.getAmount())); else position.add(transaction.getQuantity(), transaction.getAmount()); } List list = new ArrayList(map.keySet()); Collections.sort( list, new Comparator() { public int compare(Object arg0, Object arg1) { return ((Security) arg0).getDescription().compareTo(((Security) arg1).getDescription()); } }); for (Iterator iter = list.iterator(); iter.hasNext(); ) { Security security = (Security) iter.next(); PortfolioPosition position = (PortfolioPosition) map.get(security); if (position.getQuantity() != 0) result.add(position); } return result; }
public PortfolioPosition getPortfolio(Security security) { PortfolioPosition position = new PortfolioPosition(this, security, 0, 0); for (Iterator iter2 = getTransactions().iterator(); iter2.hasNext(); ) { Transaction transaction = (Transaction) iter2.next(); if (position.getSecurity().equals(transaction.getSecurity())) position.add(transaction.getQuantity(), transaction.getAmount()); } return position; }
/** * Return the number of stocks held for the given security. * * @param security the security to search * @return holded quantity */ public int getPosition(Security security) { int result = 0; Object[] objs = getTransactions().toArray(); for (int i = 0; i < objs.length; i++) { Transaction transaction = (Transaction) objs[i]; if (transaction.getSecurity().equals(security)) result += transaction.getQuantity(); } return result; }
/** * Gets the balance of the account * * @return the account's balance */ public double getBalance() { double result = getInitialBalance(); Object[] objs = getTransactions().toArray(); for (int i = 0; i < objs.length; i++) { Transaction transaction = (Transaction) objs[i]; double amount = transaction.getAmount(); if (getCurrency() != null && !getCurrency().equals(transaction.getSecurity().getCurrency())) amount = CurrencyConverter.getInstance() .convert( transaction.getDate(), amount, transaction.getSecurity().getCurrency(), getCurrency()); result += amount; } return result; }