KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dso > DSODemoServlet


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package dso;
5
6 import com.tc.config.Directories;
7
8 import java.io.FileInputStream JavaDoc;
9 import java.io.FileNotFoundException JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.io.InputStream JavaDoc;
12 import java.io.OutputStream JavaDoc;
13 import java.util.HashMap JavaDoc;
14 import java.util.Iterator JavaDoc;
15 import java.util.List JavaDoc;
16
17 import javax.servlet.http.HttpServlet JavaDoc;
18 import javax.servlet.http.HttpServletRequest JavaDoc;
19 import javax.servlet.http.HttpServletResponse JavaDoc;
20
21 public class DSODemoServlet extends HttpServlet JavaDoc {
22   private final static String JavaDoc SEP = System.getProperty("file.separator");
23   private final static String JavaDoc REPEAT_FIELD = "repeat";
24   private final static String JavaDoc NUMBER1_FIELD = "number1";
25   private final static String JavaDoc NUMBER2_FIELD = "number2";
26   private final static String JavaDoc SIGN_FIELD = "sign";
27   private String JavaDoc HTML_PATH;
28   private SimpleSharedQueueExample workQueue = new SimpleSharedQueueExample();
29
30   public void init() {
31     try {
32       HTML_PATH = Directories.getInstallationRoot() + SEP + "demo" + SEP + "demo.html";
33     } catch (FileNotFoundException JavaDoc e) {
34       throw new RuntimeException JavaDoc(e);
35     }
36   }
37
38   public void doPost(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws IOException JavaDoc {
39     String JavaDoc pathInContext = request.getRequestURI();
40     if (pathInContext.endsWith("/add_work_item.asp")) {
41       final float number1 = getFloatForParameter(request, NUMBER1_FIELD);
42       final float number2 = getFloatForParameter(request, NUMBER2_FIELD);
43       final char sign = request.getParameter(SIGN_FIELD).charAt(0);
44       final int timesRepeat = getIntForParameter(request, REPEAT_FIELD);
45       new Thread JavaDoc() {
46         public void run() {
47           workQueue.addAction(number1, number2, sign, timesRepeat);
48         }
49       }.start();
50       response.sendRedirect(request.getServletPath());
51       return;
52     }
53
54     if (pathInContext.endsWith("/clear_all.asp")) {
55       workQueue.clearResults();
56       response.sendRedirect(request.getServletPath());
57       return;
58     }
59   }
60
61   public void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws IOException JavaDoc {
62
63     OutputStream JavaDoc out = response.getOutputStream();
64
65     InputStream JavaDoc is = new FileInputStream JavaDoc(HTML_PATH);
66
67     byte[] buffer = new byte[4096];
68     while (is.available() > 0) {
69       int read = is.read(buffer);
70       out.write(buffer, 0, read);
71     }
72
73     // ARI: Make a summary table as well as a detail table.
74
HashMap JavaDoc resultsSummary = workQueue.getResultsSummary();
75     out.write("<hr><h1> L1 Client Summary</h1>\n".getBytes());
76     out.write("<table>\n<tr><th>SERVER</th><th>EXECUTES</th><th>PUTS\n</th>\n</tr>".getBytes());
77
78     for (Iterator JavaDoc i = resultsSummary.values().iterator(); i.hasNext();) {
79       out.write(i.next().toString().getBytes());
80     }
81
82     out.write("</table>\n".getBytes());
83     out.write("<hr> <h1>Last 15 Executions</h1>\n".getBytes());
84
85     out.write("<ol>\n".getBytes());
86     List JavaDoc results = workQueue.getResults();
87     for (Iterator JavaDoc i = results.iterator(); i.hasNext();) {
88       out.write(("<li>" + i.next() + "</li>\n").getBytes());
89     }
90
91     out.write("</ol></div></body></html>\n".getBytes());
92   }
93
94   private float getFloatForParameter(HttpServletRequest JavaDoc request, String JavaDoc name) {
95     String JavaDoc param = request.getParameter(name);
96     try {
97       return param == null ? 0 : Float.parseFloat(param);
98     } catch (NumberFormatException JavaDoc nfe) {
99       return 0;
100     }
101   }
102
103   private int getIntForParameter(HttpServletRequest JavaDoc request, String JavaDoc name) {
104     String JavaDoc param = request.getParameter(name);
105     try {
106       return param == null ? 0 : Integer.parseInt(param);
107     } catch (NumberFormatException JavaDoc nfe) {
108       return 0;
109     }
110   }
111 }
Popular Tags