Класс Fullfilment
В процесс выполнения заказа входит все, что должно быть сделано с товаром после оформления заказа. Обычно для этого нужно найти товар на складе, запаковать его и отправить клиенту. Мы рассмотрим несколько упрощенный вариант выполнения заказа; в нашем примере будет учитываться только сам процесс доставки.
В классе Fullfilment имеются поля для хранения информации о фирме, которая осуществляет доставку, и о типе услуг. Таким образом, мы можем доставлять товары с помощью различных почтовых фирм — например, Federal Express, UPS или почтовой службы US, а также выбирать различные типы услуг — срочную доставку на следующий день, через один или два дня или доставку в обычном режиме. Также нужно знать, сколько клиент должен заплатить за доставку. Эта сумма добавляется к стоимости товаров, что в результате дает полную стоимость заказа. Когда заказ наконец отправлен, ему должен быть присвоен некоторый идентификационный номер, а также следует записать дату отправки заказа — эти сведения потребуются, если от клиента поступят какие-либо вопросы, связанные с доставкой.
В классе Fullfilmerit (листинг 5.3) имеются методы setXxx и getXxx для каждого из полей. Имеется также один специальный метод, setShipperAndClass. Он позволяет задавать в одной строке и название почтовой фирмы, и тип услуг (для данного заказа) [Эту совокупность далее мы будем называть способом доставки. — Примеч. перев.]. Как вы увидите в разделе «JSP-страница Shippinglnfo», это упрощает обработку введенных пользователем данных (о предпочтительном способе доставки). В этом методе используется объект StringTokenizer, который разделяет строку на две части, затем первую часть заносит в поле shipper (почтовая фирма), а вторую — в поле class (тип услуг). Это сделано для того, чтобы упростить ввод указанных данных. Ниже мы рассмотрим страницу Shippinglnfo.jsp и увидим, как используется данный метод.
Листинг 5.3. Класс Fulfilment (Fullfilment.java)
package com.XmlEcomBook.Chap05;
import java.util.Date;
import java.util.StringTokenizer;
public class Fulfillment {
String shipper;
//UPS, Fedex, USPS, etc.
String shippingClass;
//Overnight, 2 Day, regular, frieght, etc.
double costToCustomer;
// How much the customer is charged for shipping
String trackingNumber = "NO_TRACKING_NUMBER";
String dateSent = "NOT_SENT_YET";
public Fulfillment() {
}
public void setShipper( String newShipper ) {
shipper = newShipper;
}
public String getShipper() {
return shipper;
}
public void setShipperAndClass( String shipperAndClass ) {
StringTokenizer st = new StringTokenizer( shipperAndClass );
if( st.hasMoreTokens() ) {
shipper = st.nextToken();
if( st.hasMoreTokens() ) {
shippingClass = st.nextToken();
}
}
}
public void setShippingClass( String newClass ) {
shippingClass = newClass;
}
public String getShippingClass() {
return shippingClass;
}
public void setTrackingNumber( String newNumber ) {
trackingNumber = newNumber;
}
public String getTrackingNumber() {
return trackingNumber;
}
public void setDateSent( String newDate ) { dateSent = newDate;
}
public String getDateSent() {
return dateSent;
}
public double getCostToCustomer() {
return costToCustomer;
}
public void setCostToCustomer( double newCost ) {
costToCustomer = newCost;
}
}