Skip to content

Commit

Permalink
[BSVR-174] 서버에서 관리하는 RGB를 Hexa Code로 변경 (#92)
Browse files Browse the repository at this point in the history
* feat: section의 rgb 코드를 헥사 코드로 변경

* fix(Section): 도메인 변경으로 인한 conflict 코드 수정

* fix: data.sql에 section 변경사항 반영

* feat: BaseballTeam의 label rgb -> 헥사로 변경

* fix(BaseballTeam): rgb -> 헥사로 바꾸면서 생긴 conflict 해결

* fix: data.sql에 baseballTeam 변경사항 반영

* feat: 사용하지 않는 Rgb 관련 코드 삭제

* feat: 사용하지 않는 Rgb 관련 코드 삭제

* feat: HexCode 클래스 분리

* feat: Section에 HexCode 적용 및 충돌 코드 수정

* feat: BaseballTeam에 HexCode 적용 및 기존 코드 충돌 수정
  • Loading branch information
EunjiShin authored Aug 1, 2024
1 parent 3589f78 commit fc0caf5
Show file tree
Hide file tree
Showing 32 changed files with 185 additions and 228 deletions.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package org.depromeet.spot.application.section.dto.request;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

import org.depromeet.spot.application.common.dto.RgbCodeRequest;
import org.depromeet.spot.usecase.port.in.section.CreateSectionUsecase.CreateSectionCommand;
import org.hibernate.validator.constraints.Length;

Expand All @@ -17,13 +15,9 @@ public record CreateSectionRequest(
@Parameter(description = "구역 별칭", example = "응원석")
@Length(max = 20, message = "별칭은 최대 20글자 까지만 입력할 수 있습니다.")
String alias,
@NotNull RgbCodeRequest rgbCodeRequest) {
@NotBlank String color) {

public CreateSectionCommand toCommand() {
return CreateSectionCommand.builder()
.name(name)
.alias(alias)
.labelRgbCode(rgbCodeRequest.toDomain())
.build();
return CreateSectionCommand.builder().name(name).alias(alias).labelColor(color).build();
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package org.depromeet.spot.application.section.dto.response;

import org.depromeet.spot.domain.common.RgbCode;
import org.depromeet.spot.usecase.port.in.section.SectionReadUsecase.SectionInfo;

import lombok.Builder;

@Builder
public record SectionInfoResponse(Long id, String name, String alias, RgbCode color) {
public record SectionInfoResponse(Long id, String name, String alias, String color) {

public static SectionInfoResponse from(SectionInfo sectionInfo) {
return SectionInfoResponse.builder()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,13 @@
package org.depromeet.spot.application.stadium.dto.response;

import org.depromeet.spot.application.common.dto.RgbCodeResponse;
import org.depromeet.spot.domain.common.RgbCode;
import org.depromeet.spot.usecase.port.in.team.ReadStadiumHomeTeamUsecase.HomeTeamInfo;

public record HomeTeamInfoResponse(Long id, String alias, RgbCodeResponse color) {
public record HomeTeamInfoResponse(Long id, String alias, String color) {

public static HomeTeamInfoResponse from(HomeTeamInfo homeTeamInfo) {
RgbCode rgbCode = homeTeamInfo.getRgbCode();
RgbCodeResponse rgbCodeRes =
RgbCodeResponse.builder()
.red(rgbCode.getRed())
.blue(rgbCode.getBlue())
.green(rgbCode.getGreen())
.build();

return new HomeTeamInfoResponse(homeTeamInfo.getId(), homeTeamInfo.getAlias(), rgbCodeRes);
return new HomeTeamInfoResponse(
homeTeamInfo.getId(),
homeTeamInfo.getAlias(),
homeTeamInfo.getLabelBackgroundColor());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import jakarta.validation.constraints.Positive;

import org.depromeet.spot.application.team.dto.request.CreateHomeTeamReq;
import org.depromeet.spot.domain.common.RgbCode;
import org.depromeet.spot.usecase.port.in.team.CreateBaseballTeamUsecase;
import org.depromeet.spot.usecase.port.in.team.CreateBaseballTeamUsecase.CreateBaseballTeamCommand;
import org.depromeet.spot.usecase.port.in.team.CreateHomeTeamUsecase;
Expand Down Expand Up @@ -39,16 +38,13 @@ public void create(
@RequestParam("logo") MultipartFile logo,
@RequestParam("name") String name,
@RequestParam("alias") String alias,
@RequestParam("rgbRed") int rgbRed,
@RequestParam("rgbBlue") int rgbBlue,
@RequestParam("rgbGreen") int rgbGreen) {
RgbCode rgbCode = RgbCode.builder().blue(rgbBlue).red(rgbRed).green(rgbGreen).build();
@RequestParam("labelBackgroundColor") String labelBackgroundColor) {
CreateBaseballTeamCommand command =
CreateBaseballTeamCommand.builder()
.logo(logo)
.name(name)
.alias(alias)
.rgbCode(rgbCode)
.labelBackgroundColor(labelBackgroundColor)
.build();
createBaseballTeamUsecase.save(command);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@

@Getter
public enum UtilErrorCode implements ErrorCode {
INVALID_RGB_CODE(HttpStatus.BAD_REQUEST, "UT001", "잘못된 RGB 코드 값 입니다."),
;
INVALID_HEX_CODE(HttpStatus.BAD_REQUEST, "UT001", "잘못된 헥사 코드 입니다.");

private final HttpStatus status;
private final String code;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ protected UtilException(UtilErrorCode errorCode) {
super(errorCode);
}

public static class InvalidRgbCodeException extends UtilException {
public InvalidRgbCodeException() {
super(UtilErrorCode.INVALID_RGB_CODE);
public static class InvalidHexCodeException extends UtilException {
public InvalidHexCodeException() {
super(UtilErrorCode.INVALID_HEX_CODE);
}
}
}
25 changes: 25 additions & 0 deletions domain/src/main/java/org/depromeet/spot/domain/common/HexCode.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.depromeet.spot.domain.common;

import java.util.regex.Pattern;

import org.depromeet.spot.common.exception.util.UtilException.InvalidHexCodeException;

import lombok.Getter;

@Getter
public class HexCode {

private static final Pattern HEX_PATTERN = Pattern.compile("^#[0-9A-Fa-f]{6}$");
private final String value;

public HexCode(final String input) {
if (!isValid(input)) {
throw new InvalidHexCodeException();
}
this.value = input;
}

private boolean isValid(final String input) {
return input != null && HEX_PATTERN.matcher(input).matches();
}
}
28 changes: 0 additions & 28 deletions domain/src/main/java/org/depromeet/spot/domain/common/RgbCode.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,27 +1,21 @@
package org.depromeet.spot.domain.section;

import org.depromeet.spot.domain.common.RgbCode;
import org.depromeet.spot.domain.common.HexCode;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

@ToString
@Getter
@Builder
@AllArgsConstructor
public class Section {

private final Long id;
private final Long stadiumId;
private final String name;
private final String alias;
private final RgbCode labelRgbCode;

public Section(Long id, Long stadiumId, String name, String alias, RgbCode labelRgbCode) {
this.id = id;
this.stadiumId = stadiumId;
this.name = name;
this.alias = alias;
this.labelRgbCode = labelRgbCode;
}
private final HexCode labelColor;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import org.depromeet.spot.common.exception.team.TeamException.EmptyTeamLogoException;
import org.depromeet.spot.common.exception.team.TeamException.InvalidBaseballAliasNameException;
import org.depromeet.spot.common.exception.team.TeamException.InvalidBaseballTeamNameException;
import org.depromeet.spot.domain.common.RgbCode;
import org.depromeet.spot.domain.common.HexCode;

import lombok.Builder;
import lombok.Getter;
Expand All @@ -16,12 +16,13 @@ public class BaseballTeam {
private final String name;
private final String alias;
private final String logo;
private final RgbCode labelRgbCode;
private final HexCode labelBackgroundColor;

private static final int MAX_NAME_LENGTH = 20;
private static final int MAX_ALIAS_LENGTH = 10;

public BaseballTeam(Long id, String name, String alias, String logo, RgbCode labelRgbCode) {
public BaseballTeam(
Long id, String name, String alias, String logo, HexCode labelBackgroundColor) {
checkValidName(name);
checkValidAlias(alias);
checkValidLogo(logo);
Expand All @@ -30,7 +31,7 @@ public BaseballTeam(Long id, String name, String alias, String logo, RgbCode lab
this.name = name;
this.alias = alias;
this.logo = logo;
this.labelRgbCode = labelRgbCode;
this.labelBackgroundColor = labelBackgroundColor;
}

private void checkValidName(final String name) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.depromeet.spot.domain.common;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.depromeet.spot.common.exception.util.UtilException.InvalidHexCodeException;
import org.junit.jupiter.api.Test;

class HexCodeTest {

@Test
public void 유효한_값으로_헥사코드를_생성할_수_있다() {
// given
final String input = "#FFFFFF";

// when
HexCode hexCode = new HexCode(input);

// then
assertNotNull(hexCode);
assertEquals(input, hexCode.getValue());
}

@Test
public void 주어진_값이_null이라면_예외를_반환한다() {
// given
// when
// then
assertThrows(
InvalidHexCodeException.class,
() -> {
new HexCode(null);
});
}

@Test
public void 주어진_값이_6글자가_아니라면_예외를_반환한다() {
// given
final String input = "#DFDFDFDF";

// when
// then
assertThrows(
InvalidHexCodeException.class,
() -> {
new HexCode(input);
});
}

@Test
public void 주어진_값이_헥사코드_범위가_아니라면_예외를_반환한다() {
// given
final String input = "123456";

// when
// then
assertThrows(
InvalidHexCodeException.class,
() -> {
new HexCode(input);
});
}
}

This file was deleted.

Loading

0 comments on commit fc0caf5

Please sign in to comment.