EMMA Coverage Report (generated Sat Jan 08 08:46:59 EST 2011)
[all classes][net.sourceforge.finmodel.rules]

COVERAGE SUMMARY FOR SOURCE FILE [APRRule.java]

nameclass, %method, %block, %line, %
APRRule.java0%   (0/1)0%   (0/7)0%   (0/132)0%   (0/25)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class APRRule0%   (0/1)0%   (0/7)0%   (0/132)0%   (0/25)
$SWITCH_TABLE$org$jfin$date$Frequency (): int [] 0%   (0/1)0%   (0/62)0%   (0/1)
APRRule (): void 0%   (0/1)0%   (0/3)0%   (0/1)
getAPR (): BigDecimal 0%   (0/1)0%   (0/3)0%   (0/1)
getAmount (Calendar): BigDecimal 0%   (0/1)0%   (0/53)0%   (0/18)
getExamine (): Account 0%   (0/1)0%   (0/3)0%   (0/1)
setAPR (BigDecimal): void 0%   (0/1)0%   (0/4)0%   (0/2)
setExamine (Account): void 0%   (0/1)0%   (0/4)0%   (0/2)

1package net.sourceforge.finmodel.rules;
2 
3import java.math.BigDecimal;
4import java.math.MathContext;
5import java.math.RoundingMode;
6import java.util.Calendar;
7 
8import net.sourceforge.finmodel.account.Account;
9 
10public class APRRule extends PeriodicRule implements Rule {
11        public static final long serialVersionUID = 1L;
12        
13        private BigDecimal apr;
14        private Account examine;
15        
16        public void setAPR(BigDecimal apr) {
17                this.apr = apr;
18        }
19 
20        public BigDecimal getAPR() {
21                return apr;
22        }
23 
24        public void setExamine(Account examine) {
25                this.examine = examine;
26        }
27 
28        public Account getExamine() {
29                return examine;
30        }
31 
32        public BigDecimal getAmount(Calendar calendar) {
33                double timesPerYear = 12;
34                switch (getFrequency()) {
35                case WEEKLY:
36                        timesPerYear = 52;
37                        break;
38                case MONTHLY:
39                        timesPerYear = 12;
40                        break;
41                case ANNUALLY:
42                        timesPerYear = 1;
43                        break;
44                case QUARTERLY:
45                        timesPerYear = 4;
46                        break;
47                case SEMI_ANNUALLY:
48                        timesPerYear = 2;
49                        break;
50                default:
51                        timesPerYear = 12;
52                }
53                
54                double interestPerCycle = apr.doubleValue() / timesPerYear;
55                double amt = getExamine().getBalance(calendar).doubleValue() * interestPerCycle;
56                MathContext context = new MathContext(2, RoundingMode.HALF_DOWN);
57                
58                BigDecimal amount = new BigDecimal(amt, context);
59                return amount;
60        }
61}

[all classes][net.sourceforge.finmodel.rules]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov