Added support to fetch venues #3
@ -25,28 +25,57 @@ public class OpenVenueService {
|
||||
private List<VenueObject> data;
|
||||
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 {
|
||||
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";
|
||||
|
||||
System.out.println("getVenueInfo: ");
|
||||
String uri = buildURI(apiKey);
|
||||
System.out.println("URI: " + uri);
|
||||
|
||||
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 {
|
||||
if (isCacheOK(this.lastFetch)) {
|
||||
logInfo("Cache OK");
|
||||
logInfo("Current data: " + data);
|
||||
OpenVenueResponse openVenueResponse = new OpenVenueResponse();
|
||||
openVenueResponse.setVenueObjects(data);
|
||||
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());
|
||||
|
||||
@ -68,8 +97,6 @@ public class OpenVenueService {
|
||||
.build()
|
||||
.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
|
||||
lastFetch = LocalDate.now();
|
||||
|
||||
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 {
|
||||
parser.nextToken(); //next token contains value
|
||||
@ -155,6 +184,7 @@ public class OpenVenueService {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean isBlockStart(String tv) {
|
||||
return null != tv && tv.equals("type:Feature");
|
||||
}
|
||||
@ -270,10 +300,9 @@ public class OpenVenueService {
|
||||
// filteredList = fixSwedishCharacters(filteredList);
|
||||
logInfo("---Loop.DataVO---" + filteredList.size());
|
||||
|
||||
data = filteredList;
|
||||
|
||||
return filteredList;
|
||||
}
|
||||
|
||||
private List<VenueObject> fixSwedishCharacters(List<VenueObject> filteredList) {
|
||||
List<VenueObject> newList = new ArrayList<>();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user