/* * @topic T02715 Assignment a8 -- Airline Flight Schedule demo Verion 2 * @brief Flight Schedule which can produce sorted ArrayList of departures */ package airlinesV2; import java.util.HashMap; import java.util.Map; import java.util.ArrayList; import java.util.Collections; public class FlightSchedule { ArrayList< Airline > airlines; HashMap< String, Flight > flightMap; // constructors public FlightSchedule() { airlines = new ArrayList< Airline >(); flightMap = new HashMap< String, Flight >(); } // operations public void addAirline( String airlineCode /*aircraft*/ ) { Airline air = new Airline( airlineCode); // Set aircraft info // air.setAircraft( aircraftModel ); airlines.add( air ); } public Flight addFlight( String airlineCode, int flightNumber ) { Flight newFlight = null; if ( isValidAirlineCode( airlineCode ) ) { String externalflightNumber = airlineCode + flightNumber; // "DL1234" -> flight: newFlight = new Flight( airlineCode, flightNumber); flightMap.put( externalflightNumber, //DL1234 newFlight // Flight object ); } return newFlight; } public boolean isValidAirlineCode( String airlineCode ) { for ( Airline airline : airlines ) { //if ( 0 == airline.getCode().compareTo( airlineCode ) ) { //if ( 0 == airlineCode.compareTo( airline.getCode() ) ) { //if ( airlineCode.equals( airline.getCode() ) ) { if ( airlineCode.equalsIgnoreCase( airline.getCode() ) ) { return true; } } return false; }//isValidAirlineCode /* * Find Airline object or return null if the code is invlaid */ public Airline getAirlineByCode( String airlineCode ) { for ( Airline airline : airlines ) { //if ( 0 == airline.getCode().compareTo( airlineCode ) ) { //if ( 0 == airlineCode.compareTo( airline.getCode() ) ) { //if ( airlineCode.equals( airline.getCode() ) ) { if ( airlineCode.equalsIgnoreCase( airline.getCode() ) ) { return airline; } } return null; }//isValidAirlineCode /* * Returns true if flight number is already on file */ public boolean isExistingFlightNumber( String airlineCode, int flightNumber ) { String externalflightNumber = airlineCode + flightNumber; if ( flightMap.containsKey( externalflightNumber ) ) { // the flight is already on file: return true; } return false; } public void print() { //System.out.println( flightMap ); for ( Map.Entry entry : flightMap.entrySet() ) { System.out.println( entry.getKey() ); } } public void updateFlightStatus( String externalflightNumber, char status ) { Flight flight = flightMap.get( externalflightNumber ); if ( flight == null ) { System.out.println( "Flight " + externalflightNumber + " is not valid!" ); return; } flight.updateStatus(status); } public ArrayList<Flight> getSortedDepartures(/*airport, day-of-week*/) { ArrayList<Flight> departures = new ArrayList<Flight>(); for ( Map.Entry<String, Flight> entry : flightMap.entrySet() ) { Flight aFlight = entry.getValue(); // TODO: check the airport code and departure day departures.add( aFlight ); } // TODO: Flight.setSortOrder( Flight.SCHEDULE_SORT_ORDER_DEPARTURE_TIME ); Collections.sort(departures); return departures; } public ArrayList< Airline > getAirlines() { return airlines; } }//class FlightSchedule