2021-gpu-is-mine icon indicating copy to clipboard operation
2021-gpu-is-mine copied to clipboard

lombok 도입과 Entity Validator의 도입을 고려한다.

Open wannte opened this issue 3 years ago • 0 comments

이슈 설명

@Entity
public class Job extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private JobStatus status;

    @ManyToOne
    private GpuBoard gpuBoard;

    @ManyToOne
    private Member member;

    @Column(nullable = false)
    private String metaData;

    @Column(nullable = false)
    private String expectedTime;

    private LocalDateTime startedTime;

    private LocalDateTime completedTime;

    protected Job() {
    }

    public Job(String name, JobStatus status, GpuBoard gpuBoard, Member member,
               String metaData, String expectedTime) {
        validate(name, gpuBoard, member, metaData, expectedTime);
        this.name = name;
        this.status = status;
        this.gpuBoard = gpuBoard;
        this.member = member;
        this.metaData = metaData;
        this.expectedTime = expectedTime;
    }

    public Job(String name, GpuBoard gpuBoard, Member member, String metaData,
               String expectedTime) {
        this(name, null, gpuBoard, member, metaData, expectedTime);
    }

    private void validate(String name, GpuBoard gpuBoard, Member member,
                          String metaData, String expectedTime) {
        if (Objects.isNull(name) || name.isEmpty()) {
            throw JobException.INVALID_JOB_NAME.getException();
        }

        if (Objects.isNull(gpuBoard)) {
            throw JobException.INVALID_GPU_BOARD.getException();
        }

        if (Objects.isNull(member)) {
            throw JobException.INVALID_MEMBER.getException();
        }

        if (Objects.isNull(metaData) || metaData.isEmpty()) {
            throw JobException.INVALID_META_DATA.getException();
        }

        if (Objects.isNull(expectedTime) || expectedTime.isEmpty() || !expectedTime.matches("\\d+")) {
            throw JobException.INVALID_EXPECTED_TIME.getException();
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public JobStatus getStatus() {
        return status;
    }

    public Long getId() {
        return id;
    }

    public GpuBoard getGpuBoard() {
        return gpuBoard;
    }

    public Member getMember() {
        return member;
    }

    public String getMetaData() {
        return metaData;
    }

    public String getExpectedTime() {
        return expectedTime;
    }

도메인의 로직보다 getter/setter의 로직과 Null 체크의 로직이 많아 간소화할 수 있는 부분은 간소화했으면 좋겠습니다.

wannte avatar Oct 22 '21 04:10 wannte