From 9daa3140e493e717252ff1cc69db79c5eb17066f Mon Sep 17 00:00:00 2001 From: nikhilbarar Date: Wed, 29 Aug 2018 22:02:17 +0530 Subject: [PATCH] Category Enum for category of Car --- .../com/iluwatar/collectionpipeline/App.java | 4 +-- .../com/iluwatar/collectionpipeline/Car.java | 9 +++--- .../collectionpipeline/CarFactory.java | 11 +++---- .../iluwatar/collectionpipeline/Category.java | 30 +++++++++++++++++++ .../FunctionalProgramming.java | 4 +-- .../ImperativeProgramming.java | 6 ++-- .../iluwatar/collectionpipeline/AppTest.java | 4 +-- 7 files changed, 50 insertions(+), 18 deletions(-) create mode 100644 collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Category.java diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java index a36ce2ec1..7e0ebf0e9 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/App.java @@ -59,10 +59,10 @@ public class App { List modelsFunctional = FunctionalProgramming.getModelsAfter2000(cars); LOGGER.info(modelsFunctional.toString()); - Map> groupingByCategoryImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); + Map> groupingByCategoryImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); LOGGER.info(groupingByCategoryImperative.toString()); - Map> groupingByCategoryFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); + Map> groupingByCategoryFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); LOGGER.info(groupingByCategoryFunctional.toString()); Person john = new Person(cars); diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Car.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Car.java index aec7ea0e1..b990f9dff 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Car.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Car.java @@ -23,21 +23,22 @@ package com.iluwatar.collectionpipeline; /** - * A Car class that has the properties of make, model, and year. + * A Car class that has the properties of make, model, year and category. */ public class Car { private String make; private String model; private int year; - private String category; + private Category category; /** * Constructor to create an instance of car. * @param make the make of the car * @param model the model of the car * @param yearOfMake the year of built of the car + * @param category the {@link Category} of the car */ - public Car(String make, String model, int yearOfMake, String category) { + public Car(String make, String model, int yearOfMake, Category category) { this.make = make; this.model = model; this.year = yearOfMake; @@ -56,7 +57,7 @@ public class Car { return year; } - public String getCategory() { + public Category getCategory() { return category; } } \ No newline at end of file diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java index ad1127d25..031853fca 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/CarFactory.java @@ -37,10 +37,11 @@ public class CarFactory { * @return {@link List} of {@link Car} */ public static List createCars() { - return Arrays.asList(new Car("Jeep", "Wrangler", 2011, "Jeep"), new Car("Jeep", "Comanche", 1990, "Jeep"), - new Car("Dodge", "Avenger", 2010, "Sedan"), - new Car("Buick", "Cascada", 2016, "Convertible"), - new Car("Ford", "Focus", 2012, "Sedan"), - new Car("Chevrolet", "Geo Metro", 1992, "Convertible")); + return Arrays.asList(new Car("Jeep", "Wrangler", 2011, Category.JEEP), + new Car("Jeep", "Comanche", 1990, Category.JEEP), + new Car("Dodge", "Avenger", 2010, Category.SEDAN), + new Car("Buick", "Cascada", 2016, Category.CONVERTIBLE), + new Car("Ford", "Focus", 2012, Category.SEDAN), + new Car("Chevrolet", "Geo Metro", 1992, Category.CONVERTIBLE)); } } \ No newline at end of file diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Category.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Category.java new file mode 100644 index 000000000..456864fdb --- /dev/null +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/Category.java @@ -0,0 +1,30 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.collectionpipeline; + +/** + * Enum for the category of car + */ +public enum Category { + JEEP, SEDAN, CONVERTIBLE +} diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/FunctionalProgramming.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/FunctionalProgramming.java index 2a05b3bd1..3cc24ce44 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/FunctionalProgramming.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/FunctionalProgramming.java @@ -66,7 +66,7 @@ public class FunctionalProgramming { * @param cars {@link List} of {@link Car} to be used for grouping * @return {@link Map} with category as key and cars belonging to that category as value */ - public static Map> getGroupingOfCarsByCategory(List cars) { + public static Map> getGroupingOfCarsByCategory(List cars) { return cars.stream().collect(Collectors.groupingBy(Car::getCategory)); } @@ -78,7 +78,7 @@ public class FunctionalProgramming { */ public static List getSedanCarsOwnedSortedByDate(List persons) { return persons.stream().map(Person::getCars).flatMap(List::stream) - .filter(car -> "Sedan".equals(car.getCategory())) + .filter(car -> Category.SEDAN.equals(car.getCategory())) .sorted(Comparator.comparing(Car::getYear)).collect(Collectors.toList()); } } diff --git a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/ImperativeProgramming.java b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/ImperativeProgramming.java index 85b875dfc..7466462cc 100644 --- a/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/ImperativeProgramming.java +++ b/collection-pipeline/src/main/java/com/iluwatar/collectionpipeline/ImperativeProgramming.java @@ -86,8 +86,8 @@ public class ImperativeProgramming { * @param cars {@link List} of {@link Car} to be used for grouping * @return {@link Map} with category as key and cars belonging to that category as value */ - public static Map> getGroupingOfCarsByCategory(List cars) { - Map> groupingByCategory = new HashMap<>(); + public static Map> getGroupingOfCarsByCategory(List cars) { + Map> groupingByCategory = new HashMap<>(); for (Car car: cars) { if (groupingByCategory.containsKey(car.getCategory())) { groupingByCategory.get(car.getCategory()).add(car); @@ -114,7 +114,7 @@ public class ImperativeProgramming { List sedanCars = new ArrayList<>(); for (Car car: cars) { - if ("Sedan".equals(car.getCategory())) { + if (Category.SEDAN.equals(car.getCategory())) { sedanCars.add(car); } } diff --git a/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java b/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java index 5827c34a3..c68521797 100644 --- a/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java +++ b/collection-pipeline/src/test/java/com/iluwatar/collectionpipeline/AppTest.java @@ -51,8 +51,8 @@ public class AppTest { @Test public void testGetGroupingOfCarsByCategory() { - Map> modelsFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); - Map> modelsImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); + Map> modelsFunctional = FunctionalProgramming.getGroupingOfCarsByCategory(cars); + Map> modelsImperative = ImperativeProgramming.getGroupingOfCarsByCategory(cars); assertEquals(modelsFunctional, modelsImperative); }