KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > rice > rubis > beans > servlets > SearchItemsByCategory


1 package edu.rice.rubis.beans.servlets;
2
3 import java.io.IOException JavaDoc;
4 import java.net.URLEncoder JavaDoc;
5
6 import javax.jms.MapMessage JavaDoc;
7 import javax.jms.Session JavaDoc;
8 import javax.jms.TextMessage JavaDoc;
9 import javax.jms.Topic JavaDoc;
10 import javax.jms.TopicConnection JavaDoc;
11 import javax.jms.TopicConnectionFactory JavaDoc;
12 import javax.jms.TopicRequestor JavaDoc;
13 import javax.jms.TopicSession JavaDoc;
14 import javax.naming.Context JavaDoc;
15 import javax.naming.InitialContext JavaDoc;
16 import javax.servlet.ServletException JavaDoc;
17 import javax.servlet.http.HttpServlet JavaDoc;
18 import javax.servlet.http.HttpServletRequest JavaDoc;
19 import javax.servlet.http.HttpServletResponse JavaDoc;
20
21 /** This servlets displays a list of items belonging to a specific category.
22  * It must be called this way :
23  * <pre>
24  * http://..../SearchItemsByCategory?category=xx&categoryName=yy
25  * where xx is the category id
26  * and yy is the category name
27  * </pre>
28  * @author <a HREF="mailto:cecchet@rice.edu">Emmanuel Cecchet</a> and <a HREF="mailto:julie.marguerite@inrialpes.fr">Julie Marguerite</a>
29  * @version 1.0
30  */

31
32 public class SearchItemsByCategory extends HttpServlet JavaDoc
33 {
34
35   private void printError(String JavaDoc errorMsg, ServletPrinter sp)
36   {
37     sp.printHTMLheader("RUBiS ERROR: Search Items By Category");
38     sp.printHTML("<h2>We cannot process your request due to the following error :</h2><br>");
39     sp.printHTML(errorMsg);
40   }
41
42   private void itemList(Integer JavaDoc categoryId, int page, int nbOfItems, ServletPrinter sp, Context JavaDoc initialContext, String JavaDoc categoryName)
43   {
44     TopicConnectionFactory JavaDoc topicFactory = null;
45     TopicConnection JavaDoc connection = null;
46     TopicSession JavaDoc session = null;
47     Topic JavaDoc topic = null;
48     String JavaDoc list;
49     try
50     {
51       // lookup the connection factory
52
topicFactory = (TopicConnectionFactory JavaDoc)initialContext.lookup(Config.TopicConnectionFactoryName);
53       // create a connection to the JMS provider
54
connection = topicFactory.createTopicConnection();
55       // lookup the destination
56
topic = (Topic JavaDoc) initialContext.lookup(Config.PrefixTopicName+"topicSearchItemsByCategory");
57       // create a session
58
session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); // no transaction and auto ack
59
}
60     catch (Exception JavaDoc e)
61     {
62       sp.printHTML("Cannot connect to message bean MDB_SearchItemsByCategory : " +e+"<br>");
63       return ;
64     }
65     try
66     {
67       // create a requestor to receive the reply
68
TopicRequestor JavaDoc requestor = new TopicRequestor JavaDoc(session, topic);
69       // create a message
70
MapMessage JavaDoc message = session.createMapMessage();
71       // set parameters
72
message.setInt("categoryId", categoryId.intValue());
73       message.setInt("page", page);
74       message.setInt("nbItems", nbOfItems);
75       message.setJMSCorrelationID("searchByCategory");
76       // send the message and receive the reply
77
connection.start(); // allows message to be delivered (default is connection stopped)
78
TextMessage JavaDoc reply = (TextMessage JavaDoc)requestor.request(message);
79       connection.stop();
80       // read the reply
81
list = reply.getText();
82       // close connection and session
83
requestor.close(); // also close the session
84
connection.close();
85     }
86     catch (Exception JavaDoc e)
87     {
88       sp.printHTML("Cannot get the list of items: " +e+"<br>");
89       return ;
90     }
91     try
92     {
93       if ((list != null) && (!list.equals("")))
94       {
95         sp.printItemHeader();
96         sp.printHTML(list);
97         sp.printItemFooter();
98       }
99       else
100       {
101         if (page == 0)
102           sp.printHTML("<h2>Sorry, but there are no items available in this category !</h2>");
103         else
104         {
105           sp.printHTML("<h2>Sorry, but there are no more items available in this category !</h2>");
106           // sp.printItemHeader();
107
sp.printItemFooter("<a HREF=\""+Config.context+"/servlet/edu.rice.rubis.beans.servlets.SearchItemsByCategory?category="+categoryId+
108                            "&categoryName="+URLEncoder.encode(categoryName)+"&page="+(page-1)+"&nbOfItems="+nbOfItems+"\">Previous page</a>", "");
109         }
110         return ;
111       }
112       if (page == 0)
113         sp.printItemFooter("", "<a HREF=\""+Config.context+"/servlet/edu.rice.rubis.beans.servlets.SearchItemsByCategory?category="+categoryId+
114                            "&categoryName="+URLEncoder.encode(categoryName)+"&page="+(page+1)+"&nbOfItems="+nbOfItems+"\">Next page</a>");
115       else
116         sp.printItemFooter("<a HREF=\""+Config.context+"/servlet/edu.rice.rubis.beans.servlets.SearchItemsByCategory?category="+categoryId+
117                            "&categoryName="+URLEncoder.encode(categoryName)+"&page="+(page-1)+"&nbOfItems="+nbOfItems+"\">Previous page</a>",
118                            "<a HREF=\""+Config.context+"/servlet/edu.rice.rubis.beans.servlets.SearchItemsByCategory?category="+categoryId+
119                            "&categoryName="+URLEncoder.encode(categoryName)+"&page="+(page+1)+"&nbOfItems="+nbOfItems+"\">Next page</a>");
120     }
121     catch (Exception JavaDoc e)
122     {
123       printError("Exception getting item list: " + e +"<br>", sp);
124     }
125   }
126
127
128   /**
129    * Describe <code>doGet</code> method here.
130    *
131    * @param request a <code>HttpServletRequest</code> value
132    * @param response a <code>HttpServletResponse</code> value
133    * @exception IOException if an error occurs
134    * @exception ServletException if an error occurs
135    */

136   public void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws IOException JavaDoc, ServletException JavaDoc
137   {
138     ServletPrinter sp = null;
139     Context JavaDoc initialContext = null;
140     String JavaDoc categoryName;
141     String JavaDoc value;
142     Integer JavaDoc categoryId;
143     Integer JavaDoc page;
144     Integer JavaDoc nbOfItems;
145
146     categoryName = request.getParameter("categoryName");
147     sp = new ServletPrinter(response, "SearchItemsByCategory");
148
149     value = request.getParameter("category");
150     if ((value == null) || (value.equals("")))
151     {
152       printError("You must provide a category identifier!<br>", sp);
153       return ;
154     }
155     else
156       categoryId = new Integer JavaDoc(value);
157
158     value = request.getParameter("page");
159     if ((value == null) || (value.equals("")))
160       page = new Integer JavaDoc(0);
161     else
162       page = new Integer JavaDoc(value);
163
164     value = request.getParameter("nbOfItems");
165     if ((value == null) || (value.equals("")))
166       nbOfItems = new Integer JavaDoc(25);
167     else
168       nbOfItems = new Integer JavaDoc(value);
169
170     try
171     {
172       initialContext = new InitialContext JavaDoc();
173     }
174     catch (Exception JavaDoc e)
175     {
176       printError("Cannot get initial context for JNDI: " + e+"<br>", sp);
177       return ;
178     }
179
180     if (categoryName == null)
181     {
182       sp.printHTMLheader("RUBiS: Missing category name");
183       sp.printHTML("<h2>Items in this category</h2><br><br>");
184     }
185     else
186     {
187       sp.printHTMLheader("RUBiS: Items in category "+categoryName);
188       sp.printHTML("<h2>Items in category "+categoryName+"</h2><br><br>");
189     }
190
191     itemList(categoryId, page.intValue(), nbOfItems.intValue(), sp, initialContext, categoryName);
192         
193     sp.printHTMLfooter();
194   }
195
196
197   /**
198    * Call the <code>doGet</code> method.
199    *
200    * @param request a <code>HttpServletRequest</code> value
201    * @param response a <code>HttpServletResponse</code> value
202    * @exception IOException if an error occurs
203    * @exception ServletException if an error occurs
204    */

205   public void doPost(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws IOException JavaDoc, ServletException JavaDoc
206   {
207     doGet(request, response);
208   }
209 }
210
Popular Tags