diff options
author | Mavlushechka <mavlushechka@gmail.com> | 2022-09-20 21:13:24 +0500 |
---|---|---|
committer | Mavlushechka <mavlushechka@gmail.com> | 2022-09-20 21:13:24 +0500 |
commit | 3b1af3333d687e354ab9fa0a475ae7ef74b740f9 (patch) | |
tree | 3341bf5457adbc3f317fdbd6120036dc19bd7551 /src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java | |
parent | 528fbeb1542ffba584eecf8bc07528d1633f4fa5 (diff) |
Add testing framework
Diffstat (limited to 'src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java')
-rw-r--r-- | src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java b/src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java new file mode 100644 index 0000000..b98fcec --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/utils/JSONParser.java @@ -0,0 +1,53 @@ +package com.mavlushechka.a1qa.utils; + +import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; + +import java.io.FileReader; +import java.io.IOException; +import java.util.Map; +import java.util.Optional; +import java.util.TreeMap; + +public class JSONParser { + + private final static org.json.simple.parser.JSONParser jsonParser = new org.json.simple.parser.JSONParser(); + private final static TreeMap<String, String> parsedData = new TreeMap<>(); + + + public static String parse(String filename, String key) { + Map.Entry<String, String> ceilingEntry = parsedData.ceilingEntry(filename + "."); + String requiredData; + + if (ceilingEntry == null || !ceilingEntry.getKey().startsWith(filename + ".")) { + parseFile(filename); + } + requiredData = parsedData.get(filename + "." + key); + + return Optional.ofNullable(requiredData).orElseThrow(() -> new IllegalArgumentException("Cannot find required data.")); + } + + private static void parseFile(String filename) { + JSONObject jsonObject; + + try (FileReader fileReader = new FileReader("src/main/resources/" + filename + ".json")) { + jsonObject = (JSONObject) jsonParser.parse(fileReader); + } catch (ParseException | IOException e) { + throw new IllegalArgumentException("Cannot find required file."); + } + putToParsedData(jsonObject, filename); + } + + private static void putToParsedData(JSONObject jsonObject, String filename) { + for (int i = 0; i < jsonObject.keySet().size(); i++) { + String[] keyValues = jsonObject.values().toArray()[i].toString().replaceAll("[{}\"\\\\]", "").split(","); + + for (String keyValue : keyValues) { + String[] splitKeyValue = keyValue.split(":", 2); + + parsedData.put(filename + "." + jsonObject.keySet().toArray()[i] + "." + splitKeyValue[0], splitKeyValue[1]); + } + } + } + +} |