From 0f856b1ec2bed6fc55a0490806a615a746bda87f Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 13 Apr 2019 19:44:47 +0200 Subject: [PATCH 1/6] =?UTF-8?q?first=20implementation=20for=20checkStation?= =?UTF-8?q?(API=20method=20for=20cache=20durchf=C3=BChren)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bugageocaching/controller/Controller.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 0bd9fc0..5951034 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -164,6 +164,81 @@ public class Controller { } } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/checkStation") + @ResponseBody + public ResponseEntity checkStation(@RequestParam String token, + @RequestParam String cacheID, + @RequestParam String stationID, + @RequestParam String durchgefuehrterCacheID) { + try { + Claims claims = Jwts.parser() //Parse JWT + .setSigningKey(key) + .parseClaimsJws(token).getBody(); + + User user = userRepository.findByUsername(claims.getSubject()); + if (user == null) { + return ResponseEntity.status(404).body("User was not found"); + } + + Optional cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID)); + Cache cache; + if (cacheOptional.isPresent()) { + cache = cacheOptional.get(); + } else { + return ResponseEntity.status(404).body("Couldnt find Cache " + cacheID); + } + + Optional durchgefuehrterCacheIDOptional = cacheRepository.findById(Integer.valueOf(durchgefuehrterCacheID)); + Cache durchgefuehrterCache; + if (durchgefuehrterCacheIDOptional.isPresent()) { + durchgefuehrterCache = cacheOptional.get(); + } else { + return ResponseEntity.status(404).body("Couldnt find Cache " + durchgefuehrterCacheID); + } + + Optional stationOptional = stationRepository.findById(Integer.valueOf(stationID)); + Station station; + if (stationOptional.isPresent()) { + station = stationOptional.get(); + } else { + return ResponseEntity.status(404).body("Couldnt find Station " + stationID); + } + + if (cache != durchgefuehrterCache) { + return ResponseEntity.status(400).body("The scanned station isn´t the correct following station"); + } + + Bearbeitet bearbeitet; + if (bearbeitetRepository.findByUserAndCache(user, cache) != null) { + bearbeitet = bearbeitetRepository.findByUserAndCache(user, cache); + } else { + return ResponseEntity.status(400).body("The user has not started this cache yet"); + } + + Station aktuelleStation = bearbeitet.getAktuelleStation(); + + int i = 0; + for (Station station1 : cache.getStationen()) { + if (station1.equals(station)) { + break; + } + i++; + } + + if (cache.getStationen().get(i - 1).equals(aktuelleStation)) { + return ResponseEntity.status(200).body("OK"); + } else { + return ResponseEntity.status(400).body("The scanned station isn´t the correct following station"); + } + + } catch (ExpiredJwtException e) { + return ResponseEntity.status(400).body("JWT Token expired"); + } catch (Exception e) { + return ResponseEntity.status(400).body("JWT Token invalid"); + } + } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/createCache") @ResponseBody From 2a5dbd9e7275df6383a8c4ed66b4455173ae1c22 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 13 Apr 2019 21:18:20 +0200 Subject: [PATCH 2/6] fixed a bug --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 5951034..7177887 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -218,6 +218,10 @@ public class Controller { Station aktuelleStation = bearbeitet.getAktuelleStation(); + if(!cache.getStationen().contains(station)) { + return ResponseEntity.status(400).body("The scanned station isnt a part of the cache"); + } + int i = 0; for (Station station1 : cache.getStationen()) { if (station1.equals(station)) { From 749fcd119a2633b5391dbdfde527c996fede7390 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 13 Apr 2019 21:24:14 +0200 Subject: [PATCH 3/6] fixed more bugs --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 3 ++- 1 file changed, 2 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 7177887..083b8ff 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -218,7 +218,7 @@ public class Controller { Station aktuelleStation = bearbeitet.getAktuelleStation(); - if(!cache.getStationen().contains(station)) { + if (!cache.getStationen().contains(station)) { return ResponseEntity.status(400).body("The scanned station isnt a part of the cache"); } @@ -231,6 +231,7 @@ public class Controller { } if (cache.getStationen().get(i - 1).equals(aktuelleStation)) { + bearbeitet.setAktuelleStation(station); return ResponseEntity.status(200).body("OK"); } else { return ResponseEntity.status(400).body("The scanned station isn´t the correct following station"); From ff7ddde5eef68a5a1f14969d9e0d0125bebebff0 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 13 Apr 2019 21:34:57 +0200 Subject: [PATCH 4/6] returns the station as JSON now if everything is OK --- .../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 083b8ff..c6dd76f 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -232,7 +232,7 @@ public class Controller { if (cache.getStationen().get(i - 1).equals(aktuelleStation)) { bearbeitet.setAktuelleStation(station); - return ResponseEntity.status(200).body("OK"); + return ResponseEntity.status(200).body(new Gson().toJson(station)); } else { return ResponseEntity.status(400).body("The scanned station isn´t the correct following station"); } From d14a4b5d86ad7f92d14ca056169ed188e3bd6995 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 13 Apr 2019 21:41:24 +0200 Subject: [PATCH 5/6] modified checkStation --- .../labsw/bugageocaching/controller/Controller.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index c6dd76f..e31b56b 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -232,6 +232,16 @@ public class Controller { if (cache.getStationen().get(i - 1).equals(aktuelleStation)) { bearbeitet.setAktuelleStation(station); + if (i == cache.getStationen().size() - 1) { // letze Station erreicht + Optional cacheAccesDefinitionOptional = + cacheAccesDefinitionRepository.findById(1); // abgeschlossen + if (cacheAccesDefinitionOptional.isPresent()) { + CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get(); + bearbeitet.setCacheAccesDefinition(cacheAccesDefinition); + } else { + return ResponseEntity.status(404).body("There is no cacheAccesDefinition with the ID " + 1); + } + } return ResponseEntity.status(200).body(new Gson().toJson(station)); } else { return ResponseEntity.status(400).body("The scanned station isn´t the correct following station"); From 4f7b8bd4f657fb2c6f4bbfc36778d18c90a9bd2a Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 13 Apr 2019 22:01:18 +0200 Subject: [PATCH 6/6] added comments --- .../java/hhn/labsw/bugageocaching/controller/Controller.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index e31b56b..9f440bc 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -164,6 +164,10 @@ public class Controller { } } + /** + * Checkt, ob die eingescannte Station die Nachfolgestation der zuletzt + * besuchten Stationen des aktuell durchgeführten Caches ist + */ @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose @RequestMapping("/api/checkStation") @ResponseBody