Commit c1a9636f authored by O'Reilly Media, Inc's avatar O'Reilly Media, Inc
Browse files

Initial commit

parents
Loading
Loading
Loading
Loading
+7 −0
Changes for Learning Java 8 - Working Files/Chapter 1/No Work Files.rtf: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural

\f0\fs24 \cf0 No work files for this lesson...}
 No newline at end of file
+124 −0
Changes for Learning Java 8 - Working Files/Chapter 10/Database.java: 124 added lines, 0 removed lines.
Original line number Diff line number Diff line
/* Database.java
 * Developer: Mike Kelly
 * This is the access layer for creating and modifying
 * data in our application
 */
package org.airline.reservations;

import java.time.LocalDate;
import java.util.ArrayList;

public class Database {

	//fields
	private ArrayList<Seat> seats;
	private ArrayList<Flight> flights;
	private ArrayList<Passenger> passengers;
	private ArrayList<Ticket> tickets;
	
	//constructor
	public Database() {
		seats = new ArrayList<Seat>();
		flights = new ArrayList<Flight>();
		passengers = new ArrayList<Passenger>();
		tickets = new ArrayList<Ticket>();
	}
	
	//getters
	public ArrayList<Seat> getSeats() {
		return seats;
	}
	
	public ArrayList<Flight> getFlights() {
		return flights;
	}

	public ArrayList<Passenger> getPassengers() {
		return passengers;
	}

	public ArrayList<Ticket> getTickets() {
		return tickets;
	}

	//setters
	public void addSeat(int seatNumber) {
		seats.add(new Seat(seatNumber));
	}

	public void addFlight(int flightNumber, String departureCity, String arrivalCity) {
		flights.add(new Flight(flightNumber, departureCity, arrivalCity));
	}

	public boolean addPassenger(String passengerName) {
		Boolean passengerExists = false;
		for (Passenger item : getPassengers()) {
			if (passengerName.equals(item.getName())) {
				passengerExists = true;
			}
		}
		if (passengerExists == false) {
			passengers.add(new Passenger(passengerName));
		}
		return passengerExists;
	}
	
	public String addTicket(LocalDate departureDate, String passengerName, int flightNumber, int seatNumber) {
		//find passenger object
		Passenger ticketPassenger = null;
		for (Passenger item : getPassengers()) {
			if (passengerName.equals(item.getName())) {
				ticketPassenger = item;
			}
		}
		
		//find flight object
		Flight ticketFlight = null;
		for (Flight item : getFlights()) {
			if (flightNumber == item.getFlightNumber()) {
				ticketFlight = item;
			}
		}
		
		//find seat object
		Seat ticketSeat = null;
		for (Seat item : getSeats()) {
			if (seatNumber == item.getSeatNumber()) {
				ticketSeat = item;
			}
		}
		Ticket tempTicket = new Ticket();
		tempTicket.setDepartureDate(departureDate);
		tempTicket.setPassenger(ticketPassenger);
		tempTicket.setFlight(ticketFlight);
		tempTicket.setSeat(ticketSeat);
		tickets.add(tempTicket);
		return tempTicket.toString();
	}
	
	public ArrayList<Seat> getOpenSeats(LocalDate departureDate, int flightNumber) {
		ArrayList<Seat> openSeats = getSeats();
		for (Ticket item : getTickets()) {
			if (departureDate.equals(item.getDepartureDate()) && flightNumber == item.getFlight().getFlightNumber()) {
				openSeats.remove(item.getSeat());
				}
		}
		return openSeats;
	}


	public void bootstrap() {
		addSeat(1);
		addSeat(2);
        addSeat(3);
        addSeat(4);
        addSeat(5);
        addSeat(6);

        addFlight(1000,"Los Angeles", "Chicago");
        addFlight(1010,"Chicago","New York");
        addFlight(2000,"New York","Chicago");
        addFlight(2010,"Chicago","Los Angeles");

	}
}
+57 −0
Changes for Learning Java 8 - Working Files/Chapter 10/DatabaseTest.java: 57 added lines, 0 removed lines.
Original line number Diff line number Diff line
package org.airline.reservations;

import static org.junit.Assert.*;

import org.junit.Test;

public class DatabaseTest {

	@Test
	public void testDatabase() {
		Database testDB = new Database();
		assertEquals(0, testDB.getSeats().size());
		assertEquals(0, testDB.getFlights().size());
		assertEquals(0, testDB.getPassengers().size());
		assertEquals(0, testDB.getTickets().size());
	}
	
	@Test
    public void testAddSeat() {
	    Database testDB2 = new Database();
	    testDB2.addSeat(2);
	    assertEquals(1, testDB2.getSeats().size());
	    assertEquals(2, testDB2.getSeats().get(0).getSeatNumber());
	}
	
	@Test
    public void testAddFlight() {
	    Database testDB3 = new Database();
	    testDB3.addFlight(1000, "Los Angeles", "Chicago");
	    assertEquals(1, testDB3.getFlights().size());
	}
	
	@Test
    public void testAddPassenger() {
	    Database testDB4 = new Database();
	    testDB4.addPassenger("Mike Kelly");
	    assertEquals(1, testDB4.getPassengers().size());
	}
	
	@Test
	public void testAddNewPassengers() {
		Database testDB6 = new Database();
		boolean result1 = testDB6.addPassenger("Mike Kelly");
		assertEquals(false, result1);
		boolean result2 = testDB6.addPassenger("Mike Kelly");
		assertEquals(true, result2);
	}
	
	@Test
    public void testBootstrap() {
         Database testDB7 = new Database();
         testDB7.bootstrap();
         assertEquals(6, testDB7.getSeats().size());
         assertEquals(4, testDB7.getFlights().size());
	}

}
+76 −0
Changes for Learning Java 8 - Working Files/Chapter 11/Console.java: 76 added lines, 0 removed lines.
Original line number Diff line number Diff line
package org.airline.reservations;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.LocalDate;
import java.util.ArrayList;

public class Console {

	public static void main(String[] args) {
		//initialize database
		Database prodDB = new Database();
		prodDB.bootstrap();
		
		//initialize console
		boolean always = true;
		BufferedReader screenInput = new BufferedReader(new InputStreamReader(System.in));
		String passengerName = null;
		int flightNumber = 0;
		LocalDate departureDate = LocalDate.now();
        int seatNumber = 0;

		while(always){
			//ask for passengerName and add
			System.out.println("Enter passenger: ");
			try {
				passengerName = screenInput.readLine();
			} catch (IOException e) {
				System.out.println("Sorry, I don't understand.");
			}
			
			boolean result = prodDB.addPassenger(passengerName);
			if (result) {
                System.out.println("Welcome back " + passengerName);
			} else {
                System.out.println("Welcome " + passengerName);
			}
			
			//show flights and ask for flight
			System.out.println("\nHere are the available flights:");
            for (Flight item : prodDB.getFlights()) {
                 System.out.println(item);
            }
            System.out.println("Enter the flight number to book: ");
            try {
                   flightNumber = Integer.parseInt(screenInput.readLine());
              } catch (IOException e) {
                   System.out.println("Please enter a flight number");
              } catch (NumberFormatException e) {
                  System.out.println("That wasn't a number");
             }
			
            //show available seats and ask
            System.out.println("\nAssuming you are flying today,");
            System.out.println("Here are the available seats on that flight: ");
            ArrayList<Seat> openSeats = prodDB.getOpenSeats(departureDate, flightNumber);
            for (Seat item : openSeats) {
                 System.out.print(item.getSeatNumber() + ", ");
            }
            System.out.println("\nEnter the seat you want: ");
            try {
                   seatNumber = Integer.parseInt(screenInput.readLine());
              } catch (IOException e) {
                   System.out.println("Please enter a seat number");
              }
			
            //create ticket and return info
            String ticketInfo = prodDB.addTicket(departureDate, passengerName, flightNumber, seatNumber);
            System.out.println("\nReservation Successful. Here are your details:");
            System.out.println(ticketInfo + "\n");
		}

	}

}
+307 KiB

File added.

No diff preview for this file type.

Loading