2021-gpu-is-mine
2021-gpu-is-mine copied to clipboard
lombok 도입과 Entity Validator의 도입을 고려한다.
이슈 설명
@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 체크의 로직이 많아 간소화할 수 있는 부분은 간소화했으면 좋겠습니다.