diff --git a/src/pizzeria/NYPizzaStore.java b/src/pizzeria/NYPizzaStore.java index 9c940c8bf768e17b2a7884341fb553e3945dffb4..f3480ecdc071079d41791934d01905d9797bfbc3 100644 --- a/src/pizzeria/NYPizzaStore.java +++ b/src/pizzeria/NYPizzaStore.java @@ -1,17 +1,26 @@ package pizzeria; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Properties; + public class NYPizzaStore extends PizzaStore { Pizza createPizza(String item) { - if (item.equals("cheese")) { - return new NYStyleCheesePizza(); - } else if (item.equals("veggie")) { - return new NYStyleVeggiePizza(); - } else if (item.equals("clam")) { - return new NYStyleClamPizza(); - } else if (item.equals("pepperoni")) { - return new NYStylePepperoniPizza(); - } else return null; + Pizza pizza = null; + + Properties properties = new Properties(); + try { + properties.load(this.getClass().getResourceAsStream("nypizza.properties")); + String pizzaName = properties.getProperty(item); + Class<?> classOfPizza = Class.forName(pizzaName); + Constructor<Pizza> constructor = (Constructor<Pizza>) classOfPizza.getConstructor(new Class[]{}); + pizza = constructor.newInstance(); + } catch (IOException | ClassNotFoundException | InstantiationException | IllegalAccessException | + NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + return pizza; } - } diff --git a/src/pizzeria/nypizza.properties b/src/pizzeria/nypizza.properties new file mode 100644 index 0000000000000000000000000000000000000000..ff37049ddc4f00ace028b3c90422408ee1571871 --- /dev/null +++ b/src/pizzeria/nypizza.properties @@ -0,0 +1,5 @@ +cheese=pizzeria.NYStyleCheesePizza +clam=pizzeria.NYStyleClamPizza +pepperoni=pizzeria.NYStylePepperoniPizza +veggie=pizzeria.NYStyleVeggiePizza +salami=pizzeria.NYStyleSalamiPizza