Электронный магазин на Java и XML

         

Метод 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. Он генерирует уникальный идентификатор заказа. В нашем случае мы используем счетчик, который увеличивается на единицу каждый раз, когда нам требуется новый идентификатор. Этот счетчик должен храниться постоянно, чтобы мы могли быть уверенны в уникальности присваиваемых идентификаторов даже после полной перезагрузки системы. Хранение счетчика в памяти — в данном случае не выход из положения, так как при каждой перезагрузке системы счетчик начинает повторять уже присвоенные ранее идентификаторы. В качестве постоянного места хранения счетчика мы используем специальный файл.



Содержание раздела