Метод writeXML (Order.java)
Листинг 5.8. Метод writeXML (Order.java)
public void writeXML( Writer writer ) {
try {
writer.write( "<?xml version='1.0' ?>
" );
writer.write( "<!DOCTYPE order SYSTEM '.."
+ File.separator + "order.dtd'>
" );
writer.write( "<order id='" + id + "' " );
writer.write( "date='" + date + "'>
" );
Enumeration enum = items.elements();
while( enum.hasMoreElements() ) {
CartItem item = (CartItem)enum.nextElement();
writer.write( "<item id='" + item.getId() + "' " );
writer.write( "quantity='" + item.getNumberOrdered() + "' ");
writer.write( "price='" + item.getPrice() + "'>
" );
writer.write( item.getName() + "</item>
" );
}
writer.write( "<customer_info>
\n<first_name>
" +
customerInfo.getFirstName() + "</first_name>
" +
"\n<last_name>
" + customerInfo.getLastName() + "</last_name>
" +
"\n<address1>
" + customerInfo.getAddress1() + "</address1>
" +
"\n<address2>
" + customerInfo.getAddress2() + "</address2>
" +
"\n<city>
" + customerInfo.getCity() + "</city>
" +
"\n<state>
" + customerInfo.getState() + "</state>
" +
"\n<zip>
" + customerInfo.getZip() + "</zip>
" +
"\n<email>
" + customerInfo.getEmail() + "</email>
" +
"\n<phone>
" + customerInfo.getPhoneNumber() + "</phone>
" );
CreditInfo credit = customerInfo.getCreditInfo();
writer.write( "\n<credit_info>
\n<card_number>
" +
credit.getCreditCardNumber() + "</card_number>
" +
"\n<card_type>
" + credit.getCreditCardType() + "</card_type>
" +
"\n<expiration_date>
" + credit.getExpirationDate() +
"</expiration_date>
\n</credit_info>
\n</customer_info>
" );
writer.write( "\n<authorization approved='" +
authorization.isApproved() + "'>
" +"\n<reason>
" +
authorization.getReason() + "</reason>
\n<authorization_code>
" +
authorization.getAuthorizationCode() + "</authorization_code>
" +
"</authorization>
" );
writer.write( "\n<fulfillment>
\n" +
"\n<shipper>
" + fulfillment.getShipper() + "</shipper>
" +
"\n<class>
" + fulfillment.getShippingClass() + "</class>
" +
"\n<cost>
" + fulfillment.getCostToCustomer() + "</cost>
" +
"\n<tracking_number>
" + fulfillment.getTrackingNumber() +
"</tracking_number>
\n<date_sent>
" +
fulfillment.getDateSent() + "</date_sent>
\n</fulfillment>
" );
writer.write( "\n</order>
" );
}
catch( IOException e ) {
}
}
Последний метод в классе Order, названный getllniqueld, приведен в листинге 5.9. Он генерирует уникальный идентификатор заказа. В нашем случае мы используем счетчик, который увеличивается на единицу каждый раз, когда нам требуется новый идентификатор. Этот счетчик должен храниться постоянно, чтобы мы могли быть уверенны в уникальности присваиваемых идентификаторов даже после полной перезагрузки системы. Хранение счетчика в памяти — в данном случае не выход из положения, так как при каждой перезагрузке системы счетчик начинает повторять уже присвоенные ранее идентификаторы. В качестве постоянного места хранения счетчика мы используем специальный файл.
Содержание раздела