From 148254e6103947526a0e76460be1a4b197400d43 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 5 Apr 2019 14:51:51 +0200 Subject: [PATCH 1/5] reworked createCache to work with @RequestBody Cache cache --- .../bugageocaching/controller/Controller.java | 142 +++++++----------- 1 file changed, 57 insertions(+), 85 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index a2e93df..cd7a1ca 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -144,52 +144,78 @@ public class Controller { } @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose - @RequestMapping("/api/createStation") + @RequestMapping("/api/createCache") @ResponseBody - public ResponseEntity createStation(@RequestParam String description, - @RequestParam String lattitude, - @RequestParam String longitude, - @RequestParam String solution) { + public ResponseEntity createCache(@RequestBody Cache cache) { - if (description.length() == 0 || lattitude.length() == 0 || longitude.length() == 0 || solution.length() == 0) { - return ResponseEntity.status(400).body("At least one Argument was empty"); - } - - double latti; - double longi; - - try { - latti = Double.valueOf(lattitude); - if (latti < -90 || latti > 90) { - return ResponseEntity.status(400).body("Lattitude has to be between -90 and 90 Degree"); + for (Station station : cache.getStationen()) { + ResponseEntity response = createStation(station); + if (response.getStatusCodeValue() == 400) { + return response; } - } catch (NumberFormatException e) { - return ResponseEntity.status(400).body("Latitude has to be a decimal"); } - try { - longi = Double.valueOf(longitude); - if (longi < -180 || longi > 180) { - return ResponseEntity.status(400).body("Longitude has to be in the range of -180 to 180 degrees"); + if (cache.getDescription().length() == 0 || cache.getName().length() == 0 || Double.valueOf(cache.getRankingPoints()) == null || cache.getStationen().size() == 0) { + return ResponseEntity.status(400).body("cache fields can´t be empty"); + } + + for (Cache cache1 : cacheRepository.findAll()) { + if (cache1.getName().equals(cache.getName())) { + return ResponseEntity.status(400).body("name is already taken"); } - } catch (NumberFormatException e) { - return ResponseEntity.status(400).body("Longitude has to be a decimal number"); } - Station station = new Station(); - station.setDescription(description); - station.setLattitude(latti); - station.setLongitude(longi); - station.setSolution(solution); + if (cache.getRankingPoints() < 0) { + return ResponseEntity.status(400).body("Ranking points has to be a positive number"); + } + + cacheRepository.save(cache); + + for (int i = 0; i + 1 < cache.getStationen().size(); i++) { + StationReihenfolge stationReihenfolge = new StationReihenfolge(); + stationReihenfolge.setCache(cache); + stationReihenfolge.setStation(cache.getStationen().get(i)); + stationReihenfolge.setNachfolgeStation(cache.getStationen().get(i + 1)); + stationReihenfolgeRepository.save(stationReihenfolge); + } + + return ResponseEntity.status(200).body(new Gson().toJson(cache)); + } + + public ResponseEntity createStation(Station station) { + + if (station.getDescription().length() == 0 || Double.valueOf(station.getLattitude()) == null || Double.valueOf(station.getLongitude()) == null || station.getSolution().length() == 0) { + return ResponseEntity.status(400).body("station fields can´t be empty"); + } + + if (station.getLattitude() < -90 || station.getLattitude() > 90) { + return ResponseEntity.status(400).body("Lattitude has to be between -90 and 90 Degree"); + } + + if (station.getLongitude() < -180 || station.getLongitude() > 180) { + return ResponseEntity.status(400).body("Longitude has to be in the range of -180 to 180 degrees"); + } + Random r = new Random(); int low = 100000; int high = 1000000; - int code = r.nextInt(high - low) + low; + int code = 0; + boolean unique = false; + while (!unique) { + code = r.nextInt(high - low) + low; + unique = true; + for (Station station1 : stationRepository.findAll()) { + if (station1.getCode() == code) { + unique = false; + } + } + } + station.setCode(code); stationRepository.save(station); - return ResponseEntity.status(201).body(new Gson().toJson(station)); + return ResponseEntity.status(200).body(new Gson().toJson(station)); } @@ -214,60 +240,6 @@ public class Controller { return ResponseEntity.status(200).body(new Gson().toJson(stationRepository.findAll())); } - @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose - @RequestMapping("/api/createCache") - @ResponseBody - public ResponseEntity createCache(@RequestParam String description, - @RequestParam String name, - @RequestParam String rankingPoints, - @RequestParam(value = "rewardID", defaultValue = "-1") String rewardID, - @RequestParam List stationen) { - - if (description.length() == 0 || name.length() == 0 || rankingPoints.length() == 0 || stationen.size() == 0) { - return ResponseEntity.status(400).body("Fields can´t be empty"); - } - - for (Cache cache : cacheRepository.findAll()) { - if (cache.getName().equals(name)) { - return ResponseEntity.status(400).body("name is already taken"); - } - } - - int points; - - try { - points = Integer.valueOf(rankingPoints); - if (points < 0) { - return ResponseEntity.status(400).body("Ranking points has to be a positive number"); - } - } catch (NumberFormatException e) { - return ResponseEntity.status(400).body("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)); - stationReihenfolgeRepository.save(stationReihenfolge); - } - - return ResponseEntity.status(200).body(new Gson().toJson(cache)); - } - @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/deleteCache") @ResponseBody From c0448bda847c8a073e66e2ff343114f842ac643b Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 5 Apr 2019 15:24:02 +0200 Subject: [PATCH 2/5] removed startStation field from cache --- .../labsw/bugageocaching/controller/Controller.java | 2 +- .../hhn/labsw/bugageocaching/entities/Cache.java | 13 +------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index cd7a1ca..0e94893 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 { Cache cache = cacheOptional.get(); bearbeitet.setCache(cache); - Station startStation = cache.getStartStation(); + Station startStation = cache.getStationen().get(0); bearbeitet.setAktuelleStation(startStation); } else { return ResponseEntity.status(404).body("Couldnt find Cache " + cacheID); diff --git a/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java b/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java index 6846b04..465b2cc 100644 --- a/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java +++ b/src/main/java/hhn/labsw/bugageocaching/entities/Cache.java @@ -23,9 +23,6 @@ public class Cache { @ManyToOne private Reward reward; - @ManyToOne - private Station startStation; - public Cache() { } @@ -68,7 +65,7 @@ public class Cache { public void setStationen(List stationen) { this.stationen = stationen; } - + public Reward getReward() { return reward; } @@ -76,12 +73,4 @@ 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 6cf52503bcfdd3add41aeecac00e7f87f1b5cf82 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 5 Apr 2019 15:33:31 +0200 Subject: [PATCH 3/5] if a mistake occurs during cache creation, all previously created stations related to that cache get deleted now --- .../bugageocaching/controller/Controller.java | 14 ++++++++++++++ 1 file 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 0e94893..1c17bd0 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -151,21 +151,25 @@ public class Controller { for (Station station : cache.getStationen()) { ResponseEntity response = createStation(station); if (response.getStatusCodeValue() == 400) { + deleteStationen(cache); return response; } } if (cache.getDescription().length() == 0 || cache.getName().length() == 0 || Double.valueOf(cache.getRankingPoints()) == null || cache.getStationen().size() == 0) { + deleteStationen(cache); return ResponseEntity.status(400).body("cache fields can´t be empty"); } for (Cache cache1 : cacheRepository.findAll()) { if (cache1.getName().equals(cache.getName())) { + deleteStationen(cache); return ResponseEntity.status(400).body("name is already taken"); } } if (cache.getRankingPoints() < 0) { + deleteStationen(cache); return ResponseEntity.status(400).body("Ranking points has to be a positive number"); } @@ -218,6 +222,16 @@ public class Controller { return ResponseEntity.status(200).body(new Gson().toJson(station)); } + public void deleteStationen(Cache cache) { + for (Station station : cache.getStationen()) { + try { + stationRepository.delete(station); + } catch (IllegalArgumentException e) { // station is null + // do nothing + } + } + } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/checkAdmin") From 5bf05616c82b509aa2284cd266316497753507a7 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 5 Apr 2019 15:43:10 +0200 Subject: [PATCH 4/5] reworked checks to work with double instead of Double --- .../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 1c17bd0..8c5af5c 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -156,7 +156,7 @@ public class Controller { } } - if (cache.getDescription().length() == 0 || cache.getName().length() == 0 || Double.valueOf(cache.getRankingPoints()) == null || cache.getStationen().size() == 0) { + if (cache.getDescription().length() == 0 || cache.getName().length() == 0 || cache.getRankingPoints() == 0.0 || cache.getStationen().size() == 0) { deleteStationen(cache); return ResponseEntity.status(400).body("cache fields can´t be empty"); } @@ -188,7 +188,7 @@ public class Controller { public ResponseEntity createStation(Station station) { - if (station.getDescription().length() == 0 || Double.valueOf(station.getLattitude()) == null || Double.valueOf(station.getLongitude()) == null || station.getSolution().length() == 0) { + if (station.getDescription().length() == 0 || station.getLattitude() == 0.0 || station.getLongitude() == 0.0 || station.getSolution().length() == 0) { return ResponseEntity.status(400).body("station fields can´t be empty"); } From 99d29ffdec717ad232fca226734cf5de8776a02b Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 5 Apr 2019 15:45:53 +0200 Subject: [PATCH 5/5] added comments --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 8c5af5c..f04c688 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -148,6 +148,7 @@ public class Controller { @ResponseBody public ResponseEntity createCache(@RequestBody Cache cache) { + // Stationen werden in die Datenbank eingetragen for (Station station : cache.getStationen()) { ResponseEntity response = createStation(station); if (response.getStatusCodeValue() == 400) { @@ -156,6 +157,7 @@ public class Controller { } } + // Caches werden in die Datenbank eingetragen if (cache.getDescription().length() == 0 || cache.getName().length() == 0 || cache.getRankingPoints() == 0.0 || cache.getStationen().size() == 0) { deleteStationen(cache); return ResponseEntity.status(400).body("cache fields can´t be empty");