SessionCalculator.java
01 package trail.lifecycle;
02 
03 import javax.ejb.*;
04 import javax.annotation.*;
05 import java.util.*;
06 import java.io.Serializable;
07 
08 @Stateful
09 public class SessionCalculator implements Calculator, Serializable {
10 
11   public ArrayList <Integer> starts, ends;
12   public ArrayList <Double> growthrates, savings, results;
13 
14   @PostConstruct
15   public void initialize () {
16     System.err.println("Init is called");
17     starts = new ArrayList <Integer> ();
18     ends = new ArrayList <Integer> ();
19     growthrates = new ArrayList <Double> ();
20     savings = new ArrayList <Double> ();
21     results = new ArrayList <Double> ();
22 
23     SessionRecord.totalSess++;
24     SessionRecord.activeSess++;
25   }
26 
27   @PreDestroy
28   public void exit () {
29     System.err.println("exit is called");
30     SessionRecord.activeSess--;
31   }
32 
33   @PrePassivate
34   public void serialize () {
35     System.err.println("serialize is called");
36     SessionRecord.pausedSess++;
37   }
38 
39   @PostActivate
40   public void activate () {
41     System.err.println("activate is called");
42     SessionRecord.pausedSess--;
43   }
44 
45   @Remove
46   public void stopSession () {
47     // Call to this method signals the container
48     // to remove this bean instance and terminates
49     // the session.
50   }
51 
52   public double calculate (int start, int end, double growthrate, double saving) {
53     double tmp = Math.pow(1. + growthrate / 12.12. (end - start1);
54     double result = saving * 12. (tmp - 1/ growthrate;
55 
56     starts.add(Integer.valueOf(start));
57     ends.add(Integer.valueOf(end));
58     growthrates.add(Double.valueOf(growthrate));
59     savings.add(Double.valueOf(saving));
60     results.add(Double.valueOf(result));
61 
62     return result;
63   }
64 
65   public ArrayList <Integer> getStarts () {
66     return starts;
67   }
68 
69   public ArrayList <Integer> getEnds () {
70     return ends;
71   }
72 
73   public ArrayList <Double> getGrowthrates () {
74     return growthrates;
75   }
76 
77   public ArrayList <Double> getSavings () {
78     return savings;
79   }
80 
81   public ArrayList <Double> getResults () {
82     return results;
83   }
84 
85 }