diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java index 334f130..2cfbb63 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java @@ -1,11 +1,12 @@ package cz.cvut.fel.sit.omo.foodchain; import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase; -import cz.cvut.fel.sit.omo.foodchain.factory.ChannelFactory; import cz.cvut.fel.sit.omo.foodchain.factory.FactoryManager; +import cz.cvut.fel.sit.omo.foodchain.node.NodeBase; import cz.cvut.fel.sit.omo.foodchain.parser.ConfigurationParser; import cz.cvut.fel.sit.omo.foodchain.parser.ParserResult; import cz.cvut.fel.sit.omo.foodchain.parser.ParserResultElement; +import cz.cvut.fel.sit.omo.foodchain.pool.ChannelPool; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; @@ -18,18 +19,31 @@ public class FoodChain private static FactoryManager factoryManager = new FactoryManager(); public static void main(String[] args) + { + parseChannels(); + parseNodes(); + } + + public static FactoryManager getFactoryManager() + { + return factoryManager; + } + + + // todo maybe some refactoring needed? + // add other entities + public static void parseChannels() { try { // parse channel configuration - ConfigurationParser.parseDocument("channels"); + ConfigurationParser.parseDocument("channels.xml"); ParserResult parserResult = ConfigurationParser.getElements("channels"); - //todo need getter for elemtens... List elements = parserResult.getElements(); for (ParserResultElement el : elements) { - ChannelBase c = getFactoryManager().getChannelFactoryInstance().makeChannel(el); - getFactoryManager().getPoolDatabaseInstance().getChannelPoolInstance().add(c); + ChannelBase res = getFactoryManager().getChannelFactoryInstance().makeChannel(el); + getFactoryManager().getPoolDatabaseInstance().getChannelPoolInstance().add(res); } } @@ -41,12 +55,29 @@ public class FoodChain { System.err.println(e.getMessage()); } - - } - - public static FactoryManager getFactoryManager() + public static void parseNodes() { - return factoryManager; + try + { + // parse channel configuration + ConfigurationParser.parseDocument("nodes.xml"); + ParserResult parserResult = ConfigurationParser.getElements("nodes"); + List elements = parserResult.getElements(); + for (ParserResultElement el : elements) + { + NodeBase res = getFactoryManager().getNodeFactoryInstance().makeNode(el); + getFactoryManager().getPoolDatabaseInstance().getNodePoolInstance().add(res); + } + + } + catch (ParserConfigurationException | SAXException | IOException e) + { + System.err.println(e.getMessage()); + } + catch (Exception e) + { + System.err.println(e.getMessage()); + } } } 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 4dcbfce..5d12278 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 @@ -21,7 +21,7 @@ public class ProductFactory String name = input.getAttribute("name"); ProductType productType = ProductType.valueOf(input.getChild("type")); //ProductState productState = ProductState.valueOf(input.getChild("state")); - int price = Integer.getInteger(input.getChild("price")); + double price = Double.parseDouble(input.getChild("price")); //p = new Product(name, price, productType, productState); p = new Product(name, productType, price); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java index 6dafc88..2156d61 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java @@ -16,46 +16,46 @@ public class Product /** * Creates Product with default state AVAILABLE - * @param name name of product + * @param name name of product * @param productType type of product */ public Product(String name, ProductType productType) { this.name = name; - this.productType = productType; + this.productType = productType; this.productState = ProductState.AVAILABLE; this.money = Monetary.getDefaultAmountFactory().setCurrency("USD").setNumber(0).create(); } //TODO money int constructor - public Product(String name, ProductType productType, MonetaryAmount money) + public Product(String name, ProductType productType, Double money) { this.name = name; - this.productType = productType; + this.productType = productType; this.productState = ProductState.AVAILABLE; - this.money = money; + this.money = Monetary.getDefaultAmountFactory().setCurrency("USD").setNumber(money).create(); } /** * Creates Product - * @param name name of product - * @param productType type of product + * @param name name of product + * @param productType type of product * @param productState state of product */ public Product(String name, ProductType productType, ProductState productState) { this.name = name; - this.productType = productType; + this.productType = productType; this.productState = productState; this.money = Monetary.getDefaultAmountFactory().setCurrency("USD").setNumber(0).create(); } - public Product(String name, ProductType productType, ProductState productState, MonetaryAmount money) + public Product(String name, ProductType productType, ProductState productState, Double money) { this.name = name; - this.productType = productType; + this.productType = productType; this.productState = productState; - this.money = money; + this.money = Monetary.getDefaultAmountFactory().setCurrency("USD").setNumber(money).create(); } // "State machine methods" @@ -73,7 +73,7 @@ public class Product */ public void setStateToReadyForDispatch() { - if(this.productState.equals(ProductState.AVAILABLE)) + if (this.productState.equals(ProductState.AVAILABLE)) this.productState = ProductState.READY_FOR_DISPATCH; else throw new IllegalStateException("Cannot set state READY_FOR_DISPATCH. Product is not AVAILABLE!"); @@ -84,7 +84,7 @@ public class Product */ public void setStateToInTransit() { - if(this.productState.equals(ProductState.READY_FOR_DISPATCH)) + if (this.productState.equals(ProductState.READY_FOR_DISPATCH)) this.productState = ProductState.IN_TRANSIT; else throw new IllegalStateException("Cannot set state IN_TRANSIT. Product is not READY_FOR_DISPATCH!"); @@ -95,7 +95,7 @@ public class Product */ public void setStateToReadyForReception() { - if(this.productState.equals(ProductState.IN_TRANSIT)) + if (this.productState.equals(ProductState.IN_TRANSIT)) this.productState = ProductState.READY_FOR_RECEPTION; else throw new IllegalStateException("Cannot set state READY_FOR_RECEPTION. Product has not been in transit!"); @@ -145,7 +145,13 @@ public class Product this.currentOperation = currentOperation; } - public MonetaryAmount getMoney() { return money; } + public MonetaryAmount getMoney() + { + return money; + } - public void setMoney(MonetaryAmount money) { this.money = money; } + public void setMoney(MonetaryAmount money) + { + this.money = money; + } }