calculator.jsp
001 <%@ page import="trail.lifecycle.*,
002                  javax.naming.*,
003                  java.text.*,
004                  java.util.ArrayList,
005                  java.security.Principal"%>
006 
007 <%!
008   private NumberFormat nf = null;
009 
010   public void jspInit () {
011     nf = NumberFormat.getInstance();
012     nf.setMaximumFractionDigits(2);
013   }
014 %>
015 
016 <html>
017 
018 <%
019   Calculator cal =
020       (Calculatorsession.getAttribute("lifecycle_cal");
021   if (cal == null) {
022     try {
023       InitialContext ctx = new InitialContext();
024       cal = (Calculatorctx.lookup(
025                 "EJB3Trail/SessionCalculator/local");
026       session.setAttribute ("lifecycle_cal", cal);
027     catch (Exception e) {
028       e.printStackTrace ();
029     }
030   }
031 
032   if ("Logout".equals(request.getParameter("action"))) {
033     cal.stopSession ();
034     session.setAttribute ("lifecycle_cal"null);
035 %>
036 <head><meta http-equiv="REFRESH" content="0; URL=calculator.jsp"></head>
037 <%
038       return;
039   }
040 
041   String result;
042 
043   int start = 25;
044   int end = 65;
045   double growthrate = 0.08;
046   double saving = 300.0;
047 
048   try {
049     start = Integer.parseInt(request.getParameter ("start"));
050     end = Integer.parseInt(request.getParameter ("end"));
051     growthrate = Double.parseDouble(request.getParameter ("growthrate"));
052     saving = Double.parseDouble(request.getParameter ("saving"));
053 
054     double res = cal.calculate(start, end, growthrate, saving);
055     result = nf.format(res);
056 
057   catch (Exception e) {
058     // e.printStackTrace ();
059     result = "Not valid";
060   }
061 %>
062 
063 <body>
064 
065 <p><center>
066 <form action="calculator.jsp" method="POST">
067   <input type="hidden" name="action" value="Logout"><br/>
068   <input type="submit" value="Terminate current session">
069 </form>
070 </center></p>
071 
072 <p>Investment calculator with session history<br/>
073 This calculator has served <b><%=SessionRecord.totalSess%></b> sessions (i.e., unique users). Among them, <b><%=SessionRecord.activeSess%></b> sessions are currently active. Among the active sessions, <b><%=SessionRecord.pausedSess%></b> sessions are currently stored out of the RAM.<br/>
074 
075 <form action="calculator.jsp" method="POST">
076   Start age = <input type="text" name="start" value="<%=start%>"><br/>
077   End age   = <input type="text" name="end" value="<%=end%>"><br/>
078   Annual Growth Rate = <input type="text" name="growthrate" value="<%=growthrate%>"><br/>
079   Montly Saving = <input type="text" name="saving" value="<%=saving%>"><br/>
080   <input type="submit" value="Calculate">
081   <INPUT type="button" value="Close Window" onClick="window.close()">
082 </form>
083 </p>
084 
085 <p>The result from the last calculation: The total investment at end age is
086 <b><%=result%></b></p>
087 
088 <p><i>Past results</i><br/>
089 <%
090   int entries = cal.getStarts().size();
091 %>
092 <table>
093 <tr>
094 <td>Start Age</td>
095 <td>Edn Age</td>
096 <td>Annual Growth rate</td>
097 <td>Monthly savings</td>
098 <td><b>Total investment</b></td>
099 </tr>
100 
101 <%
102   for (int i = 0; i < entries; i++) {
103 %>
104 
105 <tr>
106 <td><%=cal.getStarts().get(i)%></td>
107 <td><%=cal.getEnds().get(i)%></td>
108 <td><%=nf.format(cal.getGrowthrates().get(i))%></td>
109 <td><%=nf.format(cal.getSavings().get(i))%></td>
110 <td><%=nf.format(cal.getResults().get(i))%></td>
111 </tr>
112 
113 <%
114   }
115 %>
116 </table></p>
117 
118 </body></html>