001 <%@ page import="trail.interceptor.*,
002 javax.naming.*,
003 java.text.*,
004 java.util.ArrayList"%>
005
006 <%!
007 private NumberFormat nf = null;
008
009 public void jspInit () {
010 nf = NumberFormat.getInstance();
011 nf.setMaximumFractionDigits(2);
012 }
013 %>
014
015 <%
016 Calculator cal =
017 (Calculator) session.getAttribute("interceptor_cal");
018 if (cal == null) {
019 try {
020 InitialContext ctx = new InitialContext();
021 cal = (Calculator) ctx.lookup(
022 "EJB3Trail/InterceptorCalculator/local");
023 session.setAttribute ("interceptor_cal", cal);
024 } catch (Exception e) {
025 e.printStackTrace ();
026 }
027 }
028
029 String result;
030
031 int start = 25;
032 int end = 65;
033 double growthrate = 0.08;
034 double saving = 300.0;
035
036 // clear the call trace
037 cal.setTrace ("");
038
039 try {
040 start = Integer.parseInt(request.getParameter ("start"));
041 end = Integer.parseInt(request.getParameter ("end"));
042 growthrate = Double.parseDouble(request.getParameter ("growthrate"));
043 saving = Double.parseDouble(request.getParameter ("saving"));
044
045 double res = cal.calculate(start, end, growthrate, saving);
046 result = nf.format(res);
047
048 } catch (Exception e) {
049 // e.printStackTrace ();
050 result = "Not valid";
051 }
052 %>
053
054 <html><body>
055
056 <p>Investment calculator with session history<br/>
057 <form action="calculator.jsp" method="POST">
058 Start age = <input type="text" name="start" value="<%=start%>"><br/>
059 End age = <input type="text" name="end" value="<%=end%>"><br/>
060 Annual Growth Rate = <input type="text" name="growthrate" value="<%=growthrate%>"><br/>
061 Montly Saving = <input type="text" name="saving" value="<%=saving%>"><br/>
062 <input type="submit" value="Calculate">
063 <INPUT type="button" value="Close Window" onClick="window.close()">
064 </form>
065 </p>
066
067 <p>The result from the last calculation: The total investment at end age is
068 <b><%=result%></b></p>
069
070 <p><i>Past results</i><br/>
071 <%
072 int entries = cal.getStarts().size();
073 %>
074 <table>
075 <tr>
076 <td>Start Age</td>
077 <td>Edn Age</td>
078 <td>Annual Growth rate</td>
079 <td>Monthly savings</td>
080 <td><b>Total investment</b></td>
081 </tr>
082
083 <%
084 ArrayList starts = cal.getStarts();
085 ArrayList ends = cal.getEnds ();
086 ArrayList growthrates = cal.getGrowthrates ();
087 ArrayList savings = cal.getSavings ();
088 ArrayList results = cal.getResults ();
089 for (int i = 0; i < entries; i++) {
090 %>
091
092 <tr>
093 <td><%=starts.get(i)%></td>
094 <td><%=ends.get(i)%></td>
095 <td><%=nf.format(growthrates.get(i))%></td>
096 <td><%=nf.format(savings.get(i))%></td>
097 <td><%=nf.format(results.get(i))%></td>
098 </tr>
099
100 <%
101 }
102 %>
103 </table></p>
104
105 <p><i>Call trace in last invocation</i><br/>
106 <%=cal.getTrace()%>
107 </p>
108
109 </body></html>
|