From da336314ed9e2720f644424fe92bfe42005a8dfd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Diana=20Gul=C4=8D=C3=ADkov=C3=A1?= <xgulcik@fi.muni.cz>
Date: Sat, 18 Mar 2023 21:18:34 +0100
Subject: [PATCH] small changes

---
 car_manager/pom.xml                           |  5 +++++
 .../java/cz/muni/pa165/carmanager/Config.java | 17 ++++++++++++++
 .../data/repository/ConfigRepository.java     |  7 ++++--
 .../carmanager/facade/CarManagerFacade.java   |  3 +++
 .../carmanager/rest/CarManagerController.java |  5 +++++
 .../carmanager/service/CarManagerService.java | 18 ++++++++++++++-
 .../carmanager/service/DatabaseException.java |  3 +++
 .../service/ResourceNotFoundException.java    | 22 +++++--------------
 .../racecomponents/carcomponents/Engine.java  |  6 ++++-
 9 files changed, 66 insertions(+), 20 deletions(-)
 create mode 100644 car_manager/src/main/java/cz/muni/pa165/carmanager/Config.java

diff --git a/car_manager/pom.xml b/car_manager/pom.xml
index 40f23016..f1020ab1 100644
--- a/car_manager/pom.xml
+++ b/car_manager/pom.xml
@@ -31,6 +31,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.13.3</version>
+        </dependency>
     </dependencies>
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/Config.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/Config.java
new file mode 100644
index 00000000..2fb05134
--- /dev/null
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/Config.java
@@ -0,0 +1,17 @@
+package cz.muni.pa165.carmanager;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * App configuration.
+ */
+@Configuration
+public class Config {
+
+  @Bean
+  public ObjectMapper objectMapper() {
+    return new ObjectMapper();
+  }
+}
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java
index 66121aed..2af4531b 100644
--- a/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java
@@ -5,17 +5,20 @@ import java.util.Optional;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
+/**
+ * Repository for data retrieval.
+ */
 @Repository
 public class ConfigRepository {
 
   // TODO doplnit v dalsom milestone
   @Query("")
   public Optional<Config> updateConfig(Config config) {
-    return null;
+    return Optional.of(config);
   }
 
   @Query("")
   public Optional<Config> createConfig(Config config) {
-    return null;
+    return Optional.of(config);
   }
 }
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java
index f7e99b84..40f12eef 100644
--- a/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java
@@ -5,6 +5,9 @@ import cz.muni.pa165.common.racecomponents.Config;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+/**
+ * Facade for car managing.
+ */
 @Service
 @Transactional
 public class CarManagerFacade {
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java
index 58ad8d92..a05270d1 100644
--- a/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java
@@ -1,9 +1,11 @@
 package cz.muni.pa165.carmanager.rest;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import cz.muni.pa165.carmanager.facade.CarManagerFacade;
 import cz.muni.pa165.common.racecomponents.Config;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
@@ -13,6 +15,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+/**
+ * Controller for managing cars.
+ */
 @RestController
 @RequestMapping(path = "/car")
 @Validated
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java
index f0d3c76f..88820558 100644
--- a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java
@@ -5,6 +5,9 @@ import cz.muni.pa165.common.racecomponents.Config;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+/**
+ * Service for managing cars.
+ */
 @Service
 public class CarManagerService {
 
@@ -14,6 +17,12 @@ public class CarManagerService {
     this.configRepository = configRepository;
   }
 
+  /**
+   * Calls repository to update specific config, if not found, throws exception.
+   *
+   * @param config config to update.
+   * @return Updated config.
+   */
   @Transactional
   public Config updateConfig(Config config) {
     return configRepository.updateConfig(config)
@@ -21,9 +30,16 @@ public class CarManagerService {
             "Config with id: " + config.getId() + " was not found."));
   }
 
+  /**
+   * Calls repository to create a config, if query is not executed correctly, throws exception.
+   *
+   * @param config config to update.
+   * @return Updated config.
+   */
   public Config createConfig(Config config) {
     return configRepository.createConfig(config)
         .orElseThrow(
-            () -> new DatabaseException("Something went wrong when creating config in database."));
+            () -> new DatabaseException("Something went wrong when"
+                + "creating the config in database."));
   }
 }
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java
index c70d3e77..5d33f18d 100644
--- a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java
@@ -1,5 +1,8 @@
 package cz.muni.pa165.carmanager.service;
 
+/**
+ * Exception when a query does is not executed correctly.
+ */
 public class DatabaseException extends RuntimeException {
 
   DatabaseException(String message) {
diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java
index acb53e5d..ddfe6f14 100644
--- a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java
+++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java
@@ -1,22 +1,12 @@
 package cz.muni.pa165.carmanager.service;
 
+/**
+ * Exception when resource does not exist.
+ */
 public class ResourceNotFoundException extends RuntimeException {
-    public ResourceNotFoundException() {
-    }
 
-    public ResourceNotFoundException(String message) {
-        super(message);
-    }
+  ResourceNotFoundException(String message) {
+    super(message);
+  }
 
-    public ResourceNotFoundException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public ResourceNotFoundException(Throwable cause) {
-        super(cause);
-    }
-
-    public ResourceNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
-        super(message, cause, enableSuppression, writableStackTrace);
-    }
 }
diff --git a/common/src/main/java/cz/muni/pa165/common/racecomponents/carcomponents/Engine.java b/common/src/main/java/cz/muni/pa165/common/racecomponents/carcomponents/Engine.java
index 90bcd7a3..e448ad0d 100644
--- a/common/src/main/java/cz/muni/pa165/common/racecomponents/carcomponents/Engine.java
+++ b/common/src/main/java/cz/muni/pa165/common/racecomponents/carcomponents/Engine.java
@@ -1,15 +1,19 @@
 package cz.muni.pa165.common.racecomponents.carcomponents;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
 import cz.muni.pa165.common.racecomponents.Component;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.jackson.Jacksonized;
 
 /**
  * Component for engines.
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
+@RequiredArgsConstructor(onConstructor = @__(@JsonCreator))
 public class Engine extends Component {
 
-  private final double power;
+  private double power;
 }
-- 
GitLab