Skip to content
Snippets Groups Projects
Commit d2931996 authored by Viceníková Jitka's avatar Viceníková Jitka
Browse files

fix: generateCarPdf

parent 157c735a
No related branches found
No related tags found
4 merge requests!54Merge develop into main,!48Scenario,!46Visualization pdf,!44Security
...@@ -3,6 +3,8 @@ target/ ...@@ -3,6 +3,8 @@ target/
!**/src/main/**/target/ !**/src/main/**/target/
!**/src/test/**/target/ !**/src/test/**/target/
output-data/
### STS ### ### STS ###
.apt_generated .apt_generated
.classpath .classpath
......
...@@ -16,14 +16,12 @@ public class Car extends DomainObject<Long> implements Serializable { ...@@ -16,14 +16,12 @@ public class Car extends DomainObject<Long> implements Serializable {
@OneToOne(fetch = FetchType.LAZY) @OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "driver_id") @JoinColumn(name = "driver_id")
@Nullable @Nullable
@JsonManagedReference
private Driver driver; private Driver driver;
@OneToMany(fetch = FetchType.LAZY, @OneToMany(fetch = FetchType.LAZY,
mappedBy = "car", mappedBy = "car",
cascade = {CascadeType.REMOVE, CascadeType.PERSIST, CascadeType.MERGE}) cascade = {CascadeType.REMOVE, CascadeType.PERSIST, CascadeType.MERGE})
@Nonnull @Nonnull
@JsonManagedReference
private Set<CarComponent> components; private Set<CarComponent> components;
public Car() { public Car() {
......
package cz.muni.pa165.data.model; package cz.muni.pa165.data.model;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnore;
import cz.muni.pa165.data.enums.ComponentTypeEnum; import cz.muni.pa165.data.enums.ComponentTypeEnum;
import jakarta.annotation.Nonnull; import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable; import jakarta.annotation.Nullable;
...@@ -32,7 +32,7 @@ public class CarComponent extends DomainObject<Long> implements Serializable { ...@@ -32,7 +32,7 @@ public class CarComponent extends DomainObject<Long> implements Serializable {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "car_id") @JoinColumn(name = "car_id")
@Nullable @Nullable
@JsonBackReference @JsonIgnore
private Car car; private Car car;
public CarComponent() { public CarComponent() {
......
package cz.muni.pa165.data.model; package cz.muni.pa165.data.model;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnore;
import cz.muni.pa165.data.enums.CharacteristicsEnum; import cz.muni.pa165.data.enums.CharacteristicsEnum;
import jakarta.annotation.Nonnull; import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable; import jakarta.annotation.Nullable;
...@@ -48,7 +48,7 @@ public class Driver extends DomainObject<Long> implements Serializable { ...@@ -48,7 +48,7 @@ public class Driver extends DomainObject<Long> implements Serializable {
mappedBy = "driver", mappedBy = "driver",
cascade = {CascadeType.REMOVE, CascadeType.PERSIST, CascadeType.MERGE}) cascade = {CascadeType.REMOVE, CascadeType.PERSIST, CascadeType.MERGE})
@Nullable @Nullable
@JsonBackReference @JsonIgnore
private Car car; private Car car;
public Driver() { public Driver() {
......
...@@ -11,16 +11,17 @@ import cz.muni.pa165.exceptions.ResourceNotFoundException; ...@@ -11,16 +11,17 @@ import cz.muni.pa165.exceptions.ResourceNotFoundException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.core.io.Resource;
import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestClientException;
import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient;
import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -184,11 +185,7 @@ public class CarService extends DomainService<Car> { ...@@ -184,11 +185,7 @@ public class CarService extends DomainService<Car> {
.contentType(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)
.bodyValue(visualization) .bodyValue(visualization)
.retrieve() .retrieve()
.bodyToMono(new ParameterizedTypeReference<Map<String, Object>>() { .bodyToMono(Resource.class)
})
.doOnError(error -> {
throw new RestClientException("Failed to send POST request", error);
})
.block(); .block();
} }
} }
...@@ -155,7 +155,12 @@ paths: ...@@ -155,7 +155,12 @@ paths:
content: content:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/CarDto' type: object
properties:
car:
$ref: '#/components/schemas/CarDto'
required:
- car
responses: responses:
"200": "200":
description: OK description: OK
......
...@@ -3,6 +3,7 @@ package cz.muni.pa165.rest; ...@@ -3,6 +3,7 @@ package cz.muni.pa165.rest;
import cz.muni.pa165.facade.VisualizationFacade; import cz.muni.pa165.facade.VisualizationFacade;
import cz.muni.pa165.generated.api.VisualizationApiDelegate; import cz.muni.pa165.generated.api.VisualizationApiDelegate;
import cz.muni.pa165.generated.model.CarDto; import cz.muni.pa165.generated.model.CarDto;
import cz.muni.pa165.generated.model.GenerateCarPdfRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -27,12 +28,13 @@ public class VisualizationController implements VisualizationApiDelegate { ...@@ -27,12 +28,13 @@ public class VisualizationController implements VisualizationApiDelegate {
} }
@Override @Override
public ResponseEntity<Resource> generateCarPdf(CarDto carDto) { public ResponseEntity<Resource> generateCarPdf(GenerateCarPdfRequest generateCarPdfRequest) {
log.debug("generateCarPdf() called"); log.debug("generateCarPdf() called");
try { try {
var resource = visualizationFacade.generateCarPdf(carDto); var resource = visualizationFacade.generateCarPdf(generateCarPdfRequest.getCar());
return ResponseEntity.ok() return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=generated.pdf") .header(HttpHeaders.CONTENT_DISPOSITION,
String.format("attachment; filename=car-%s.pdf", generateCarPdfRequest.getCar().getId()))
.contentType(MediaType.APPLICATION_PDF) .contentType(MediaType.APPLICATION_PDF)
.contentLength(resource.contentLength()) .contentLength(resource.contentLength())
.body(resource); .body(resource);
......
...@@ -14,7 +14,6 @@ import java.io.IOException; ...@@ -14,7 +14,6 @@ import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Objects;
@Service @Service
public class VisualizationService { public class VisualizationService {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment