KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > lutris > airsent > presentation > messenger > Display


1 /*
2  * Copyright (c) 1999-2001 Lutris Technologies, Inc. All Rights
3  * Reserved.
4  *
5  * This source code file is distributed by Lutris Technologies, Inc. for
6  * use only by licensed users of product(s) that include this source
7  * file. Use of this source file or the software that uses it is covered
8  * by the terms and conditions of the Lutris Enhydra Development License
9  * Agreement included with this product.
10  *
11  * This Software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
12  * ANY KIND, either express or implied. See the License for the specific terms
13  * governing rights and limitations under the License.
14  *
15  * Contributor(s):
16  *
17  * $Id: Display.java,v 1.1 2004/08/16 09:33:18 slobodan Exp $
18  */

19
20 package com.lutris.airsent.presentation.messenger;
21
22 import com.lutris.appserver.server.httpPresentation.*;
23 import com.lutris.appserver.server.session.*;
24 import com.lutris.util.*;
25 //import com.lutris.xml.xmlc.*;
26
import org.enhydra.xml.xmlc.XMLCUtil;
27 import org.w3c.dom.*;
28 import org.enhydra.xml.xmlc.XMLObject;
29 import java.util.Date JavaDoc;
30 import com.lutris.airsent.presentation.AirSentPresentationException;
31 import com.lutris.airsent.presentation.AirSentConstants;
32 import com.lutris.airsent.presentation.DeviceBasePO;
33 import com.lutris.airsent.presentation.DeviceUtils;
34 import org.enhydra.wireless.wml.dom.WMLAElement;
35 import com.lutris.airsent.spec.delivery.Delivery;
36 import com.lutris.airsent.presentation.customer.EmailConfirmationHTML;
37 import java.lang.reflect.Method JavaDoc;
38
39 /**
40  * Display.java handles the displaying of a messenger's
41  * pickups and dropoffs as well as handling the actual
42  * pickup and delivery and confirmation email.
43  *
44  * @author
45  * @version
46  */

47 public class Display extends DeviceBasePO {
48
49     /**
50      * Constants
51      */

52     private static final int AUTH_LEVEL = AirSentConstants.UNAUTH_USER;
53
54     /**
55      * Superclass method override.
56      * returns the authorization level necessary to access this po.
57      *
58      * @return int required authorization level
59      */

60     public int getRequiredAuthLevel() {
61     return AUTH_LEVEL;
62     }
63
64     /**
65      * Default event. Just show the page.
66      *
67      * @return XMLOBject document
68      * @exception HttpPresentationException
69      */

70     public XMLObject handleDefault() throws HttpPresentationException {
71     
72     return showPage(null);
73     }
74
75     /**
76      * Displays the Display page.
77      *
78      * @param errorMsg, the error messages
79      * @return wml document
80      * @exception HttpPresentationException
81      */

82     public XMLObject showPage(String JavaDoc errorMsg)
83         throws HttpPresentationException {
84
85
86         Class JavaDoc tempClass=null;
87         Object JavaDoc page= null;
88         Method JavaDoc setTextErrorText = null;
89       Method JavaDoc getTextErrorText = null;
90       Method JavaDoc getTagDisplayTemplateName = null;
91       Method JavaDoc getTagDisplayTemplateComplete = null;
92       Method JavaDoc getTagDisplayTemplateRow = null;
93       Method JavaDoc setTextNameField = null;
94       Method JavaDoc setTextDisplayTemplateName = null;
95       Method JavaDoc setTextDisplayTemplateComplete = null;
96       
97       
98         try{
99         Class JavaDoc stringClass=Class.forName("java.lang.String");
100         tempClass = Class.forName(DeviceUtils.getPageName(myComms, "com.lutris.airsent.presentation.messenger.Display"));
101         page= myComms.xmlcFactory.create((Class JavaDoc)tempClass);
102         Class JavaDoc[] argTypeArr={stringClass};
103         setTextErrorText= tempClass.getMethod("setTextErrorText",argTypeArr);
104         setTextNameField= tempClass.getMethod("setTextNameField",argTypeArr);
105         setTextDisplayTemplateName= tempClass.getMethod("setTextDisplayTemplateName",argTypeArr);
106         setTextDisplayTemplateComplete= tempClass.getMethod("setTextDisplayTemplateComplete",argTypeArr);
107         getTextErrorText = tempClass.getMethod("getElementErrorText",null);
108         getTagDisplayTemplateName = tempClass.getMethod("getElementDisplayTemplateName",null);
109         getTagDisplayTemplateComplete = tempClass.getMethod("getElementDisplayTemplateComplete",null);
110         getTagDisplayTemplateRow = tempClass.getMethod("getElementDisplayTemplateRow",null);
111       }catch(Exception JavaDoc e){}
112   
113   
114 // DisplayPage page =
115
// (DisplayPage) create("com.lutris.airsent.presentation.messenger.Display");
116
try{
117     if (null != errorMsg
118         || null
119            != (errorMsg =
120                this.getSessionData().getAndClearUserMessage())) {
121         Object JavaDoc [] temp={errorMsg};
122         setTextErrorText.invoke(page,temp);
123         //page.setTextErrorText(errorMsg);
124
} else {
125         Object JavaDoc [] temp={""};
126         setTextErrorText.invoke(page,temp);
127         //page.setTextErrorText("");
128
}
129 }catch(Exception JavaDoc e){}
130     //handleSelection(page);
131

132         String JavaDoc pageSelection =
133         myComms.request.getParameter(AirSentConstants.SELECTION_NAME);
134        
135     int pickupCount = 0;
136         
137     try {
138         Delivery[] deliveryList = getApplication().getHomeManager().getDeliveryManager().findByMessenger(getSessionData().getMessenger());
139         Element templateName = (Element)getTagDisplayTemplateName.invoke(page,null);
140         //Element templateName = page.getTagDisplayTemplateName();
141
Element templateLink = (Element)getTagDisplayTemplateComplete.invoke(page,null);
142         //Element templateLink = page.getTagDisplayTemplateComplete();
143
Element templateRow = (Element)getTagDisplayTemplateRow.invoke(page,null);
144         //Element templateRow = page.getTagDisplayTemplateRow();
145

146         // Remove ids to prevent duplicates
147
templateName.removeAttribute("id");
148         templateLink.removeAttribute("id");
149         templateRow.removeAttribute("id");
150         
151         Delivery currentDelivery = null;
152         // Get collection of Deliveries and loop through collection
153
// to add each disc as a row in the table.
154
for (int numDeliveries = 0; numDeliveries < deliveryList.length;
155          numDeliveries++) {
156         
157         currentDelivery = deliveryList[numDeliveries];
158         
159         if (pageSelection.equals(AirSentConstants.PICKUP)) {
160             Object JavaDoc [] temp1={AirSentConstants.PICKUP};
161             setTextNameField.invoke(page,temp1);
162             //page.setTextNameField(AirSentConstants.PICKUP);
163

164             // Check to see if this has already been picked up:
165
if (!currentDelivery.isPickedUp()) {
166             pickupCount++;
167             Object JavaDoc [] temp2={"PickUps"};
168           setTextNameField.invoke(page,temp2);
169             //page.setTextNameField("PickUps");
170
Object JavaDoc [] temp3={currentDelivery.getPickUp().getName() + "(" +
171                             currentDelivery.getHandle() + ")"};
172           setTextDisplayTemplateName.invoke(page,temp3);
173             //page.setTextDisplayTemplateName(currentDelivery.getPickUp().getName() + "(" +
174
// currentDelivery.getHandle() + ")");
175
Object JavaDoc [] temp4={"Done"};
176           setTextDisplayTemplateComplete.invoke(page,temp4);
177             //page.setTextDisplayTemplateComplete("Done");
178
templateName.getAttributeNode("href").setValue(AirSentConstants.DETAILS_PO
179                                        + "?deliveryID="
180                                        + currentDelivery.getHandle()
181                                        + "&"
182                                        + AirSentConstants.SELECTION_NAME
183                                        + "=" + pageSelection);
184             templateLink.getAttributeNode("href").setValue(AirSentConstants.DISPLAY_PO
185                                        + "?event=complete" + "&"
186                                        + "deliveryID="
187                                        + currentDelivery.getHandle()
188                                        + "&"
189                                        + AirSentConstants.SELECTION_NAME
190                                        + "=" + pageSelection);
191             // Add a deep clone of the table row to the DOM
192
Node clonedNode = templateRow.cloneNode(true);
193             templateRow.getParentNode().appendChild(clonedNode);
194             }
195         } else {
196             Object JavaDoc [] temp5={"DropOffs"};
197             setTextNameField.invoke(page,temp5);
198             //page.setTextNameField("DropOffs");
199
Object JavaDoc [] temp6={currentDelivery.getDropOff().getName() + "(" +
200                             currentDelivery.getHandle() + ")"};
201             setTextDisplayTemplateName.invoke(page,temp6);
202             //page.setTextDisplayTemplateName(currentDelivery.getDropOff().getName() + "(" +
203
// currentDelivery.getHandle() + ")");
204
Object JavaDoc [] temp7={"Done"};
205             setTextDisplayTemplateComplete.invoke(page,temp7);
206             //page.setTextDisplayTemplateComplete("Done");
207
templateName.getAttributeNode("href").setValue(AirSentConstants.DETAILS_PO
208                                    + "?deliveryID="
209                                    + currentDelivery.getHandle()
210                                    + "&"
211                                    + AirSentConstants.SELECTION_NAME
212                                    + "=" + pageSelection);
213             templateLink.getAttributeNode("href").setValue(AirSentConstants.DISPLAY_PO
214                                    + "?event=complete" + "&"
215                                    + "deliveryID="
216                                    + currentDelivery.getHandle()
217                                    + "&"
218                                    + AirSentConstants.SELECTION_NAME
219                                    + "=" + pageSelection);
220             // Add a deep clone of the table row to the DOM
221
Node clonedNode = templateRow.cloneNode(true);
222             templateRow.getParentNode().appendChild(clonedNode);
223         }
224         }
225         
226         /**No deliveries, just put a 'None'
227          **button.
228          **
229          **/

230         if(deliveryList.length > 0) {
231         
232         if(pageSelection.equals(AirSentConstants.PICKUP) && pickupCount == 0) {
233             Object JavaDoc [] temp8={"None"};
234             setTextDisplayTemplateName.invoke(page,temp8);
235             //page.setTextDisplayTemplateName("None");
236
templateName.getAttributeNode("href").setValue(AirSentConstants.MESSENGER_MAIN_PAGE);
237             templateLink.getParentNode().removeChild(templateLink);
238         }
239         else {
240             templateRow.getParentNode().removeChild(templateRow);
241         }
242         }
243         else {
244         Object JavaDoc [] temp9={"None"};
245         setTextDisplayTemplateName.invoke(page,temp9);
246         //page.setTextDisplayTemplateName("None");
247
templateName.getAttributeNode("href").setValue(AirSentConstants.MESSENGER_MAIN_PAGE);
248         templateLink.getParentNode().removeChild(templateLink);
249         }
250     } catch (Exception JavaDoc ex) {
251         throw new AirSentPresentationException("Error getting deliveries for user: ",
252                            ex);
253     }
254     
255     
256     DeviceUtils.setURLTimeStamp((XMLObject)page);
257     return ((XMLObject)page);
258     }
259
260     /**
261      * Handles the selection from the
262      * main page, and based on the query string,
263      * displays the list of pickups, or the list
264      * of deliveries.
265      * @param page
266      *
267      * @throws HttpPresentationException
268      *
269      * @see
270      */

271
272 /**
273     public void handleSelection(DisplayPage page)
274         throws HttpPresentationException {
275     String pageSelection =
276         myComms.request.getParameter(AirSentConstants.SELECTION_NAME);
277        
278     int pickupCount = 0;
279         
280     try {
281         Delivery[] deliveryList =
282         getApplication().getHomeManager().getDeliveryManager().findByMessenger(getSessionData().getMessenger());
283         Element templateName = page.getTagDisplayTemplateName();
284         Element templateLink = page.getTagDisplayTemplateComplete();
285         Element templateRow = page.getTagDisplayTemplateRow();
286         
287         // Remove ids to prevent duplicates
288         templateName.removeAttribute("id");
289         templateLink.removeAttribute("id");
290         templateRow.removeAttribute("id");
291         
292         Delivery currentDelivery = null;
293         // Get collection of Deliveries and loop through collection
294         // to add each disc as a row in the table.
295         for (int numDeliveries = 0; numDeliveries < deliveryList.length;
296          numDeliveries++) {
297         
298         currentDelivery = deliveryList[numDeliveries];
299         
300         if (pageSelection.equals(AirSentConstants.PICKUP)) {
301             page.setTextNameField(AirSentConstants.PICKUP);
302
303             // Check to see if this has already been picked up:
304             if (!currentDelivery.isPickedUp()) {
305             pickupCount++;
306             page.setTextNameField("PickUps");
307             page.setTextDisplayTemplateName(currentDelivery.getPickUp().getName() + "(" +
308                             currentDelivery.getHandle() + ")");
309             page.setTextDisplayTemplateComplete("Done");
310             templateName.getAttributeNode("href").setValue(AirSentConstants.DETAILS_PO
311                                        + "?deliveryID="
312                                        + currentDelivery.getHandle()
313                                        + "&"
314                                        + AirSentConstants.SELECTION_NAME
315                                        + "=" + pageSelection);
316             templateLink.getAttributeNode("href").setValue(AirSentConstants.DISPLAY_PO
317                                        + "?event=complete" + "&"
318                                        + "deliveryID="
319                                        + currentDelivery.getHandle()
320                                        + "&"
321                                        + AirSentConstants.SELECTION_NAME
322                                        + "=" + pageSelection);
323             // Add a deep clone of the table row to the DOM
324             Node clonedNode = templateRow.cloneNode(true);
325             templateRow.getParentNode().appendChild(clonedNode);
326             }
327         } else {
328             page.setTextNameField("DropOffs");
329             page.setTextDisplayTemplateName(currentDelivery.getDropOff().getName() + "(" +
330                             currentDelivery.getHandle() + ")");
331             page.setTextDisplayTemplateComplete("Done");
332             templateName.getAttributeNode("href").setValue(AirSentConstants.DETAILS_PO
333                                    + "?deliveryID="
334                                    + currentDelivery.getHandle()
335                                    + "&"
336                                    + AirSentConstants.SELECTION_NAME
337                                    + "=" + pageSelection);
338             templateLink.getAttributeNode("href").setValue(AirSentConstants.DISPLAY_PO
339                                    + "?event=complete" + "&"
340                                    + "deliveryID="
341                                    + currentDelivery.getHandle()
342                                    + "&"
343                                    + AirSentConstants.SELECTION_NAME
344                                    + "=" + pageSelection);
345             // Add a deep clone of the table row to the DOM
346             Node clonedNode = templateRow.cloneNode(true);
347             templateRow.getParentNode().appendChild(clonedNode);
348         }
349         }
350     
351         if(deliveryList.length > 0) {
352         
353         if(pageSelection.equals(AirSentConstants.PICKUP) && pickupCount == 0) {
354             page.setTextDisplayTemplateName("None");
355             templateName.getAttributeNode("href").setValue(AirSentConstants.MESSENGER_MAIN_PAGE);
356             templateLink.getParentNode().removeChild(templateLink);
357         }
358         else {
359             templateRow.getParentNode().removeChild(templateRow);
360         }
361         }
362         else {
363         page.setTextDisplayTemplateName("None");
364         templateName.getAttributeNode("href").setValue(AirSentConstants.MESSENGER_MAIN_PAGE);
365         templateLink.getParentNode().removeChild(templateLink);
366         }
367     } catch (Exception ex) {
368         throw new AirSentPresentationException("Error getting deliveries for user: ",
369                            ex);
370     }
371     }
372 */

373
374
375     /**
376      * Process either a pickup or a delivery by
377      * using the query string to determine the
378      * type and delivery number.
379      * @return the Document as XMLObject
380      */

381     public XMLObject handleComplete() throws HttpPresentationException {
382     String JavaDoc deliveryID =
383         myComms.request.getParameter(AirSentConstants.DELIVERYID);
384     String JavaDoc status =
385         myComms.request.getParameter(AirSentConstants.SELECTION_NAME);
386     
387     try {
388         Delivery delivery = null;
389         if ( deliveryID != null &&
390          (delivery = getApplication().getHomeManager().getDeliveryManager().findByHandle(deliveryID))
391             != null) {
392         if (status != null && status.equals(AirSentConstants.DROPOFF)) {
393             
394             if(!delivery.isPickedUp()) {
395             this.getSessionData().setUserMessage("Need to pickup package first!");
396             throw new ClientPageRedirectException(AirSentConstants.MESSENGER_MAIN_PAGE);
397             }
398             
399             delivery.dropOff();
400             
401             // Generate an email message
402
// Send email confimation
403
//
404
String JavaDoc body = handleEmailConfirmation(delivery);
405             String JavaDoc subject = "Delivery notice from AirSent.";
406             String JavaDoc type = "text/html";
407             getApplication().getHomeManager().getEmailManager().send(delivery.getCustomer().getFirstName()
408                                          + delivery.getCustomer().getLastName(),
409                                          delivery.getCustomer().getEmail(), subject, body,
410                                          type);
411            
412         } else if (status != null && status.equals(AirSentConstants.PICKUP)) {
413             delivery.pickUp();
414         }
415         } else {
416         this.getSessionData().setUserMessage("Error occured in completing delivery.");
417         throw new ClientPageRedirectException(AirSentConstants.MESSENGER_MAIN_PAGE);
418         }
419         
420         throw new ClientPageRedirectException(AirSentConstants.MESSENGER_MAIN_PAGE);
421     } catch (Exception JavaDoc ex) {
422         throw new AirSentPresentationException("Error occured in completing delivery",
423                            ex);
424     }
425     }
426
427     
428     /**
429      * Creates a personalized email confirmation.
430      * @param error messages
431      * @return HTML page as string.
432      */

433     public String JavaDoc handleEmailConfirmation(Delivery delivery)
434         throws AirSentPresentationException {
435     EmailConfirmationHTML page =
436         (EmailConfirmationHTML) myComms.xmlcFactory.create(EmailConfirmationHTML.class);
437     
438     try {
439         if(delivery == null) System.out.println("DELIVERY IS NULL");
440         if(delivery.getCustomer() == null) System.out.println("CUSTOMER IS NULL");
441         page.setTextDescription(delivery.getDescription());
442         page.setTextName(delivery.getCustomer().getFirstName() + " " +
443                  delivery.getCustomer().getLastName());
444         page.setTextPickupname(delivery.getPickUp().getName());
445         page.setTextPickupaddress(delivery.getPickUp().getStreet1());
446         page.setTextPickuptime(delivery.getPickedUpTime());
447         page.setTextDropoffname(delivery.getDropOff().getName());
448         page.setTextDropoffaddress(delivery.getDropOff().getStreet1());
449         page.setTextDropofftime(delivery.getDroppedOffTime());
450         
451     } catch (Exception JavaDoc ex) {
452         throw new AirSentPresentationException("Error in email confimation",
453                            ex);
454     }
455     
456     //Write to text to insert into email.
457
return page.toDocument();
458     }
459
460 }
461
462
Popular Tags