| 1 | package net.sourceforge.finmodel.account; |
| 2 | |
| 3 | import java.math.BigDecimal; |
| 4 | import java.util.ArrayList; |
| 5 | import java.util.List; |
| 6 | |
| 7 | import net.sourceforge.finmodel.asset.Stock; |
| 8 | import net.sourceforge.finmodel.rules.APRRule; |
| 9 | import net.sourceforge.finmodel.rules.Rule; |
| 10 | |
| 11 | public class StockAccount extends AccountImpl { |
| 12 | private CashAccount dividendSource; |
| 13 | private APRRule dividendRule; |
| 14 | |
| 15 | static final long serialVersionUID = 1L; |
| 16 | |
| 17 | public StockAccount() { |
| 18 | |
| 19 | } |
| 20 | |
| 21 | public StockAccount(Stock stock, BigDecimal rate) { |
| 22 | super( stock.getName(), stock); |
| 23 | init(stock); |
| 24 | } |
| 25 | |
| 26 | |
| 27 | private void init(Stock stock) { |
| 28 | dividendSource = new CashAccount("DIV: " + stock.getName()); |
| 29 | dividendRule = new APRRule(); |
| 30 | dividendRule.setSource(dividendSource); |
| 31 | dividendRule.setDestination(this); |
| 32 | dividendRule.setExamine(this); |
| 33 | dividendRule.setAPR(stock.getDividendYield()); |
| 34 | } |
| 35 | |
| 36 | |
| 37 | public List<Rule> getInherentRules() { |
| 38 | List<Rule> rc = new ArrayList<Rule>(); |
| 39 | rc.add(dividendRule); |
| 40 | return rc; |
| 41 | } |
| 42 | |
| 43 | } |