Added support to fetch venues #3

Merged
adsu7578 merged 4 commits from test into develop 2022-05-23 10:26:31 +02:00
Showing only changes of commit 1830d386cc - Show all commits

View File

@ -25,28 +25,57 @@ public class OpenVenueService {
private List<VenueObject> data; private List<VenueObject> data;
private LocalDate lastFetch; private LocalDate lastFetch;
public OpenVenueService() {
// Pre load data...
try {
this.getVenueInfo();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private boolean isCacheOK(LocalDate ld) {
if (this.data == null) {
return false;
} else if (lastFetch != null && ld.plusDays(NO_DAYS_BETWEEN_FETCH).isBefore(LocalDate.now())) {
// Clear cache
this.data = null;
this.lastFetch = null;
return false;
} else {
return true;
}
}
public OpenVenueResponse getVenueInfo() throws IOException, InterruptedException { public OpenVenueResponse getVenueInfo() throws IOException, InterruptedException {
logInfo("Start getVenueInfo");
// String tempURI = "https://openstreetgs.stockholm.se/geoservice/api/b8e20fd7-5654-465e-8976-35b4de902b41/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=Markupplatelse&CQL_FILTER=Kategorityp=%271.411I,%20Uteservering%20B-läge%27%20&outputFormat=application/json"; // String tempURI = "https://openstreetgs.stockholm.se/geoservice/api/b8e20fd7-5654-465e-8976-35b4de902b41/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=Markupplatelse&CQL_FILTER=Kategorityp=%271.411I,%20Uteservering%20B-läge%27%20&outputFormat=application/json";
System.out.println("getVenueInfo: "); if (isCacheOK(this.lastFetch)) {
String uri = buildURI(apiKey); logInfo("Cache OK");
System.out.println("URI: " + uri); logInfo("Current data: " + data);
if (data == null || lastFetch != null &&
(lastFetch.plusDays(NO_DAYS_BETWEEN_FETCH)).isAfter(LocalDate.now())) {
HttpRequest request = createNewRequest(uri);
HttpResponse<String> response = handleResponse(request);
return buildResult(response.body());
} else {
OpenVenueResponse openVenueResponse = new OpenVenueResponse(); OpenVenueResponse openVenueResponse = new OpenVenueResponse();
openVenueResponse.setVenueObjects(data); openVenueResponse.setVenueObjects(data);
return openVenueResponse; return openVenueResponse;
} }
System.out.println("getVenueInfo: ");
String uri = buildURI(apiKey);
System.out.println("URI: " + uri);
HttpRequest request = createNewRequest(uri);
HttpResponse<String> response = handleResponse(request);
OpenVenueResponse ovr = buildResult(response.body());
// Save in cache...
this.data = ovr.getVenueObjects();
this.lastFetch = LocalDate.now();
return ovr;
// System.out.println("Responce body: " + response.body()); // System.out.println("Responce body: " + response.body());
@ -68,8 +97,6 @@ public class OpenVenueService {
.build() .build()
.send(request, HttpResponse.BodyHandlers.ofString()); .send(request, HttpResponse.BodyHandlers.ofString());
lastFetch = LocalDate.now();
return response; return response;
} }
@ -133,7 +160,9 @@ public class OpenVenueService {
}*/ }*/
private void logInfo(String msg) {System.out.println(":>" + msg);} private void logInfo(String msg) {
System.out.println(":>" + msg);
}
private String getTokenText(JsonParser parser) throws IOException { private String getTokenText(JsonParser parser) throws IOException {
parser.nextToken(); //next token contains value parser.nextToken(); //next token contains value
@ -155,6 +184,7 @@ public class OpenVenueService {
} }
} }
private boolean isBlockStart(String tv) { private boolean isBlockStart(String tv) {
return null != tv && tv.equals("type:Feature"); return null != tv && tv.equals("type:Feature");
} }
@ -270,10 +300,9 @@ public class OpenVenueService {
// filteredList = fixSwedishCharacters(filteredList); // filteredList = fixSwedishCharacters(filteredList);
logInfo("---Loop.DataVO---" + filteredList.size()); logInfo("---Loop.DataVO---" + filteredList.size());
data = filteredList;
return filteredList; return filteredList;
} }
private List<VenueObject> fixSwedishCharacters(List<VenueObject> filteredList) { private List<VenueObject> fixSwedishCharacters(List<VenueObject> filteredList) {
List<VenueObject> newList = new ArrayList<>(); List<VenueObject> newList = new ArrayList<>();