001: package com.uvw.travel.test;
002:
003: import com.uvw.travel.*;
004: import com.uvw.travel.impl.*;
005: import java.io.FileOutputStream;
006: import java.io.IOException;
007: import java.io.ObjectOutputStream;
008: import java.util.Date;
009:
010: /**
011: * A test driver for the travel-bookings workflow.
012: *
013: * @author Adrian Price
014: */
015: public class TravelBookingTest {
016: private static final long NOW = System.currentTimeMillis();
017: private static final long ONE_HOUR = 1000L * 60 * 60;
018: private static final long ONE_DAY = ONE_HOUR * 24;
019: private static final long ONE_WEEK = ONE_DAY * 7;
020: private static final long ONE_MONTH = ONE_DAY * 31;
021: private static final long ONE_YEAR = ONE_DAY * 365;
022: private static final Name NAME_1 = new NameImpl("Tom",
023: new Character('A'), "Hacker");
024: private static final Name NAME_2 = new NameImpl("Dick",
025: new Character('B'), "Pound");
026: private static final Name NAME_3 = new NameImpl("Harry",
027: new Character('C'), "Whacker");
028: private static final Name NAME_4 = new NameImpl("Geri",
029: new Character('D'), "Hacker");
030: private static final Name NAME_5 = new NameImpl("Heart",
031: new Character('E'), "Pound");
032: private static final Address ADDRESS_1 = new AddressImpl(
033: "110 Manor Green Road", "Epsom", "Surrey", "KT19 8LN",
034: "England");
035: private static final Address ADDRESS_2 = new AddressImpl(
036: "195b High Street", "Egham", "Surrey", "TW20 9ED",
037: "England");
038: private static final Address ADDRESS_3 = new AddressImpl(
039: "41 Leacroft", "Staines", "Middlesex", "TW18 4PB",
040: "England");
041: private static final Address HOTEL_ADDRESS_1 = new AddressImpl(
042: "3020 Twin Dolphin Drive", "Redwood Shores", "California",
043: "94065", "USA");
044: private static final Address HOTEL_ADDRESS_2 = new AddressImpl(
045: "350 The Crescent", "Burlingame", "California", "94104",
046: "USA");
047: private static final Person PERSON_1 = new PersonImpl(NAME_1,
048: ADDRESS_1);
049: private static final Person PERSON_2 = new PersonImpl(NAME_2,
050: ADDRESS_2);
051: private static final Person PERSON_3 = new PersonImpl(NAME_3,
052: ADDRESS_3);
053: private static final Person PERSON_4 = new PersonImpl(NAME_4,
054: ADDRESS_1);
055: private static final Person PERSON_5 = new PersonImpl(NAME_5,
056: ADDRESS_2);
057: private static final Customer CUSTOMER_1 = new CustomerImpl(NAME_1,
058: ADDRESS_1, "0123456789");
059: private static final CreditCard CREDITCARD_1 = new CreditCardImpl(
060: NAME_1, CreditCard.AMEX, "1324576891023546", new Date(NOW
061: + ONE_YEAR), 123);
062: private static final Person[] PEOPLE_1 = { PERSON_1, PERSON_2,
063: PERSON_3, PERSON_4, PERSON_5 };
064: private static final Person[] PEOPLE_2 = { PERSON_1, PERSON_4 };
065: private static final Person[] PEOPLE_3 = { PERSON_2, PERSON_5 };
066: private static final Bookings bookings = new BookingsImpl(
067: CUSTOMER_1, CREDITCARD_1);
068: private static final long DEPARTURE_DATE_1 = NOW + ONE_MONTH;
069: private static final long RETURN_DATE_1 = DEPARTURE_DATE_1
070: + ONE_WEEK;
071: private static final Flight[] FLIGHTS_1 = {
072: new FlightImpl("AC865", "LHR", "YYZ", new Date(
073: DEPARTURE_DATE_1), new Date(DEPARTURE_DATE_1 + 8
074: * ONE_HOUR)),
075: new FlightImpl("AC720", "YYZ", "SFO", new Date(
076: DEPARTURE_DATE_1 + 11 * ONE_HOUR), new Date(
077: DEPARTURE_DATE_1 + 16 * ONE_HOUR)),
078: new FlightImpl("AC721", "SFO", "YYZ", new Date(
079: RETURN_DATE_1), new Date(RETURN_DATE_1 + 5
080: * ONE_HOUR)),
081: new FlightImpl("AC866", "YYZ", "LHR", new Date(
082: RETURN_DATE_1 + 8 * ONE_HOUR), new Date(
083: RETURN_DATE_1 + 16 * ONE_HOUR)), };
084:
085: static {
086: bookings.createFlightBooking(PEOPLE_1, FLIGHTS_1);
087: bookings.createHotelBooking(PEOPLE_1, "Hyatt", HOTEL_ADDRESS_1,
088: new Date(DEPARTURE_DATE_1), new Date(RETURN_DATE_1));
089: bookings.createRentalCarBooking(PEOPLE_1, "Avis",
090: Bookings.RentalCarBooking.LARGE, new Date(
091: DEPARTURE_DATE_1), new Date(RETURN_DATE_1));
092: }
093:
094: public static void main(String[] args) {
095: ObjectOutputStream out = null;
096: try {
097: if (args.length != 1)
098: usage();
099: out = new ObjectOutputStream(new FileOutputStream(args[0]));
100: out.writeObject(bookings);
101: } catch (Exception e) {
102: e.printStackTrace();
103: System.exit(2);
104: } finally {
105: try {
106: if (out != null)
107: out.close();
108: } catch (IOException e) {
109: }
110: }
111: }
112:
113: private static void usage() {
114: System.out.println("usage: "
115: + TravelBookingTest.class.getName() + " <output-file>");
116: System.exit(1);
117: }
118:
119: private TravelBookingTest() {
120: }
121: }
|