전체 코드

문제별로 코드를 따로 떼서 작성하기가 애매해서, 전체 소스 구조를 먼저 작성한다.

Untitled

먼저, 이번 과제를 구현하기 위해서 위 트리와 같이 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;
    }
}