From bce2b74ef2ace5f27f47cb6dc3765231878621e1 Mon Sep 17 00:00:00 2001 From: Daniel Poustka Date: Fri, 25 Dec 2020 16:33:25 +0100 Subject: [PATCH] Added ChannelFactory and ProductFactory make methods --- .../omo/foodchain/factory/ChannelFactory.java | 30 +++++++++++++++++-- .../omo/foodchain/factory/ProductFactory.java | 29 ++++++++++++++++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java index 4e4d700..b878d65 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java @@ -2,15 +2,41 @@ package cz.cvut.fel.sit.omo.foodchain.factory; import cz.cvut.fel.sit.omo.foodchain.channel.*; +import cz.cvut.fel.sit.omo.foodchain.parser.ParserResultElement; public class ChannelFactory { - public enum ChannelType + private enum ChannelType { Fruit, Vegetable, Meat, Other; } - public ChannelBase makeChannel(ChannelType typeOfChannel) + /** + * Creates channel based on channel type (Fruit, Vegetable, Meat, Other) + * @param input data from channel is created + * @return created Channel (FruitChannel, VegetableChannel, MeatChannel, OtherChannel) + */ + public ChannelBase makeChannel(ParserResultElement input) + { + ChannelBase c = null; + try + { + ChannelType channelType = ChannelType.valueOf(input.getAttribute("channel_type")); + c = makeChannelFromChannelType(channelType); + + } + catch (IllegalArgumentException e) + { + System.err.println("! Wrong type of enum in ChannelFactory: " + e); + } + catch (Exception e) + { + System.err.println("! Fatal error in ChannelFactory: " + e); + } + return c; + } + + private ChannelBase makeChannelFromChannelType(ChannelType typeOfChannel) { switch (typeOfChannel) { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java index eaa3822..f15564e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java @@ -1,12 +1,37 @@ package cz.cvut.fel.sit.omo.foodchain.factory; +import cz.cvut.fel.sit.omo.foodchain.parser.ParserResultElement; import cz.cvut.fel.sit.omo.foodchain.product.Product; +import cz.cvut.fel.sit.omo.foodchain.product.ProductState; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; + public class ProductFactory { - public Product makeProduct(String name, ProductType productType) + /** + * Creates Product based on input ParserResultElement + * @param input data from Product is created + * @return created Product + */ + public Product makeProduct(ParserResultElement input) { - return new Product(name, productType); + Product p = null; + try + { + String name = input.getAttribute("name"); + ProductType productType = ProductType.valueOf(input.getAttribute("product_type")); + ProductState productState = ProductState.valueOf(input.getAttribute("product_state")); + + p = new Product(name, productType, productState); + } + catch (IllegalArgumentException e) + { + System.err.println("! Wrong type of enum in ProductFactory: " + e); + } + catch (Exception e) + { + System.err.println("! Fatal error in ProductFactory: " + e); + } + return p; } }