diff --git a/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/Flight.java b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/Flight.java new file mode 100644 index 0000000..b880047 --- /dev/null +++ b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/Flight.java @@ -0,0 +1,54 @@ +package com.kodilla.good.patterns.flights; + +public class Flight { + private final int flightNumber; + private final String airportForDeparture; + private final String airportForArrival; + + public Flight(int flightNumber, String airportForDeparture, String airportForArrival) { + this.flightNumber = flightNumber; + this.airportForDeparture = airportForDeparture; + this.airportForArrival = airportForArrival; + } + + public int getFlightNumber() { + return flightNumber; + } + + public String getAirportForDeparture() { + return airportForDeparture; + } + + public String getAirportForArrival() { + return airportForArrival; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Flight flight = (Flight) o; + + if (flightNumber != flight.flightNumber) return false; + if (!airportForDeparture.equals(flight.airportForDeparture)) return false; + return airportForArrival.equals(flight.airportForArrival); + } + + @Override + public int hashCode() { + int result = flightNumber; + result = 31 * result + airportForDeparture.hashCode(); + result = 31 * result + airportForArrival.hashCode(); + return result; + } + + @Override + public String toString() { + return "Flight{" + + "flightNumber=" + flightNumber + + ", airportForDeparture='" + airportForDeparture + '\'' + + ", airportForArrival='" + airportForArrival + '\'' + + '}'; + } +} diff --git a/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightDb.java b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightDb.java new file mode 100644 index 0000000..faceed1 --- /dev/null +++ b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightDb.java @@ -0,0 +1,8 @@ +package com.kodilla.good.patterns.flights; + +import java.util.List; + +public interface FlightDb { + + List getFlights(); +} diff --git a/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightsApp.java b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightsApp.java new file mode 100644 index 0000000..3d2d105 --- /dev/null +++ b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightsApp.java @@ -0,0 +1,46 @@ +package com.kodilla.good.patterns.flights; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class FlightsApp { + private FlightDb flightDb; + + public FlightsApp(FlightDb flightDb) { + this.flightDb = flightDb; + } + + public List flightsFrom(String airportForDeparture) { + return flightDb.getFlights().stream() + .filter(f -> f.getAirportForDeparture().equals(airportForDeparture)) + .collect(Collectors.toList()); + } + + public List flightsTo(String airportForArrival) { + return flightDb.getFlights().stream() + .filter(f -> f.getAirportForArrival().equals(airportForArrival)) + .collect(Collectors.toList()); + } + + public List flightsThrough(String airportToFlyThrough) { + List listFlightsEndingIn = flightDb.getFlights().stream() + .filter(f -> f.getAirportForArrival().equals(airportToFlyThrough)) + .map(f -> f.getAirportForDeparture()) + .collect(Collectors.toList()); + + List listFlightsStartingIn = flightDb.getFlights().stream() + .filter(f -> f.getAirportForDeparture().equals(airportToFlyThrough)) + .map(f -> f.getAirportForArrival()) + .collect(Collectors.toList()); + + List flightsThroughAirportIn = new ArrayList<>(); + + for(String airportForDeparture : listFlightsEndingIn) { + for(String airportForArrival : listFlightsStartingIn) { + flightsThroughAirportIn.add(new Flight(0, airportForDeparture, airportForArrival)); + } + } + return flightsThroughAirportIn; + } +} diff --git a/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightsList.java b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightsList.java new file mode 100644 index 0000000..c4d7279 --- /dev/null +++ b/kodilla-good-patterns/src/main/java/com/kodilla/good/patterns/flights/FlightsList.java @@ -0,0 +1,19 @@ +package com.kodilla.good.patterns.flights; + +import java.util.ArrayList; +import java.util.List; + +public class FlightsList implements FlightDb { + @Override + public List getFlights() { + List flightsList = new ArrayList<>(); + flightsList.add(new Flight(14739, "Warsaw", "LA")); + flightsList.add(new Flight(22033, "LA", "Berlin")); + flightsList.add(new Flight(44467, "Paris", "Moscow")); + flightsList.add(new Flight(50902, "Moscow", "LA")); + flightsList.add(new Flight(14002, "Warsaw", "Moscow")); + flightsList.add(new Flight(17099, "Paris", "Warsaw")); + + return flightsList; + } +} diff --git a/kodilla-good-patterns/src/test/java/com/kodilla/good/patterns/flights/FlightsTestSuite.java b/kodilla-good-patterns/src/test/java/com/kodilla/good/patterns/flights/FlightsTestSuite.java new file mode 100644 index 0000000..f965fbe --- /dev/null +++ b/kodilla-good-patterns/src/test/java/com/kodilla/good/patterns/flights/FlightsTestSuite.java @@ -0,0 +1,50 @@ +package com.kodilla.good.patterns.flights; + +import org.junit.Assert; +import org.junit.Test; + +public class FlightsTestSuite { + + @Test + public void testFlightsFrom() { + // Given + FlightsList flightsList = new FlightsList(); + FlightsApp flightsApp = new FlightsApp(flightsList); + + // When + int numberOfFlightsFromWarsaw = flightsApp.flightsFrom("Warsaw").size(); + int numberOfFlightsFromLa = flightsApp.flightsFrom("LA").size(); + + // Then + Assert.assertEquals(2, numberOfFlightsFromWarsaw); + Assert.assertEquals(1, numberOfFlightsFromLa); + } + + @Test + public void testFlightsTo() { + // Given + FlightsList flightsList = new FlightsList(); + FlightsApp flightsApp = new FlightsApp(flightsList); + + // When + int numberOfFlightsToMoscow = flightsApp.flightsTo("Moscow").size(); + int numberOfFlightsToWarsaw = flightsApp.flightsTo("Warsaw").size(); + + // Then + Assert.assertEquals(2, numberOfFlightsToMoscow); + Assert.assertEquals(1, numberOfFlightsToWarsaw); + } + + @Test + public void TestFlightsThrough() { + // Given + FlightsList flightsList = new FlightsList(); + FlightsApp flightsApp = new FlightsApp(flightsList); + + // When + int numberOfFlightsThroughLa = flightsApp.flightsThrough("LA").size(); + + // Then + Assert.assertEquals(2, numberOfFlightsThroughLa); + } +} diff --git a/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/ExtraFoodShop.java b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/ExtraFoodShop.java new file mode 100644 index 0000000..c2019d2 --- /dev/null +++ b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/ExtraFoodShop.java @@ -0,0 +1,10 @@ +package com.kodilla.patterns.food2door; + +public class ExtraFoodShop implements ProductProcessor { + + @Override + public boolean process() { + System.out.println("Lorem ipsum dolor"); + return true; + } +} diff --git a/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/GlutenFreeShop.java b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/GlutenFreeShop.java new file mode 100644 index 0000000..03666af --- /dev/null +++ b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/GlutenFreeShop.java @@ -0,0 +1,10 @@ +package com.kodilla.patterns.food2door; + +public class GlutenFreeShop implements ProductProcessor { + + @Override + public boolean process() { + System.out.println("Lorem ipsum dolor"); + return true; + } +} diff --git a/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/HealthyShop.java b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/HealthyShop.java new file mode 100644 index 0000000..7d4fd1e --- /dev/null +++ b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/HealthyShop.java @@ -0,0 +1,10 @@ +package com.kodilla.patterns.food2door; + +public class HealthyShop implements ProductProcessor { + + @Override + public boolean process() { + System.out.println("Lorem ipsum dolor"); + return true; + } +} diff --git a/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/ProductProcessor.java b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/ProductProcessor.java new file mode 100644 index 0000000..9ae52b4 --- /dev/null +++ b/kodilla-patterns/src/main/java/com/kodilla/patterns/food2door/ProductProcessor.java @@ -0,0 +1,6 @@ +package com.kodilla.patterns.food2door; + +public interface ProductProcessor { + + boolean process(); +}