001: /*
002: * Copyright (c) 1999-2001 Lutris Technologies, Inc. All Rights
003: * Reserved.
004: *
005: * This source code file is distributed by Lutris Technologies, Inc. for
006: * use only by licensed users of product(s) that include this source
007: * file. Use of this source file or the software that uses it is covered
008: * by the terms and conditions of the Lutris Enhydra Development License
009: * Agreement included with this product.
010: *
011: * This Software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
012: * ANY KIND, either express or implied. See the License for the specific terms
013: * governing rights and limitations under the License.
014: *
015: * Contributor(s):
016: *
017: * $Id: OrderPage3.java,v 1.1 2006-09-11 12:29:26 sinisa Exp $
018: */
019:
020: package com.lutris.airsent.presentation.customer;
021:
022: import com.lutris.airsent.presentation.BasePO;
023: import com.lutris.appserver.server.httpPresentation.*;
024: import com.lutris.appserver.server.session.*;
025: import com.lutris.util.*; //import com.lutris.xml.xmlc.*;
026: //import com.lutris.xml.xmlc.html.*;
027: import org.w3c.dom.*;
028: import org.w3c.dom.html.*;
029: import org.enhydra.xml.xmlc.XMLObject;
030: import com.lutris.airsent.spec.delivery.Delivery;
031: import com.lutris.airsent.spec.AirSentException;
032:
033: import com.lutris.airsent.presentation.AirSentPresentationException;
034: import com.lutris.airsent.presentation.AirSentConstants;
035: import java.util.*;
036: import com.lutris.airsent.spec.address.*;
037: import com.lutris.airsent.spec.customer.Customer;
038: import com.lutris.airsent.spec.delivery.OrderForm;
039:
040: /**
041: * Presentation object for order page 3
042: */
043: public class OrderPage3 extends BasePO {
044:
045: private static final int AUTH_LEVEL = AirSentConstants.CUSTOMER_USER;
046:
047: /**
048: * Superclass method override. returns the authorization
049: * level necessary to access this po.
050: *
051: * @return int required authorization level
052: */
053: public int getRequiredAuthLevel() {
054: return AUTH_LEVEL;
055: }
056:
057: /**
058: * displays default page
059: *
060: * @return html page
061: * @exception if an error occurs
062: */
063: public XMLObject handleDefault() throws HttpPresentationException {
064:
065: try {
066: OrderForm orderForm = getSessionData().getOrderForm();
067: if (orderForm == null) {
068: System.err.println("ERROR: no order form");
069: throw new ClientPageRedirectException(
070: AirSentConstants.ORDERSTEP1_PO);
071: }
072:
073: return showPage3(null, orderForm);
074: } catch (Exception e) {
075: throw new AirSentPresentationException(
076: "System error finding user", e);
077: }
078: }
079:
080: /**
081: * creates the html page
082: *
083: * @param errorMsg error message to display
084: * @param orderData data to populate the page with
085: * @exception if an error occurs
086: */
087: private XMLObject showPage3(String errorMsg, OrderForm orderForm)
088: throws AirSentPresentationException {
089:
090: OrderStep3HTML page = (OrderStep3HTML) myComms.xmlcFactory
091: .create(OrderStep3HTML.class);
092: try {
093: if (null != errorMsg
094: || null != (errorMsg = getSessionData()
095: .getAndClearUserMessage())) {
096: page.setTextErrorText(errorMsg);
097: } else {
098: page.getElementErrorText().getParentNode().removeChild(
099: page.getElementErrorText());
100: }
101: if (orderForm.getOrderId() == null) {
102: Node n = page.getElementNavDestination()
103: .getParentNode();
104: n.removeChild(page.getElementNavDestination());
105: n.removeChild(page.getElementNavPickup());
106: }
107: populatePage3(page, orderForm);
108: //We need to allow AirSent_pres to be functional , responsed will be default HTML page
109: } catch (NullPointerException e) {
110:
111: OrderStep3HTML defaultPage = (OrderStep3HTML) myComms.xmlcFactory
112: .create(OrderStep3HTML.class);
113: defaultPage.setTextErrorText("This is a default HTML page");
114: return defaultPage;
115: } catch (Exception e) {
116: throw new AirSentPresentationException(
117: "System error finding user", e);
118: }
119: return page;
120: }
121:
122: /**
123: * populates the page
124: *
125: * @param page to populate
126: * @param orderData data to populate it with
127: * @exception if an error occurs
128: */
129: private void populatePage3(OrderStep3HTML page, OrderForm orderForm)
130: throws AirSentPresentationException {
131:
132: try {
133: if (orderForm.getFragile() == true) {
134: page.getElementFragile().setChecked(true);
135: }
136: if (orderForm.getUrgent() == true) {
137: page.getElementUrgent().setChecked(true);
138: }
139: page.getElementSize().setValue(orderForm.getSize());
140: if (orderForm.getDescription() != null) {
141: Text commentText = (page.getDocument())
142: .createTextNode(orderForm.getDescription());
143: page.getElementDescription().appendChild(commentText);
144: }
145: } catch (Exception e) {
146: throw new AirSentPresentationException("", e);
147: }
148: }
149:
150: /**
151: * process the form submission
152: *
153: * @return html page
154: * @exception if an error occurs
155: */
156: public XMLObject handleOrder3() throws AirSentPresentationException {
157:
158: try {
159: String p;
160: OrderForm orderForm = getSessionData().getOrderForm();
161:
162: p = this .getComms().request
163: .getParameter(AirSentConstants.FRAGILE);
164: if (!isNullField(p)) {
165: orderForm.setFragile(true);
166: } else {
167: orderForm.setFragile(false);
168: }
169:
170: p = this .getComms().request
171: .getParameter(AirSentConstants.URGENT);
172: if (!isNullField(p)) {
173: orderForm.setUrgent(true);
174: } else {
175: orderForm.setUrgent(false);
176: }
177:
178: p = this .getComms().request
179: .getParameter(AirSentConstants.DESCRIPTION);
180: if (checkField(p, Delivery.MAX_DESC) == false) {
181: return showPage3("Please provide a description.",
182: orderForm);
183: }
184: orderForm.setDescription(p);
185:
186: p = this .getComms().request
187: .getParameter(AirSentConstants.SIZE);
188: if (checkField(p, Delivery.MAX_SIZE) == false) {
189: return showPage3("Please enter a valid size.",
190: orderForm);
191: }
192: orderForm.setSize(p);
193:
194: getSessionData().setOrderForm(orderForm);
195: throw new ClientPageRedirectException(
196: AirSentConstants.CONFIRMATION_PO);
197: //We need to allow AirSent_pres to be functional , responsed will be default HTML page
198: } catch (NullPointerException e) {
199: ConfirmationHTML defaultPage = (ConfirmationHTML) myComms.xmlcFactory
200: .create(ConfirmationHTML.class);
201: defaultPage.setTextErrorText("This is a default HTML page");
202: return defaultPage;
203:
204: } catch (Exception e) {
205: throw new AirSentPresentationException(
206: "System error processing OrderStep1.", e);
207: }
208: }
209:
210: /*
211: * check to see if a string is a number
212: */
213: private boolean isNumber(String n) {
214: if (n == null) {
215: return false;
216: }
217: try {
218: Integer i = Integer.valueOf(n);
219: } catch (NumberFormatException e) {
220: return false;
221: }
222: return true;
223: }
224: }
|