blob: b98fcec5460d7744d5d14d3aad9bba28b3f61c3a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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]);
}
}
}
}
|