From 25b5dead1e9580ee1b3bf1e2b2256f50dd391160 Mon Sep 17 00:00:00 2001 From: sejoung kim Date: Wed, 23 Jun 2021 10:24:12 +0900 Subject: [PATCH] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adapters/jpa-persistence/build.gradle | 2 +- .../product/entities/PeriodProductEntity.java | 19 ---------- .../persistence/constants/ProductStatus.java | 5 +++ .../constants/ProductType.java | 7 ++-- .../entities/PeriodProductEntity.java | 36 ++++++++++++++++++ .../entities/ProductEntity.java | 16 +++++--- .../entities/RoundProductEntity.java | 11 +++--- .../mapper/RoundProductMapper.java | 25 +++++++++++++ .../repository/ProductRepository.java | 4 +- .../service/SaveRoundProductService.java | 25 +++++++++++++ .../src/main/resources/application.yml | 11 ++++++ .../{ => persistence}/TestApplication.java | 2 +- .../repository/ProductRepositoryTest.java | 37 +++++++++++++++++++ .../service/SaveRoundProductServiceTest.java | 31 ++++++++++++++++ .../product/persistence/util/TestUtil.java | 11 ++++++ .../repository/ProductRepositoryTest.java | 29 --------------- domain/build.gradle | 6 ++- .../sejoung/product/entities/Category.java | 4 +- .../product/entities/PeriodProduct.java | 2 +- .../sejoung/product/entities/Product.java | 13 ++++--- .../product/entities/RoundProduct.java | 6 ++- .../mapper/SaveRoundProductCommandMapper.java | 10 ++--- .../port/in/SaveRoundProductInUseCase.java | 10 +++-- .../product/validating/SelfValidating.java | 6 +-- .../product/entities/PeriodProductTest.java | 4 +- .../product/entities/RoundProductTest.java | 4 +- .../in/SaveRoundProductInUseCaseTest.java | 4 +- .../service/SaveRoundProductServiceTest.java | 5 +-- 28 files changed, 247 insertions(+), 98 deletions(-) delete mode 100644 adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/PeriodProductEntity.java create mode 100644 adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductStatus.java rename adapters/jpa-persistence/src/main/java/io/github/sejoung/product/{ => persistence}/constants/ProductType.java (55%) create mode 100644 adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/PeriodProductEntity.java rename adapters/jpa-persistence/src/main/java/io/github/sejoung/product/{ => persistence}/entities/ProductEntity.java (71%) rename adapters/jpa-persistence/src/main/java/io/github/sejoung/product/{ => persistence}/entities/RoundProductEntity.java (60%) create mode 100644 adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/mapper/RoundProductMapper.java rename adapters/jpa-persistence/src/main/java/io/github/sejoung/product/{ => persistence}/repository/ProductRepository.java (53%) create mode 100644 adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/service/SaveRoundProductService.java create mode 100644 adapters/jpa-persistence/src/main/resources/application.yml rename adapters/jpa-persistence/src/test/java/io/github/sejoung/product/{ => persistence}/TestApplication.java (72%) create mode 100644 adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/repository/ProductRepositoryTest.java create mode 100644 adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/service/SaveRoundProductServiceTest.java create mode 100644 adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/util/TestUtil.java delete mode 100644 adapters/jpa-persistence/src/test/java/io/github/sejoung/product/repository/ProductRepositoryTest.java diff --git a/adapters/jpa-persistence/build.gradle b/adapters/jpa-persistence/build.gradle index f36e9e6..e7155fc 100644 --- a/adapters/jpa-persistence/build.gradle +++ b/adapters/jpa-persistence/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'org.springframework.boot' version '2.3.9.RELEASE' + id 'org.springframework.boot' version '2.5.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' } diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/PeriodProductEntity.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/PeriodProductEntity.java deleted file mode 100644 index 2766343..0000000 --- a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/PeriodProductEntity.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.github.sejoung.product.entities; - -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; - -import lombok.AccessLevel; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.ToString; - -@ToString(callSuper = true) -@DiscriminatorValue(PeriodProductEntity.DISCRIMINATOR_VALUE) -@Entity -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -public class PeriodProductEntity extends ProductEntity{ - public static final String DISCRIMINATOR_VALUE = "PERIOD"; - -} diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductStatus.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductStatus.java new file mode 100644 index 0000000..23b5bf5 --- /dev/null +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductStatus.java @@ -0,0 +1,5 @@ +package io.github.sejoung.product.persistence.constants; + +public enum ProductStatus { + CREATE, DELETE, TEMPORARY, PERMANENTLY_DELETE +} diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/constants/ProductType.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductType.java similarity index 55% rename from adapters/jpa-persistence/src/main/java/io/github/sejoung/product/constants/ProductType.java rename to adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductType.java index c0b79a6..388f724 100644 --- a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/constants/ProductType.java +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/constants/ProductType.java @@ -1,7 +1,8 @@ -package io.github.sejoung.product.constants; +package io.github.sejoung.product.persistence.constants; -import io.github.sejoung.product.entities.PeriodProductEntity; -import io.github.sejoung.product.entities.RoundProductEntity; + +import io.github.sejoung.product.persistence.entities.PeriodProductEntity; +import io.github.sejoung.product.persistence.entities.RoundProductEntity; import lombok.Getter; @Getter diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/PeriodProductEntity.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/PeriodProductEntity.java new file mode 100644 index 0000000..67940f4 --- /dev/null +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/PeriodProductEntity.java @@ -0,0 +1,36 @@ +package io.github.sejoung.product.persistence.entities; + +import java.time.LocalDate; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +import io.github.sejoung.product.persistence.constants.ProductStatus; +import io.github.sejoung.product.persistence.constants.ProductType; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ToString(callSuper = true) +@DiscriminatorValue(PeriodProductEntity.DISCRIMINATOR_VALUE) +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PeriodProductEntity extends ProductEntity { + public static final String DISCRIMINATOR_VALUE = "PERIOD"; + + @Column + private LocalDate startDate; + + @Column + private LocalDate endDate; + + public PeriodProductEntity(String productName, Long categoryId, ProductStatus productStatus, LocalDate startDate, + LocalDate endDate) { + super(productName, ProductType.PERIOD, categoryId, productStatus); + this.startDate = startDate; + this.endDate = endDate; + } +} diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/ProductEntity.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/ProductEntity.java similarity index 71% rename from adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/ProductEntity.java rename to adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/ProductEntity.java index 7d56d7f..b6ecf2e 100644 --- a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/ProductEntity.java +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/ProductEntity.java @@ -1,4 +1,4 @@ -package io.github.sejoung.product.entities; +package io.github.sejoung.product.persistence.entities; import javax.persistence.Column; import javax.persistence.DiscriminatorColumn; @@ -12,9 +12,8 @@ import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; -import org.springframework.data.domain.AbstractAggregateRoot; - -import io.github.sejoung.product.constants.ProductType; +import io.github.sejoung.product.persistence.constants.ProductStatus; +import io.github.sejoung.product.persistence.constants.ProductType; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -26,7 +25,7 @@ import lombok.ToString; @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString -public class ProductEntity extends AbstractAggregateRoot { +public abstract class ProductEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long productId; @@ -38,11 +37,16 @@ public class ProductEntity extends AbstractAggregateRoot { @Column(name = "product_type", nullable = false) private ProductType productType; + @Enumerated(EnumType.STRING) + @Column + private ProductStatus productStatus; + private Long categoryId; - public ProductEntity(String productName, ProductType productType, Long categoryId) { + protected ProductEntity(String productName, ProductType productType, Long categoryId, ProductStatus productStatus) { this.productName = productName; this.productType = productType; this.categoryId = categoryId; + this.productStatus = productStatus; } } diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/RoundProductEntity.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/RoundProductEntity.java similarity index 60% rename from adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/RoundProductEntity.java rename to adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/RoundProductEntity.java index 1fa2b38..58aeaed 100644 --- a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/entities/RoundProductEntity.java +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/entities/RoundProductEntity.java @@ -1,10 +1,11 @@ -package io.github.sejoung.product.entities; +package io.github.sejoung.product.persistence.entities; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; -import io.github.sejoung.product.constants.ProductType; +import io.github.sejoung.product.persistence.constants.ProductStatus; +import io.github.sejoung.product.persistence.constants.ProductType; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -21,9 +22,9 @@ public class RoundProductEntity extends ProductEntity { @Column(name = "cnt", nullable = false) private Integer count; - public RoundProductEntity(String productName, ProductType productType, - Long categoryId, Integer count) { - super(productName, productType, categoryId); + public RoundProductEntity(String productName, + Long categoryId, ProductStatus productStatus, Integer count) { + super(productName, ProductType.ROUND, categoryId, productStatus); this.count = count; } } diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/mapper/RoundProductMapper.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/mapper/RoundProductMapper.java new file mode 100644 index 0000000..6dbd895 --- /dev/null +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/mapper/RoundProductMapper.java @@ -0,0 +1,25 @@ +package io.github.sejoung.product.persistence.mapper; + +import io.github.sejoung.product.entities.Category; +import io.github.sejoung.product.entities.Product; +import io.github.sejoung.product.entities.RoundProduct; + +import io.github.sejoung.product.persistence.constants.ProductStatus; +import io.github.sejoung.product.persistence.entities.RoundProductEntity; + +public interface RoundProductMapper { + + static RoundProductEntity toEntity(RoundProduct product) { + return new RoundProductEntity(product.getProductName(), product.getCategory().getCategoryId(), + ProductStatus.valueOf(product.getStatus().name()), + product.getCount()); + } + static RoundProduct toDto(RoundProductEntity entity) { + return new RoundProduct(entity.getProductId(), entity.getCategoryId(), + Category.ProductType.valueOf(entity.getProductType().name()), + Product.ProductStatus.valueOf(entity.getProductStatus().name()), entity.getProductName(), + entity.getCount()); + + } + +} diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/repository/ProductRepository.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/repository/ProductRepository.java similarity index 53% rename from adapters/jpa-persistence/src/main/java/io/github/sejoung/product/repository/ProductRepository.java rename to adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/repository/ProductRepository.java index d1785a2..5204322 100644 --- a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/repository/ProductRepository.java +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/repository/ProductRepository.java @@ -1,8 +1,8 @@ -package io.github.sejoung.product.repository; +package io.github.sejoung.product.persistence.repository; import org.springframework.data.jpa.repository.JpaRepository; -import io.github.sejoung.product.entities.ProductEntity; +import io.github.sejoung.product.persistence.entities.ProductEntity; public interface ProductRepository extends JpaRepository { } diff --git a/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/service/SaveRoundProductService.java b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/service/SaveRoundProductService.java new file mode 100644 index 0000000..b14f817 --- /dev/null +++ b/adapters/jpa-persistence/src/main/java/io/github/sejoung/product/persistence/service/SaveRoundProductService.java @@ -0,0 +1,25 @@ +package io.github.sejoung.product.persistence.service; + +import javax.transaction.Transactional; + +import io.github.sejoung.product.entities.RoundProduct; + +import io.github.sejoung.product.persistence.mapper.RoundProductMapper; +import io.github.sejoung.product.persistence.repository.ProductRepository; +import io.github.sejoung.product.usecases.port.out.SaveRoundProductOutUseCase; + +public class SaveRoundProductService implements SaveRoundProductOutUseCase { + + private final ProductRepository repository; + + public SaveRoundProductService(ProductRepository repository) { + this.repository = repository; + } + + @Transactional + @Override + public RoundProduct saveRoundProduct(RoundProduct product) { + var productEntity = RoundProductMapper.toEntity(product); + return RoundProductMapper.toDto(repository.save(productEntity)); + } +} diff --git a/adapters/jpa-persistence/src/main/resources/application.yml b/adapters/jpa-persistence/src/main/resources/application.yml new file mode 100644 index 0000000..e2e2df5 --- /dev/null +++ b/adapters/jpa-persistence/src/main/resources/application.yml @@ -0,0 +1,11 @@ +spring: + jpa: + show-sql: true + open-in-view: false + hibernate: + ddl-auto: create-drop + properties: + hibernate: + discriminator: + ignore_explicit_for_joined: true + database-platform: org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/TestApplication.java b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/TestApplication.java similarity index 72% rename from adapters/jpa-persistence/src/test/java/io/github/sejoung/product/TestApplication.java rename to adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/TestApplication.java index 8e65a5b..8d7a1a5 100644 --- a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/TestApplication.java +++ b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/TestApplication.java @@ -1,4 +1,4 @@ -package io.github.sejoung.product; +package io.github.sejoung.product.persistence; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/repository/ProductRepositoryTest.java b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/repository/ProductRepositoryTest.java new file mode 100644 index 0000000..3b346ec --- /dev/null +++ b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/repository/ProductRepositoryTest.java @@ -0,0 +1,37 @@ +package io.github.sejoung.product.persistence.repository; + +import static org.assertj.core.api.Assertions.*; + +import java.time.LocalDate; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; + +import io.github.sejoung.product.persistence.constants.ProductStatus; +import io.github.sejoung.product.persistence.entities.PeriodProductEntity; +import io.github.sejoung.product.persistence.entities.RoundProductEntity; + +@DataJpaTest +class ProductRepositoryTest { + + @Autowired + private ProductRepository repository; + + @Autowired + private TestEntityManager entityManager; + + @DisplayName("조회기능 테스트") + @Test + void findAllTest() { + + entityManager.persistAndFlush(new RoundProductEntity("회차권", 1L, ProductStatus.CREATE, 1)); + entityManager.persistAndFlush( + new PeriodProductEntity("ad", 1L, ProductStatus.CREATE, LocalDate.now(), LocalDate.now().plusDays(1))); + var productEntities = repository.findAll(); + assertThat(productEntities.size()).isEqualTo(2); + + } +} \ No newline at end of file diff --git a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/service/SaveRoundProductServiceTest.java b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/service/SaveRoundProductServiceTest.java new file mode 100644 index 0000000..bf7e7bd --- /dev/null +++ b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/service/SaveRoundProductServiceTest.java @@ -0,0 +1,31 @@ +package io.github.sejoung.product.persistence.service; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; + +import io.github.sejoung.product.persistence.repository.ProductRepository; +import io.github.sejoung.product.persistence.util.TestUtil; + +@DataJpaTest +class SaveRoundProductServiceTest { + + @Autowired + private ProductRepository repository; + + private SaveRoundProductService service; + + @BeforeEach + void setUp() { + service = new SaveRoundProductService(repository); + } + + @Test + void saveRoundProduct() { + var actual = service.saveRoundProduct(TestUtil.defaultRoundProduct()); + assertThat(actual.getProductId()).isNotNull(); + } +} \ No newline at end of file diff --git a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/util/TestUtil.java b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/util/TestUtil.java new file mode 100644 index 0000000..94eb87e --- /dev/null +++ b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/persistence/util/TestUtil.java @@ -0,0 +1,11 @@ +package io.github.sejoung.product.persistence.util; + +import io.github.sejoung.product.entities.Category; +import io.github.sejoung.product.entities.Product; +import io.github.sejoung.product.entities.RoundProduct; + +public interface TestUtil { + static RoundProduct defaultRoundProduct() { + return new RoundProduct(null, 1L, Category.ProductType.ROUND, Product.ProductStatus.CREATE, "회차권", 2); + } +} diff --git a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/repository/ProductRepositoryTest.java b/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/repository/ProductRepositoryTest.java deleted file mode 100644 index 79cb61f..0000000 --- a/adapters/jpa-persistence/src/test/java/io/github/sejoung/product/repository/ProductRepositoryTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.sejoung.product.repository; - -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; - -import io.github.sejoung.product.constants.ProductType; -import io.github.sejoung.product.entities.RoundProductEntity; - -@DataJpaTest -class ProductRepositoryTest { - - @Autowired - private ProductRepository repository; - - @Autowired - private TestEntityManager entityManager; - - @Test - void test() { - - - repository.saveAndFlush(new RoundProductEntity("회차권", ProductType.ROUND, 1L, 1)); - repository.findAll().forEach(productEntity -> { - System.out.println(productEntity); - }); - } -} \ No newline at end of file diff --git a/domain/build.gradle b/domain/build.gradle index 1c92873..f33deee 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -7,11 +7,13 @@ jar { } dependencies { - implementation 'org.hibernate:hibernate-validator:7.0.1.Final' - implementation 'org.glassfish:jakarta.el:4.0.1' + implementation 'javax.validation:validation-api:2.0.1.Final' + implementation "org.mapstruct:mapstruct:1.4.2.Final" annotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final" + testImplementation 'org.hibernate:hibernate-validator:6.2.0.Final' + testImplementation 'org.glassfish:javax.el:3.0.0' testAnnotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' diff --git a/domain/src/main/java/io/github/sejoung/product/entities/Category.java b/domain/src/main/java/io/github/sejoung/product/entities/Category.java index 52ab78d..68b75ba 100644 --- a/domain/src/main/java/io/github/sejoung/product/entities/Category.java +++ b/domain/src/main/java/io/github/sejoung/product/entities/Category.java @@ -1,6 +1,8 @@ package io.github.sejoung.product.entities; -import jakarta.validation.constraints.NotNull; + + +import javax.validation.constraints.NotNull; import lombok.Getter; import lombok.ToString; diff --git a/domain/src/main/java/io/github/sejoung/product/entities/PeriodProduct.java b/domain/src/main/java/io/github/sejoung/product/entities/PeriodProduct.java index fd7a67b..08098b1 100644 --- a/domain/src/main/java/io/github/sejoung/product/entities/PeriodProduct.java +++ b/domain/src/main/java/io/github/sejoung/product/entities/PeriodProduct.java @@ -2,7 +2,7 @@ package io.github.sejoung.product.entities; import java.time.LocalDate; -import jakarta.validation.constraints.NotNull; +import javax.validation.constraints.NotNull; import lombok.Getter; import lombok.ToString; diff --git a/domain/src/main/java/io/github/sejoung/product/entities/Product.java b/domain/src/main/java/io/github/sejoung/product/entities/Product.java index c467fb2..53dfda7 100644 --- a/domain/src/main/java/io/github/sejoung/product/entities/Product.java +++ b/domain/src/main/java/io/github/sejoung/product/entities/Product.java @@ -3,12 +3,13 @@ package io.github.sejoung.product.entities; import java.time.LocalDateTime; import java.util.Set; -import jakarta.validation.ConstraintViolation; -import jakarta.validation.ConstraintViolationException; -import jakarta.validation.Validation; -import jakarta.validation.Validator; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + import lombok.Getter; import lombok.Setter; import lombok.ToString; diff --git a/domain/src/main/java/io/github/sejoung/product/entities/RoundProduct.java b/domain/src/main/java/io/github/sejoung/product/entities/RoundProduct.java index 59a3343..ac8f0ec 100644 --- a/domain/src/main/java/io/github/sejoung/product/entities/RoundProduct.java +++ b/domain/src/main/java/io/github/sejoung/product/entities/RoundProduct.java @@ -1,7 +1,9 @@ package io.github.sejoung.product.entities; -import jakarta.validation.constraints.Max; -import jakarta.validation.constraints.Min; + + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import lombok.Getter; import lombok.ToString; diff --git a/domain/src/main/java/io/github/sejoung/product/mapper/SaveRoundProductCommandMapper.java b/domain/src/main/java/io/github/sejoung/product/mapper/SaveRoundProductCommandMapper.java index afcdb58..0350acd 100644 --- a/domain/src/main/java/io/github/sejoung/product/mapper/SaveRoundProductCommandMapper.java +++ b/domain/src/main/java/io/github/sejoung/product/mapper/SaveRoundProductCommandMapper.java @@ -2,20 +2,16 @@ package io.github.sejoung.product.mapper; import io.github.sejoung.product.entities.RoundProduct; import io.github.sejoung.product.usecases.port.in.SaveRoundProductInUseCase; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public abstract class SaveRoundProductCommandMapper { - - public static SaveRoundProductInUseCase.SaveRoundProductCommand toDto(RoundProduct roundProduct) { +public interface SaveRoundProductCommandMapper { + static SaveRoundProductInUseCase.SaveRoundProductCommand toDto(RoundProduct roundProduct) { return new SaveRoundProductInUseCase.SaveRoundProductCommand(roundProduct.getProductId(), roundProduct.getCategory().getCategoryId(), roundProduct.getCategory().getProductType(), roundProduct.getStatus(), roundProduct.getProductName(), roundProduct.getCount()); } - public static RoundProduct toEntity(SaveRoundProductInUseCase.SaveRoundProductCommand command) { + static RoundProduct toEntity(SaveRoundProductInUseCase.SaveRoundProductCommand command) { return new RoundProduct(command.getProductId(), command.getCategoryId(), command.getProductType(), command.getStatus(), command.getProductName(), command.getCount()); } diff --git a/domain/src/main/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCase.java b/domain/src/main/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCase.java index 3575b09..ddc3446 100644 --- a/domain/src/main/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCase.java +++ b/domain/src/main/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCase.java @@ -1,12 +1,14 @@ package io.github.sejoung.product.usecases.port.in; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + import io.github.sejoung.product.entities.Category; import io.github.sejoung.product.entities.Product; import io.github.sejoung.product.validating.SelfValidating; -import jakarta.validation.constraints.Max; -import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; + import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/domain/src/main/java/io/github/sejoung/product/validating/SelfValidating.java b/domain/src/main/java/io/github/sejoung/product/validating/SelfValidating.java index 607ba8e..7a9becb 100644 --- a/domain/src/main/java/io/github/sejoung/product/validating/SelfValidating.java +++ b/domain/src/main/java/io/github/sejoung/product/validating/SelfValidating.java @@ -1,8 +1,8 @@ package io.github.sejoung.product.validating; -import jakarta.validation.ConstraintViolationException; -import jakarta.validation.Validation; -import jakarta.validation.Validator; +import javax.validation.ConstraintViolationException; +import javax.validation.Validation; +import javax.validation.Validator; public abstract class SelfValidating { diff --git a/domain/src/test/java/io/github/sejoung/product/entities/PeriodProductTest.java b/domain/src/test/java/io/github/sejoung/product/entities/PeriodProductTest.java index d22846c..1d205d7 100644 --- a/domain/src/test/java/io/github/sejoung/product/entities/PeriodProductTest.java +++ b/domain/src/test/java/io/github/sejoung/product/entities/PeriodProductTest.java @@ -4,10 +4,12 @@ import static org.junit.jupiter.api.Assertions.*; import java.time.LocalDate; +import javax.validation.ConstraintViolationException; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import jakarta.validation.ConstraintViolationException; + class PeriodProductTest { diff --git a/domain/src/test/java/io/github/sejoung/product/entities/RoundProductTest.java b/domain/src/test/java/io/github/sejoung/product/entities/RoundProductTest.java index 2378099..fc8ffef 100644 --- a/domain/src/test/java/io/github/sejoung/product/entities/RoundProductTest.java +++ b/domain/src/test/java/io/github/sejoung/product/entities/RoundProductTest.java @@ -2,10 +2,12 @@ package io.github.sejoung.product.entities; import static org.junit.jupiter.api.Assertions.*; +import javax.validation.ConstraintViolationException; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import jakarta.validation.ConstraintViolationException; + class RoundProductTest { diff --git a/domain/src/test/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCaseTest.java b/domain/src/test/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCaseTest.java index f91631e..2465e59 100644 --- a/domain/src/test/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCaseTest.java +++ b/domain/src/test/java/io/github/sejoung/product/usecases/port/in/SaveRoundProductInUseCaseTest.java @@ -2,12 +2,14 @@ package io.github.sejoung.product.usecases.port.in; import static org.junit.jupiter.api.Assertions.*; +import javax.validation.ConstraintViolationException; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import io.github.sejoung.product.entities.Category; import io.github.sejoung.product.entities.Product; -import jakarta.validation.ConstraintViolationException; + class SaveRoundProductInUseCaseTest { diff --git a/domain/src/test/java/io/github/sejoung/product/usecases/service/SaveRoundProductServiceTest.java b/domain/src/test/java/io/github/sejoung/product/usecases/service/SaveRoundProductServiceTest.java index e2abd95..563c4e8 100644 --- a/domain/src/test/java/io/github/sejoung/product/usecases/service/SaveRoundProductServiceTest.java +++ b/domain/src/test/java/io/github/sejoung/product/usecases/service/SaveRoundProductServiceTest.java @@ -1,7 +1,6 @@ package io.github.sejoung.product.usecases.service; -import static org.junit.jupiter.api.Assertions.*; - +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -26,6 +25,6 @@ class SaveRoundProductServiceTest { var command = new SaveRoundProductInUseCase.SaveRoundProductCommand(null, 1L, Category.ProductType.ROUND, Product.ProductStatus.CREATE, "2회권", 2); var actual = service.save(command); - assertEquals(99, actual.getProductId()); + Assertions.assertEquals(99, actual.getProductId()); } } \ No newline at end of file