Added support to fetch venues #3
@ -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<>();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user