Started reorganising backend code

This commit is contained in:
Maximilian Leopold 2019-04-13 13:52:42 +02:00
parent 14049730a4
commit fe0dd478cd
3 changed files with 129 additions and 112 deletions

View File

@ -9,20 +9,17 @@ import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import javax.xml.bind.DatatypeConverter;
import java.security.Key;
import java.security.SecureRandom;
import java.util.*;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Logger;
import static hhn.labsw.bugageocaching.util.CacheConstructionUtil.*;
@RestController
public class Controller {
@ -103,14 +100,6 @@ public class Controller {
return ResponseEntity.status(200).body(token);
}
/*if (BCrypt.checkpw(user.getPassword(), userRepository.findByUsername(user.getUsername()).getPassword())) {
String token = user.getUsername() + BCrypt.hashpw(String.valueOf(System.currentTimeMillis() + counter.incrementAndGet()), BCrypt.gensalt());
String hashedToken = BCrypt.hashpw(token, BCrypt.gensalt());
userRepository.findByUsername(user.getUsername()).setToken(hashedToken);
userRepository.save(userRepository.findByUsername(user.getUsername()));
//return ResponseEntity.ok(new Gson().toJson(token));
return ResponseEntity.status(200).body(token);
}*/
return ResponseEntity.status(400).body("Es ist ein Fehler aufgetreten");
}
@ -176,113 +165,15 @@ public class Controller {
}
}
//Eigentlich brauchen wir mit JWT keine Logout Methode mehr.
@CrossOrigin(origins = "http://localhost:8081") // only for dev purpose
@RequestMapping("/api/logout")
@ResponseBody
public ResponseEntity logout(@RequestParam String token) {
// System.out.println("logout");
/*User user = userRepository.findByUsername(token.substring(0, token.indexOf("$")));
// System.out.println(token);
// System.out.println(user.getToken());
if (user == null || user.getToken().isEmpty()) {
return ResponseEntity.status(404).body("User was not found");
}
user.setToken(null);
userRepository.save(user);*/
return ResponseEntity.status(200).body("Token was deleted");
}
@CrossOrigin(origins = "http://localhost:8081") // only for dev purpose
@RequestMapping("/api/createCache")
@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) {
deleteStationen(cache);
return response;
}
}
// 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");
}
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");
}
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));
return createCacheUtil(cache);
}
public ResponseEntity createStation(Station station) {
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");
}
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 = 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(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

View File

@ -2,6 +2,7 @@ package hhn.labsw.bugageocaching.entities;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@Entity
@Table
@ -11,10 +12,20 @@ public class Station {
@GeneratedValue
private int id;
@NotNull
private String description;
@NotNull
private double longitude;
@NotNull
private double lattitude;
@Column(unique = true)
@NotNull
private int code;
@NotNull
private String solution;
public Station() {

View File

@ -0,0 +1,115 @@
package hhn.labsw.bugageocaching.util;
import com.google.gson.Gson;
import hhn.labsw.bugageocaching.entities.Cache;
import hhn.labsw.bugageocaching.entities.Station;
import hhn.labsw.bugageocaching.entities.StationReihenfolge;
import hhn.labsw.bugageocaching.repositories.CacheRepository;
import hhn.labsw.bugageocaching.repositories.StationRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import javax.persistence.RollbackException;
import java.util.Random;
public class CacheConstructionUtil {
@Autowired
static StationRepository stationRepository;
@Autowired
static CacheRepository cacheRepository;
public static ResponseEntity createCacheUtil(Cache cache){
// Stationen werden in die Datenbank eingetragen
for (Station station : cache.getStationen()) {
ResponseEntity response = createStationUtil(station);
if (response.getStatusCodeValue() == 400) {
deleteStationenUtil(cache);
return response;
}
}
// Caches werden in die Datenbank eingetragen
if (cache.getDescription().length() == 0 || cache.getName().length() == 0 || cache.getRankingPoints() == 0.0 || cache.getStationen().size() == 0) {
deleteStationenUtil(cache);
return ResponseEntity.status(400).body("cache fields can´t be empty");
}
for (Cache cache1 : cacheRepository.findAll()) {
if (cache1.getName().equals(cache.getName())) {
deleteStationenUtil(cache);
return ResponseEntity.status(400).body("name is already taken");
}
}
if (cache.getRankingPoints() < 0) {
deleteStationenUtil(cache);
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 static ResponseEntity createStationUtil(Station station) {
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");
}
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 = 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;
}
}
}
try {
station.setCode(code);
}catch (RollbackException e){
return ResponseEntity.status(400).body("There was an error generating the unique code");
}
stationRepository.save(station);
return ResponseEntity.status(200).body(new Gson().toJson(station));
}
public static void deleteStationenUtil(Cache cache) {
for (Station station : cache.getStationen()) {
try {
stationRepository.delete(station);
} catch (IllegalArgumentException e) { // station is null
// do nothing
}
}
}
}