import java.awt.*; import java.applet.*; // Domain Logic public class ReportGenerator extends DomainLogic { // inherits from DomainLogic public ReportGenerator(TextArea textArea1) { super(textArea1); } public void doPortfolio() { // display portfolio if (chkLogin()) { textArea1.append("PORTFOLIO:\n"); double sum = 0.0; textArea1.append("Stock Shares Market\n"); textArea1.append("----- ------- ---------\n"); for (int i=0; i<account.holdings.size(); i++) { Holding holding = (Holding) account.holdings.elementAt(i); String stockStr = pad(holding.stock.SYM,7," ",false); String qty = pad(String.valueOf(holding.QTY),7," ",true); double market = holding.QTY * holding.stock.PRICE; String marketStr = String.valueOf(market); marketStr = pad(marketStr,12," ",true); textArea1.append(stockStr+qty+marketStr+"\n"); sum += market; } String sumStr = Double.toString(sum); sumStr = pad(sumStr,9," ",true); textArea1.append(" ---------\n"); textArea1.append(" $"+sumStr+"\n"); String cashStr= String.valueOf(account.CASH); cashStr = pad(cashStr,9," ",true); textArea1.append("Cash $"+cashStr+"\n"); textArea1.append(" ---------\n"); sum = sum + account.CASH; sumStr = Double.toString(sum); sumStr = pad(sumStr,9," ",true); textArea1.append("Net Worth $"+sumStr+"\n"); textArea1.append(" =========\n\n"); } } public void showOrders() { // display orders if (chkLogin()) { textArea1.append("ORDERS:\n"); for (int i=0; i<account.orders.size(); i++) { Order order = (Order)account.orders.elementAt(i); textArea1.append(order.toString()+"\n"); } textArea1.append("\n"); } } public void showTrans() { // display transactions if (chkLogin()) { textArea1.append("TRANSACTIONS:\n"); for (int i=0; i<account.transactions.size(); i++) { Transaction trans = (Transaction)account.transactions.elementAt(i); textArea1.append(trans.toString()+"\n"); } textArea1.append("\n"); } } private String lastPrice(Stock stock) { // last traded price is stored in stock class return "$"+stock.PRICE; } private String maxPrice(Stock stock) { // maximum offered price is root of buyheap String price = "NONE"; if (stock.buyheap.size() > 0) { Order order = stock.buyheap.testRoot(); price = "$"+order.PRICE; } return price; } private String minPrice(Stock stock) { // minimum offered price is root of sellheap String price = "NONE"; if (stock.sellheap.size() > 0) { Order order = stock.sellheap.testRoot(); price = "$"+order.PRICE; } return price; } public void showQuote(String sym) { // lookup the stock in the hashtable, and display prices sym = sym.toUpperCase(); if (sym.equals("")) textArea1.append("Empty stock field.\n"); else { Stock stock = (Stock) Stock.stocks.get(sym); if (stock == null) textArea1.append("Invalid stock symbol: "+ sym +"\n"); else textArea1.append("Quote: "+ sym +" Minimum SELL: "+minPrice(stock)+ " Maximum BUY: "+maxPrice(stock)+ " Last Sale: "+lastPrice(stock)+"\n\n"); } } } // class ReportGenerator