finished JsonParser logic
This commit is contained in:
parent
6bd9f754f5
commit
69676c68b1
@ -2,10 +2,65 @@ public class City {
|
||||
private String name;
|
||||
private Station trainStation;
|
||||
private Station busStation;
|
||||
private int row;
|
||||
private int col;
|
||||
|
||||
City(String name, Station train, Station bus) {
|
||||
City(String name, String train, String bus, int row, int col) {
|
||||
this.name = name;
|
||||
this.trainStation = new Station(TransportType.TRAIN, train);
|
||||
this.busStation = new Station(TransportType.BUS, bus);
|
||||
}
|
||||
|
||||
City(String name, Station train, Station bus, int row, int col) {
|
||||
this.name = name;
|
||||
this.trainStation = train;
|
||||
this.busStation = bus;
|
||||
this.row = row;
|
||||
this.col = col;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Station getTrainStation() {
|
||||
return trainStation;
|
||||
}
|
||||
|
||||
public void setTrainStation(Station trainStation) {
|
||||
this.trainStation = trainStation;
|
||||
}
|
||||
|
||||
public Station getBusStation() {
|
||||
return busStation;
|
||||
}
|
||||
|
||||
public void setBusStation(Station busStation) {
|
||||
this.busStation = busStation;
|
||||
}
|
||||
|
||||
public int getRow() {
|
||||
return row;
|
||||
}
|
||||
|
||||
public void setRow(int row) {
|
||||
this.row = row;
|
||||
}
|
||||
|
||||
public int getCol() {
|
||||
return col;
|
||||
}
|
||||
|
||||
public void setCol(int col) {
|
||||
this.col = col;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name + "\n\tTrain Station: " + trainStation + "\n\tBus Station: " + busStation;
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +1,27 @@
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class Departure {
|
||||
private TransportType type;
|
||||
private String from;
|
||||
private String to;
|
||||
private int duration;
|
||||
private LocalTime departureTime;
|
||||
private double price;
|
||||
private int minTransferTime;
|
||||
|
||||
public Departure(
|
||||
TransportType type, String from, String to, int duration, double price, int minTransferTime) {
|
||||
TransportType type,
|
||||
String from,
|
||||
String to,
|
||||
String departureTime,
|
||||
int duration,
|
||||
double price,
|
||||
int minTransferTime) {
|
||||
this.type = type;
|
||||
this.from = from;
|
||||
this.to = to;
|
||||
this.departureTime = LocalTime.parse(departureTime, DateTimeFormatter.ofPattern("HH:mm"));
|
||||
this.duration = duration;
|
||||
this.price = price;
|
||||
this.minTransferTime = minTransferTime;
|
||||
@ -39,4 +50,26 @@ public class Departure {
|
||||
public int getMinTransferTime() {
|
||||
return minTransferTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Departure{"
|
||||
+ "type="
|
||||
+ type
|
||||
+ ", from='"
|
||||
+ from
|
||||
+ '\''
|
||||
+ ", to='"
|
||||
+ to
|
||||
+ '\''
|
||||
+ ", departureTime="
|
||||
+ departureTime.format(DateTimeFormatter.ofPattern("HH:mm"))
|
||||
+ ", duration="
|
||||
+ duration
|
||||
+ ", price="
|
||||
+ price
|
||||
+ ", minTransferTime="
|
||||
+ minTransferTime
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,18 @@
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class JsonParser {
|
||||
|
||||
public static void main(String[] args) {
|
||||
JsonParser.getValue("transport_data.json", "countryMap");
|
||||
// String[][] map = JsonParser.parseCountryMap("transport_data.json", "countryMap");
|
||||
// JsonParser.parseCities("transport_data.json", "stations");
|
||||
JsonParser.getDeparturesList("transport_data.json", "departures");
|
||||
}
|
||||
|
||||
public static Object getValue(String fileName, String key) {
|
||||
public static String getValue(String fileName, String key) {
|
||||
StringBuilder json = new StringBuilder();
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(fileName));
|
||||
@ -20,25 +25,147 @@ public class JsonParser {
|
||||
}
|
||||
|
||||
String searchKey = "\"" + key + "\": [";
|
||||
System.out.println(searchKey);
|
||||
int keyIndex = json.indexOf(searchKey);
|
||||
|
||||
if (keyIndex == -1)
|
||||
return null;
|
||||
if (keyIndex == -1) return null;
|
||||
|
||||
String jsonString = json.toString();
|
||||
int startIndex = keyIndex + searchKey.length() - 1;
|
||||
|
||||
int endIndex = findPair(jsonString, startIndex);
|
||||
|
||||
System.out.println("end index");
|
||||
if (endIndex == -1)
|
||||
return null;
|
||||
if (endIndex == -1) return null;
|
||||
|
||||
System.out.println(jsonString.substring(startIndex, endIndex));
|
||||
return jsonString.substring(startIndex, endIndex);
|
||||
}
|
||||
|
||||
public static String[][] parseCountryMap(String fileName, String key) {
|
||||
|
||||
String mapData = getValue(fileName, key);
|
||||
|
||||
mapData = mapData.replaceAll("[\\[\\]]+", "|");
|
||||
String[] rows = mapData.split("\\|");
|
||||
|
||||
List<String[]> matrixList = new ArrayList<>();
|
||||
|
||||
for (String row : rows) {
|
||||
if (row.trim().isEmpty()) continue;
|
||||
String[] cities =
|
||||
Arrays.stream(row.split(","))
|
||||
.map(s -> s.replaceAll("\"", "").trim())
|
||||
.filter(s -> !s.isEmpty())
|
||||
.toArray(String[]::new);
|
||||
for (String city : cities) {
|
||||
System.out.println(city);
|
||||
}
|
||||
if (cities.length > 0) matrixList.add(cities);
|
||||
}
|
||||
String[][] result = new String[matrixList.size()][];
|
||||
for (int i = 0; i < matrixList.size(); i++) {
|
||||
|
||||
result[i] = matrixList.get(i);
|
||||
}
|
||||
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
for (int j = 0; j < result[i].length; j++) {
|
||||
System.out.println("result[" + i + "][" + j + "] = " + result[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<Departure> getDeparturesList(String fileName, String key) {
|
||||
List<Departure> departures = new ArrayList<>();
|
||||
|
||||
String departuresJson = getValue(fileName, key);
|
||||
System.out.println(departuresJson);
|
||||
|
||||
String res =
|
||||
departuresJson
|
||||
.replaceAll("[\\{\\[\\]]", "")
|
||||
.replaceAll("\\},", "\\|")
|
||||
.replaceAll("\\}", "")
|
||||
.replaceAll("\\\"", "")
|
||||
.replaceAll(
|
||||
"type:\\s|\\sfrom:\\s|\\sto:\\s|\\sdepartureTime:\\s|\\sduration:\\s|\\sprice:\\s|\\sminTransferTime:\\s",
|
||||
"");
|
||||
|
||||
System.out.println(res);
|
||||
|
||||
String[] arr = res.split("\\|");
|
||||
for (String a : arr) {
|
||||
String[] temp = a.split(",");
|
||||
departures.add(
|
||||
new Departure(
|
||||
parseTransportType(temp[0]),
|
||||
temp[1],
|
||||
temp[2],
|
||||
temp[3],
|
||||
Integer.parseInt(temp[4]),
|
||||
Double.parseDouble(temp[5]),
|
||||
Integer.parseInt(temp[6])));
|
||||
System.out.println(a);
|
||||
}
|
||||
|
||||
for (Departure dep : departures) System.out.println(dep);
|
||||
return departures;
|
||||
}
|
||||
|
||||
public static List<City> parseCities(String fileName, String key) {
|
||||
String cityData = getValue(fileName, key);
|
||||
System.out.println(cityData);
|
||||
String res =
|
||||
cityData
|
||||
.replaceAll("[\\[\\]]+", "")
|
||||
.replaceAll("\\},\\{", "\n")
|
||||
.replaceAll("[\\{\\}]", "")
|
||||
.replaceAll("\\n", "|");
|
||||
|
||||
String[] arr = res.split("\\|");
|
||||
|
||||
List<City> cities = new ArrayList<>();
|
||||
List<String[]> list = new ArrayList<>();
|
||||
for (int i = 0; i < arr.length; i++) {
|
||||
String[] temp = arr[i].split(",");
|
||||
list.add(temp);
|
||||
}
|
||||
int i = 0;
|
||||
List<String> temp = new ArrayList<>();
|
||||
List<String> formatedList = new ArrayList<>();
|
||||
for (String[] a : list) {
|
||||
temp.clear();
|
||||
formatedList.clear();
|
||||
System.out.println(i);
|
||||
i++;
|
||||
for (String b : a) {
|
||||
temp.add(b);
|
||||
}
|
||||
for (String item : temp) {
|
||||
item = (item.replaceAll("\\\"[a-zA-Z]+\\\":\\s", "").trim().replaceAll("\\\"", ""));
|
||||
System.out.println(item);
|
||||
}
|
||||
|
||||
for (int j = 0; j < temp.size(); j++) {
|
||||
formatedList.add(
|
||||
temp.get(j).replaceAll("\\\"[a-zA-Z]+\\\":\\s", "").trim().replaceAll("\\\"", ""));
|
||||
System.out.println(formatedList.get(j));
|
||||
}
|
||||
|
||||
cities.add(
|
||||
new City(
|
||||
formatedList.get(0),
|
||||
formatedList.get(1),
|
||||
formatedList.get(2),
|
||||
Integer.parseInt(String.valueOf(formatedList.get(0).charAt(2))),
|
||||
Integer.parseInt(String.valueOf(formatedList.get(0).charAt(4)))));
|
||||
}
|
||||
for (City city : cities) {
|
||||
System.out.println(city);
|
||||
}
|
||||
return cities;
|
||||
}
|
||||
|
||||
private static int findPair(String str, int startIndex) {
|
||||
|
||||
char open = str.charAt(startIndex);
|
||||
@ -59,4 +186,13 @@ public class JsonParser {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static TransportType parseTransportType(String str) {
|
||||
for (TransportType t : TransportType.values()) {
|
||||
if (t.toString().equalsIgnoreCase(str)) {
|
||||
return t;
|
||||
}
|
||||
}
|
||||
return TransportType.NOT_ASSIGNED;
|
||||
}
|
||||
}
|
||||
|
@ -7,14 +7,10 @@ public class Station {
|
||||
private String name;
|
||||
private List<Departure> departures = new ArrayList<Departure>();
|
||||
|
||||
Station() {
|
||||
Station() {}
|
||||
|
||||
}
|
||||
|
||||
Station(TransportType type, String name, List<Departure> departures) {
|
||||
Station(TransportType type, String name) {
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
this.departures = departures;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,32 +0,0 @@
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TransportData {
|
||||
private List<Station> busStations = new ArrayList<>();
|
||||
private List<Station> trainStations = new ArrayList<>();
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(TransportData.readFileAsString("transport_data.json"));
|
||||
}
|
||||
|
||||
public TransportData loadData(String path) {
|
||||
TransportData data = new TransportData();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public static String readFileAsString(String path) {
|
||||
StringBuilder string = new StringBuilder();
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
|
||||
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null)
|
||||
string.append(line).append("\n");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return string.toString();
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@ public class TransportDataGenerator {
|
||||
private static final Random random = new Random();
|
||||
|
||||
public static void main(String[] args) {
|
||||
TransportDataGenerator generator = new TransportDataGenerator(3, 3);
|
||||
TransportDataGenerator generator = new TransportDataGenerator(3, 4);
|
||||
TransportData data = generator.generateData();
|
||||
generator.saveToJson(data, "transport_data.json");
|
||||
System.out.println("Podaci su generisani i sacuvani kao transport_data.json");
|
||||
|
@ -1,13 +0,0 @@
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
|
||||
public class TransportDataLoader {
|
||||
|
||||
public static void loadData(String path) {
|
||||
try {
|
||||
FileReader file = new FileReader(path);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,16 +1,16 @@
|
||||
public enum TransportType {
|
||||
NOT_ASSIGNED("null"),
|
||||
BUS("Bus"),
|
||||
TRAIN("Train");
|
||||
NOT_ASSIGNED("null"),
|
||||
BUS("autobus"),
|
||||
TRAIN("voz");
|
||||
|
||||
private final String type;
|
||||
private final String type;
|
||||
|
||||
TransportType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
TransportType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.type;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.type;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user