문제별로 코드를 따로 떼서 작성하기가 애매해서, 전체 소스 구조를 먼저 작성한다.
먼저, 이번 과제를 구현하기 위해서 위 트리와 같이 fruit contoller를 생성하고 필요한 domain 과 dto 를 생성하였다.
본 과제에서는 http 를 통해 저장된 과일 정보를 조회하는 기능은 없어서, domain에 생성한 fruit 클래스는 사용하지 않았다.
domain > fruit > Fruit.java
package com.group.libraryapp.domain.fruit;
import java.time.LocalDate;
public class Fruit {
private String name;
private LocalDate warehousingDate;
private long price;
public Fruit(String name, LocalDate warehousingDate, long price) {
if(name == null || name.isBlank()){
throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다.", name));
}
this.name = name;
this.warehousingDate = warehousingDate;
this.price = price;
}
public String getName() {
return name;
}
public LocalDate getWarehousingDate() {
return warehousingDate;
}
public long getPrice() {
return price;
}
}
이번 과제에서는 Fruit.java 클래스를 사용하진 않았지만, 조회 기능을 넣을 땐 사용하게 된다.
dto > fruit > request > FruitCreateRequest.java
과일 정보를 등록할 때 사용하는 클래스
package com.group.libraryapp.dto.fruit.request;
import java.time.LocalDate;
public class FruitCreateRequest {
private String name;
private LocalDate warehousingDate;
private long price;
public String getName() {
return name;
}
public LocalDate getWarehousingDate() {
return warehousingDate;
}
public long getPrice() {
return price;
}
}
dto > fruit > request > FruitUpdateRequest.java
과일의 판매 상태 정보를 업데이트할때 사용하는 클래스
package com.group.libraryapp.dto.fruit.request;
import java.time.LocalDate;
public class FruitUpdateRequest {
private long id;
private String name;
private LocalDate warehousingDate;
private long price;
public long getId() {
return id;
}
public String getName() {
return name;
}
public LocalDate getWarehousingDate() {
return warehousingDate;
}
public long getPrice() {
return price;
}
}