diff --git a/conf/channels.xml b/conf/channels.xml index dfa0429..1df2af7 100644 --- a/conf/channels.xml +++ b/conf/channels.xml @@ -1,5 +1,12 @@ + + + + + ]> - + \ No newline at end of file diff --git a/conf/nodes.xml b/conf/nodes.xml index b5a2081..7f80ca2 100644 --- a/conf/nodes.xml +++ b/conf/nodes.xml @@ -1,18 +1,27 @@ + + + + + + + ]> 100 - MEET PURCHASE;VEGETABLE PURCHASE;FRUIT PURCHASE + MEAT PURCHASE;VEGETABLE PURCHASE;FRUIT PURCHASE 0 - MEET SALE_AND_PURCHASE;VEGETABLE SALE_AND_PURCHASE;FRUIT SALE_AND_PURCHASE + MEAT SALE_AND_PURCHASE;VEGETABLE SALE_AND_PURCHASE;FRUIT SALE_AND_PURCHASE 1500 - MEET SALE_AND_PURCHASE;VEGETABLE SALE_AND_PURCHASE;FRUIT SALE_AND_PURCHASE + MEAT SALE_AND_PURCHASE;VEGETABLE SALE_AND_PURCHASE;FRUIT SALE_AND_PURCHASE 250 - MEET SALE;VEGETABLE SALE;FRUIT SALE + MEAT SALE;VEGETABLE SALE;FRUIT SALE \ No newline at end of file diff --git a/conf/products.xml b/conf/products.xml index ac863d4..1767295 100644 --- a/conf/products.xml +++ b/conf/products.xml @@ -1,3 +1,11 @@ + + + + + + + ]> jablko @@ -31,17 +39,17 @@ vepřové - MEET + MEAT 20 hovězí - MEET + MEAT 50 kuřecí - MEET + MEAT 30 \ No newline at end of file diff --git a/conf/scenarios.xml b/conf/scenarios.xml index fb74da6..512516b 100644 --- a/conf/scenarios.xml +++ b/conf/scenarios.xml @@ -1,3 +1,11 @@ + + + + + + ]> 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 4e167a7..35e2baf 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 @@ -6,7 +6,8 @@ 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 cz.cvut.fel.sit.omo.foodchain.product.Product; +import cz.cvut.fel.sit.omo.foodchain.scenario.Scenario; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; @@ -22,6 +23,11 @@ public class FoodChain { parseChannels(); parseNodes(); + parseProducts(); + parseScenarios(); + + getFactoryManager().getPoolDatabaseInstance().getChannelPoolInstance().findAll().stream().forEach(ch -> System.out.println(ch.getProductType())); + getFactoryManager().getPoolDatabaseInstance().getNodePoolInstance().findAll().stream().forEach(ch -> System.out.println(ch)); } public static FactoryManager getFactoryManager() @@ -29,7 +35,6 @@ public class FoodChain return factoryManager; } - // todo maybe some refactoring needed? // add other entities public static void parseChannels() @@ -51,12 +56,8 @@ public class FoodChain { System.err.println(e.getMessage()); } - catch (Exception e) - { - System.err.println(e.getMessage()); - e.printStackTrace(); - } } + public static void parseNodes() { try @@ -76,7 +77,45 @@ public class FoodChain { System.err.println(e.getMessage()); } - catch (Exception e) + } + + public static void parseProducts() + { + try + { + // parse channel configuration + ConfigurationParser.parseDocument("conf/products.xml"); + ParserResult parserResult = ConfigurationParser.getElements("product"); + List elements = parserResult.getElements(); + for (ParserResultElement el : elements) + { + Product res = getFactoryManager().getProductFactoryInstance().makeProduct(el); + getFactoryManager().getPoolDatabaseInstance().getProductPoolInstance().add(res); + } + + } + catch (ParserConfigurationException | SAXException | IOException e) + { + System.err.println(e.getMessage()); + } + } + + public static void parseScenarios() + { + try + { + // parse channel configuration + ConfigurationParser.parseDocument("conf/scenarios.xml"); + ParserResult parserResult = ConfigurationParser.getElements("scenario"); + List elements = parserResult.getElements(); + for (ParserResultElement el : elements) + { + Scenario res = getFactoryManager().getScenarioFactoryInstance().makeScenario(el); + getFactoryManager().getPoolDatabaseInstance().getScenarioPoolInstance().add(res); + } + + } + catch (ParserConfigurationException | SAXException | IOException e) { System.err.println(e.getMessage()); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java index 63237ce..9940b75 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java @@ -33,7 +33,7 @@ public class NodeFactory { nodeType = NodeType.valueOf(input.getAttribute("type")); - subsChannels = input.getChild("subscribed_channels"); + subsChannels = input.getChild("channels"); startMoney = Double.parseDouble(input.getChild("money")); } catch (IllegalArgumentException e) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java index 7dcb2a1..84f2c1b 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java @@ -21,7 +21,6 @@ public class ScenarioFactory { Scenario s = null; - return s; } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java index cdcfb44..cb27b5a 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java @@ -31,10 +31,19 @@ public class ConfigurationParser { Node tmpNode = elements.item(i); ParserResultElement element = new ParserResultElement(); for (int j = 0; j < tmpNode.getAttributes().getLength(); j++) { - element.addAttribute(tmpNode.getAttributes().item(i).getNodeName(), tmpNode.getAttributes().item(i).getTextContent()); + element + .addAttribute( + tmpNode + .getAttributes() + .item(j) + .getNodeName(), + tmpNode + .getAttributes() + .item(j) + .getTextContent()); } for (int j = 0; j < tmpNode.getChildNodes().getLength(); j++) { - element.addChild(tmpNode.getChildNodes().item(i).getNodeName(), tmpNode.getChildNodes().item(i).getTextContent()); + element.addChild(tmpNode.getChildNodes().item(j).getNodeName(), tmpNode.getChildNodes().item(j).getTextContent()); } resultList.addElement(element); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java index d7155e0..54afed5 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java @@ -11,6 +11,7 @@ public class ParserResultElement { private Map children; public ParserResultElement() { + children = new HashMap<>(); attributes = new HashMap<>(); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java index 249a52d..07423b1 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java @@ -3,5 +3,4 @@ package cz.cvut.fel.sit.omo.foodchain.pool; import cz.cvut.fel.sit.omo.foodchain.node.NodeBase; public class NodePool extends PoolListBase { - //TODO Tomas Angelo } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java index c802507..d61c75e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java @@ -12,10 +12,10 @@ public class Ticker { public static void start() { timer = new Timer(500, actionEvent -> { PoolDatabase db = FoodChain.getFactoryManager().getPoolDatabaseInstance(); - db.getChannelPoolInstance().findAll().forEach(ch -> ch.tick()); // change TTL of requirements - db.getNodePoolInstance().findAll().forEach(ch -> ch.tick()); // do next step in scenario - db.getProductPoolInstance().findAll().forEach(ch -> ch.tick()); // change duration of action - db.getScenarioPoolInstance().findAll().forEach(ch -> ch.tick()); // maybe unnecessary +// db.getChannelPoolInstance().findAll().forEach(ch -> ch.tick()); // change TTL of requirements +// db.getNodePoolInstance().findAll().forEach(ch -> ch.tick()); // do next step in scenario +// db.getProductPoolInstance().findAll().forEach(ch -> ch.tick()); // change duration of action +// db.getScenarioPoolInstance().findAll().forEach(ch -> ch.tick()); // maybe unnecessary }); timer.start(); }