diff --git a/car/src/main/java/cz/muni/pa165/car/App.java b/car/src/main/java/cz/muni/pa165/car/App.java index 9d3cd300580e2384f6ed002b2bb5808acb450f85..8d546b5142bc6cde3c95a98f00ed947ae323e2bb 100644 --- a/car/src/main/java/cz/muni/pa165/car/App.java +++ b/car/src/main/java/cz/muni/pa165/car/App.java @@ -1,11 +1,10 @@ package cz.muni.pa165.car; -import org.json.JSONArray; -import org.json.JSONObject; +import cz.muni.pa165.common_library.exception.RestExceptionHandler; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; /** @@ -14,6 +13,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication(scanBasePackages = {"cz.muni.pa165.car"}) @EnableJpaRepositories(basePackages = {"cz.muni.pa165.car"}) @EntityScan("cz.muni.pa165.common_library") +@Import(RestExceptionHandler.class) public class App { public static void main(String[] args) { diff --git a/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java b/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java index f5ce7dc40fdc8535d6c54d6bc24e9967b7c14651..a36ff9c478bd281801c6c6afc42c0fbb71c47b2a 100644 --- a/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java +++ b/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java @@ -28,7 +28,7 @@ public class CarComponentPairController { } /** - * Calls facade to add a component to a car. + * Calls service to add a component to a car. * * @param componentId Id of the component. * @param carId Id of the car. @@ -43,7 +43,7 @@ public class CarComponentPairController { } /** - * Calls facade to remove a component from a car. + * Calls service to remove a component from a car. * * @param componentId Id of the component. * @param carId Id of the car. @@ -58,7 +58,7 @@ public class CarComponentPairController { } /** - * Calls facade to get all components of a car. + * Calls service to get all components of a car. * * @param carId Id of the car. * @return List of components. diff --git a/car/src/main/java/cz/muni/pa165/car/rest/CarController.java b/car/src/main/java/cz/muni/pa165/car/rest/CarController.java index 3ad5c1e8cbdb7859a9fcdf1d4070fa69d9a676c8..8dd02ec82a53c8306e3b962cea4889eb16a37001 100644 --- a/car/src/main/java/cz/muni/pa165/car/rest/CarController.java +++ b/car/src/main/java/cz/muni/pa165/car/rest/CarController.java @@ -56,7 +56,7 @@ public class CarController { */ @Operation(summary = "Delete a car") @DeleteMapping(path = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity<String> deleteCar(@Valid @RequestParam long carId) { + public ResponseEntity<String> deleteCar(@RequestParam Long carId) { return ResponseEntity.ok(carService.deleteById(carId)); } @@ -68,7 +68,7 @@ public class CarController { */ @Operation(summary = "Get a car") @GetMapping(path = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity<CarDto> getCar(@RequestParam long carId) { + public ResponseEntity<CarDto> getCar(@RequestParam Long carId) { return ResponseEntity.ok(carService.getCarById(carId)); } diff --git a/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java b/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java index 6e2e383dd6cd5955c7a9b0ceac2d4056cda7e0ed..88631333bdac050fb34f5f198982d3c53b91a96e 100644 --- a/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java +++ b/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java @@ -28,7 +28,7 @@ public class CarDriverPairController { } /** - * Calls facade to assign a driver to a car. + * Calls service to assign a driver to a car. * * @param driverId Id of the driver. * @param carId Id of the car. @@ -43,7 +43,7 @@ public class CarDriverPairController { } /** - * Calls facade to unassing a driver from a car. + * Calls service to unassing a driver from a car. * * @param driverId Id of the driver. * @param carId Id of the car. @@ -58,7 +58,7 @@ public class CarDriverPairController { } /** - * Calls facade to return all drivers assigned to a car. + * Calls service to return all drivers assigned to a car. * * @param carId Id of the car. * @return List of drivers. diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java b/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java index a6306e7769280a1c5213c6d645b1662d847e4af3..dd57d9f67ef93d3f4530482ba5b4006730a705e9 100644 --- a/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java +++ b/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java @@ -6,6 +6,7 @@ import cz.muni.pa165.car.data.repository.CarRepository; import cz.muni.pa165.common_library.dtos.CarComponentDto; import cz.muni.pa165.common_library.dtos.CarDto; import cz.muni.pa165.common_library.exceptions.DatabaseException; +import cz.muni.pa165.common_library.exception.DatabaseException; import cz.muni.pa165.common_library.racecomponents.CarComponent; import java.util.ArrayList; import java.util.List; diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java b/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java index f0ffb61cdb8f02f2a6864bafbadfcd30f8218679..5429e76313e96e57d102e1a8cc446e8ced39812d 100644 --- a/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java +++ b/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java @@ -3,6 +3,7 @@ package cz.muni.pa165.car.service; import cz.muni.pa165.car.data.repository.CarDriverPairRepository; import cz.muni.pa165.car.data.repository.CarRepository; import cz.muni.pa165.car.data.repository.DriverRepository; +import cz.muni.pa165.common_library.exception.DatabaseException; import cz.muni.pa165.common_library.dtos.CarDto; import cz.muni.pa165.common_library.dtos.DriverDto; import cz.muni.pa165.common_library.exceptions.DatabaseException; diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java b/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java index 6cc42cd38b13eef371dcac2de866ee0f7f94eb5c..1a026f3fe67ada4dd76a2114824d7083da218be7 100644 --- a/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java +++ b/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java @@ -5,6 +5,7 @@ import cz.muni.pa165.car.data.repository.CarRepository; import cz.muni.pa165.car.data.repository.DriverRepository; import cz.muni.pa165.common_library.dtos.CarDto; import cz.muni.pa165.common_library.exceptions.DatabaseException; +import cz.muni.pa165.common_library.exception.DatabaseException; import cz.muni.pa165.common_library.racecomponents.Car; import java.util.ArrayList; import java.util.List; diff --git a/common_library/pom.xml b/common_library/pom.xml index 17cbc2a2bdf5160660829e3449c1f4d8b4c50a8a..b4de2b6dd29cbad35645459ba4027021970749ab 100644 --- a/common_library/pom.xml +++ b/common_library/pom.xml @@ -20,18 +20,19 @@ <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> - <version>1.18.24</version> + <version>1.18.26</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + <version>3.0.4</version> + </dependency> <dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>3.0.2</version> </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> - </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/DatabaseException.java b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/DatabaseException.java index 227b9a113ce56809dcc7ce7deedac992f9729096..52a05fb33cacbb98e03f839213e38e097aa68dd5 100644 --- a/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/DatabaseException.java +++ b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/DatabaseException.java @@ -1,4 +1,4 @@ -package cz.muni.pa165.common_library.exceptions; +package cz.muni.pa165.common_library.exception; /** * Exception when a query does is not executed correctly. diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/ExError.java b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ExError.java similarity index 68% rename from common_library/src/main/java/cz/muni/pa165/common_library/ExError.java rename to common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ExError.java index c63d4ecbd75e14360eb413d247481c1e8b39678d..e16b755b75acc9dd1dc1ca735038638312c7afa0 100644 --- a/common_library/src/main/java/cz/muni/pa165/common_library/ExError.java +++ b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ExError.java @@ -1,16 +1,16 @@ -package cz.muni.pa165.common_library; +package cz.muni.pa165.common_library.exception; import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; import lombok.Getter; /** - * exError. + * Response when exception is thrown in API. */ public class ExError { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss") - private final LocalDateTime timestamp = LocalDateTime.now(); + private final LocalDateTime dateTime = LocalDateTime.now(); @Getter private final String message; diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ResourceNotFoundException.java b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ResourceNotFoundException.java index 84517c811e0a1362bf2b9f604e63b5f9137915a7..eaeb206f378b375c22c20ae431878d6ec5c698ff 100644 --- a/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ResourceNotFoundException.java +++ b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/ResourceNotFoundException.java @@ -1,4 +1,4 @@ -package cz.muni.pa165.common_library.exceptions; +package cz.muni.pa165.common_library.exception; /** * Exception when resource does not exist. diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/RestExceptionHandler.java b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/RestExceptionHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..2fa79a3098fc9805deaad690d50971d912746804 --- /dev/null +++ b/common_library/src/main/java/cz/muni/pa165/common_library/exceptions/RestExceptionHandler.java @@ -0,0 +1,105 @@ +package cz.muni.pa165.common_library.exception; + +import jakarta.persistence.EntityNotFoundException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.NoHandlerFoundException; + +/** + * Exception handler for all controllers. + */ +@RestControllerAdvice +public class RestExceptionHandler { + + /** + * Handlers for 404 status code. + * + * @param ex thrown exception. + * @return Message with datetime. + */ + @ExceptionHandler(EntityNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ResponseEntity<ExError> handleEntityNotFoundException(EntityNotFoundException ex) { + return new ResponseEntity<>( + new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.NOT_FOUND); + } + + /** + * Handlers for 404 when resource is not found in the database. + * + * @param ex thrown exception. + * @return Message with datetime. + */ + @ExceptionHandler(DatabaseException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ResponseEntity<ExError> handleDatabaseException(DatabaseException ex) { + return new ResponseEntity<>( + new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.NOT_FOUND); + } + + /** + * Handlers for 404 when there is no endpoint mapped to the requested path. + * + * @param ex thrown exception. + * @return Message with datetime. + */ + @ExceptionHandler(NoHandlerFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ResponseEntity<ExError> handleNoHandlerFoundException(NoHandlerFoundException ex) { + return new ResponseEntity<>( + new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.NOT_FOUND); + } + + /** + * Handler for 400 status code when json is not valid. + * + * @param ex thrown exception. + * @return Message with datetime. + */ + @ExceptionHandler(HttpMessageNotReadableException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + public ResponseEntity<ExError> handleNotReadableException(HttpMessageNotReadableException ex) { + return new ResponseEntity<>( + new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.BAD_REQUEST); + } + + /** + * Handler for 400 status code when there are validation exceptions. + * + * @param ex thrown exception. + * @return Message with datetime. + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + public ResponseEntity<ExError> handleValidationException(MethodArgumentNotValidException ex) { + String message = ex.getMessage(); + try { + + StringBuilder validtionMessage = new StringBuilder("Validation Errors: ["); + var validationErrors = ex.getBindingResult().getAllErrors(); + for (ObjectError error : validationErrors) { + var errorField = (FieldError) error; + var errorMessage = errorField.getDefaultMessage(); + var fieldName = errorField.getField(); + + validtionMessage.append(" field ").append(fieldName).append(": ") + .append(errorMessage).append(","); + } + validtionMessage.deleteCharAt(validtionMessage.length() - 1); + validtionMessage.append(" ]"); + message = validtionMessage.toString(); + } catch (Exception e) { + System.out.println("When creating validation error message: " + e.getMessage()); + } + return new ResponseEntity<>( + new ExError(message), new HttpHeaders(), HttpStatus.BAD_REQUEST); + } +} diff --git a/driver/pom.xml b/driver/pom.xml index c7efb5a8f4b2790287ea35bf26a6d747b5df74d6..73c6c6d3325e0e14af76f1d143ed003da5437ae0 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -20,11 +20,6 @@ <artifactId>h2</artifactId> <version>2.1.214</version> </dependency> - <dependency> - <groupId>org.json</groupId> - <artifactId>json</artifactId> - <version>20210307</version> - </dependency> <dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java b/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java index bedb933246daa4c74236edd0c21abeb9f60f8de1..6108391d0156d284d07da0fad3f2c66297916dcf 100644 --- a/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java +++ b/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java @@ -2,6 +2,8 @@ package cz.muni.pa165.driver.service; import cz.muni.pa165.common_library.dtos.DriverCarDto; import cz.muni.pa165.common_library.exceptions.ResourceNotFoundException; +import cz.muni.pa165.common_library.exception.ResourceNotFoundException; +import cz.muni.pa165.driver.api.DriverCarDto; import cz.muni.pa165.driver.data.repository.CarRepository; import cz.muni.pa165.driver.data.repository.DriverRepository; import cz.muni.pa165.driver.mapper.DriverCarMapper; diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java index 8be73de0f7fa48223d3b26ff327bddd5ccdc396c..a78036065acc422c6344d3cca658e6326c3067fe 100644 --- a/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java +++ b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java @@ -4,6 +4,10 @@ import cz.muni.pa165.common_library.dtos.DriverInsightDto; import cz.muni.pa165.common_library.dtos.DriverResponseDto; import cz.muni.pa165.common_library.dtos.DriverUpdateDto; import cz.muni.pa165.common_library.exceptions.ResourceNotFoundException; +import cz.muni.pa165.common_library.exception.ResourceNotFoundException; +import cz.muni.pa165.driver.api.DriverInsightDto; +import cz.muni.pa165.driver.api.DriverResponseDto; +import cz.muni.pa165.driver.api.DriverUpdateDto; import cz.muni.pa165.driver.data.repository.DriverRepository; import cz.muni.pa165.driver.mapper.DriverMapper; import java.util.List; diff --git a/race/pom.xml b/race/pom.xml index d167553f8e4ba2ab09b101a3a92bbd3ebb6a9693..266c650e014f8a1ddca70c7dbf43f2ba0338defa 100644 --- a/race/pom.xml +++ b/race/pom.xml @@ -35,7 +35,7 @@ <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> - <version>1.18.24</version> + <version>1.18.26</version> <scope>provided</scope> </dependency> <dependency> @@ -46,12 +46,7 @@ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> - <version>3.0.2</version> - </dependency> - <dependency> - <groupId>org.hsqldb</groupId> - <artifactId>hsqldb</artifactId> - <version>2.7.1</version> + <version>3.0.4</version> </dependency> </dependencies> <properties> diff --git a/race/src/main/java/cz/muni/pa165/race/App.java b/race/src/main/java/cz/muni/pa165/race/App.java index c228eb2c8d5d7dfb5ca07ae24efb658d57dee2ee..f690c949558466738253d1e62099738b8d74202b 100644 --- a/race/src/main/java/cz/muni/pa165/race/App.java +++ b/race/src/main/java/cz/muni/pa165/race/App.java @@ -1,5 +1,6 @@ package cz.muni.pa165.race; +import cz.muni.pa165.common_library.exception.RestExceptionHandler; import cz.muni.pa165.common_library.racecomponents.Car; import cz.muni.pa165.common_library.racecomponents.Driver; import cz.muni.pa165.common_library.racecomponents.Race; @@ -7,6 +8,7 @@ import cz.muni.pa165.common_library.racecomponents.Season; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Import; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -17,6 +19,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableJpaRepositories(basePackages = "cz.muni.pa165.race.data.repository") @EnableTransactionManagement @EntityScan(basePackageClasses = {Race.class, Season.class, Car.class, Driver.class}) +@Import(RestExceptionHandler.class) public class App { public static void main(String[] args) { diff --git a/race/src/main/java/cz/muni/pa165/race/RestExceptionHandler.java b/race/src/main/java/cz/muni/pa165/race/RestExceptionHandler.java index 4cd225fe33da256549f118cc7a40af7a2e61afcf..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/race/src/main/java/cz/muni/pa165/race/RestExceptionHandler.java +++ b/race/src/main/java/cz/muni/pa165/race/RestExceptionHandler.java @@ -1,47 +0,0 @@ -package cz.muni.pa165.race; - -import cz.muni.pa165.common_library.ExError; -import cz.muni.pa165.common_library.exceptions.DatabaseException; -import jakarta.persistence.EntityNotFoundException; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.servlet.NoHandlerFoundException; - -/** - * Rest exception handler. - */ -@RestControllerAdvice -public class RestExceptionHandler { - - /** - * wtf3. - * - * @param ex wtf. - * @return wtf2. - */ - @ExceptionHandler(EntityNotFoundException.class) - @ResponseStatus(HttpStatus.NOT_FOUND) - public ResponseEntity<ExError> handleEntityNotFoundException(EntityNotFoundException ex) { - System.out.println(); - return new ResponseEntity<>( - new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.NOT_FOUND); - } - - @ExceptionHandler(DatabaseException.class) - @ResponseStatus(HttpStatus.NOT_FOUND) - public ResponseEntity<ExError> handleDatabaseException(DatabaseException ex) { - return new ResponseEntity<>( - new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.NOT_FOUND); - } - - @ExceptionHandler(NoHandlerFoundException.class) - @ResponseStatus(HttpStatus.NOT_FOUND) - public ResponseEntity<ExError> handleDatabaseException(NoHandlerFoundException ex) { - return new ResponseEntity<>( - new ExError(ex.getMessage()), new HttpHeaders(), HttpStatus.NOT_FOUND); - } -} diff --git a/race/src/main/java/cz/muni/pa165/race/service/RaceService.java b/race/src/main/java/cz/muni/pa165/race/service/RaceService.java index 45ea193576a5eb705bc64551cfd26f7209550229..9dded1ab9b33147408bd1a90b2ec0113aa729382 100644 --- a/race/src/main/java/cz/muni/pa165/race/service/RaceService.java +++ b/race/src/main/java/cz/muni/pa165/race/service/RaceService.java @@ -2,6 +2,7 @@ package cz.muni.pa165.race.service; import cz.muni.pa165.common_library.dtos.RaceDto; import cz.muni.pa165.common_library.exceptions.DatabaseException; +import cz.muni.pa165.common_library.exception.DatabaseException; import cz.muni.pa165.common_library.racecomponents.Car; import cz.muni.pa165.common_library.racecomponents.Driver; import cz.muni.pa165.common_library.racecomponents.Race; diff --git a/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java b/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java index 0b2c74f8cd42164a29e8cfea0c6ff7df9f6cb830..fef3482fc3fd92d415eda6e6f4ddac4945c592e0 100644 --- a/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java +++ b/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java @@ -3,8 +3,12 @@ package cz.muni.pa165.race.service; import cz.muni.pa165.common_library.dtos.RaceNameDto; import cz.muni.pa165.common_library.dtos.SeasonDto; import cz.muni.pa165.common_library.exceptions.DatabaseException; +import cz.muni.pa165.common_library.exception.DatabaseException; import cz.muni.pa165.common_library.racecomponents.Race; import cz.muni.pa165.common_library.racecomponents.Season; +import cz.muni.pa165.common_library.racecomponents.Season; +import cz.muni.pa165.race.api.RaceNameDto; +import cz.muni.pa165.race.api.SeasonDto; import cz.muni.pa165.race.data.repository.RaceRepository; import cz.muni.pa165.race.data.repository.SeasonRepository; import java.util.List; @@ -22,8 +26,9 @@ public class SeasonService implements SeasonServiceInterface { @Autowired RaceRepository raceRepository; - SeasonService() { - + SeasonService(SeasonRepository seasonRepository, RaceRepository raceRepository) { + this.seasonRepository = seasonRepository; + this.raceRepository = raceRepository; } /** @@ -73,11 +78,11 @@ public class SeasonService implements SeasonServiceInterface { } /** - * Calls repository to add race to the season. + * Calls repository to add a race into a season in the database. * - * @param raceId id of the race. - * @param seasonId id of the season. - * @return returned Dto. + * @param raceId race id. + * @param seasonId season id. + * @return modified race. */ public SeasonDto addRace(Long raceId, Long seasonId) { var season = seasonRepository.findById(seasonId) @@ -88,8 +93,8 @@ public class SeasonService implements SeasonServiceInterface { return seasonConverter(seasonRepository.save(season)); } - Season seasonDtoConverter(SeasonDto seasonDto) { - var a = Season.builder() + private Season seasonDtoConverter(SeasonDto seasonDto) { + return Season.builder() .id(seasonDto.getId()) .seasonYear(seasonDto.getYear()) .races(seasonDto.getRaces() @@ -97,11 +102,9 @@ public class SeasonService implements SeasonServiceInterface { .map(this::getRace) .toList()) .build(); - System.out.println(); - return a; } - SeasonDto seasonConverter(Season season) { + private SeasonDto seasonConverter(Season season) { return SeasonDto.builder() .id(season.getId()) .year(season.getSeasonYear()) diff --git a/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java b/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java index 62cf0c3b94d265d693e533f254d188af5bcda1bc..80da12d7a9743d1a060d9e1a1ea92d1514c14eff 100644 --- a/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java +++ b/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java @@ -4,7 +4,7 @@ import cz.muni.pa165.common_library.dtos.SeasonDto; import java.util.List; /** - * Service for season. + * Interface for season service. */ public interface SeasonServiceInterface { diff --git a/race/src/main/resources/application.yml b/race/src/main/resources/application.yml index 9158b3e697b9f6591430251cca31926307567051..8a8fefb4d5bf5292f5b0a1e0c80d2d44c341901f 100644 --- a/race/src/main/resources/application.yml +++ b/race/src/main/resources/application.yml @@ -18,3 +18,8 @@ spring: driverClassName: org.h2.Driver username: admin password: admin + mvc: + throw-exception-if-no-handler-found: true + web: + resources: + add-mappings: false