1 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 org.enhydra.xml.xmlc.XMLCUtil; 27 import org.w3c.dom.*; 28 import org.enhydra.xml.xmlc.XMLObject; 29 import java.util.Date ; 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 ; 38 39 47 public class Display extends DeviceBasePO { 48 49 52 private static final int AUTH_LEVEL = AirSentConstants.UNAUTH_USER; 53 54 60 public int getRequiredAuthLevel() { 61 return AUTH_LEVEL; 62 } 63 64 70 public XMLObject handleDefault() throws HttpPresentationException { 71 72 return showPage(null); 73 } 74 75 82 public XMLObject showPage(String errorMsg) 83 throws HttpPresentationException { 84 85 86 Class tempClass=null; 87 Object page= null; 88 Method setTextErrorText = null; 89 Method getTextErrorText = null; 90 Method getTagDisplayTemplateName = null; 91 Method getTagDisplayTemplateComplete = null; 92 Method getTagDisplayTemplateRow = null; 93 Method setTextNameField = null; 94 Method setTextDisplayTemplateName = null; 95 Method setTextDisplayTemplateComplete = null; 96 97 98 try{ 99 Class 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 )tempClass); 102 Class [] 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 e){} 112 113 114 try{ 117 if (null != errorMsg 118 || null 119 != (errorMsg = 120 this.getSessionData().getAndClearUserMessage())) { 121 Object [] temp={errorMsg}; 122 setTextErrorText.invoke(page,temp); 123 } else { 125 Object [] temp={""}; 126 setTextErrorText.invoke(page,temp); 127 } 129 }catch(Exception e){} 130 132 String 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 templateLink = (Element)getTagDisplayTemplateComplete.invoke(page,null); 142 Element templateRow = (Element)getTagDisplayTemplateRow.invoke(page,null); 144 146 templateName.removeAttribute("id"); 148 templateLink.removeAttribute("id"); 149 templateRow.removeAttribute("id"); 150 151 Delivery currentDelivery = null; 152 for (int numDeliveries = 0; numDeliveries < deliveryList.length; 155 numDeliveries++) { 156 157 currentDelivery = deliveryList[numDeliveries]; 158 159 if (pageSelection.equals(AirSentConstants.PICKUP)) { 160 Object [] temp1={AirSentConstants.PICKUP}; 161 setTextNameField.invoke(page,temp1); 162 164 if (!currentDelivery.isPickedUp()) { 166 pickupCount++; 167 Object [] temp2={"PickUps"}; 168 setTextNameField.invoke(page,temp2); 169 Object [] temp3={currentDelivery.getPickUp().getName() + "(" + 171 currentDelivery.getHandle() + ")"}; 172 setTextDisplayTemplateName.invoke(page,temp3); 173 Object [] temp4={"Done"}; 176 setTextDisplayTemplateComplete.invoke(page,temp4); 177 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 Node clonedNode = templateRow.cloneNode(true); 193 templateRow.getParentNode().appendChild(clonedNode); 194 } 195 } else { 196 Object [] temp5={"DropOffs"}; 197 setTextNameField.invoke(page,temp5); 198 Object [] temp6={currentDelivery.getDropOff().getName() + "(" + 200 currentDelivery.getHandle() + ")"}; 201 setTextDisplayTemplateName.invoke(page,temp6); 202 Object [] temp7={"Done"}; 205 setTextDisplayTemplateComplete.invoke(page,temp7); 206 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 Node clonedNode = templateRow.cloneNode(true); 222 templateRow.getParentNode().appendChild(clonedNode); 223 } 224 } 225 226 230 if(deliveryList.length > 0) { 231 232 if(pageSelection.equals(AirSentConstants.PICKUP) && pickupCount == 0) { 233 Object [] temp8={"None"}; 234 setTextDisplayTemplateName.invoke(page,temp8); 235 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 [] temp9={"None"}; 245 setTextDisplayTemplateName.invoke(page,temp9); 246 templateName.getAttributeNode("href").setValue(AirSentConstants.MESSENGER_MAIN_PAGE); 248 templateLink.getParentNode().removeChild(templateLink); 249 } 250 } catch (Exception 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 271 272 373 374 375 381 public XMLObject handleComplete() throws HttpPresentationException { 382 String deliveryID = 383 myComms.request.getParameter(AirSentConstants.DELIVERYID); 384 String 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 String body = handleEmailConfirmation(delivery); 405 String subject = "Delivery notice from AirSent."; 406 String 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 ex) { 422 throw new AirSentPresentationException("Error occured in completing delivery", 423 ex); 424 } 425 } 426 427 428 433 public String 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 ex) { 452 throw new AirSentPresentationException("Error in email confimation", 453 ex); 454 } 455 456 return page.toDocument(); 458 } 459 460 } 461 462 | Popular Tags |