From ab1c6899d67263465e9e17900189f7794f6f2f42 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 14:50:52 +0100 Subject: [PATCH 01/14] a cache has a startStation now --- .../java/hhn/labsw/bugageocaching/entities/Cache.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java b/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java index d514df3..6846b04 100644 --- a/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java +++ b/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java @@ -23,6 +23,9 @@ public class Cache { @ManyToOne private Reward reward; + @ManyToOne + private Station startStation; + public Cache() { } @@ -73,4 +76,12 @@ public class Cache { public void setReward(Reward reward) { this.reward = reward; } + + public Station getStartStation() { + return startStation; + } + + public void setStartStation(Station startStation) { + this.startStation = startStation; + } } From 0d6f765367c14149a948b9a37c0595f960537142 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 14:51:45 +0100 Subject: [PATCH 02/14] api methods use the user token instead of the userID now, also added a logout apit method --- .../bugageocaching/controller/Controller.java | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index b96905d..c87b18b 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -50,18 +50,19 @@ public class Controller { @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/login") @ResponseBody - public ResponseEntity login(@RequestBody User user){ - if(user.getUsername() == null || user.getPassword() == null){ + public ResponseEntity login(@RequestBody User user) { + if (user.getUsername() == null || user.getPassword() == null) { System.out.println(user.getUsername()); System.out.println(user.getPassword()); return ResponseEntity.status(401).body(null); } - if(userRepository.findByUsername(user.getUsername()) == null){ + if (userRepository.findByUsername(user.getUsername()) == null) { return ResponseEntity.status(401).body(null); } - if(BCrypt.checkpw(user.getPassword(), userRepository.findByUsername(user.getUsername()).getPassword())){ - String token = BCrypt.hashpw(String.valueOf(System.currentTimeMillis() + counter.incrementAndGet()), BCrypt.gensalt()); + if (BCrypt.checkpw(user.getPassword(), userRepository.findByUsername(user.getUsername()).getPassword())) { + String token = user.getUsername() + BCrypt.hashpw(String.valueOf(System.currentTimeMillis() + counter.incrementAndGet()), BCrypt.gensalt()); + System.out.println(token); String hashedToken = BCrypt.hashpw(token, BCrypt.gensalt()); userRepository.findByUsername(user.getUsername()).setToken(hashedToken); userRepository.save(userRepository.findByUsername(user.getUsername())); @@ -72,46 +73,35 @@ public class Controller { @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/startCache") - public @ResponseBody - String startCache(@RequestParam(value = "userID", defaultValue = "-1") String userID, - @RequestParam String cacheID, - @RequestParam String stationID) throws IllegalParameterException { + @ResponseBody + public String startCache(@RequestParam(value = "token", defaultValue = "-1") String token, + @RequestParam String cacheID) throws IllegalParameterException { - if (!userID.equals("-1")) { // ein angemeldeter user startet den cache(es werden zwei parameter übergeben) + if (!token.equals("-1")) { // ein angemeldeter user startet den cache(es werden zwei parameter übergeben) Bearbeitet bearbeitet = new Bearbeitet(); - Optional userOptional = userRepository.findById(Integer.valueOf(userID)); - if (userOptional.isPresent()) { - User user = userOptional.get(); - bearbeitet.setUser(user); - } else { - throw new IllegalParameterException("There is no user with the ID " + userID); - } + User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); + bearbeitet.setUser(user); Optional cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID)); if (cacheOptional.isPresent()) { Cache cache = cacheOptional.get(); bearbeitet.setCache(cache); + + Station startStation = cache.getStartStation(); + bearbeitet.setAktuelleStation(startStation); } else { throw new IllegalParameterException("There is no cache with the ID " + cacheID); } - Optional stationOptional = stationRepository.findById(Integer.valueOf(stationID)); - if (stationOptional.isPresent()) { - Station station = stationOptional.get(); - bearbeitet.setAktuelleStation(station); - } else { - throw new IllegalParameterException("There is no station with the ID " + stationID); - } - Optional cacheAccesDefinitionOptional = - cacheAccesDefinitionRepository.findById(1); // bearbeitet + cacheAccesDefinitionRepository.findById(0); // bearbeitet if (cacheAccesDefinitionOptional.isPresent()) { CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get(); bearbeitet.setCacheAccesDefinition(cacheAccesDefinition); } else { - throw new IllegalParameterException("There is no cacheAccesDefinition with the ID " + 1); + throw new IllegalParameterException("There is no cacheAccesDefinition with the ID " + 0); } bearbeitetRepository.save(bearbeitet); @@ -128,4 +118,15 @@ public class Controller { } } } + + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("api/logout") + @ResponseBody + String logout(@RequestParam(value = "token", defaultValue = "-1") String token) { + + User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); + user.setToken("abgemeldet"); + userRepository.save(user); + return new Gson().toJson(user); + } } From 5c9cfc08fe03be249fb313f58a95b69484780eb9 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 14:53:03 +0100 Subject: [PATCH 03/14] removed default parameter --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index c87b18b..634530c 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -122,7 +122,7 @@ public class Controller { @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("api/logout") @ResponseBody - String logout(@RequestParam(value = "token", defaultValue = "-1") String token) { + String logout(String token) { User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); user.setToken("abgemeldet"); From 623c1c7ab0f4ff3f9bde239c99a9a494a2ec0235 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 15:46:18 +0100 Subject: [PATCH 04/14] logout returns a boolean now which indicates that the logout worked out --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 634530c..d56721d 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -122,11 +122,11 @@ public class Controller { @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("api/logout") @ResponseBody - String logout(String token) { + boolean logout(String token) { User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); user.setToken("abgemeldet"); userRepository.save(user); - return new Gson().toJson(user); + return true; } } From e0c2f4eda0aefe6981197c30f6a61936c51f6aa6 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 17:11:31 +0100 Subject: [PATCH 05/14] added @RequestParam i accidently removed earlier --- .gitignore | 1 + .../java/hhn/labsw/bugageocaching/controller/Controller.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6c08a57..41ca351 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf +done.txt # Generated files .idea/**/contentModel.xml diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 634530c..f9a4dd0 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -122,7 +122,7 @@ public class Controller { @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("api/logout") @ResponseBody - String logout(String token) { + String logout(@RequestParam String token) { User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); user.setToken("abgemeldet"); From 2123a9177ed6076f8f0c0148ad20dc0c836ffe5e Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 20:47:34 +0100 Subject: [PATCH 06/14] implemented api for createStation and fixed some bugs in other methods --- .../bugageocaching/controller/Controller.java | 57 ++++++++++++++++++- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 348ad8b..1418cc3 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -10,8 +10,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.bcrypt.BCrypt; import org.springframework.web.bind.annotation.*; -import java.time.Clock; import java.util.Optional; +import java.util.Random; import java.util.concurrent.atomic.AtomicLong; @RestController @@ -120,13 +120,64 @@ public class Controller { } @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose - @RequestMapping("api/logout") + @RequestMapping("/api/logout") @ResponseBody boolean logout(@RequestParam String token) { User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); - user.setToken("abgemeldet"); + user.setToken("offline"); userRepository.save(user); return true; } + + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/createStation") + @ResponseBody + Station createStation(@RequestParam String description, + @RequestParam String lattitude, + @RequestParam String longitude, + @RequestParam String solution) throws IllegalParameterException { + + if (description.length() == 0 || lattitude.length() == 0 || longitude.length() == 0 || solution.length() == 0) { + throw new IllegalParameterException("Fields can´t be empty"); + } else { + + Station station = new Station(); + station.setDescription(description); + station.setSolution(solution); + Random r = new Random(); + int low = 100000; + int high = 1000000; + int code = r.nextInt(high-low) + low; + station.setCode(code); + + try { + double latti = Double.valueOf(lattitude); + if (-90 <= latti && latti <= 90) { + station.setLattitude(latti); + } else { + throw new IllegalParameterException("Lattitude has to be in the range of -90 to 90 degrees"); + } + } catch (NumberFormatException e) { + throw new NumberFormatException("Lattitude hast to be a decimal number"); + } + + try { + double longi = Double.valueOf(longitude); + if (-180 <= longi && longi <= 180) { + station.setLongitude(longi); + } else { + throw new IllegalParameterException("Longitude has to be in the range of -180 to 180 degrees"); + } + } catch (NumberFormatException e) { + throw new NumberFormatException("Longitude hast to be a decimal number"); + } + + stationRepository.save(station); + + return station; + + } + } + } From ddf3bb3a5ddc0e3745f05f95d20ed4b35e6ddbf5 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 23:07:02 +0100 Subject: [PATCH 07/14] added a check whether a given user identified by his token is an admin or not, returns true if yes --- .../bugageocaching/controller/Controller.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 1418cc3..6d7e97f 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -10,6 +10,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.bcrypt.BCrypt; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Optional; import java.util.Random; import java.util.concurrent.atomic.AtomicLong; @@ -148,7 +149,7 @@ public class Controller { Random r = new Random(); int low = 100000; int high = 1000000; - int code = r.nextInt(high-low) + low; + int code = r.nextInt(high - low) + low; station.setCode(code); try { @@ -180,4 +181,18 @@ public class Controller { } } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/checkAdmin") + @ResponseBody + boolean checkAdmin(@RequestParam String token) { + User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); + List roles = user.getRoles(); + for (Role role : roles) { + if (role.getId() == 0) { // is admin + return true; + } + } + return false; + } + } From 73681073dd28b176a8741dbbf566e631fe6810fb Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 28 Mar 2019 23:20:36 +0100 Subject: [PATCH 08/14] implemented api to get all stations --- .../hhn/labsw/bugageocaching/controller/Controller.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 6d7e97f..7c19fbf 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -195,4 +195,11 @@ public class Controller { return false; } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/getAllStations") + @ResponseBody + String getAllStations() { + return new Gson().toJson(stationRepository.findAll()); + } + } From 38097dad8eebace9ce674d877bd3484d15980b96 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 29 Mar 2019 01:55:05 +0100 Subject: [PATCH 09/14] added createCache API and reworked some other methods --- .../bugageocaching/controller/Controller.java | 136 ++++++++++++------ 1 file changed, 94 insertions(+), 42 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 7c19fbf..a4935d9 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -97,7 +97,7 @@ public class Controller { } Optional cacheAccesDefinitionOptional = - cacheAccesDefinitionRepository.findById(0); // bearbeitet + cacheAccesDefinitionRepository.findById(0); // bearbeitet if (cacheAccesDefinitionOptional.isPresent()) { CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get(); bearbeitet.setCacheAccesDefinition(cacheAccesDefinition); @@ -126,7 +126,7 @@ public class Controller { boolean logout(@RequestParam String token) { User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); - user.setToken("offline"); + user.setToken(null); userRepository.save(user); return true; } @@ -134,51 +134,51 @@ public class Controller { @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/createStation") @ResponseBody - Station createStation(@RequestParam String description, + String createStation(@RequestParam String description, @RequestParam String lattitude, @RequestParam String longitude, @RequestParam String solution) throws IllegalParameterException { if (description.length() == 0 || lattitude.length() == 0 || longitude.length() == 0 || solution.length() == 0) { throw new IllegalParameterException("Fields can´t be empty"); - } else { - - Station station = new Station(); - station.setDescription(description); - station.setSolution(solution); - Random r = new Random(); - int low = 100000; - int high = 1000000; - int code = r.nextInt(high - low) + low; - station.setCode(code); - - try { - double latti = Double.valueOf(lattitude); - if (-90 <= latti && latti <= 90) { - station.setLattitude(latti); - } else { - throw new IllegalParameterException("Lattitude has to be in the range of -90 to 90 degrees"); - } - } catch (NumberFormatException e) { - throw new NumberFormatException("Lattitude hast to be a decimal number"); - } - - try { - double longi = Double.valueOf(longitude); - if (-180 <= longi && longi <= 180) { - station.setLongitude(longi); - } else { - throw new IllegalParameterException("Longitude has to be in the range of -180 to 180 degrees"); - } - } catch (NumberFormatException e) { - throw new NumberFormatException("Longitude hast to be a decimal number"); - } - - stationRepository.save(station); - - return station; - } + + double latti; + double longi; + + try { + latti = Double.valueOf(lattitude); + if (latti < -90 || latti > 90) { + throw new IllegalParameterException("Lattitude has to be in the range of -90 to 90 degrees"); + } + } catch (NumberFormatException e) { + throw new NumberFormatException("Lattitude has to be a decimal number"); + } + + try { + longi = Double.valueOf(longitude); + if (longi < -180 || longi > 180) { + throw new IllegalParameterException("Longitude has to be in the range of -180 to 180 degrees"); + } + } catch (NumberFormatException e) { + throw new NumberFormatException("Longitude has to be a decimal number"); + } + + Station station = new Station(); + station.setDescription(description); + station.setLattitude(latti); + station.setLongitude(longi); + station.setSolution(solution); + Random r = new Random(); + int low = 100000; + int high = 1000000; + int code = r.nextInt(high - low) + low; + station.setCode(code); + + stationRepository.save(station); + + return new Gson().toJson(station); + } @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @@ -186,8 +186,7 @@ public class Controller { @ResponseBody boolean checkAdmin(@RequestParam String token) { User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); - List roles = user.getRoles(); - for (Role role : roles) { + for (Role role : user.getRoles()) { if (role.getId() == 0) { // is admin return true; } @@ -202,4 +201,57 @@ public class Controller { return new Gson().toJson(stationRepository.findAll()); } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/createCache") + @ResponseBody + String createCache(@RequestParam String description, + @RequestParam String name, + @RequestParam String rankingPoints, + @RequestParam(value = "rewardID", defaultValue = "-1") String rewardID, + @RequestParam List stationen) throws IllegalParameterException { + + if (description.length() == 0 || name.length() == 0 || rankingPoints.length() == 0 || stationen.size() == 0) { + throw new IllegalParameterException("Fields can´t be empty"); + } + + for (Cache cache : cacheRepository.findAll()) { + if (cache.getName().equals(name)) { + throw new IllegalParameterException("name is already taken"); + } + } + + int points; + + try { + points = Integer.valueOf(rankingPoints); + if (points < 0) { + throw new IllegalParameterException("Ranking points has to be a positive number"); + } + } catch (NumberFormatException e) { + throw new NumberFormatException("Ranking points has to be an integer"); + } + + Optional rewardOptional = rewardRepository.findById(Integer.valueOf(rewardID)); + Reward reward = rewardOptional.orElse(null); + + Cache cache = new Cache(); + cache.setDescription(description); + cache.setName(name); + cache.setRankingPoints(Integer.valueOf(rankingPoints)); + cache.setReward(reward); + cache.setStartStation(stationen.get(0)); + cache.setStationen(stationen); + + cacheRepository.save(cache); + + for(int i = 0; i + 1 < stationen.size(); i++) { + StationReihenfolge stationReihenfolge = new StationReihenfolge(); + stationReihenfolge.setCache(cache); + stationReihenfolge.setStation(stationen.get(i)); + stationReihenfolge.setNachfolgeStation(stationen.get(i+1)); + } + + return new Gson().toJson(cache); + } } + From baab96059bccfdc7b349248ca830668dd717c342 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 29 Mar 2019 01:57:49 +0100 Subject: [PATCH 10/14] refactored code --- .../bugageocaching/controller/Controller.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index a4935d9..29ed66c 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -97,7 +97,7 @@ public class Controller { } Optional cacheAccesDefinitionOptional = - cacheAccesDefinitionRepository.findById(0); // bearbeitet + cacheAccesDefinitionRepository.findById(0); // bearbeitet if (cacheAccesDefinitionOptional.isPresent()) { CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get(); bearbeitet.setCacheAccesDefinition(cacheAccesDefinition); @@ -135,9 +135,9 @@ public class Controller { @RequestMapping("/api/createStation") @ResponseBody String createStation(@RequestParam String description, - @RequestParam String lattitude, - @RequestParam String longitude, - @RequestParam String solution) throws IllegalParameterException { + @RequestParam String lattitude, + @RequestParam String longitude, + @RequestParam String solution) throws IllegalParameterException { if (description.length() == 0 || lattitude.length() == 0 || longitude.length() == 0 || solution.length() == 0) { throw new IllegalParameterException("Fields can´t be empty"); @@ -205,10 +205,10 @@ public class Controller { @RequestMapping("/api/createCache") @ResponseBody String createCache(@RequestParam String description, - @RequestParam String name, - @RequestParam String rankingPoints, - @RequestParam(value = "rewardID", defaultValue = "-1") String rewardID, - @RequestParam List stationen) throws IllegalParameterException { + @RequestParam String name, + @RequestParam String rankingPoints, + @RequestParam(value = "rewardID", defaultValue = "-1") String rewardID, + @RequestParam List stationen) throws IllegalParameterException { if (description.length() == 0 || name.length() == 0 || rankingPoints.length() == 0 || stationen.size() == 0) { throw new IllegalParameterException("Fields can´t be empty"); @@ -244,11 +244,11 @@ public class Controller { cacheRepository.save(cache); - for(int i = 0; i + 1 < stationen.size(); i++) { + for (int i = 0; i + 1 < stationen.size(); i++) { StationReihenfolge stationReihenfolge = new StationReihenfolge(); stationReihenfolge.setCache(cache); stationReihenfolge.setStation(stationen.get(i)); - stationReihenfolge.setNachfolgeStation(stationen.get(i+1)); + stationReihenfolge.setNachfolgeStation(stationen.get(i + 1)); } return new Gson().toJson(cache); From 8fad8e427ed3f1a345839c554e514bea05954f52 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 29 Mar 2019 02:23:25 +0100 Subject: [PATCH 11/14] added deleteCache API and fixed some mistakes in other methods --- .../bugageocaching/controller/Controller.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 29ed66c..5e31a36 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -39,6 +39,9 @@ public class Controller { @Autowired UserRepository userRepository; + @Autowired + StationReihenfolgeRepository stationReihenfolgeRepository; + private AtomicLong counter = new AtomicLong(); @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @@ -249,9 +252,39 @@ public class Controller { stationReihenfolge.setCache(cache); stationReihenfolge.setStation(stationen.get(i)); stationReihenfolge.setNachfolgeStation(stationen.get(i + 1)); + stationReihenfolgeRepository.save(stationReihenfolge); } return new Gson().toJson(cache); } + + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/deleteCache") + @ResponseBody + boolean deleteCache(@RequestParam String cacheID) throws IllegalParameterException { + Optional optionalCache = cacheRepository.findById(Integer.valueOf(cacheID)); + if (!optionalCache.isPresent()) { + throw new IllegalParameterException("There is no cache with the ID " + cacheID); + } + + Cache cache = optionalCache.get(); + + for (StationReihenfolge stationReihenfolge : stationReihenfolgeRepository.findAll()) { + if (stationReihenfolge.getCache().getId() == cache.getId()) { + stationReihenfolgeRepository.delete(stationReihenfolge); + } + } + + for (Bearbeitet bearbeitet : bearbeitetRepository.findAll()) { + if (bearbeitet.getCache().getId() == cache.getId()) { + bearbeitetRepository.delete(bearbeitet); + } + } + + cacheRepository.delete(cache); + + return true; + } + } From dcce7b31e8d7716ce9e8ddda78dea35c9f2bd527 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 29 Mar 2019 03:09:04 +0100 Subject: [PATCH 12/14] added getMyCaches API method --- .../bugageocaching/controller/Controller.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 5e31a36..c513d4e 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -10,6 +10,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.bcrypt.BCrypt; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.Random; @@ -100,7 +101,7 @@ public class Controller { } Optional cacheAccesDefinitionOptional = - cacheAccesDefinitionRepository.findById(0); // bearbeitet + cacheAccesDefinitionRepository.findById(0); // angefangen if (cacheAccesDefinitionOptional.isPresent()) { CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get(); bearbeitet.setCacheAccesDefinition(cacheAccesDefinition); @@ -286,5 +287,19 @@ public class Controller { return true; } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/getMyCaches") + @ResponseBody + String getMyCaches(@RequestParam String token) { + User user = userRepository.findByUsername(token.substring(0, token.indexOf("$"))); + ArrayList bearbeitetList = new ArrayList<>(); + + for (Bearbeitet bearbeitet : bearbeitetRepository.findAll()) { + if (bearbeitet.getUser().getId() == user.getId()) { + bearbeitetList.add(bearbeitet); + } + } + return new Gson().toJson(bearbeitetList); + } } From 9b64672a329ae9bd08d47bd067e227044943c0be Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 29 Mar 2019 03:41:33 +0100 Subject: [PATCH 13/14] refactored code --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index c513d4e..1ac0fec 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -101,7 +101,7 @@ public class Controller { } Optional cacheAccesDefinitionOptional = - cacheAccesDefinitionRepository.findById(0); // angefangen + cacheAccesDefinitionRepository.findById(0); // angefangen if (cacheAccesDefinitionOptional.isPresent()) { CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get(); bearbeitet.setCacheAccesDefinition(cacheAccesDefinition); From 61330b3f0b1fc28f0436a159e64d3c9e900c2f4f Mon Sep 17 00:00:00 2001 From: Maximilian Leopold Date: Sun, 31 Mar 2019 14:46:39 +0200 Subject: [PATCH 14/14] Implemented Backend for getting the RankingList --- .../hhn/labsw/bugageocaching/controller/Controller.java | 7 +++++++ .../labsw/bugageocaching/repositories/UserRepository.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 1ac0fec..a245f13 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -301,5 +301,12 @@ public class Controller { } return new Gson().toJson(bearbeitetList); } + + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/getRankingList") + @ResponseBody + String getRankingList() { + return new Gson().toJson(userRepository.getRankingList()); + } } diff --git a/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java b/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java index 2434da1..e0fe553 100644 --- a/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java +++ b/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java @@ -1,8 +1,15 @@ package hhn.labsw.bugageocaching.repositories; import hhn.labsw.bugageocaching.entities.User; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import java.util.Collection; +import java.util.List; + public interface UserRepository extends CrudRepository { User findByUsername(String username); + + @Query(value = "SELECT u.username, u.ranking_points_sum from user u order by ranking_points_sum DESC", nativeQuery = true) + List getRankingList(); }