From 4dd02649b89f72c97cfd7d33a35cb8ccd3569e9f Mon Sep 17 00:00:00 2001 From: cugurlu Date: Mon, 8 Apr 2019 15:36:21 +0200 Subject: [PATCH] Add methods for getting the results of a user --- .../greenify/client/rest/UserService.java | 17 ++++++++ .../greenify/server/rest/UserController.java | 10 +++++ .../server/service/CalculatorService.java | 39 +++++++++++++++++++ .../greenify/server/service/UserService.java | 11 ++++++ 4 files changed, 77 insertions(+) diff --git a/src/Client/src/main/java/greenify/client/rest/UserService.java b/src/Client/src/main/java/greenify/client/rest/UserService.java index 699137e..42fa205 100644 --- a/src/Client/src/main/java/greenify/client/rest/UserService.java +++ b/src/Client/src/main/java/greenify/client/rest/UserService.java @@ -301,6 +301,23 @@ public class UserService { .encode().toUri(), Map.class); } + /** + * Gets the results of a user. + * @param name name of the user + * @return Map with all results + */ + @SuppressWarnings("Duplicates") + public Map getResults(String name) { + HttpHeaders headers = new HttpHeaders(); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getResults") + .queryParam("name", name); + HttpEntity entity = new HttpEntity<>(headers); + System.out.println(builder.build().encode().toUri()); + return this.restTemplate.getForObject(builder.build() + .encode().toUri(), Map.class); + } + /** * Gets the list of all users. */ diff --git a/src/Server/src/main/java/greenify/server/rest/UserController.java b/src/Server/src/main/java/greenify/server/rest/UserController.java index 5b96baa..ccb3d75 100644 --- a/src/Server/src/main/java/greenify/server/rest/UserController.java +++ b/src/Server/src/main/java/greenify/server/rest/UserController.java @@ -185,5 +185,15 @@ public class UserController { public Map getAchievements(@RequestParam(value = "name") String name) { return userService.getAchievements(name); } + + /** + * This method gets the result for schema. + * @param name name of the user + * @return map of all results of the user + */ + @RequestMapping("/getResults") + public Map getResults(@RequestParam(value = "name") String name) { + return userService.getResults(name); + } } diff --git a/src/Server/src/main/java/greenify/server/service/CalculatorService.java b/src/Server/src/main/java/greenify/server/service/CalculatorService.java index 79ba035..68cf414 100644 --- a/src/Server/src/main/java/greenify/server/service/CalculatorService.java +++ b/src/Server/src/main/java/greenify/server/service/CalculatorService.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; +import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -108,5 +109,43 @@ public class CalculatorService { inputs.put("input_footprint_shopping_goods_total", netShopping + ""); user.setFootPrintInputs(inputs); } + + public Map getResults(Map map) { + HttpHeaders headers = new HttpHeaders(); + headers.set("accept", MediaType.APPLICATION_JSON_VALUE); + headers.set("app_id", "a98272e3"); + headers.set("app_key", "b9167c4918cb2b3143614b595065d83b"); + HttpEntity entity = new HttpEntity<>("parameters", headers); + UriComponentsBuilder builder = + UriComponentsBuilder.fromHttpUrl("https://apis.berkeley.edu/coolclimate/footprint"); + for (String inputId : map.keySet()) { + builder = builder.queryParam(inputId, map.get(inputId)); + } + ResponseEntity response = restTemplate + .exchange(builder.build().encode().toUri(), HttpMethod.GET, + entity, String.class); + String transport = response.getBody().substring(Objects.requireNonNull(response.getBody()) + .indexOf("") + + 24, response.getBody().indexOf("")); + String housing = response.getBody().substring(Objects.requireNonNull(response.getBody()) + .indexOf("") + + 22, response.getBody().indexOf("")); + String food = response.getBody().substring(Objects.requireNonNull(response.getBody()) + .indexOf("") + + 19, response.getBody().indexOf("")); + String goods = response.getBody().substring(Objects.requireNonNull(response.getBody()) + .indexOf("") + + 20, response.getBody().indexOf("")); + String services = response.getBody().substring(Objects.requireNonNull(response.getBody()) + .indexOf("") + + 23, response.getBody().indexOf("")); + Map resultMap = new HashMap<>(); + resultMap.put("transport", transport); + resultMap.put("housing", housing); + resultMap.put("food", food); + resultMap.put("goods", goods); + resultMap.put("services", services); + return resultMap; + } } diff --git a/src/Server/src/main/java/greenify/server/service/UserService.java b/src/Server/src/main/java/greenify/server/service/UserService.java index c2a68f9..6160416 100644 --- a/src/Server/src/main/java/greenify/server/service/UserService.java +++ b/src/Server/src/main/java/greenify/server/service/UserService.java @@ -280,6 +280,17 @@ public class UserService { return user.getAchievements(); } + /** + * This method gets all achievements of a user. + * @param name name of the user + * @return map with all achievements of a user + */ + public Map getResults(String name) { + User user = userRepository.findByName(name); + Map results = calculatorService.getResults(user.getFootPrintInputs()); + return results; + } + /** * This method gets the list of all users. * @return list of all users