Commit 6a036a07 authored by Vladimir Trubachoff's avatar Vladimir Trubachoff

Added Lombok and MapStruct

Code refactoring
parent 2a31c172
......@@ -26,6 +26,13 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mockito:mockito-core:5.12.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
compileOnly 'org.projectlombok:lombok:1.18.34'
annotationProcessor 'org.projectlombok:lombok:1.18.34'
testCompileOnly 'org.projectlombok:lombok:1.18.34'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.34'
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
}
tasks.named('test') {
......
package com.example.testj.domain;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotEmpty;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table(name = "goods")
public class Goods {
......@@ -22,41 +26,7 @@ public class Goods {
@Column(name = "price")
private double price;
public Goods() {
}
public Goods(Long id, String name, Double price) {
this.id = id;
this.name = name;
this.price = price;
}
public Goods(Goods goods) {
this.name = goods.getName();
this.price = goods.getPrice();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
@OneToMany(mappedBy = "goods", cascade = CascadeType.ALL, orphanRemoval = true)
private List<OrderLine> orderLines;
public void setPrice(Double price) {
this.price = price;
}
}
package com.example.testj.domain;
import java.util.List;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import java.util.List;
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table(name = "orders")
public class Order {
......@@ -36,62 +34,4 @@ public class Order {
@OneToMany(mappedBy = "order", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
List<OrderLine> orderLines;
public Order() {
}
public Order(String client, String date, String address) {
this.client = client;
this.address = address;
this.date = date;
}
public void addOrderLine(OrderLine orderLine) {
orderLines.add(orderLine);
orderLine.setOrder(this);
}
public void removeOrderLine(OrderLine orderLine) {
orderLines.remove(orderLine);
}
public List<OrderLine> getOrderLines() {
return orderLines;
}
public void setOrderLines(List<OrderLine> orderLines) {
this.orderLines = orderLines;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package com.example.testj.domain;
import org.springframework.format.annotation.NumberFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import jakarta.validation.constraints.Min;
import lombok.*;
import org.springframework.format.annotation.NumberFormat;
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table(name = "order_line")
public class OrderLine {
......@@ -34,37 +30,4 @@ public class OrderLine {
@NumberFormat
@Min(1)
private int count;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
}
package com.example.testj.domain;
\ No newline at end of file
package com.example.testj.service;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PagedModel;
import org.springframework.stereotype.Service;
import com.example.testj.domain.Goods;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.repository.GoodsRepository;
import com.example.testj.service.dto.GoodsDto;
import com.example.testj.utils.MappingUtils;
@Service
public class GoodsService {
private final GoodsRepository goodsRepository;
private final MappingUtils mappingUtils;
public GoodsService(GoodsRepository goodsRepository, MappingUtils mappingUtils) {
this.goodsRepository = goodsRepository;
this.mappingUtils = mappingUtils;
}
import org.springframework.data.web.PagedModel;
public PagedModel<GoodsDto> getAllGoods(Integer page, Integer size, String sortBy, String sortDir) {
return new PagedModel<>(goodsRepository
.findAll(PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDir), sortBy)))
.map(mappingUtils::toGoodsDto));
}
public interface GoodsService {
PagedModel<GoodsDto> getGoodsPaged(Integer page, Integer size, String sortBy, String sortDir);
public GoodsDto getGoods(Long id) {
return goodsRepository.findById(id).map(mappingUtils::toGoodsDto).orElse(null);
}
GoodsDto getGoods(Long id);
public GoodsDto createOrUpdate(Goods goods) {
return mappingUtils.toGoodsDto(this.goodsRepository.save(goods));
}
GoodsDto createOrUpdate(Goods goods);
public void deleteGoods(Long id) {
this.goodsRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
this.goodsRepository.deleteById(id);
}
void deleteGoods(Long id);
}
package com.example.testj.service;
import org.springframework.stereotype.Service;
import com.example.testj.domain.OrderLine;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.repository.OrderLineRepository;
import com.example.testj.service.dto.GoodsDto;
import com.example.testj.service.dto.OrderDto;
import com.example.testj.service.dto.OrderLineDto;
import com.example.testj.service.dto.OrderLineRequestDto;
import com.example.testj.utils.MappingUtils;
@Service
public class OrderLineService {
private final MappingUtils mappingUtils;
private final OrderLineRepository orderLineRepository;
private final OrderService orderService;
private final GoodsService goodsService;
public OrderLineService(OrderLineRepository orderLineRepository, MappingUtils mappingUtils,
OrderService orderService, GoodsService goodsService) {
this.orderLineRepository = orderLineRepository;
this.mappingUtils = mappingUtils;
this.orderService = orderService;
this.goodsService = goodsService;
}
public OrderLineDto createOrderLine(OrderLineRequestDto orderLineRequest) {
OrderDto order = orderService.getOrder(orderLineRequest.getOrderId());
GoodsDto goods = goodsService.getGoods(orderLineRequest.getGoodsId());
OrderLine orderLine = new OrderLine();
orderLine.setOrder(mappingUtils.toOrder(order));
orderLine.setGoods(mappingUtils.toGoods(goods));
orderLine.setCount(orderLineRequest.getCount());
return mappingUtils.toOrderLineDto(orderLineRepository.save(orderLine));
}
public interface OrderLineService {
OrderLineDto getOrderLine(Long id) throws ResourceNotFoundException;
public OrderLineDto updateOrderLine(OrderLine orderLine, Long id) {
OrderLine updatedOrderLine = orderLineRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
updatedOrderLine.setCount(orderLine.getCount());
return mappingUtils.toOrderLineDto(orderLineRepository.save(updatedOrderLine));
}
OrderLineDto createOrderLine(OrderLineRequestDto orderLineRequest);
public OrderLineDto getOrderLine(Long id) throws ResourceNotFoundException {
return mappingUtils
.toOrderLineDto(orderLineRepository.findById(id).orElseThrow(ResourceNotFoundException::new));
}
OrderLineDto updateOrderLine(OrderLine orderLine, Long id);
public void deleteOrderLine(Long id) {
orderLineRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
orderLineRepository.deleteById(id);
}
void deleteOrderLine(Long id);
}
package com.example.testj.service;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PagedModel;
import org.springframework.stereotype.Service;
import com.example.testj.domain.Order;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.repository.OrderRepository;
import com.example.testj.service.dto.OrderDto;
import com.example.testj.utils.MappingUtils;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@Service
public class OrderService {
private final OrderRepository orderRepository;
private final MappingUtils mappingUtils;
public OrderService(OrderRepository orderRepository, MappingUtils mappingUtils) {
this.orderRepository = orderRepository;
this.mappingUtils = mappingUtils;
}
import org.springframework.data.web.PagedModel;
public PagedModel<OrderDto> getOrders(Integer page, Integer size, String sortBy, String sortDir) {
return new PagedModel<>(orderRepository
.findAll(PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDir), sortBy)))
.map(mappingUtils::toOrderDto));
}
public interface OrderService {
PagedModel<OrderDto> getOrdersPaged(Integer page, Integer size, String sortBy, String sortDir);
public OrderDto getOrder(Long id) throws ResourceNotFoundException {
return mappingUtils.toOrderDto(orderRepository.findById(id).orElseThrow(ResourceNotFoundException::new));
}
OrderDto getOrder(Long id) throws ResourceNotFoundException;
public void deleteOrder(Long id) throws ResourceNotFoundException {
orderRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
orderRepository.deleteById(id);
}
OrderDto createOrUpdateOrder(Order order);
public OrderDto createOrUpdateOrder(Order order) {
return mappingUtils.toOrderDto(orderRepository.save(order));
}
OrderDto patchOrder(Long id, JsonNode patch) throws JsonMappingException;
public OrderDto patchOrder(Long id, JsonNode patch) throws JsonMappingException {
Order orderData = orderRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
Order patchedOrder = new ObjectMapper().updateValue(orderData, patch);
return mappingUtils.toOrderDto(orderRepository.save(patchedOrder));
}
void deleteOrder(Long id) throws ResourceNotFoundException;
}
package com.example.testj.service.dto;
import java.io.Serializable;
import jakarta.validation.constraints.Digits;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Positive;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import com.example.testj.domain.Goods;
import java.io.Serializable;
/**
* DTO for {@link com.example.testj.domain.Goods}
*/
@AllArgsConstructor
@Getter
@Setter
public class GoodsDto implements Serializable {
private Long id;
private String name;
private double price;
public GoodsDto() {
}
public GoodsDto(Goods goods) {
this.id = goods.getId();
this.name = goods.getName();
this.price = goods.getPrice();
}
private final Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
@NotEmpty
private String name;
public void setPrice(double price) {
this.price = price;
}
@Min(0L)
@Digits(integer = 6, fraction = 2)
@Positive
private double price;
}
\ No newline at end of file
package com.example.testj.service.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
import com.example.testj.domain.Order;
import com.example.testj.domain.OrderLine;
/**
* DTO for {@link com.example.testj.domain.Order}
*/
@AllArgsConstructor
@Getter
@Setter
public class OrderDto implements Serializable {
private Long id;
private String client;
private String date;
private String address;
private List<OrderLine> orderLines;
public OrderDto() {
}
public OrderDto(Order order) {
this.id = order.getId();
this.client = order.getClient();
this.address = order.getAddress();
this.date = order.getDate();
this.orderLines = order.getOrderLines();
}
private final Long id;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
@NotBlank
private String client;
public Long getId() {
return id;
}
private String date;
public List<OrderLine> getOrderLines() {
return orderLines;
}
@NotBlank
private String address;
public void setOrderLines(List<OrderLine> orderLines) {
this.orderLines = orderLines;
}
private List<OrderLineDto> orderLines;
}
\ No newline at end of file
package com.example.testj.service.dto;
import java.io.Serializable;
import jakarta.validation.constraints.Positive;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import com.example.testj.domain.Goods;
import com.example.testj.domain.Order;
import com.example.testj.domain.OrderLine;
import java.io.Serializable;
/**
* DTO for {@link com.example.testj.domain.OrderLine}
*/
@AllArgsConstructor
@Getter
@Setter
public class OrderLineDto implements Serializable {
private Long id;
private Goods goods;
private Order order;
private int count;
public OrderLineDto() {
}
public OrderLineDto(OrderLine orderLine) {
this.id = orderLine.getId();
this.count = orderLine.getCount();
this.goods = orderLine.getGoods();
this.order = orderLine.getOrder();
}
public Goods getGoods() {
return this.goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
private final Long id;
public Long getId() {
return id;
}
private final GoodsDto goods;
public Order getOrder() {
return order;
}
@Positive
private final int count;
}
package com.example.testj.service.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class OrderLineRequestDto {
private Long orderId;
private Long goodsId;
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getGoodsId() {
return goodsId;
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
}
package com.example.testj.service.impl;
import com.example.testj.service.GoodsService;
import com.example.testj.service.mapper.GoodsMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PagedModel;
import org.springframework.stereotype.Service;
import com.example.testj.domain.Goods;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.repository.GoodsRepository;
import com.example.testj.service.dto.GoodsDto;
@Service
@RequiredArgsConstructor
public class GoodsServiceImpl implements GoodsService {
private final GoodsRepository goodsRepository;
private final GoodsMapper goodsMapper;
@Override
public PagedModel<GoodsDto> getGoodsPaged(Integer page, Integer size, String sortBy, String sortDir) {
return new PagedModel<>(goodsRepository
.findAll(PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDir), sortBy)))
.map(goodsMapper::toDto));
}
@Override
public GoodsDto getGoods(Long id) {
return goodsRepository.findById(id).map(goodsMapper::toDto).orElse(null);
}
@Override
public GoodsDto createOrUpdate(Goods goods) {
return goodsMapper.toDto(this.goodsRepository.save(goods));
}
@Override
public void deleteGoods(Long id) {
this.goodsRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
this.goodsRepository.deleteById(id);
}
}
package com.example.testj.service.impl;
import com.example.testj.service.GoodsService;
import com.example.testj.service.OrderLineService;
import com.example.testj.service.OrderService;
import com.example.testj.service.mapper.GoodsMapper;
import com.example.testj.service.mapper.OrderLineMapper;
import com.example.testj.service.mapper.OrderMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.example.testj.domain.OrderLine;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.repository.OrderLineRepository;
import com.example.testj.service.dto.GoodsDto;
import com.example.testj.service.dto.OrderDto;
import com.example.testj.service.dto.OrderLineDto;
import com.example.testj.service.dto.OrderLineRequestDto;
@Service
@RequiredArgsConstructor
public class OrderLineServiceImpl implements OrderLineService {
private final OrderLineRepository orderLineRepository;
private final OrderService orderService;
private final GoodsService goodsService;
private final OrderLineMapper orderLineMapper;
private final OrderMapper orderMapper;
private final GoodsMapper goodsMapper;
@Override
public OrderLineDto createOrderLine(OrderLineRequestDto orderLineRequest) {
OrderDto order = orderService.getOrder(orderLineRequest.getOrderId());
GoodsDto goods = goodsService.getGoods(orderLineRequest.getGoodsId());
OrderLine orderLine = new OrderLine();
orderLine.setOrder(orderMapper.toEntity(order));
orderLine.setGoods(goodsMapper.toEntity(goods));
orderLine.setCount(orderLineRequest.getCount());
return orderLineMapper.toDto(orderLineRepository.save(orderLine));
}
@Override
public OrderLineDto updateOrderLine(OrderLine orderLine, Long id) {
OrderLine updatedOrderLine = orderLineRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
updatedOrderLine.setCount(orderLine.getCount());
return orderLineMapper.toDto(orderLineRepository.save(updatedOrderLine));
}
@Override
public OrderLineDto getOrderLine(Long id) throws ResourceNotFoundException {
return orderLineMapper.toDto(orderLineRepository.findById(id).orElseThrow(ResourceNotFoundException::new));
}
@Override
public void deleteOrderLine(Long id) {
orderLineRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
orderLineRepository.deleteById(id);
}
}
package com.example.testj.service.impl;
import com.example.testj.domain.Order;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.repository.OrderRepository;
import com.example.testj.service.OrderService;
import com.example.testj.service.dto.OrderDto;
import com.example.testj.service.mapper.OrderMapper;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PagedModel;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final OrderRepository orderRepository;
private final OrderMapper orderMapper;
@Override
public PagedModel<OrderDto> getOrdersPaged(Integer page, Integer size, String sortBy, String sortDir) {
return new PagedModel<>(orderRepository
.findAll(PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDir), sortBy)))
.map(orderMapper::toDto));
}
@Override
public OrderDto getOrder(Long id) throws ResourceNotFoundException {
return orderMapper.toDto(orderRepository.findById(id).orElseThrow(ResourceNotFoundException::new));
}
@Override
public void deleteOrder(Long id) throws ResourceNotFoundException {
orderRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
orderRepository.deleteById(id);
}
@Override
public OrderDto createOrUpdateOrder(Order order) {
return orderMapper.toDto(orderRepository.save(order));
}
@Override
public OrderDto patchOrder(Long id, JsonNode patch) throws JsonMappingException {
Order orderData = orderRepository.findById(id).orElseThrow(ResourceNotFoundException::new);
Order patchedOrder = new ObjectMapper().updateValue(orderData, patch);
return orderMapper.toDto(orderRepository.save(patchedOrder));
}
}
package com.example.testj.service.mapper;
import com.example.testj.domain.Goods;
import com.example.testj.service.dto.GoodsDto;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface GoodsMapper {
GoodsDto toDto(Goods goods);
Goods toEntity(GoodsDto dto);
}
package com.example.testj.service.mapper;
import com.example.testj.domain.OrderLine;
import com.example.testj.service.dto.OrderLineDto;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface OrderLineMapper {
OrderLineDto toDto(OrderLine orderLine);
OrderLine toEntity(OrderLineDto orderLineDto);
}
package com.example.testj.service.mapper;
import com.example.testj.domain.Order;
import com.example.testj.service.dto.OrderDto;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface OrderMapper {
OrderDto toDto(Order order);
Order toEntity(OrderDto orderDto);
}
package com.example.testj.service;
\ No newline at end of file
package com.example.testj.utils;
import org.springframework.stereotype.Service;
import com.example.testj.domain.Goods;
import com.example.testj.domain.Order;
import com.example.testj.domain.OrderLine;
import com.example.testj.service.dto.GoodsDto;
import com.example.testj.service.dto.OrderDto;
import com.example.testj.service.dto.OrderLineDto;
@Service
public class MappingUtils {
public OrderDto toOrderDto(Order order) {
return new OrderDto(order);
}
public Order toOrder(OrderDto orderDto) {
Order order = new Order();
order.setId(orderDto.getId());
order.setClient(orderDto.getClient());
order.setDate(orderDto.getDate());
order.setAddress(orderDto.getAddress());
order.setOrderLines(orderDto.getOrderLines());
return order;
}
public OrderLineDto toOrderLineDto(OrderLine orderLine) {
return new OrderLineDto(orderLine);
}
public OrderLine toOrderLine(OrderLineDto orderLineDto) {
OrderLine orderLine = new OrderLine();
orderLine.setGoods(orderLineDto.getGoods());
orderLine.setOrder(orderLineDto.getOrder());
orderLine.setCount(orderLineDto.getCount());
return orderLine;
}
public GoodsDto toGoodsDto(Goods goods) {
return new GoodsDto(goods);
}
public Goods toGoods(GoodsDto goodsDto) {
Goods goods = new Goods();
goods.setId(goodsDto.getId());
goods.setName(goodsDto.getName());
goods.setPrice(goodsDto.getPrice());
return goods;
}
}
package com.example.testj.web.rest;
import com.example.testj.service.mapper.GoodsMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.data.web.PagedModel;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
......@@ -18,19 +20,14 @@ import org.springframework.web.bind.annotation.RestController;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.service.GoodsService;
import com.example.testj.service.dto.GoodsDto;
import com.example.testj.utils.MappingUtils;
@RestController
@RequestMapping("/api/goods")
@CrossOrigin(origins = "http://localhost:4200")
@RequiredArgsConstructor
public class GoodsController {
private final GoodsService goodsService;
private final MappingUtils mappingUtils;
public GoodsController(GoodsService goodsService, MappingUtils mappingUtils) {
this.goodsService = goodsService;
this.mappingUtils = mappingUtils;
}
private final GoodsMapper goodsMapper;
@GetMapping
public PagedModel<GoodsDto> goods(
......@@ -38,7 +35,7 @@ public class GoodsController {
@RequestHeader(name = "X-Page-Size", defaultValue = "10") Integer size,
@RequestHeader(name = "X-Sort-By", defaultValue = "id") String sortBy,
@RequestHeader(name = "X-Sort-Direction", defaultValue = "ASC") String sortDir) {
return goodsService.getAllGoods(page, size, sortBy, sortDir);
return goodsService.getGoodsPaged(page, size, sortBy, sortDir);
}
@GetMapping("/{id}")
......@@ -49,7 +46,7 @@ public class GoodsController {
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public GoodsDto createGoods(@RequestBody GoodsDto goods) {
return this.goodsService.createOrUpdate(mappingUtils.toGoods(goods));
return this.goodsService.createOrUpdate(goodsMapper.toEntity(goods));
}
@PutMapping("/{id}")
......@@ -57,7 +54,7 @@ public class GoodsController {
GoodsDto updatedGoods = goodsService.getGoods(id);
updatedGoods.setName(goods.getName());
updatedGoods.setPrice(goods.getPrice());
return this.goodsService.createOrUpdate(mappingUtils.toGoods(updatedGoods));
return this.goodsService.createOrUpdate(goodsMapper.toEntity(updatedGoods));
}
@DeleteMapping("/{id}")
......
package com.example.testj.web.rest;
import com.example.testj.service.impl.OrderServiceImpl;
import com.example.testj.service.mapper.OrderMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.data.web.PagedModel;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
......@@ -18,9 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.example.testj.domain.Order;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.service.OrderService;
import com.example.testj.service.dto.OrderDto;
import com.example.testj.utils.MappingUtils;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
......@@ -29,14 +30,10 @@ import jakarta.validation.Valid;
@RestController
@RequestMapping("/api/orders")
@CrossOrigin(origins = "http://localhost:4200")
@RequiredArgsConstructor
public class OrderController {
private final OrderService orderService;
private final MappingUtils mappingUtils;
public OrderController(OrderService orderService, MappingUtils mappingUtils) {
this.orderService = orderService;
this.mappingUtils = mappingUtils;
}
private final OrderServiceImpl orderService;
private final OrderMapper orderMapper;
@GetMapping
public PagedModel<OrderDto> getOrders(
......@@ -44,7 +41,7 @@ public class OrderController {
@RequestHeader(name = "X-Page-Size", defaultValue = "10") Integer size,
@RequestHeader(name = "X-Sort-By", defaultValue = "id") String sortBy,
@RequestHeader(name = "X-Sort-Direction", defaultValue = "ASC") String sortDir) {
return orderService.getOrders(page, size, sortBy, sortDir);
return orderService.getOrdersPaged(page, size, sortBy, sortDir);
}
@GetMapping("/{id}")
......@@ -67,7 +64,7 @@ public class OrderController {
updatedOrder.setAddress(order.getAddress());
updatedOrder.setDate(order.getDate());
return orderService.createOrUpdateOrder(mappingUtils.toOrder(updatedOrder));
return orderService.createOrUpdateOrder(orderMapper.toEntity(updatedOrder));
}
@PatchMapping("/{id}")
......
package com.example.testj.web.rest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.testj.exception.ResourceNotFoundException;
import com.example.testj.service.OrderLineService;
import com.example.testj.service.dto.OrderLineDto;
import com.example.testj.service.dto.OrderLineRequestDto;
import com.example.testj.utils.MappingUtils;
import com.example.testj.service.mapper.OrderLineMapper;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/order-line")
@CrossOrigin(origins = "http://localhost:4200")
@RequiredArgsConstructor
public class OrderLineController {
private final OrderLineService orderLineService;
private final MappingUtils mappingUtils;
public OrderLineController(OrderLineService orderLineService, MappingUtils mappingUtils) {
this.orderLineService = orderLineService;
this.mappingUtils = mappingUtils;
}
private final OrderLineMapper orderLineMapper;
@GetMapping("/{id}")
public OrderLineDto get(@PathVariable Long id) {
......@@ -44,7 +31,7 @@ public class OrderLineController {
@PutMapping("/{id}")
public OrderLineDto updateOrder(@PathVariable Long id, @Valid @RequestBody OrderLineDto orderLine) {
return orderLineService.updateOrderLine(mappingUtils.toOrderLine(orderLine), id);
return orderLineService.updateOrderLine(orderLineMapper.toEntity(orderLine), id);
}
@DeleteMapping("/{id}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment