From 666abbe2e1eb065b3f598658839838a92f8a15b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Musil?= Date: Wed, 23 Dec 2020 12:34:44 +0100 Subject: [PATCH] Implemented ConfigurationParser + result, removed IPool --- .../foodchain/parser/ConfigurationParser.java | 39 +++++++++++++ .../omo/foodchain/parser/ParserResult.java | 18 ++++++ .../foodchain/parser/ParserResultElement.java | 56 +++++++++++++++++++ .../fel/sit/omo/foodchain/pool/IPool.java | 15 ----- .../sit/omo/foodchain/pool/PoolListBase.java | 2 +- 5 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java delete mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/IPool.java 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 7ab23ab..f1298fd 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 @@ -1,4 +1,43 @@ package cz.cvut.fel.sit.omo.foodchain.parser; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.File; +import java.io.IOException; + public class ConfigurationParser { + + private static Document activeDocument; + + public static void parseDocument(String name) throws ParserConfigurationException, IOException, SAXException { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setValidating(true); + factory.setIgnoringElementContentWhitespace(true); + DocumentBuilder builder = factory.newDocumentBuilder(); + File file = new File(name); + activeDocument = builder.parse(file); + } + + public static ParserResult getElements(String tag) { + NodeList elements = activeDocument.getElementsByTagName(tag); + ParserResult resultList = new ParserResult(); + for (int i = 0; i < elements.getLength(); i++) { + Node tmp_node = elements.item(i); + ParserResultElement element = new ParserResultElement(); + for (int j = 0; j < tmp_node.getAttributes().getLength(); j++) { + element.addAttribute(tmp_node.getAttributes().item(i).getNodeName(), tmp_node.getAttributes().item(i).getTextContent()); + } + for (int j = 0; j < tmp_node.getChildNodes().getLength(); j++) { + element.addChild(tmp_node.getChildNodes().item(i).getNodeName(), tmp_node.getChildNodes().item(i).getTextContent()); + } + resultList.addElement(element); + } + return resultList; + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java new file mode 100644 index 0000000..20e8ead --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java @@ -0,0 +1,18 @@ +package cz.cvut.fel.sit.omo.foodchain.parser; + +import org.w3c.dom.Element; + +import java.util.LinkedList; + +public class ParserResult { + + private LinkedList elements; + + public ParserResult() { + elements = new LinkedList<>(); + } + + public void addElement(ParserResultElement element) { + elements.add(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 new file mode 100644 index 0000000..d7155e0 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java @@ -0,0 +1,56 @@ +package cz.cvut.fel.sit.omo.foodchain.parser; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; + +public class ParserResultElement { + + private String name; + private Map attributes; + private Map children; + + public ParserResultElement() { + attributes = new HashMap<>(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Map getAttributes() { + return attributes; + } + + public void setAttributes(Map attributes) { + this.attributes = attributes; + } + + public void addAttribute(String key, String value) { + attributes.put(key, value); + } + + public String getAttribute(String key) { + return attributes.get(key); + } + + public Map getChildren() { + return children; + } + + public void setChildren(Map children) { + this.children = children; + } + + public void addChild(String key, String value) { + children.put(key, value); + } + + public String getChild(String key) { + return children.get(key); + } +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/IPool.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/IPool.java deleted file mode 100644 index e91f2bf..0000000 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/IPool.java +++ /dev/null @@ -1,15 +0,0 @@ -package cz.cvut.fel.sit.omo.foodchain.pool; - -import java.util.Collection; - -public interface IPool { - Collection findAll(); - - void add(T element); - - void remove(T element); - - void clear(); - - boolean contains(T element); -} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java index 48f9ce8..1448b1c 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java @@ -4,7 +4,7 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; -public abstract class PoolListBase implements IPool { +public abstract class PoolListBase { List pool; public PoolListBase() {