From 12d4b858fa4d13a1e6424ace0bf55d35f45f9507 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Slov=C3=ADk?= <xslovik@fi.muni.cz>
Date: Wed, 5 Apr 2023 11:27:21 +0200
Subject: [PATCH] Integrating with AirplaneController

---
 .../facade/airplane/AirplaneFacadeImpl.java   | 17 ++++++++++----
 .../pa165/core/rest/AirplaneController.java   | 23 ++++++++++++++-----
 2 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/airplane/AirplaneFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/airplane/AirplaneFacadeImpl.java
index f15d8c8..b0f969d 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/facade/airplane/AirplaneFacadeImpl.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/airplane/AirplaneFacadeImpl.java
@@ -2,6 +2,7 @@ package cz.muni.fi.pa165.core.facade.airplane;
 
 import cz.muni.fi.pa165.core.data.domain.Airplane;
 import cz.muni.fi.pa165.core.model.AirplaneDto;
+import cz.muni.fi.pa165.core.model.AirplaneTypeDto;
 import cz.muni.fi.pa165.core.model.NewAirplaneDtoRequest;
 import cz.muni.fi.pa165.core.service.airplane.AirplaneService;
 import cz.muni.fi.pa165.core.service.airplanetype.AirplaneTypeService;
@@ -59,13 +60,19 @@ public class AirplaneFacadeImpl implements AirplaneFacade<Long> {
 
     @Override
     public AirplaneDto assignAirplaneType(Long airplaneId, Long airplaneTypeId) {
-        var airplaneEntity = airplaneService.findById(airplaneId);
-        var airplaneTypeEntity = airplaneTypeService.findById(airplaneTypeId);
+        var airplaneEntityOpt = airplaneService.findById(airplaneId);
+        var airplaneTypeEntityOpt = airplaneTypeService.findById(airplaneTypeId);
 
-        if (airplaneEntity.isPresent() && airplaneTypeEntity.isPresent()) {
-            airplaneEntity.get().setType(airplaneTypeEntity.get());
+        if (airplaneEntityOpt.isPresent() && airplaneTypeEntityOpt.isPresent()) {
+            var airplaneEntity = airplaneEntityOpt.get();
+            var airplaneTypeEntity = airplaneTypeEntityOpt.get();
+
+            airplaneEntity.setType(airplaneTypeEntity);
+            var airplaneTypeDto = modelMapper.map(airplaneTypeEntity, AirplaneTypeDto.class);
+            var airplaneDto = modelMapper.map(airplaneEntity, AirplaneDto.class);
+            airplaneDto.setType(airplaneTypeDto);
 
-            return modelMapper.map(airplaneEntity, AirplaneDto.class);
+            return airplaneDto;
         }
 
         return null;
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneController.java b/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneController.java
index 143e24e..5272433 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/rest/AirplaneController.java
@@ -2,8 +2,10 @@ package cz.muni.fi.pa165.core.rest;
 
 import cz.muni.fi.pa165.core.api.AirplaneApi;
 import cz.muni.fi.pa165.core.api.AirplaneApiDelegate;
+import cz.muni.fi.pa165.core.facade.airplane.AirplaneFacade;
 import cz.muni.fi.pa165.core.model.AirplaneDto;
 import cz.muni.fi.pa165.core.model.NewAirplaneDtoRequest;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -12,6 +14,13 @@ import java.util.List;
 @RestController
 public class AirplaneController implements AirplaneApiDelegate {
 
+    private final AirplaneFacade<Long> airplaneFacade;
+
+    @Autowired
+    public AirplaneController(AirplaneFacade<Long> airplaneFacade) {
+        this.airplaneFacade = airplaneFacade;
+    }
+
     /**
      * POST /api/airplanes/{airplaneId}/airplaneTypes/{airplaneTypeId} : Assign airplane type to a airplane.
      *
@@ -23,7 +32,7 @@ public class AirplaneController implements AirplaneApiDelegate {
      */
     @Override
     public ResponseEntity<AirplaneDto> assignAirplaneType(Long airplaneId, Long airplaneTypeId) {
-        return AirplaneApiDelegate.super.assignAirplaneType(airplaneId, airplaneTypeId);
+        return ResponseEntity.ok(airplaneFacade.assignAirplaneType(airplaneId, airplaneTypeId));
     }
 
     /**
@@ -37,7 +46,7 @@ public class AirplaneController implements AirplaneApiDelegate {
      */
     @Override
     public ResponseEntity<AirplaneDto> createAirplane(NewAirplaneDtoRequest newAirplaneDtoRequest) {
-        return AirplaneApiDelegate.super.createAirplane(newAirplaneDtoRequest);
+        return ResponseEntity.ok(airplaneFacade.save(newAirplaneDtoRequest));
     }
 
     /**
@@ -50,7 +59,8 @@ public class AirplaneController implements AirplaneApiDelegate {
      */
     @Override
     public ResponseEntity<Void> deleteAirplane(Long id) {
-        return AirplaneApiDelegate.super.deleteAirplane(id);
+        airplaneFacade.deleteById(id);
+        return null;
     }
 
     /**
@@ -64,7 +74,8 @@ public class AirplaneController implements AirplaneApiDelegate {
      */
     @Override
     public ResponseEntity<Void> deleteAirplaneTypeAssignment(Long airplaneId, Long airplaneTypeId) {
-        return AirplaneApiDelegate.super.deleteAirplaneTypeAssignment(airplaneId, airplaneTypeId);
+        airplaneFacade.deleteAirplaneTypeAssignment(airplaneId, airplaneTypeId);
+        return null;
     }
 
     /**
@@ -77,7 +88,7 @@ public class AirplaneController implements AirplaneApiDelegate {
      */
     @Override
     public ResponseEntity<AirplaneDto> getAirplaneById(Long id) {
-        return AirplaneApiDelegate.super.getAirplaneById(id);
+        return ResponseEntity.of(airplaneFacade.findById(id));
     }
 
     /**
@@ -89,7 +100,7 @@ public class AirplaneController implements AirplaneApiDelegate {
      */
     @Override
     public ResponseEntity<List<AirplaneDto>> getAllAirplanes() {
-        return AirplaneApiDelegate.super.getAllAirplanes();
+        return ResponseEntity.ok(airplaneFacade.findAll());
     }
 
     /**
-- 
GitLab